Отбор объектов, введенных на основании
Поскольку задача получения всех объектов, введенных на основании какого-либо другого объекта чаще всего возникает при анализе документов, мы рассмотрим применение описанной выше методики на примере получения списка документов, введенных на основании элемента справочника "Клиенты". [497]
Создадим новый объект конфигурации "КритерийОтбора" с именем "ОказаниеУслуги". На закладке "Данные" выберем тип используемого критерия – СправочникСсылка.Клиенты.
На закладке "Состав" в качестве объектов, входящих в критерий, выберем реквизит "Основание" документа "ОказаниеУслуги":
На закладке "Формы" создадим основную форму списка при помощи конструктора. [498]
Запустите 1С:Предприятие в режиме отладки и проверьте работу критерия отбора:
Кнопка "Перейти" открывает форму списка критерия отбора...
Обратите внимание, что пункт меню "Перейти", формируемый платформой автоматически, включил в себя команду открытия формы списка созданного нами критерия отбора с установленным отбором по текущему элементу справочника "Клиенты".
Чтобы проиллюстрировать действия, выполняемые платформой при открытии формы списка критерия отбора, создадим основную форму списка справочника "Клиенты" и в командную панель формы добавим кнопку "ДокументыКлиента".
Обработчик этой кнопки будет выглядеть следующим образом:
Процедура ДействияФормыДокументыКлиента(Кнопка)
ФормаКритерия = КритерииОтбора.ОказаниеУслуги.ПолучитьФорму();
ФормаКритерия.Открыть();
СписокКритерияОтбора = ФормаКритерия.ЭлементыФормы.Список.Значение;
СписокКритерияОтбора.Отбор.ЗначениеОтбора.Значение = ЭлементыФормы.СправочникСписок.ТекущаяСтрока;
КонецПроцедуры
Этот обработчик открывает форму критерия отбора и затем устанавливает значение единственного элемента отбора объекта [499] КритерийОтбораСписок.ОказаниеУслуги равным ссылке на элемент справочника.
Запустите 1С:Предприятие в режиме отладки и проверьте работу нового пункта меню.
Получение всех ссылок на все связанные документы для дальнейшего их анализа программными средствами возможно при помощи метода менеджера критерия отбора – Найти() Проиллюстрируем это на примере.
Добавьте в обработчик события "При открытии" формы документа "ОказаниеУслуги" следующие строки:
МассивСсылок = КритерииОтбора.ОказаниеУслуги.Найти(ЭлементыФормы.Клиент.Значение);
Для Каждого НужнаяСсылка Из МассивСсылок Цикл
Сообщить(НужнаяСсылка);
КонецЦикла;
КонецПроцедуры
В оригинале...
ФормаКритерия = КритерииОтбора.ОказаниеУслуги.ПолучитьФорму();
ФормаКритерия.Открыть();
СписокКритерияОтбора = ФормаКритерия.ЭлементыФормы.Список.Значение;
СписокКритерияОтбора.Отбор.ЗначениеОтбора.Значение = ЭлементыФормы.СправочникСписок.ТекущаяСтрока;
МассивСсылок = КритерииОтбора.ОказаниеУслуги.Найти(ЭлементыФормы.СправочникСписок.ТекущаяСтрока);
Для Каждого НужнаяСсылка Из МассивСсылок Цикл
Сообщить(НужнаяСсылка);
КонецЦикла;
КонецПроцедуры
if (window.topicInitScriptAvailable) { HMInitToggle('TOGGLE0186A1','hm:type','dropdown','hm:state','0');HMInitToggle('$TOGGLE0186A1_ICON','hm:type','dropdown','hm:state','0','hm:src0','hmtoggle_plus0.gif','hm:src1','hmtoggle_plus1.gif','onclick','HMToggle(\'toggle\',\'TOGGLE0186A1\',\'\$TOGGLE0186A1_ICON\')');}