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