Имя: Пароль:
1C
1С v8
РИБ. Регистрация изменений для справ-ка и для реквизитов ссылочного типа этого справочника
0 new_hope
 
13.05.19
13:59
Подскажите - имеется Информационная База, настроен план обмена в конфигураторе - у всех Справочников и Документов "Авторегистрация" = "Запретить".

То-есть - регистрация объектов вручную происходит. Вот вопрос - у каждого справочника или документа, к примеру, имеется реквизит - ссылочного типа (также справочник, или документ со своими ссылками) - что-бы этот реквизит также был успешно перенесен в другой узел - ему также нужно делать "РегистрациюИзменений"... и так по каждому уровню реквизитов?

Прошу - в двух словах объяснить, как это происходит, или направить в нужное место почитать, написанное понятным языком! Спасибо.
1 Cyberhawk
 
13.05.19
14:02
Так не делается, иначе можно выгрузить лавинообразно полбазы каждый раз
2 Cyberhawk
 
13.05.19
14:03
(в общем случае конечно)
3 new_hope
 
13.05.19
14:06
(1) Да, может потянуть одно за другим по ниточке... да - и пол базы полезет в другой узел.

Ну - в ощих чертах - как правильно делать?
4 Cyberhawk
 
13.05.19
14:08
Ну вроде же логично, что выгружать только то, что на узле, т.к. там только то, что поменялось (по твоим правилам суждения).
В частных случаях нужно бывает разве что соблюсти порядок загрузки, а вот необходимость выгрузки объектов по ссылкам это почти всегда покрывает.
5 new_hope
 
13.05.19
14:18
Я верно понял... Вот пример - имеем элемент справочника Контрагенты -> "Дядя Вася".... у этого справочника есть реквизит "Агент" типа "Справочник.Контрагенты" -> "Дядя Петя".... Так вот - РегистрацияИзменений() ТОЛЬКО для "Дядя Вася" - мы получим в другом узле "Дядю Васю" с "Объект не найден" в реквизите "Агент", где должен быть "Дядя Петя"?
6 Фрэнки
 
13.05.19
14:19
Т.е. что имеется на практике?

Условно самописная база с самостоятельно настроенных планом обмена с нуля. Как это работает?

В состав объекта ПланОбмена указывают все, абсолютно все нужные для обмена метаданные.
Признак на этих метаданных стоит "Запретить".
По подписке на событие, при записи некоторого объекта, например, Документ - регистрируется в нужный Узел

А дальше интересное - если в твоем документе будут ссылки на справочники, то эти элементы выгружаться не будут. Потому что никто не подумал о регистрации этих элементов на выгрузку. Нужно предварительно синхронизировать отдельно справочники, отдельно регистры сведений и т.д.
И только после этого будут нормально получены данные в Приемнике.

Кстати, регистрировать на выгрузку надо не только документы и справочники, но и наборы записей регистра. В принципе, или "вручную" или подписками на события.
7 Фрэнки
 
13.05.19
14:19
(5) да, так все и получишь - Объект не найден
8 new_hope
 
13.05.19
14:20
(6) Все...все предельно ясно! Спасибо!
9 new_hope
 
13.05.19
16:42
Еще маленький вопрос - в транзакции можно регистрировать изменения" для ряда необходимых мне документов?
10 Cyberhawk
 
13.05.19
16:57
Конечно, ведь в транзакциях это и делается - в подписках "Перед записью", "При записи", например
11 Фрэнки
 
13.05.19
19:29
(9) на вкус и цвет может быть разные отличия и выбрать наиболее оптимальный контекст для регистрации изменений документов не всегда просто.

Если по глобальному описывать механизм работы Подписка на событие, то оказывается, что ПередЗаписью И ПриЗаписи происходят внутри той же транзакции, которая создает платформа при обработке Записи документа.
Здесь нужно смотреть на содержание или контекст уже написанных обработчиков событий, ПередЗаписью И ПриЗаписи, которые отрабатывают в модуле Документа. Т.е. для простоты понимания я сам считаю, что подписка на событие ПередЗаписью выполняется уже после обработчика из Модуля документа, но до вызова обработчика ПриЗаписи в модуле. А Подписка ПриЗаписи - уже после такого же обработчика... НО - все это все равно внутри транзакции. Т.е. в большинстве простых ситуаций разного результата не будет у способов использования или в одной или в другой подписке => код будет выполнен и записи в разных таблицах будут сохранены или отменены все вместе.
12 new_hope
 
14.05.19
09:31
(11) Спасибо за такой расширенный ответ!
Независимо от того, куда вы едете — это в гору и против ветра!