Зарегистрировать объект на всех узлах. Выполняет регистрацию изменений объекта на всех узлах плана обмена.
// Выполняет регистрацию изменений объекта на всех узлах плана обмена.
// Для разделенных конфигураций должны выполняться условия:
// - план обмена должен быть разделенным,
// - регистрируемый объект должен быть неразделенным.
//
// Параметры:
// Объект - Объект - СправочникОбъект, ДокументОбъект и др., который требуется зарегистрировать.
// Объект должен быть неразделенным, иначе будет выдано исключение.
//
// ИмяПланаОбмена - Строка - имя плана обмена, на всех узлах которого требуется выполнить регистрацию объекта.
// План обмена должен быть разделенным, иначе будет выдано исключение.
//
// ВключаяГлавныйУзел - Булево - если Ложь, тогда в подчиненном узле
// не будет выполнена регистрация для главного узла.
//
//
Процедура ЗарегистрироватьОбъектНаВсехУзлах(Знач Объект, Знач ИмяПланаОбмена, Знач ВключаяГлавныйУзел = Истина) Экспорт
Если Метаданные.ПланыОбмена[ИмяПланаОбмена].Состав.Найти(Объект.Метаданные()) = Неопределено Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначения.РазделениеВключено() Тогда
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
ВызватьИсключение НСтр("ru = 'Регистрация изменений неразделенных данных в разделенном режиме.'");
КонецЕсли;
МодульРаботаВМоделиСервиса = Неопределено;
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
КонецЕсли;
Если МодульРаботаВМоделиСервиса <> Неопределено Тогда
ЭтоРазделенныйПланОбмена = МодульРаботаВМоделиСервиса.ЭтоРазделенныйОбъектМетаданных(
"ПланОбмена." + ИмяПланаОбмена, МодульРаботаВМоделиСервиса.РазделительОсновныхДанных());
Иначе
ЭтоРазделенныйПланОбмена = Ложь;
КонецЕсли;
Если Не ЭтоРазделенныйПланОбмена Тогда
ВызватьИсключение НСтр("ru = 'Регистрация изменений для неразделенных планов обмена не поддерживается.'");
КонецЕсли;
Если МодульРаботаВМоделиСервиса <> Неопределено Тогда
ЭтоРазделенныйОбъектМетаданных = МодульРаботаВМоделиСервиса.ЭтоРазделенныйОбъектМетаданных(
Объект.Метаданные().ПолноеИмя(), МодульРаботаВМоделиСервиса.РазделительОсновныхДанных());
Иначе
ЭтоРазделенныйОбъектМетаданных = Ложь;
КонецЕсли;
Если ЭтоРазделенныйОбъектМетаданных Тогда
ВызватьИсключение НСтр("ru = 'Регистрация изменений для разделенных объектов не поддерживается.'");
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ПланОбмена.Ссылка КАК Получатель
|ИЗ
| #ТаблицаПланаОбмена КАК ПланОбмена
|ГДЕ
| ПланОбмена.РегистрироватьИзменения
| И НЕ ПланОбмена.ПометкаУдаления";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаПланаОбмена", "ПланОбмена." + ИмяПланаОбмена);
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Получатели = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Получатель");
Для Каждого Получатель Из Получатели Цикл
Объект.ОбменДанными.Получатели.Добавить(Получатель);
КонецЦикла;
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| ПланОбмена.Ссылка КАК Получатель
|ИЗ
| #ТаблицаПланаОбмена КАК ПланОбмена
|ГДЕ
| НЕ ПланОбмена.ЭтотУзел
| И НЕ ПланОбмена.ПометкаУдаления";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаПланаОбмена", "ПланОбмена." + ИмяПланаОбмена);
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Получатели = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Получатель");
ГлавныйУзел = ПланыОбмена.ГлавныйУзел();
Для Каждого Получатель Из Получатели Цикл
Если Не ВключаяГлавныйУзел И Получатель = ГлавныйУзел Тогда
Продолжить;
КонецЕсли;
Объект.ОбменДанными.Получатели.Добавить(Получатель);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗарегистрироватьИзмененияОбщихДанныхУзлов (БСП)
ЗарегистрироватьИзменениеПриоритетныхДанныхДляПодчиненныхУзловРИБ (БСП)
ЗарегистрироватьОшибкуЗаписиОбъекта (БСП)
РассчитатьКоличествоЗарегистрированныхОбъектов (БСП)
ЗарегистрироватьОбъектыДляПереносаЭлектронныхПодписейИСертификатовШифрования (БСП)
ЗарегистрироватьИзмененияДанных (БСП)
ЗарегистрироватьИсточник (БСП)
ИнтерактивноеИзменениеВыгрузкиЗарегистрироватьДополнительныеДанные (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)