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