При работе с программными продуктами 1С часто возникает необходимость синхронизации данных между различными конфигурациями, такими как 1С:Зарплата и управление персоналом (ЗУП) и 1С:Бухгалтерия предприятия (БП). Одной из распространенных задач является консолидация информации. Мы рассмотрим ситуацию, когда в 1С:ЗУП настроены две или более отдельные организации (например, обособленные подразделения, ОП), а в 1С:БП эти данные необходимо отразить по одной, головной, организации. Это может быть вызвано требованиями учета, конфиденциальности или просто удобства.
Стандартный механизм синхронизации обычно переносит объекты "как есть", то есть организации из ЗУП будут созданы или сопоставлены с соответствующими им организациями в БП. Однако, если требуется, чтобы данные по зарплате из нескольких ОП в ЗУП попадали в единую головную организацию в БП, возникает необходимость в специальных настройках или доработках. Давайте проанализируем доступные методы и выберем наиболее подходящий.
Этот метод является наиболее прямым и эффективным для достижения нашей цели без глубокой переработки правил обмена. Он основан на изменении соответствия объектов в базе-приемнике, то есть в 1С:БП.
Когда объекты синхронизируются между базами 1С, их сопоставление происходит через специальный регистр сведений, который в современных версиях 1С:Предприятия 8.3 обычно называется Публичные идентификаторы синхронизируемых объектов (ранее мог называться Соответствия объектов информационных баз). В этом регистре хранится информация о том, какой уникальный идентификатор (GUID) объекта в одной базе соответствует какому объекту в другой базе. Наша задача — изменить в базе-приемнике (БП) соответствие GUID'ов организаций из ЗУП на ссылку нужной нам головной организации в БП.
Предположим, у вас есть две организации в ЗУП: "ОП1" и "ОП2", и одна головная организация в БП: "ГоловнаяКомпания". При обычной синхронизации в регистре идентификаторов БП будут записи вида:
GUID_ОП1_ЗУП - УзелОбмена - СсылкаНаОП1_БП
GUID_ОП2_ЗУП - УзелОбмена - СсылкаНаОП2_БП
Чтобы данные из "ОП1" и "ОП2" из ЗУП попадали в "ГоловнаяКомпания" в БП, нам нужно изменить эти записи так:
GUID_ОП1_ЗУП - УзелОбмена - СсылкаНаГоловнаяКомпания_БП
GUID_ОП2_ЗУП - УзелОбмена - СсылкаНаГоловнаяКомпания_БП
Это означает, что когда из ЗУП придет документ с организацией, имеющей GUID_ОП1_ЗУП или GUID_ОП2_ЗУП, система синхронизации 1С в БП будет автоматически подставлять не ссылку на ОП1_БП или ОП2_БП (которые, возможно, даже не нужны), а ссылку на "ГоловнаяКомпания_БП".
Для выполнения этой операции потребуются права администратора и навыки работы с данными 1С. Мы можем воспользоваться стандартными средствами платформы или специальными обработками.
Публичные идентификаторы синхронизируемых объектов.Следует учитывать, что организация может быть связана с другими объектами или реквизитами документов, например, с банковскими счетами, подразделениями. Если в этих связанных объектах также требуется консолидация, их соответствия также, возможно, потребуется скорректировать по аналогичной схеме, либо удостовериться, что они ссылаются на объекты, принадлежащие головной организации в БП. Например, банковский счет ОП1 в ЗУП должен быть сопоставлен с банковским счетом ГоловнойКомпании в БП. Если этого не сделать, могут возникнуть ошибки синхронизации или некорректное заполнение документов.
Если возникли сложности с прямым изменением или вы не хотите создавать в БП лишние организации, соответствующие ОП из ЗУП, можно поступить иначе:
Публичные идентификаторы синхронизируемых объектов все записи, связанные с ОП из ЗУП, а также все записи для подчиненных им объектов (банковские счета, например).Этот подход может быть менее рискованным для тех, кто опасается прямого редактирования регистра.
Если описанный выше метод кажется слишком сложным или недостаточным (например, из-за специфических требований к трансформациям данных), можно рассмотреть доработку типовых правил обмена. Это потребует использования инструмента Конвертация Данных (КД).
Мы будем изменять правила конвертации объектов для справочника "Организации" и документов, которые ссылаются на организации (например, "Отражение зарплаты в бухучете"). На этапе выгрузки из ЗУП или загрузки в БП можно добавить логику, которая будет проверять исходную организацию и, если это одна из ОП, подменять ее на ссылку головной организации БП.
// Пример упрощенной логики в правилах конвертации
// Для объекта "Организация" или реквизита "Организация" в документе
Если Объект.Наименование = "ОП1" ИЛИ Объект.Наименование = "ОП2" Тогда
Объект.Наименование = "ГоловнаяКомпания";
// Дополнительная логика для поиска существующей головной организации в приемнике
// ...
КонецЕсли;
Этот метод обладает существенными недостатками:
Именно из-за этих сложностей метод с прямым изменением регистра соответствий часто является предпочтительным, если он решает задачу.
Если техническая настройка синхронизации кажется слишком сложной или невозможной по каким-либо причинам, существуют менее оптимальные, но работоспособные "костыли" или альтернативные подходы.
Вместо использования постоянной синхронизации, мы можем рассмотреть вариант с отдельной выгрузкой данных из ЗУП и последующей ручной или полуавтоматической загрузкой их в БП. Это дает больше контроля над процессом трансформации данных. В этом случае в БП можно загружать только сводные проводки, без детализации по каждой организации ЗУП.
Этот подход может быть оправдан, если есть бизнес-требования, например, нежелание "светить" зарплату регионов перед головным офисом или наоборот, что требует агрегированных данных.
Это самый простой, но и самый трудоемкий способ для бухгалтерии. Мы можем полностью отказаться от выгрузки документа "Отражение зарплаты в бухучете" из ЗУП. Вместо этого, бухгалтер будет вручную формировать необходимые проводки по зарплате в разделе "Операции" в 1С:БП.
Преимущества: Полный контроль над проводками, не требует технических доработок.
Недостатки: Высокая трудоемкость, риск ошибок при ручном вводе, отсутствие автоматической сверки.
Этот вариант подходит для небольшого объема данных или в качестве временного решения.
После того как документы "Отражение зарплаты в бухучете" выгрузятся из ЗУП в БП (каждый со своей организацией — ОП1 и ОП2), мы можем использовать стандартную обработку Групповое изменение реквизитов в 1С:БП для массовой замены организации во всех этих документах на головную.
Групповое изменение реквизитов, выбрать тип объекта "Документ.ОтражениеЗарплатыВБухучете" и отобрать нужные документы (например, по периоду, по исходной организации).Важный нюанс: Как отмечают пользователи, при изменении организации вручную в документе "Отражение зарплаты в бухучете" вся колонка сотрудников может сбрасываться. Это означает, что если вы используете групповое изменение реквизитов, вам может потребоваться перезаполнить табличные части документов, что сильно снижает ценность этого метода. Мы должны учитывать этот риск и тестировать его работу на копии базы. Если такой сброс происходит, этот "костыль" становится неэффективным. Попытка изменить реквизит программно может выглядеть так:
// Примерный код для обработки изменения организации в документе
// (не гарантирует сохранение табличной части без дополнительной логики)
ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
Если ДокументОбъект.Организация <> НоваяГоловнаяОрганизация Тогда
ДокументОбъект.Организация = НоваяГоловнаяОрганизация;
// В этом месте обычно должна быть логика по перезаполнению
// табличной части, т.к. при смене организации она может быть очищена
// (в зависимости от логики конкретного документа)
ДокументОбъект.Записать();
КонецЕсли;
Без детального анализа структуры документа и его обработчиков, нельзя гарантировать сохранение данных в табличных частях. Таким образом, этот метод может быть непрактичным.
Независимо от выбранного метода, существуют общие моменты, которые мы должны учитывать при работе с синхронизацией.
Стандартный обмен между ЗУП и БП, как правило, является двусторонним. Это означает, что документы, которые были выгружены из ЗУП в БП, затем могут быть модифицированы в БП и синхронизированы обратно в ЗУП. В случае с документом "Отражение зарплаты в бухучете" из БП в ЗУП обычно выгружается только флаг ОтраженоВУчете, указывающий на то, что документ был принят бухгалтерией. Однако, если в БП были произведены изменения, которые повлияли на реквизит "Организация" (например, при использовании "костылей"), существует риск, что эти изменения могут "поехать" обратно в ЗУП и перезаписать там данные, что крайне нежелательно. Мы должны внимательно контролировать правила обратной выгрузки.
Также существуют документы, например, "Отражение удержанного НДФЛ", которые также могут участвовать в обмене. Необходимо проверить, как на них повлияет изменение соответствия организаций.
КРИТИЧЕСКИ ВАЖНО: Перед любыми изменениями в настройках синхронизации или прямым редактированием данных мы должны создать полные резервные копии обеих информационных баз (ЗУП и БП). Это позволит восстановить систему в случае непредвиденных проблем.
Кроме того, для успешной синхронизации крайне важно, чтобы обе конфигурации (ЗУП и БП) были обновлены до актуальных и совместимых релизов. Различные версии платформы 1С:Предприятие и конфигураций могут иметь разные структуры данных и правила обмена, что может привести к ошибкам синхронизации.
Мы также должны убедиться, что настройки детализации данных по сотрудникам в синхронизации совпадают в обеих программах. Если в ЗУП настроено детальное отражение, а в БП ожидаются только сводные данные, это может вызвать расхождения. В ЗУП должны быть корректно настроены Способы отражения зарплаты в бухучете, поскольку именно они определяют, на какие счета и субконто будут формироваться проводки в БП. Эти способы могут быть заданы для организации, подразделения, сотрудника или отдельного начисления.
При необходимости перенастройки синхронизации (например, при объединении организаций или переходе на новую головную организацию в БП) может потребоваться полное удаление текущей настройки синхронизации в обеих базах и создание новой с нуля, правильно установив дату начала синхронизации и сопоставив объекты при первом обмене.
Итак, мы видим, что задача выгрузки данных по зарплате из нескольких организаций 1С:ЗУП в одну головную организацию 1С:БП является решаемой. Наиболее эффективным и наименее затратным в долгосрочной перспективе, если говорить о поддержке, является метод прямого манипулирования регистром Публичные идентификаторы синхронизируемых объектов в базе-приемнике. Он позволяет перенаправить ссылки без сложной доработки правил обмена.
Если этот метод по каким-то причинам не подходит, всегда можно рассмотреть доработку правил обмена (хотя это требует значительных ресурсов и регулярной поддержки), либо применить "костыли", такие как ручной ввод проводок или раздельная выгрузка/загрузка. Метод группового изменения реквизитов в БП сопряжен с риском потери данных в табличных частях документов, и его следует использовать с крайней осторожностью и только после тщательного тестирования.
В любом случае, мы должны помнить о необходимости резервного копирования перед любыми изменениями и внимательно контролировать поведение двусторонней синхронизации, чтобы избежать нежелательных перезаписей данных в ЗУП.