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