Проанализируем распространенную ситуацию: при вызове обработки «Печать прайс-листа» в конфигурации «Управление торговлей» редакции 10.3 (обычные формы) пользователи сталкиваются с тем, что в диалоге выбора организации выводятся абсолютно все юридические лица, включая давно закрытые, архивные или помеченные на удаление. Выясним причину этого поведения и рассмотрим практические способы доработки системы.
В типовой конфигурации «Управление торговлей 10.3» у справочника Организации отсутствует специализированный системный реквизит «Закрыта». Неактивными юрлицами в базе обычно являются организации, для которых установлена пометка на удаление (ПометкаУдаления = Истина) или которые были вручную перенесены пользователями в архивную папку.
При стандартном вызове поле ввода обращается к общей форме выбора справочника, где по умолчанию отбор не установлен. В результате пользователю приходится каждый раз вручную искать актуальное юрлицо среди множества недействительных элементов.
Рассмотрим вариант решения, предложенный на форуме. Если количество собственных юридических лиц в организации небольшое, удобнее отказаться от вызова отдельного окна справочника и заполнять выпадающий список прямо в поле ввода.
Разберем по шагам реализацию этого способа:
ПриОткрытии напишем запрос, выбирающий только действующие организации, и загрузим их в элемент управления.Посмотрим на пример программного кода:
Процедура ПриОткрытии()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ПометкаУдаления = ЛОЖЬ
| И Организации.ЭтоГруппа = ЛОЖЬ";
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ПолеВводаОрганизация.СписокВыбора.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
Если требуется сохранить привычный диалог выбора из формы справочника, но при этом скрыть из него недействительные юрлица, перехватим стандартное событие элемента формы.
Разберем алгоритм работы:
НачалоВыбора.СтандартнаяОбработка = Ложь, чтобы переопределить стандартное открытие формы.Справочники.Организации и передадим в нее структуру отбора по реквизиту ПометкаУдаления.Проанализируем пример кода для обычных форм:
Процедура ПолеВводаОрганизацияНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.Организации.ПолучитьФормуВыбора(, Элемент, );
// Отключаем отображение помеченных на удаление элементов
ФормаВыбора.Отбор.ПометкаУдаления.Установить(Ложь);
ФормаВыбора.Открыть();
КонецПроцедуры
Чтобы не снимать конфигурацию с поддержки и сохранять возможность типового обновления, выполним доработку во внешней обработке:
.epf.Рассмотрим также организационные и административные способы скрытия закрытых юрлиц, если редактирование кода недоступно:
Организации группу «Архив» и перенесем туда неактивные юридические лица. При включенном иерархическом просмотре они перестанут отображаться в корневой папке.