Синхронизация удаления записей справочников в 1С

В данной статье описано, как реализовать сценарий, когда при удалении записи справочника в одной системе 1С, она удаляется из справочника в другой системе 1С.

Создание обработчика на выгрузку из 1С

Для начала необходимо создать обработчик на выгрузку записи из справочника первой системы. На вкладке В Platform указать тип данных справочника:

../../_images/image29.png

Код обработчика для выгрузки

Далее написать код для выгрузки справочника:

Данные = Новый Структура;

Данные.Вставить("ПометкаУдаления", ОбъектОбработки.ПометкаУдаления);
Данные.Вставить("Наименование", ОбъектОбработки.Наименование);
Данные.Вставить("Код", ОбъектОбработки.Код);
Данные.Вставить("Описание", ОбъектОбработки.Описание);
Данные.Вставить("Артикул", ОбъектОбработки.Артикул);
Данные.Вставить("Стоимость", ОбъектОбработки.Стоимость);
РезультатОбработки.Body = сшпОбщегоНазначения.ПреобразоватьСтруктуруПоФормату(ФорматСообщения, Данные);

Создание обработчика на загрузку в 1С

Теперь необходимо создать обработчик на загрузку записи в справочник второй системы. На вкладке Из Platform указать тот же тип данных:

../../_images/image30.png

Код обработчика для загрузки

#Область СлужебныеПеременные

Отказ = Ложь;
ОтменитьОбработку = Ложь;
ТекстОшибки = "";
ФорматСообщения = сшпФункциональныеОпции.ФорматСообщения();

стрДанных = Новый Структура;
ВспомогательнаяСтруктура = Новый Структура;

#КонецОбласти

#Область ПолученияТелаСообщения

xdtoОбъект = сшпОбщегоНазначения.ПолучитьОбъектXDTO(ФорматСообщения, ТелоСообщения);

#КонецОбласти

ЗначениеДляПоиска = xdtoОбъект.Код;
новыйОбъект = Справочники.МоиПродукты.НайтиПоКоду(ЗначениеДляПоиска);

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

        ЗаполнитьЗначенияСвойств(новыйОбъект, xdtoОбъект);

        //Запись объекта
        новыйОбъект.ДополнительныеСвойства.Вставить("СШПНеобрабатывать", Истина);
        новыйОбъект.Записать();

КонецЕсли;

Проверка сценария

Для того чтобы удаление записи справочника в системе-получателе 1С сработала, необходимо выполнить следующие шаги:

  1. Установить у необходимой записи ПометкаУдаления.

  2. Удалить запись.

Таким образом, запись удалится из второй системы.