Имя: Пароль:
1C
1С v8
ЗарегистрироватьИзменения для всех записей РС с отборами
0 Stim
 
14.03.12
17:23
почему нельзя зарегистрировать изменения для плана обмена всех записей РС? Обязательно нужно по  полям отбора устанавливать отбор и отобранные записи регистрировать??

В СП написано:

ПланыОбменаМенеджер (ExchangePlansManager)
ЗарегистрироватьИзменения (RecordChanges)
Синтаксис:

ЗарегистрироватьИзменения(<Узлы>, <Данные>)

бла-бла..


Для набора записей регистра сведений, в случае, если регистратор не определен, в качестве ключа используется совокупность измерений, входящих в основной отбор. А если регистр сведений является периодическим и включен основной отбор по периоду, то в ключ входит еще и период.



Мне нужно зарегистрировать все записи РС с отбором по организации. Но - не регистрируется, нужно устанавливать отборы на остальные измерения. Значит, нужно их получать отдельно и устанавливать отбор по каждому, делая столько вложенных циклов, сколько измерений с отборами есть? почему так глупо сделано?
1 Maxus43
 
14.03.12
17:30
(0) для всего РС в <Данные> - метаданные подсунь.
в СП же написано что целый набор записей можно зарегистрировать... ошибку даёт чтоль?
2 Maxus43
 
14.03.12
17:31
(1) + да, всё правильно, только с регистратором - целым набором пишет, иначе есть риск потереть остальное, если не детализировать отбор
3 ptiz
 
14.03.12
17:32
(0) Вопрос не к Мисте, а к 1С.
4 Kashemir
 
14.03.12
17:35
(0) Требования для независимых регистров сведений абсолютно логичные и для понимания откуда они взялись - следует разобраться каким образом реализован обмен для независимых регистров сведений.
5 Stim
 
14.03.12
17:37
(2)каким образом потереть?) при чтении?
6 Maxus43
 
14.03.12
17:37
(5) при загрузке в базу-приёмник
7 Stim
 
14.03.12
17:38
(1)метаданные мне не нужны. весь регистр не нужен, нужны только записи по организации.
8 Maxus43
 
14.03.12
17:39
(7) зарегь всё, удалиш из другой базы потом. удалить то легче) раз уверен что не надо другую организацию - набор записей пустой запишеш
9 Stim
 
14.03.12
17:39
(6) ну логично. но все равно как-то криво. неужели нельзя было сделать автоматическое определение отборов по набору записей?
10 Maxus43
 
14.03.12
17:39
(8) + удалить регистрацию изменений не забыть ещё
11 Maxus43
 
14.03.12
17:39
(9) а вот это вроде можно было сделать... но не судьба)
12 Stim
 
14.03.12
17:40
(4) ага, ага. логично, но не доделано
13 Kashemir
 
14.03.12
17:43
(9) Не вижу здесь кривизны. С учетом всех нюансов наиболее логичное решение, никаких действительно "лишних" действий не требующее.
14 Kashemir
 
14.03.12
17:45
(11) Если речь идет о функции, которая сама разобьет произвольный отбор до нужной детализации основного отбора - то кто ж мешает написать ?
15 Stim
 
14.03.12
17:45
+ простой пример - РС счетаУчетаНоменклатуры.
основной отбор у него по всем 4 измерениям:

организация
Номенклатура
Склад
ТипСклада

чтобы зарегистрировать записи по нужной мне организации - мне нужно устанавливать отборы на организацию, на каждую номенклатуру, на каждый склад и тип склада.
нужно строить вложенные циклы 4 порядка вложенности и регистрировать наборы записей для КАЖДОЙ номенклатуры.

Это вместо того, чтобы вырузить разом все записи по организации и подсунуть "умному" приемнику, который их сам раскидает по отборам. Один набор записи по организации вместе 10 000 по номенклатурам, складам и видам складов
16 Stim
 
14.03.12
17:47
вместе = вместо
17 Kashemir
 
14.03.12
17:56
(15)Попробуй продумай собственную безотказную схему обмена для независимых регистров сведений - думаю с учетом всех нюансов пересмотришь свою позицию. Я эту стадию уже прошел пару лет назад, задаваясь подобными вопросами :)
18 hhhh
 
14.03.12
18:01
(16) ты лучше предложи, чтобы группу справочника целиком регистрировало, вот это бы было нужнее. Или документы за месяц одной командой. С регистрами - это ты мелко.
19 Stim
 
14.03.12
18:04
(18) аха. жаль, что нельзя списокЗначений отправлять для регистрации
20 Stim
 
14.03.12
18:11
ну вобщем как-то так(пока не тестил):

Процедура    ЗарегистриватьЗаписиСчетаУчетаОрганизации(Организация)
   МассивНоменклатуры =  ПолучитьМассивЗначенийСчетаУчета("номенклатура",Организация);
   МассивСкладов =  ПолучитьМассивЗначенийСчетаУчета("Склад",Организация);
   МассивТиповСкладов =  ПолучитьМассивЗначенийСчетаУчета("ТипСклада",Организация);
   Для каждого типСклада ИЗ МассивТиповСкладов Цикл
       Для каждого Склад ИЗ МассивСкладов Цикл
           Для каждого Номенклатура ИЗ МассивНоменклатуры Цикл
               НаборЗаписей = регистрысведений.СчетаУчетаНоменклатуры.создатьНаборзаписей();
               НаборЗаписей.Отбор.типСклада.установить(Организация.типСклада);    
               НаборЗаписей.Отбор.Склад.установить(Организация.Склад);    
               НаборЗаписей.Отбор.номенклатура.установить(Организация.номенклатура);
               НаборЗаписей.Прочитать();
               планыОбмена.ЗарегистрироватьИзменения(ссылка,НаборЗаписей);
           конеццикла;
       конеццикла;
   конеццикла;
КонецПроцедуры

Функция  ПолучитьМассивЗначенийСчетаУчета(имяМд,Организация)
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    СчетаУчетаНоменклатуры."+имяМд+" КАК Ссылка
   |ИЗ
   |    РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры
   |ГДЕ
   |    СчетаУчетаНоменклатуры.Организация = &Организация";
   Запрос.УстановитьПараметр("Организация",Организация);
   возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
21 Stim
 
14.03.12
18:11
тьфу.
НаборЗаписей.Отбор.типСклада.установить(типСклада);    
и тд)
22 Kashemir
 
14.03.12
18:12
(20) Мда, использовать все комбинации всех значений это конечно очень впечатляет. Может все проще использовать только существующие комбинации ? Или очень хочется еще и что-нибудь удалить в базе приемнике ?
23 Kashemir
 
14.03.12
18:14
(20) Кстати, а зачем набор то читать ?
24 Kashemir
 
14.03.12
18:19
(20) Еще ошибки:
- не указан отбор по Организации
- нет никакой надобности создавать набор в цикле, достаточно создать 1 раз и просто менять отбор. Считай набор записей с заполненными значениями основного отбора - это по сути логический аналог понятия "ссылки" для "односложных" объектов ... справочников документов и т.д.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс