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