При первичной настройке синхронизации между программами 1С:Зарплата и управление персоналом 3.1 и 1С:Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с неочевидным поведением системы: несмотря на установленный отбор по организации и дату начала использования обмена, в составе отправляемых данных к выгрузке регистрируются абсолютно все документы данной организации за прошлые годы.
В этой статье мы подробно проанализируем, почему возникает подобное поведение, разберем устройство механизмов обмена на базе Библиотеки стандартных подсистем (БСП) и рассмотрим практические способы очистки и настройки корректной регистрации объектов.
Для понимания логики работы 1С разберем архитектуру механизма обмена данными. Процесс синхронизации разделен на два независимых этапа:
ПланОбмена регистрация может захватывать документы за все периоды.Рассмотрим ключевой момент: значение параметра «Дата начала использования обмена» (или месяц начала обмена) проверяется именно на втором этапе — во время формирования итогового сообщения. Это означает, что хотя счетчик зарегистрированных объектов показывает наличие сотен документов прошлых лет, в момент выгрузки программа их проигнорирует и не передаст в базу-приемник. Тем не менее, такое поведение может пугать пользователей и создавать лишнюю нагрузку на таблицы регистрации изменений.
Проанализируем две важные технические особенности, о которых необходимо помнить при настройке обменов:
ФизическиеЛица, ПодразделенияОрганизаций, СпособыОтраженияЗарплатыВБухучете) регистрируются и выгружаются всегда, независимо от выбранного периода обмена, так как они необходимы для сохранения ссылочной целостности в базе-приемнике.Рассмотрим практические варианты решения проблемы, когда необходимо быстро очистить лишнюю регистрацию или убедиться в том, какие именно данные будут отправлены.
Для полного контроля над составом выгружаемых объектов выполним следующие шаги:
Документы (или выделим конкретные виды документов, зафиксированные к отправке).Чтобы визуально проконтролировать процесс выгрузки без риска передать лишние данные в 1С:Бухгалтерию, выполним первичный обмен в интерактивном режиме:
Для предотвращения любых случайных изменений в прошлых закрытых периодах в базе 1С:Бухгалтерия 3.0 рекомендуется настроить дату запрета загрузки данных:
Даже если документ прошлого периода случайно попадет в выгрузку, механизм БСП базы-приемника отклонит его запись, о чем будет зафиксирована соответствующая запись в журнале регистрации.
Если требуется очистить регистрацию изменений программно с использованием встроенного языка 1С, проанализируем следующий пример кода на языке BSL:
// Выясним ссылку на узел обмена
УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("БП");
Если ЗначениеЗаполнено(УзелОбмена) Тогда
// Удаляем регистрацию изменений для всех документов узла
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Тип("ДокументСсылка.ОтражениеЗарплатыВБухучете"));
// Либо отменяем регистрацию для конкретного объекта
// ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, СсылкаНаДокумент);
КонецЕсли;
Использование функции ПланыОбмена.УдалитьРегистрациюИзменений() позволяет точечно или массово управлять очередью сообщений обмена без риска повреждения структуры данных.