Синхронизация удаления записей справочников в 1С
В данной статье описано, как реализовать сценарий, когда при удалении записи справочника в одной системе 1С, она удаляется из справочника в другой системе 1С.
Создание обработчика на выгрузку из 1С
Для начала необходимо создать обработчик на выгрузку записи из справочника первой системы. На вкладке В Platform указать тип данных справочника:
Код обработчика для выгрузки
Далее написать код для выгрузки справочника:
Данные = Новый Структура; Данные.Вставить("ПометкаУдаления", ОбъектОбработки.ПометкаУдаления); Данные.Вставить("Наименование", ОбъектОбработки.Наименование); Данные.Вставить("Код", ОбъектОбработки.Код); Данные.Вставить("Описание", ОбъектОбработки.Описание); Данные.Вставить("Артикул", ОбъектОбработки.Артикул); Данные.Вставить("Стоимость", ОбъектОбработки.Стоимость); РезультатОбработки.Body = сшпОбщегоНазначения.ПреобразоватьСтруктуруПоФормату(ФорматСообщения, Данные);
Создание обработчика на загрузку в 1С
Теперь необходимо создать обработчик на загрузку записи в справочник второй системы. На вкладке Из Platform указать тот же тип данных:
Код обработчика для загрузки
#Область СлужебныеПеременные Отказ = Ложь; ОтменитьОбработку = Ложь; ТекстОшибки = ""; ФорматСообщения = сшпФункциональныеОпции.ФорматСообщения(); стрДанных = Новый Структура; ВспомогательнаяСтруктура = Новый Структура; #КонецОбласти #Область ПолученияТелаСообщения xdtoОбъект = сшпОбщегоНазначения.ПолучитьОбъектXDTO(ФорматСообщения, ТелоСообщения); #КонецОбласти ЗначениеДляПоиска = xdtoОбъект.Код; новыйОбъект = Справочники.МоиПродукты.НайтиПоКоду(ЗначениеДляПоиска); Если xdtoОбъект.Получить("ПометкаУдаления") Тогда Если НЕ новыйОбъект.Пустая() Тогда новыйОбъект = новыйОбъект.ПолучитьОбъект(); новыйОбъект.ДополнительныеСвойства.Вставить("СШПНеобрабатывать", Истина); новыйОбъект.Удалить(); КонецЕсли; Иначе Если новыйОбъект.Пустая() Тогда новыйОбъект = Справочники.МоиПродукты.СоздатьЭлемент(); Иначе новыйОбъект = новыйОбъект.ПолучитьОбъект(); КонецЕсли; ЗаполнитьЗначенияСвойств(новыйОбъект, xdtoОбъект); //Запись объекта новыйОбъект.ДополнительныеСвойства.Вставить("СШПНеобрабатывать", Истина); новыйОбъект.Записать(); КонецЕсли;
Проверка сценария
Для того чтобы удаление записи справочника в системе-получателе 1С сработала, необходимо выполнить следующие шаги:
Установить у необходимой записи ПометкаУдаления.
Удалить запись.
Таким образом, запись удалится из второй системы.