Как посмотреть и отследить связь между договорами и соглашениями в 1С:Управление торговлей 11

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

При работе в программе 1С:Управление торговлей (редакция 11), а также в родственных конфигурациях 1С:Комплексная автоматизация 2 и 1С:ERP, пользователи часто сталкиваются с неочевидным поведением системы. Например, менеджер создает индивидуальное соглашение с клиентом, указывает, что расчеты ведутся по договорам, и на основании соглашения генерирует договор. Позже при оформлении заказа клиента выбирается соглашение, и программа автоматически подставляет нужный договор.

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

Методология 1С: Почему между договором и соглашением нет прямой связи?

Для того чтобы понять, как связать эти две сущности, проанализируем архитектуру прикладного решения. Разработчики фирмы «1С» намеренно разделили понятия соглашения и договора, так как они относятся к разным плоскостям ведения учета и бизнеса.

Соглашение с клиентом (типовое или индивидуальное) представляет собой инструмент управленческого учета и маркетинга. Оно фиксирует коммерческие «правила игры»: по каким ценам (ценовым колонкам) будет продаваться товар, какие скидки или наценки предусмотрены для клиента, с какого склада будет производиться отгрузка, в течение какого срока действует предложение и каков будет график оплаты (аванс, предоплата, кредит).

Договор контрагента — это инструмент юридического (регламентированного) и финансового учета. Договор жестко привязан к конкретному юридическому лицу нашей организации и юридическому лицу партнера (контрагенту). В нем фиксируются банковские счета, определяются рамки лимита задолженности, устанавливается валюта взаиморасчетов, а также задается детализация расчетов (по договору в целом, по заказам или по накладным).

Согласно Гражданскому кодексу РФ, договором признается соглашение двух или нескольких лиц об установлении, изменении или прекращении гражданских прав и обязанностей. Но в системе 1С это параллельные справочники по следующим причинам:

  1. Связь «многие-ко-многим»: В рамках одного юридического договора организация может совершать отгрузки по разным коммерческим соглашениям (с разными прайс-листами и скидками). И наоборот — одно соглашение (особенно типовое) может действовать для сотен клиентов, у каждого из которых будет свой уникальный юридический договор.
  2. Разный жизненный цикл объектов: Соглашение может регулярно пересматриваться маркетологами, тогда как рамочный юридический договор с контрагентом заключается на годы вперед.

Именно поэтому в справочнике Справочник.ДоговорыКонтрагентов нет реквизита, ссылающегося на Справочник.СоглашенияСКлиентами, и наоборот. Кнопка «Создать на основании» в соглашении выполняет лишь сервисную функцию: она копирует заполненные реквизиты (организацию, партнера, контрагента, валюту) в форму нового договора, чтобы менеджеру не приходилось вводить их вручную. Прямая ссылка в базе данных при этом не регистрируется.

Как работает автоподстановка договора в документах

Если прямой связи нет, как программа понимает, какой договор подставить в Заказ клиента после выбора соглашения? Здесь работает алгоритм динамического сопоставления параметров.

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

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

Решение 1. Настройка отчета «Ведомость расчетов с клиентами»

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

Рассмотрим по шагам, как вывести нужную информацию в отчете «Ведомость расчетов с клиентами»:

  1. Перейдем в раздел Продажи — Отчеты по продажам и откроем отчет Ведомость расчетов с клиентами.
  2. В верхней панели отчета нажмем кнопку Настройки....
  3. В открывшемся окне настроек переключим вид в режим Расширенный (кнопка внизу панели настроек).
  4. Перейдем на вкладку Структура. По умолчанию там настроена группировка по партнерам, контрагентам и договорам.
  5. Нам необходимо добавить в эту структуру документы-регистраторы и связанные с ними соглашения. Для этого встанем на группировку Договор, нажмем кнопку Добавить и выберем поле Объект расчетов (им как раз выступает заказ или накладная).
  6. Теперь нам нужно вывести соглашение, указанное в этом объекте расчетов. Для этого добавим подчиненную группировку. Нажмем Добавить, раскроем поле Объект расчетов через плюс и найдем реквизит Соглашение.
  7. После настройки структура отчета должна выглядеть следующим образом:
    • Партнер
      • Контрагент
        • Договор
          • Объект расчетов (Заказ/Накладная)
            • Соглашение
  8. Нажмем кнопку Закрыть и сформировать.

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

Решение 2. Использование инструмента «Универсальный отчет»

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

Проанализируем процедуру его настройки:

  1. Перейдем в раздел НСИ и администрирование — Печатные формы, отчеты и обработки — Универсальный отчет.
  2. В шапке отчета выберем тип данных: Документ.
  3. В качестве объекта выберем Заказ клиента (или Реализация товаров и услуг, если заказы в вашей схеме не используются). В табличной части выберем значение Основные данные.
  4. Нажмем кнопку Настройки... и перейдем в Расширенный режим.
  5. На вкладке Группировки отключим все стандартные поля и добавим последовательно:
    • Соглашение
    • Договор
  6. На вкладке Поля и сортировки оставим только необходимые реквизиты (например, номер заказа, дату, партнера). Это поможет разгрузить отчет.
  7. Нажмем кнопку Сформировать.

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

Решение 3. Реализация жесткой связи для разработчиков (через расширение)

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

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

  1. Создадим новое расширение конфигурации.
  2. Добавим в расширение справочник ДоговорыКонтрагентов.
  3. Создадим в справочнике ДоговорыКонтрагентов новый реквизит СоглашениеСсылка с типом значения СправочникСсылка.СоглашенияСКлиентами. Выведем этот реквизит на форму элемента договора.
  4. Добавим в расширение процедуру заполнения нового реквизита при создании договора на основании соглашения. Для этого перенесем в расширение обработчик заполнения справочника договоров.

Пример кода на языке 1С для автоматического заполнения связи:


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

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

← На главную