При переносе данных между конфигурациями (например, из «1С:Управление торговлей» в «1С:Бухгалтерию предприятия») нередко возникают ситуации, когда параметры взаиморасчетов заполняются некорректно. Типовые механизмы конфигурации блокируют интерактивное изменение ключевых реквизитов (например, признака расчетов в условных единицах в справочнике ДоговорыКонтрагентов), если по объекту уже зарегистрированы движения. Разберем, как обойти данные ограничения программно, какие инструменты для этого существуют и к каким последствиям в учете это может привести.
В типовых конфигурациях 1С логика работы форм и модулей объектов запрещает редактирование реквизитов, влияющих на методику бухгалтерского и налогового учета, если по договору уже созданы первичные документы. При попытке изменить реквизит вручную программа требует отменить проведение всех связанных документов.
Чтобы выполнить запись объекта без вызова прикладных проверок модуля, в платформе 1С предусмотрено свойство ОбменДанными.Загрузка. При установке этого свойства в значение Истина:
ПередЗаписью и ПриЗаписи в модуле объекта.Рассмотрим пример кода на встроенном языке 1С, который позволяет принудительно установить признак расчетов в условных единицах для выбранного списка договоров без выполнения встроенных проверок конфигурации.
Для Каждого СсылкаНаДоговор Из МассивДоговоров Цикл
ДоговорОбъект = СсылкаНаДоговор.ПолучитьОбъект();
Если ДоговорОбъект <> Неопределено Тогда
ДоговорОбъект.РасчетВУсловныхЕдиницах = Истина;
ДоговорОбъект.ОбменДанными.Загрузка = Истина;
ДоговорОбъект.Записать();
КонецЕсли;
КонецЦикла;
Разберем данный код по шагам:
ПолучитьОбъект() получаем объектную сущность из ссылки для возможности редактирования.РасчетВУсловныхЕдиницах).ДоговорОбъект.ОбменДанными.Загрузка = Истина, благодаря чему запись пройдет без ошибок валидации.Записать().Если нет возможности писать отдельную внешнюю обработку, можно воспользоваться специализированными инструментами разработчика и администратора:
ОбменДанными.Загрузка, что позволяет массово модифицировать реквизиты любых объектов без написания кода.Простая смена флага в договоре с помощью ОбменДанными.Загрузка = Истина решает только задачу изменения значения в базе данных, но создает риски расхождения бухгалтерского учета. Проанализируем, почему это происходит:
60.01, 60.02, 62.01, 62.02), тогда как для договоров в условных единицах предусмотрены специальные субсчета (60.31, 60.32, 62.31, 62.32).Если период уже закрыт и перепроведение документов невозможно, корректным решением является создание нового договора с правильными реквизитами и перенос задолженности на него с помощью документа КорректировкаДолга текущей открытой датой.