Почему в 1С:УТ 11.5 при выборе контрагента не появляется поле «Договор» и как это исправить?

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

При переходе с устаревших версий (например, 1С:УТ 10.3) на современные конфигурации на базе 1С:УТ 11.5 пользователи и менеджеры часто сталкиваются с неожиданным поведением интерфейса. Одной из самых распространенных проблем является "исчезновение" поля Договор в документе Реализация товаров и услуг. Рассмотрим подробно, почему система ведет себя именно так, разберем внутреннюю логику программы и найдем способы сделать работу пользователей более комфортной.

Анализируем причину: Соглашение vs Договор

В современных конфигурациях семейства ERP (УТ 11, КА 2, ERP 2) произошло четкое разделение понятий. Проанализируем ситуацию: в старой логике Договор отвечал и за финансовые условия, и за цены, и за юридические аспекты. В УТ 11.5 эти функции разделены между двумя объектами:

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

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

Разбираем настройки функциональных опций

Прежде чем приступать к доработкам, выясним причину в настройках системы. Перейдем в раздел НСИ и администрирование — Настройка НСИ и разделов — Продажи. Здесь нас интересуют два флажка:

Если обе опции включены, то видимость договора будет жестко зависеть от выбранного соглашения. В справочнике Соглашения с клиентами на вкладке Условия продаж есть важный реквизит — Хозяйственная операция и настройки расчетов. Если в соглашении указано «Требуется указание договора», поле появится в документе сразу после выбора такого соглашения.

Способ 1: Использование типовых решений без программирования

Рассмотрим вариант, как упростить жизнь менеджеру, не прибегая к сложным доработкам конфигурации. Если ваша цель — чтобы поле Договор заполнялось максимально быстро, воспользуйтесь механизмом Основного соглашения или установите расширение, которое обеспечит подстановку основного договора по умолчанию в документы — для этой задачи подойдёт расширение для автоподстановки основного договора в документы.

Проанализируем алгоритм: Если у партнера (клиента) создано и назначено одно соглашение в качестве основного, то при выборе клиента в документе Реализация товаров и услуг это соглашение подставится автоматически. Если в настройках этого соглашения включено использование договоров, то поле Договор станет видимым мгновенно. Таким образом, менеджеру не придется делать лишний клик.

Способ 2: Отключение использования соглашений

Если бизнес-процессы компании не требуют сложного маркетингового учета, ведения различных видов цен для разных категорий клиентов и графиков оплаты, можно рассмотреть радикальный вариант: отключить использование соглашений в настройках. В этом случае поле Договор станет первичным и будет отображаться сразу после выбора контрагента, как это было в УТ 10.3.

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

Способ 3: Техническое решение через расширение (для программистов)

Если бизнес-процесс требует выбора договора первым (например, когда договор определяет вид цены через связанное с ним соглашение), нам придется воспользоваться механизмом расширений. Чтобы управлять интерфейсом более гибко, можно применить универсальное расширение для настройки доступа и видимости реквизитов документов по пользователям.

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

Рассмотрим пример кода в расширении для формы документа РеализацияТоваровУслуг, который поможет реализовать связку «Договор -> Соглашение»:


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

&НаСервере
Процедура ПолучитьДанныеДоговораНаСервере()
    // Предположим, мы добавили доп. реквизит в Договор или ищем по определенной логике
    СоглашениеДоговора = Объект.Договор.Соглашение; 
    Если ЗначениеЗаполнено(СоглашениеДоговора) Тогда
        Объект.Соглашение = СоглашениеДоговора;
        // Важно вызвать типовой обработчик изменения соглашения
        СтруктураПересчета = Новый Структура("ПересчитатьЦены", Истина);
        ПродажиСервер.СоглашениеПриИзмененииСервер(Объект, СтруктураПересчета);
    КонецЕсли;
КонецПроцедуры

Проблема объектов расчетов в УТ 11.5

Проанализируем ситуацию с точки зрения новой архитектуры взаиморасчетов. С версии 11.5 появился механизм Объекты расчетов. Теперь система хранит данные о задолженности не просто в разрезе договоров, а в разрезе конкретных ключей. Чтобы разобраться в этой структуре, полезно использовать отчет для анализа продаж и оплат по объектам расчётов.

Важное предостережение: Если вы решите "насильно" выводить поле Договор и записывать туда данные, игнорируя настройки соглашения (в котором может быть указано "Расчеты ведутся по заказам"), вы рискуете получить критическую ошибку при проведении документа. Программа выдаст сообщение: "Объект расчетов не соответствует настройкам соглашения".

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

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

Резюме для базы знаний

Мы выяснили причину: в 1С:УТ 11.5 поле Договор скрыто до момента выбора Соглашения, так как именно соглашение диктует финансовую политику документа. Типовое решение заключается в настройке основных соглашений для партнеров.

При переходе с 10.3 на 11.5 лучше всего потратить время на переобучение персонала новой логике (Маркетинг -> Финансы). А чтобы сделать переход менее болезненным, можно использовать расширение, реализующее вывод суммы долга в формах реализации и заказа в привычном для пользователей стиле. Также хорошим дополнением станет инструмент, позволяющий видеть задолженность клиентов и поставщиков непосредственно на форме документов при выборе контрагента, что значительно повышает оперативность работы.

Помните, что любая программная правка через расширение требует осторожности и обязательной синхронизации выбранного договора с правилами расчетов во избежание конфликтов с регистром Расчеты с клиентами.

← На главную