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