Как скрыть справочник «Партнеры» в 1С:Управление торговлей и работать через один справочник?

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

В конфигурациях на базе «1С:Управление торговлей 11» (включая редакцию 3.0 для Украины) разработчики внедрили разделение на два справочника: Партнеры и Контрагенты. Это было сделано для реализации CRM-концепции, где Партнер — это управленческая сущность (холдинг, бренд), а Контрагент — юридическое лицо для регламентированного учета. Однако для малого бизнеса такая структура часто кажется избыточной и путающей. Рассмотрим подробнее, как можно упростить работу и скрыть это разделение.

Анализ функциональных опций в конфигураторе

Прежде чем приступать к доработкам, проанализируем настройки системы. В более современных версиях УТ (начиная с 11.1) появилась штатная галочка «Независимо вести партнеров и контрагентов». Если ее снять, система сама начинает вести их в режиме «один к одному». Но в ранних версиях, таких как УТ 3.0 (UA), эта опция может отсутствовать в пользовательском интерфейсе. Выясним причину, заглянув в код.

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


ОпцияИспользуется = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов");
Если Не ОпцияИспользуется Тогда
    Сообщить("Система настроена на работу в режиме 1:1");
КонецЕсли;

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

Вариант 1. Синхронизация «один к одному» (Программный метод)

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

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


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

Таким образом, для пользователя процесс становится прозрачным: он заполняет одну карточку, а система сама поддерживает целостность данных в фоновом режиме.

Вариант 2. Использование общего «заглушки»-партнера

Рассмотрим упрощенный, но опасный вариант, предложенный на форуме: создание двух общих партнеров, например «Клиент» и «Поставщик», к которым привязываются все контрагенты.

Внимание! Проанализируем риски этого решения:

  1. Взаиморасчеты: В УТ 11/3.0 регистры расчетов (РасчетыСКлиентами, РасчетыСПоставщиками) используют измерение АналитикаУчетаПоПартнерам. Если у всех клиентов будет один партнер, вы не сможете увидеть задолженность в разрезе конкретных юрлиц в типовых отчетах.
  2. Аналитика продаж: Отчеты по выручке и прибыли в разрезе партнеров станут бесполезными.
  3. CRM: Сегментация, сделки и воронка продаж перестанут работать.

Этот метод допустим только в исключительных случаях, например, в салонах красоты, где все клиенты — физические лица и детальная аналитика по ним не ведется.

Вариант 3. Интерфейсная маскировка

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

  1. Переименование синонимов: В конфигураторе изменим синоним справочника Партнеры на «Клиенты», а справочника Контрагенты на «Юридические лица». Это снимет когнитивную нагрузку с пользователей.
  2. Использование Помощника: Включим в настройках «Использовать помощник создания партнеров». Это специальная форма, которая позволяет ввести данные контрагента и партнера в одном окне «в один присест».
  3. Скрытие полей в формах: В формах документов (например, РеализацияТоваровУслуг) через механизм расширений или «Изменить форму» можно скрыть поле Партнер, оставив только Контрагент, если настроено их автоматическое заполнение.

Технические сложности скрытия справочника

Выясним, почему просто «удалить» справочник не получится. Посмотрим на структуру документов:

В большинстве документов УТ на поле Контрагент наложен программный отбор: СвязиПараметровВыбора. Это поле жестко связано с полем Партнер. Если партнер не выбран, список контрагентов будет пуст.

Чтобы обойти это ограничение, нам придется менять свойства элементов формы в коде:


Элементы.Контрагент.ПараметрыВыбора = Новый ФиксированныйМассив(Новый ПараметрВыбора("Отбор.Партнер", ТекущийПартнер));

Если мы скрываем Партнера, нам нужно программно подставлять его в запрос выбора контрагента, иначе пользователь не сможет выбрать покупателя.

Резюме и рекомендации

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

  1. Проверьте наличие скрытой константы ИспользоватьПартнеровИКонтрагентов в метаданных вашей версии УТ. Если она есть, попробуйте изменить ее значение через обработку.
  2. Если константы нет, используйте механизм синхронизации через подписки на события. Это сохранит аналитику и позволит пользователю работать с одной карточкой.
  3. Обязательно объясните клиенту стоимость работ. Как правильно заметили коллеги на форуме, «перепиливание» всей логики документов (которых сотни) — это трудозатратный процесс. Иногда дешевле обучить персонал работать с двумя справочниками, объяснив им пользу CRM-системы.

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

← На главную