Почему не срабатывает точка останова при открытии формы выбора склада и как разрешить выбор элементов вместо групп в УТ 11.5?

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

В процессе разработки и кастомизации типовых решений на платформе 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда установленная точка останова в процедуре ПриСозданииНаСервере игнорируется системой. Особенно часто это проявляется в конфигурации Управление торговлей 11.5 при работе со справочником Склады. Параллельно с этим может возникнуть прикладная проблема: документ позволяет выбрать только группу справочника, блокируя выбор конкретных элементов. Разберем по шагам, почему это происходит и как настроить систему корректно.

Выясняем причины не срабатывающей точки останова

Проанализируем ситуацию: если отладка на сервере включена, но точка в ПриСозданииНаСервере формы выбора не срабатывает, это может быть вызвано несколькими техническими факторами. Рассмотрим их подробнее.

  1. Подмена формы в модуле менеджера. В современных конфигурациях часто используется обработчик ОбработкаПолученияФормы. Рассмотрим логику: если в модуле менеджера справочника Склады прописан алгоритм, который в зависимости от параметров перенаправляет запрос на другую форму (например, на общую форму подбора), то ваша точка останова в «стандартной» форме выбора просто не будет достигнута. Платформа открывает совершенно другой объект.
  2. Использование расширений. Проверим наличие расширений в базе. Если форма выбора склада была заимствована в расширение, 1С будет открывать именно версию из расширения. Точка останова, поставленная в основной конфигурации, при этом работать не будет.
  3. Протокол отладки (HTTP vs TCP/IP). Посмотрим на настройки отладки в конфигураторе. При использовании протокола HTTP (в версиях 8.3.20+) иногда возникают задержки или ошибки подключения к серверному сеансу. Рекомендуется убедиться, что в параметрах запуска установлен флаг «Отладка разрешена» и выбран верный сетевой адрес сервера.
  4. Фоновые задания. Иногда инициализация формы подбора может происходить в контексте фонового задания (например, для предварительного расчета остатков). Проанализируем настройки: если в параметрах отладки не включено «Автоматическое подключение к фоновым заданиям», остановки на сервере не произойдет.

Методика диагностики через событие «НачалоВыбора»

Если нам нужно понять, какая именно форма открывается и с какими параметрами, применим метод «от обратного». Разберем этот прием подробнее. Вместо того чтобы ждать остановки в форме выбора, поставим точку останова в форме документа, где мы выбираем склад.

Найдем событие НачалоВыбора для реквизита Склад. Если оно не создано, создадим его программно. Рассмотрим пример кода для анализа:


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

Проанализируем ситуацию: если мы установим СтандартнаяОбработка = Ложь и самостоятельно вызовем ОткрытьФорму, точка останова в процедуре ПриСозданииНаСервере формы выбора, скорее всего, сработает. Это подтверждает, что при стандартном вызове система использует кэшированные данные или переопределенные формы.

Почему в документе выбирается только группа складов?

Перейдем к прикладной части вопроса. В УТ 11.5 логика выбора склада в шапке документа (Заказ клиента, Реализация товаров и услуг) жестко завязана на функциональные опции. Выясним причину, почему система может запрещать выбор конкретного склада, подставляя только группу.

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

Посмотрим на код в модуле менеджера справочника Склады, который управляет этим поведением:


Функция ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Склад) Экспорт
    Если ЗначениеЗаполнено(Склад) 
        И ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовПродажи") Тогда
        Возврат Справочники.Склады.ЭтоГруппа(Склад);
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции 

Важный момент: если в настройках системы (НСИ и администрирование — Склады и доставка) установлена возможность отгрузки с нескольких складов, то в шапке документа вы обязаны выбрать именно группу. Это архитектурное решение 1С для УТ 11.5.

Как разрешить выбор элементов (конкретных складов)

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

  1. Проверка свойства поля формы. Откроем форму документа в конфигураторе, выберем поле Склад и найдем свойство ВыборГруппИЭлементов. Убедимся, что там установлено значение Элементы или Группы и элементы. Если стоит Группы, выбор склада будет невозможен.
  2. Анализ параметров выбора (ChoiceParameters). Проверим, не установлены ли в свойствах реквизита объекта или в свойствах элемента формы жесткие отборы. Ищем строку вида Отбор.ЭтоГруппа(Ложь).
  3. Программная модификация отбора. Если ограничение накладывается динамически, мы можем вмешаться в процедуре ПриСозданииНаСервере формы документа. Рассмотрим пример:
    
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
        // Находим элемент формы
        ЭлементСклад = Элементы.Склад;
        // Очищаем существующие связи параметров выбора, если они мешают
        ЭлементСклад.СвязиПараметровВыбора.Очистить();
        // Устанавливаем принудительный выбор только элементов
        НовыйПараметр = Новый ПараметрВыбора("Отбор.ЭтоГруппа", Ложь);
        МассивПараметров = Новый Массив;
        МассивПараметров.Добавить(НовыйПараметр);
        ЭлементСклад.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
    КонецПроцедуры
    

    Подведем итоги

    Для решения проблемы с отладкой и выбором складов мы рекомендуем придерживаться следующего алгоритма:

    • Проверить настройки HTTP-отладки и наличие расширений, которые могут перехватывать вызов формы.
    • Использовать замер производительности, чтобы точно определить, в какой программный модуль уходит управление при нажатии кнопки выбора.
    • Проверить состояние функциональной опции «Несколько складов» в настройках УТ 11.5 — именно она чаще всего является причиной принудительного выбора групп в документах продажи.
    • В случае необходимости использовать событие НачалоВыбора для ручного управления открытием формы через ОткрытьФорму, что гарантированно активирует точки останова.
    Совместное использование этих методов позволит вам не только восстановить работоспособность отладки, но и глубоко понять внутреннюю логику взаимодействия документов со справочниками в типовых решениях 1С.
← На главную