Как изменить реквизит «Вести по документам расчетов с контрагентом» в 1С при наличии проведенных документов?

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

При ведении учета в конфигурации «1С:Управление производственным предприятием» пользователи и специалисты нередко сталкиваются с ситуацией, когда требуется изменить способ ведения взаиморасчетов в договоре контрагента. Однако типовой интерфейс программы блокирует редактирование признака ВестиПоДокументамРасчетовСКонтрагентом, если по договору уже зарегистрированы проведенные расчетные документы. Попытки изменить данный флаг с помощью универсальных обработок часто не дают результата из-за синтаксических неточностей в коде. Разберем по шагам, почему возникает эта блокировка, как правильно составить программный алгоритм для записи изменений и какие последствия для учета несет данный шаг.

Выясним причину системного запрета на изменение реквизита

В конфигурациях на платформе 1С признак «Вести по документам расчетов с контрагентом» является ключевым параметром, определяющим архитектуру формирования движений в регистрах. Рассмотрим подробнее, на что именно влияет данный флаг:

  1. Разделение регистров накопления. Если флаг установлен, проводящиеся документы делают записи одновременно в два регистра: общий оборотный регистр ВзаиморасчетыСКонтрагентами и детальный регистр ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов. Если флаг снят, детальный регистр вообще не задействуется, а учет расчетов ведется котловым методом в целом по договору (по алгоритму ФИФО).
  2. Аналитика регламентированного учета (Субконто 3). На счетах расчетов с контрагентами (таких как 60, 62, 76) третье субконто жестко привязано к документу расчетов. Переключение признака на лету приводит к рассинхронизации между остатками на счетах бухгалтерского учета и данными оперативных регистров.

Именно поэтому модуль объекта справочника ДоговорыКонтрагентов при интерактивной записи выполняет проверку наличия движений и блокирует редактирование, защищая базу от разрушения аналитики.

Разберем синтаксические ошибки при использовании произвольного алгоритма

В типовой сервисной обработке «Универсальный подбор и обработка объектов» можно выполнять произвольный код на встроенном языке для каждого выбранного элемента. Проанализируем типичный ошибочный код, с которым сталкиваются разработчики:


ОбменДанными = Истина;
ВестиПоДокументамРасчетовСКонтрагентом = Ложь;

В данном фрагменте допущены сразу три критические ошибки:

  1. Некорректное обращение к свойству обмена данными. Свойство ОбменДанными является объектом типа ПараметрыОбменаДанными, а не переменной типа Булево. Для подавления типовых проверок в обработчиках ПередЗаписью и ПриЗаписи необходимо взводить вложенное свойство Загрузка: Объект.ОбменДанными.Загрузка = Истина.
  2. Отсутствие контекста объекта. В теле произвольного алгоритма текущий обрабатываемый элемент справочника доступен через переменную Объект. Обращение к реквизитам напрямую без указания контекста приводит к созданию локальных переменных, которые никак не влияют на реальные поля базы данных.
  3. Отсутствие вызова метода записи. Модификация полей в памяти не сохраняется в базу автоматически — объекту требуется явная команда Записать().

Реализация рабочего программного кода

Посмотрим на пример корректного кода для произвольного алгоритма сервисной обработки, который позволяет изменить реквизит в обход стандартных проверок модуля объекта:


Объект.ОбменДанными.Загрузка = Истина;
Объект.ВестиПоДокументамРасчетовСКонтрагентом = Ложь;
Объект.Записать();

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


Объект.ОбменДанными.Загрузка = Истина;
Объект.ВестиПоДокументамРасчетовСКонтрагентом = Истина;
Объект.Записать();

Установка свойства Загрузка = Истина сообщает платформе, что объект записывается механизмом обмена данными, в результате чего встроенные прикладные проверки блокировок игнорируются.

Оценим риски и последствия прямого изменения реквизита

Важно понимать, что успешная запись элемента в базу — это лишь техническая часть задачи. Изменение режима расчетов «задним числом» не трансформирует автоматически уже существующие движения документов. Проанализируем, к чему приводит подобное вмешательство:

  1. «Зависание» остатков и развернутое сальдо. На бухгалтерских счетах и в регистрах взаиморасчетов возникают незакрывающиеся дебетовые и кредитовые хвосты по разным документам в пределах одного договора.
  2. Сбои при зачете авансов и исчислении НДС. Программа перестает сопоставлять оплаты и отгрузки, нарушается расчет курсовых разниц, а книга покупок и книга продаж формируются с ошибками.
  3. Необходимость полного перепроведения. Чтобы регистры пришли в соответствие новой настройке, потребуется перепровести цепочку документов с самого начала действия договора. Если среди них есть документы из закрытых налоговых периодов, это вызовет искажение сданной отчетности.

Методологически корректные альтернативные варианты решения

Вместо принудительного изменения реквизита программным путем на практике рекомендуется применять более надежные и безопасные сценарии.

Вариант 1. Создание нового договора (рекомендуемый способ)

  1. В наименование старого договора добавим пометку «Не использовать» или «Закрыт».
  2. Создадим новый договор с контрагентом, в котором сразу установим нужное состояние флага ВестиПоДокументамРасчетовСКонтрагентом.
  3. Оформим документ КорректировкаДолга с видом операции «Перенос задолженности», перенеся актуальное сальдо расчетов со старого договора на новый. В документе остаток аккуратно закроется по старому принципу учета и откроется по новому.

Вариант 2. Распроведение документов (для открытых периодов)

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

Что необходимо сделать, если реквизит все же изменен принудительно

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

  1. Запустим сервисную обработку «Восстановление последовательности расчетов» или выполним групповое перепроведение по данному контрагенту.
  2. Проверим корректность данных отчетом «Оборотно-сальдовая ведомость по счету» (счета 60, 62) с детализацией по субконто «Договоры» и «Документы расчетов с контрагентами».
  3. Сформируем отчет «Ведомость по взаиморасчетам с контрагентами» и убедимся в отсутствии взаимных положительных и отрицательных остатков.

Предотвращение проблемы в будущем

Чтобы избежать ошибочной установки флага в новых договорах, проверим пользовательские настройки системы. Для этого перейдем в меню: Сервис → Настройки пользователя → Основные значения для подстановки в документы и справочники. Скорректируем значение по умолчанию для флага ведения расчетов по документам, чтобы все создаваемые карточки сразу заполнялись в соответствии с учетной политикой организации.

← На главную