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