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