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