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