Как убрать закрытые организации из списка выбора при печати прайс-листа в 1С:Управление торговлей 10.3?

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

Проанализируем распространенную ситуацию: при вызове обработки «Печать прайс-листа» в конфигурации «Управление торговлей» редакции 10.3 (обычные формы) пользователи сталкиваются с тем, что в диалоге выбора организации выводятся абсолютно все юридические лица, включая давно закрытые, архивные или помеченные на удаление. Выясним причину этого поведения и рассмотрим практические способы доработки системы.

Выясним причину проблемы

В типовой конфигурации «Управление торговлей 10.3» у справочника Организации отсутствует специализированный системный реквизит «Закрыта». Неактивными юрлицами в базе обычно являются организации, для которых установлена пометка на удаление (ПометкаУдаления = Истина) или которые были вручную перенесены пользователями в архивную папку.

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

Способ 1. Использование динамического списка выбора в поле формы

Рассмотрим вариант решения, предложенный на форуме. Если количество собственных юридических лиц в организации небольшое, удобнее отказаться от вызова отдельного окна справочника и заполнять выпадающий список прямо в поле ввода.

Разберем по шагам реализацию этого способа:

  1. Откроем форму обработки в конфигураторе и перейдем в свойства элемента управления (поля ввода организации).
  2. Снимем флаг «КнопкаВыбора» и установим флаг «КнопкаСпискаВыбора».
  3. В модуле формы обработки в процедуре ПриОткрытии напишем запрос, выбирающий только действующие организации, и загрузим их в элемент управления.

Посмотрим на пример программного кода:


Процедура ПриОткрытии()
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Организации.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Организации КАК Организации
		|ГДЕ
		|	Организации.ПометкаУдаления = ЛОЖЬ
		|	И Организации.ЭтоГруппа = ЛОЖЬ";
	
	Результат = Запрос.Выполнить().Выгрузить();
	ЭлементыФормы.ПолеВводаОрганизация.СписокВыбора.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры

Способ 2. Перехват события НачалоВыбора с установкой отбора

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

Разберем алгоритм работы:

  1. Для поля ввода организации создадим обработчик события НачалоВыбора.
  2. Установим параметр СтандартнаяОбработка = Ложь, чтобы переопределить стандартное открытие формы.
  3. Программно откроем форму выбора справочника Справочники.Организации и передадим в нее структуру отбора по реквизиту ПометкаУдаления.

Проанализируем пример кода для обычных форм:


Процедура ПолеВводаОрганизацияНачалоВыбора(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	
	ФормаВыбора = Справочники.Организации.ПолучитьФормуВыбора(, Элемент, );
	
	// Отключаем отображение помеченных на удаление элементов
	ФормаВыбора.Отбор.ПометкаУдаления.Установить(Ложь);
	
	ФормаВыбора.Открыть();
КонецПроцедуры

Способ 3. Безопасное внедрение через внешнюю обработку

Чтобы не снимать конфигурацию с поддержки и сохранять возможность типового обновления, выполним доработку во внешней обработке:

  1. Откроем типовую обработку «Печать прайс-листа» через конфигуратор и сохраним ее как внешний файл с расширением .epf.
  2. Внесем изменения в код формы одним из описанных выше способов.
  3. Подключим файл в режиме 1С:Предприятие через интерфейсное меню: Сервис -> Внешние печатные формы и обработки -> Внешние обработки.

Варианты решения без изменения кода

Рассмотрим также организационные и административные способы скрытия закрытых юрлиц, если редактирование кода недоступно:

← На главную