Как запретить перезапись кассовых документов в 1С:Бухгалтерии при синхронизации с 1С:Управление торговлей?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При настройке регулярного обмена между конфигурациями 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 часто возникает ситуация, когда кассовые документы (ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер) после первичной выгрузки дорабатываются бухгалтером непосредственно в базе приемника. Если менеджер в базе источника вносит корректировки в исходный документ задним числом, очередная синхронизация затирает бухгалтерские правки.

Типовая дата запрета изменения данных в 1С:Бухгалтерии 3.0 устанавливается в разрезе организаций и пользователей, но не позволяет точечно ограничить перезапись только определенных видов документов. Разберем основные способы решения этой задачи.

Способ 1. Использование расширения конфигурации и подписки на событие в базе приемнике

Это наиболее надежный способ, который не требует снятия конфигурации с поддержки и не сбрасывается при типовых обновлениях правил синхронизации. Мы перехватываем попытку записи существующего документа в момент загрузки данных.

Разберем по шагам реализацию через расширение:

  1. Создадим новое расширение конфигурации в базе 1С:Бухгалтерия предприятия 3.0 с назначением Адаптация или Дополнение.
  2. Добавим в расширение документы ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер.
  3. Создадим общий модуль и подписку на событие ПередЗаписью для добавленных кассовых документов.
  4. Проверим в коде обработчика, что документ загружается через механизм обмена данными и уже существует в информационной базе:

Процедура ЗапретитьПерезаписьКассовыхДокументовПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    
    // Проверяем, что запись вызвана процессом загрузки обмена
    Если Источник.ОбменДанными.Загрузка И НЕ Источник.ЭтоНовый() Тогда
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры

Проанализируем работу этого механизма: свойство Источник.ОбменДанными.Загрузка принимает значение Истина исключительно во время работы механизмов синхронизации. Метод Источник.ЭтоНовый() проверяет наличие ссылки в базе данных. Новые документы будут успешно созданы и проведены, а любые попытки обновить уже существующие документы в базе-приемнике будут отменены без нарушения целостности данных.

Способ 2. Настройка правил конвертации объектов (КД 2.0)

В типовом обмене между УТ 11.1 и БП 3.0 используются правила конвертации данных формата КД 2.0. Если требуется решить задачу непосредственно в правилах обмена, выполним следующие действия:

  1. Выгрузим правила конвертации из базы УТ 11 через форму настройки синхронизации (файл правил ExchangeRules или правила корреспондента CorrespondentExchangeRules в зависимости от стороны настройки прямого подключения).
  2. Откроем правила в конфигурации Конвертация данных 2.1.
  3. Найдем правила конвертации объектов (ПКО) для документов ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер.
  4. На вкладке основных настроек ПКО включим признак Не замещать существующие объекты в приемнике, а только создавать новые.

Если требуется более тонкая логика управления записью, откроем обработчик события Перед загрузкой в ПКО кассового документа и зададим программный отказ от перезаписи:


// Если объект уже идентифицирован в базе-приемнике
Если Ссылка <> Неопределено И НЕ Ссылка.Пустая() Тогда
    НеЗамещать = Истина;
КонецЕсли;

Если необходимо полностью отменить выполнение загрузки найденного документа без лишней обработки его табличных частей, используем параметр отказа:


Если Ссылка <> Неопределено И НЕ Ссылка.Пустая() Тогда
    Отказ = Истина;
КонецЕсли;

После внесения правок сохраним правила в XML-файл и загрузим их обратно в настройку синхронизации в режиме использования внешнего файла правил.

Способ 3. Ограничение регистрации повторных изменений в базе источнике

Альтернативный подход — исключить саму регистрацию кассовых документов на узле обмена в УТ 11 после их первичной отправки. Для этого используются Правила регистрации объектов (ПРО):

  1. В обработчике ПриРегистрации правила регистрации для кассовых документов проверяется факт первоначальной выгрузки.
  2. Если документ уже был отправлен ранее, переменной Отказ присваивается значение Истина, предотвращая добавление записи в таблицы изменений узла плана обмена.
  3. Текущий состав зарегистрированных изменений можно отслеживать и вручную очищать с помощью стандартной обработки Регистрация изменений для обмена данными.

Важные особенности и ограничения

Рассмотрим нюансы, на которые следует обратить внимание при внедрении запрета на перезапись документов:

  1. Синхронизация удаления: при полном запрете перезаписи существующих документов отмена проведения или пометка на удаление, установленная в 1С:Управление торговлей, не будет переноситься в 1С:Бухгалтерию предприятия.
  2. Связанные справочники: блокировка документа не запрещает изменение реквизитов контрагентов, договоров и статей ДДС, если они зарегистрированы к обмену отдельно от документа.
  3. Обновление конфигураций: изменения, внесенные напрямую в файлы правил ExchangeRules, могут быть перезаписаны типовыми макетами при обновлении конфигураций. Использование расширения с подпиской на событие исключает эту проблему.
← На главную