Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

РИБ. Регистрация изменений для справ-ка и для реквизитов ссылочного типа этого справочника

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

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.