Глобальная команда — где ее отловить в конфигураторе ? |
Я |
26.12.20 — 15:04
УФ
Глобальная команда формы элемента номенклатуры — Цены номенклатуры. открывается список регистра сведений — цены номенеклатуры — с отбором по текущему товару.
Команда находится на панели -перейти
https://c2n.me/4anmoEj
У номенклатуры — такой команды нет
В глобальных — глаз сломал — не нашел (не факт что нет, но не вижу … )
У РС — команды нет
Точка остановки в списке РС- ловит только событие — присоздании — но до этого — нет ничего
В конфигуртора поиск по открыть форму «ЦеныНоменклатуры.форма.» — не находит ..
куда смотреть далее ?
какой командой открывается этот список цен
1 — 26.12.20 — 15:11
Включи замер производительности и там смотри
2 — 26.12.20 — 15:12
замер производительности на каком моменте ?
при открытии формы списка РС — те на первой строке процедуры — ПриСозданииНаСервере() ?
ставил — не находит ничего. молчит
3 — 26.12.20 — 15:15
Сделай глобальный поиск со всеми галками по тексту, который эта команда показывает в названии или в подсказке
4 — 26.12.20 — 15:16
(2) включаешь отладку на сервере
Вкл замер производительности
Жмешь перейти — цены номенклатуры
откл замер производительности — ищешь что куда обращалось
5 — 26.12.20 — 15:26
(4)
так и делал. я же говорю — ничего не дало.
поставил точку остановки на ПриСозданиинаСервере списка РС
запутсил замер
нажал на Цены номенклатуры
остановил замер
тишина .. никого …
6 — 26.12.20 — 15:26
(3)
да. это и делаю сейчас.
7 — 26.12.20 — 15:29
(6)И?
8 — 26.12.20 — 15:29
(7)
не так быстро
в процессе
9 — 26.12.20 — 15:31
нашлось много …
10 — 26.12.20 — 15:32
(8) Ты что, издеваешься?
Запусти поиск ссылок на справочник Номенклатура и ищи свою ссылку в командах
11 — 26.12.20 — 15:32
но я так понимаю — ищу все таки объект ..
у которого есть команда
те все общие модули — пропускаю
12 — 26.12.20 — 15:34
при чем тут номенклатура ?
хм .. искал регистр сведений ..
сейчас посмотрю поиск на объект Номенклатура
13 — 26.12.20 — 15:37
(12) Потому что команду ты цепляешь к номенклатуре
14 — 26.12.20 — 16:32
А это разве не «предопределенная» команда? Не знаю, как точно называется термин, но речь про те команды, которые по умолчанию появляются в форме эелементов справочников, если их сделать ведущим измерением в каком-либо регистре сведений.
Ну то есть если создать регистр сведений, а в нём измерением сделать какой-нибудь справочник и установить его ведущим — то в форме справочника эта гиперссылка на РС появится автоматически, и не будет выполняться никакого кода при нажатии на эту гиперссылку-«команду».
15 — 26.12.20 — 16:34
(13)
не нашел ничего и никого
16 — 26.12.20 — 16:35
(14)
если это предопределенная команда — то как =то можно понять — кому она доступна или нет
ситуация — пользователь
у него в карточке товара нет это команды.
при этой сам регистр сведений — Цена — по ссылке открывается без ошибок.
а команды это — нет
17 — 26.12.20 — 16:51
пошло оно все в ж…
судя по всеу- на какие то права завязано
ибо дал прав по одному — меню появилось
18 — 26.12.20 — 16:54
Вот ещё решение нашёл в интернете, попробуй, может поможет:
«Была такая же проблема. В форме одного документа в командном интерфейсе в подменю «Перейти» созданный регистр накоплений был, а в другом документе этого же регистра не было. Сделал простую манипуляцию: в свойствах данного регистра накоплений убрал и тут же поставил снова галочку с поля «Использовать стандартные команды». После этого в форме второго документа в командном интерфейсе в подменю «Перейти» данный регистр тоже появился.»
Chameleon1980
19 — 27.12.20 — 05:30
(17) ну конечно права
ибо накуя показывать, что можно перейти, а потом говорит «а вам нельзя»
Заметки: Глобальные команды и несколько динамических списков
В управляемых формах организован очень удобный механизм общих команд, позволяющий у одного объекта конфигурации задать состав объектов, в которых он будет отображаться автоматически. Больше не нужно отдельно в каждой форме объекта и списка добавлять отдельные элементы.
Но бывают ситуации, которые могу поставить в тупик разработчика 1C, который в силу разных обстоятельств плотно не работал с объектом команды. Например, если на форме списка находится несколько динамических списков. В этой ситуации галочка «Основной реквизит» может стоять только у одного объекта, который в списке реквизитов выделяется полужирным, и именно по отношению к этому объекту будут работать все глобальные команды.
При попытке использовать команду во втором (третьем) динамическом списке вывалится ошибка:
Из этой ситуации есть достаточно простой выход. Необходимо использовать параметризуемые глобальные команды (на форме вкладка «Параметры», далее вкладка «Глобальные команды», область «Параметризуемые»), где в дереве элементов перечислен каждый элемент, включенный в команды, а также все команды, которые нам остается вывести на форму.
Подписывайтесь на канал
«Полезный 1С»
В телеграм канале — наш практический опыт, бизнес-кейсы и способы повышения эффективности компании, которые мы опробовали внутри группы Neti.
Возврат к списку
Команды формы
Команды формы
1. Общая информация
Действия в форме выполняются с помощью команд формы. Сами команды служат лишь описанием выполняемых действий. Для того чтобы команда стала выполнять свою функцию, она должна быть привязана к элементу формы (типа Кнопка). Можно выделить несколько групп команд, которые присутствуют в форме:
● Команды, создаваемые разработчиком в процессе проектирования формы. Для них необходимо создавать обработчик непосредственно в модуле формы.
● Стандартные команды, которые предоставляются расширением основного реквизита формы и расширениями реквизитов, которые являются списками (например, табличная часть объекта, динамический список, набор записей регистра сведений и т. д.), если с этим реквизитом есть связанный элемент формы.
● Глобальные команды – команды, предоставленные глобальным командным интерфейсом . Такие команды могут быть непараметризованными и параметризованными. Параметризованные глобальные команды будут предоставлены форме только в
том случае, если на форме есть источники параметров с соответствующими типами.
Доступность стандартных команд формы и элементов формы определяется свойством Состав команд соответствующего элемента формы.
Команды, которые предоставляет глобальный командный интерфейс (закладка Глобальные команды), могут быть размещены в любом месте формы, точно так же, как и команды формы.
В свойстве Действие указывается обработчик, который реализует действие, выполняемое командой. Если обработчик не задан, то команда будет недоступна для использования. К выбору в этом поле доступны только процедуры и функции без параметров, которые являются клиентскими
Если команда изменяет данные формы, то следует указать на это установкой свойства Изменяет сохраняемые данные. Тогда при попытке выполнения команды будут выполняться следующие действия:
● Попытка выполнить блокировку основного реквизита формы. Если попытка закончится неудачей – команда не будет выполнена.
● Установлен признака изменения у формы (флаг Модифицированность).
Если для команды установлено свойство Изменяет сохраняемые данные и форма находится в режиме Только просмотр, то все элементы формы, связанные с этой командой, также будут находиться в состоянии Только просмотр.
Кроме того, исполнение параметризованной глобальной команды, для которой параметр предоставляется реквизитом с установленным свойством Сохраняемые данные, для нового и несохраненного объекта приведет к попытке записать объект. При этом пользователю будет задан вопрос о необходимости записи. Если ответ будет отрицательный – команда не будет выполнена.
ПРИМЕЧАНИЕ. При автоматическом заполнении командных панелей и контекстных меню, для которых указан источник команд, стандартные команды не добавляются, если в данном элементе есть кнопки, добавленные вручную с такими же командами. Данная логика не распространяется на команды, добавляемые из фрагмента глобального командного интерфейса.
Для упрощения разработки различных диалогов в стандартные команды формы добавлены команды Да, Нет, ОК, Отмена, Повторить, Прервать,Игнорировать. Если такая команда добавлена в форму, то при нажатии пользователем этой кнопки будут выполнены следующие действия:
● Для формы, открытой в модальном режиме, выполняется закрытие формы и возвращается соответствующее значение типа КодВозвратаДиалога.
● Для формы, открытой в немодальном режиме, выполняется только закрытие формы.
При формировании имени обработчика выполнения команды будет использоваться свойство команды Имя.
Стандартная команда формы Справка служит для открытия справочной информации по форме/объекту конфигурации. Расположение этой кнопки на командной панели формы определяется свойством ТолькоВоВсехДействиях этой кнопки. Если данное свойство установлено в значение Авто (и для командной панели с автоматическим заполнением), то фактическое расположение будет следующим:
● Интерфейс Такси – если у формы или родительского объекта конфигурации имеется справочная информация, то кнопка будет располагаться на командной панели. В противном случае кнопка будет располагаться только в меню Еще.
● Другие интерфейсы – кнопка всегда располагается на командной панели формы.
Функциональные опции – определяет, с какими функциональными опциями связан данный реквизит формы.
2. Особенности применения различных команд
Для расширений управляемой формы для объекта, справочника, документа, плана видов характеристик, бизнес-процесса, задачи и записи регистра сведений существует стандартная команда Показать в списке, которая предназначена для отображения формы списка соответствующего объекта с позиционированием открываемого списка на объекте, из которого выполняется команда. В интерфейсе команда будет недоступна, если ключевой реквизит формы равен пустой ссылке (или пустому ключу записи), т. е. редактируется новый объект.
Если команда используется в форме документа, то для такой команды доступно свойство Параметр, в котором можно выбрать форму, которая будет использоваться для отображения списка. Для выбора доступен собственно документ и все журналы, в состав которых входит используемый документ.
Кнопка, связанная с командой ПоказатьВСписке, отображается на форме вне зависимости от заполненности свойства Параметр. Если значение свойства Параметр задано, то в качестве заголовка по умолчанию у кнопки, связанной с командой ПоказатьВСписке, используется представление списка соответствующего объекта конфигурации (документа или журнала).
При автоматическом заполнении командной панели формы документа анализируются журналы, в которые входит документ, при этом на эти журналы текущий пользователь должен иметь право Просмотр и они (журналы) должны быть включены функциональным опциям . Если есть хотя бы один такой журнал, то в командной панели вместо кнопки Показать в списке размещается группа кнопок с заголовком Показать в списке. Подменю содержит:
● Команду ПоказатьВСписке, для которой свойство Параметр заполняется ссылкой на документ, в форме которого формируется командная панель;
● Команды ПоказатьВСписке (по одной на каждый подходящий журнал), для которых свойство Параметр заполняется ссылкой на соответствующий журнал документов.
Если нет доступных журналов, то в командной панели размещается команда ПоказатьВСписке, у кнопки которой свойство Параметр не задано.
Для отображения используется основная форма списка (с учетом возможности переопределения, подробнее см. здесь) соответствующего объекта конфигурации.
Если необходимо обеспечить функциональность команды ПоказатьВСписке в рамках реализации какого-то другого алгоритма, то для этого следует использовать метод ВыполнитьПереход(), существующий для объекта УправляемаяФорма.
Пример реализации:
Форма = ПолучитьФорму(“Справочник.Контрагенты.ФормаСписка”);
Форма.ВыполнитьПереход(Объект.Ссылка);
Если необходимо каким-то образом обработать открытие формы с позиционированием на нужном объекте, то это можно сделать с помощью обработчика события ОбработкаПерехода (событие вызывается для управляемой формы). Если после исполнения обработчик события ОбработкаПерехода требуется
выполнить стандартные действия (значение параметра СтандартнаяОбработка равна значению Истина), то у первой таблицы управляемой формы, связанной с основным реквизитом формы типа ДинамическийСписок текущая строка устанавливается в значение, переданное в качестве параметра Объект обработчика события. Если основным реквизитом открываемой формы выступает не динамический список – никаких действий
выполнено не будет.
Previous ArticleПараметры формы
Команда – это указание со стороны пользователя для компьютерной системы на выполнение какого-то действия. В конфигурациях 1С, они по области видимости делятся на глобальные команды и локальные команды формы. Сегодня речь пойдет об одном из элементов глобальных команд – 1С общие команды.
Общими, называют часто используемые команды и при этом они не привязаны к конкретному объекту системы, а наоборот выполняют одинаковое действие. К ним относятся: кнопки печати документа, отчет об изменении объекта или его проводок, структуры подчиненности, проще говоря — стандартные настройки 1С.
При вызове общей команды для определения данных конкретного объекта используются параметры 1С пользовательские настройки, в которые система передает некое значение, требуемое для выполнения алгоритма. Параметризованные команды будут отображаться только в тех формах, которые имеют одинаковый с параметром тип. Его значение определяется в процессе разработки.
Когда вы добавляете в дерево метаданных свою общую команду, то после этого автоматически будут открыты окна модуля команды и ее свойств.
Свойства общей команды:
— группа, т.е. расположение в интерфейсе;
— тип параметра команды – указывается, в каких объектах будет доступна данная кнопка;
— режим использования параметра – определяет, сколько значений можно будет передать в параметр;
— изменяет данные – определяет, будет ли форма перечитывать данные после выполнения команды;
— модуль команды – описание действий, которые выполняет данная команда.
Также надо проверять на закладке «Команды» установлен ли флаг «Использовать 1С стандартные команды».
Объект конфигурации «Группы команд»
С помощью этого объекта можно сгруппировать кнопки, выполняющие схожие действия, а также вывести их на командный интерфейс программы. Это указывается в свойстве «Категория», оно обязательно к заполнению.
Свойства группы команд:
— синоним – текст, который будет выводиться как название группы;
— отображение – вариант отображения, по умолчанию установлено «Авто»;
— подсказка – текст всплывающей подсказки;
— картинка – картинка, представляющая группу в интерфейсе конфигурации.
У этого объекта есть такие особенности:
Не назначаются права;
Не определяется принадлежность к подсистемам;
Независим от функциональных опций;
Группа видна, когда одна из команд группы доступна пользователю.
Занятие 27 851
Можно также программно добавить реквизит в массив проверяемых реквизитов (листинг 27.5).
Листинг 27.5. Добавление реквизита в массив проверяемых реквизитов
ПроверяемыеРеквизиты.Добавить(«ПереченьНоменклатуры.НаборСвойств»);
Использование параметризованных команд
Использование параметризованных команд в формах объектов позволяет при выполнении команды передать в обработчик команды какой-либо параметр, например значение ссылочного реквизита. И затем использовать его, например, открыть с этим параметром форму отчета.
Для примера создадим команду открытия отчета, показывающего остатки материалов по складу, указанному в документе. Отчет будет вызываться из формы документа ОказаниеУслуги, в него будет передаваться значение реквизита документа Склад, и при открытии отчета в настройки отчета будет добавляться отбор по параметру
Склад.
В режиме «Конфигуратор»
Сначала создадим параметризованную команду объекта конфигу-
рации Отчет Материалы.
Для этого откроем окно редактирования этого объекта. На закладке Команды нажмем кнопку Добавить и создадим команду Остат-
киПоСкладу.
В открывшейся палитре свойств зададим Тип параметра команды –
СправочникСсылка.Склады. В свойстве Группа укажем Командная панель формы.Важное (рис. 27.37).
Таким образом, мы создали команду с типом параметра СправочникСсылка.Склады, и теперь во всех формах, имеющих реквизит такого типа, эта команда автоматически будет добавлена в список параметризуемых команд, доступных в форме.
852 1С:Предприятие 8.3. Практическое пособие разработчика
Рис. 27.37. Создание параметризованной команды
В открывшемся модуле команды заполним обработчик для ее выполнения следующим образом (листинг 27.6).
Листинг 27.6. Обработчик параметризованной команды
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура(«Отбор, КлючНазначенияИспользования, СформироватьПриОткрытии», Новый Структура(«Склад», ПараметрКоманды), «ОстаткиПоСкладу», Истина);
ОткрытьФорму(«Отчет.Материалы.Форма», ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, Истина, ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры
Прокомментируем этот код.
Занятие 27 853
В процедуру ОбработкаКоманды() передается ПараметрКоманды,
содержащий значение типа СправочникСсылка.Склады. Затем создается структура параметров формы (ПараметрыФормы): Отбор,
КлючНазначенияИспользования, СформироватьПриОткрытии.
В параметр Отбор добавляется структура, содержащая элемент Склад со значением, содержащимся в параметре команды
(ПараметрКоманды), параметр КлючНазначенияИспользования –
«ОстаткиПоСкладу» определяет назначение использования формы, а параметру СформироватьПриОткрытии присваивается значение Истина, чтобы отчет формировался сразу после открытия.
Затем структура параметров формы передается в глобальный метод ОткрытьФорму(), и форма, указанная в первом параметре метода, открывается с параметром Склад. Причем поскольку в четвертом параметре Уникальность этого метода передается Истина, то при открытии формы каждый раз будет открываться новая форма отчета и отчет будет заново сформирован с отбором по складу, переданному в параметре команды.
Теперь поместим нашу команду в форму документа.
Как мы уже говорили, в формах документов ПриходнаяНакладная
и ОказаниеУслуги содержится команда ОстаткиПоСкладу, так как они имеют реквизит Склад типа СправочникСсылка.Склады.
Откроем форму документа ОказаниеУслуги.
На закладке Команды перейдем в раздел Глобальные команды. Здесь мы видим список глобальных параметризуемых команд, доступных в форме. В группе Параметризуемые раскроем строку
Объект и перетащим нашу команду Отчет.Материалы.Команда.ОстаткиПоСкладу(Объект.Склад) в командную панель элементов формы.
В скобках у команды указано значение реквизита Склад (Объект.Склад), которое будет передаваться в команду при ее выпол-
нении (рис. 27.38).
Заметьте, что мы не создавали форму отчета и не добавляли в настройки отчета отбор по параметру формы Склад. Система сделает это сама при выполнении обработчика команды ОстаткиПо-
Складу.
854 1С:Предприятие 8.3. Практическое пособие разработчика
Рис. 27.38. Помещение параметризованной команды в форму
В режиме «1С:Предприятие»
Запустим «1С:Предприятие» в режиме отладки и откроем документ
Оказание услуги № ЦБ000000001.
Нажмем кнопку Остатки по складу и вызовем отчет Материалы. Форма отчета генерируется системой автоматически. Отчет будет выполнен сразу при открытии формы с отбором по складу Основной, указанному в форме документа (рис. 27.39).
Закроем отчет. Если в форме документа мы изменим склад на Розничный, а затем выполним отчет нажатием кнопки Остатки по складу, то он будет сформирован с отбором по складу Розничный (в данном случае отчет будет пустой, так как у нас нет движений материалов по этому складу).
Таким образом, мы создали для пользователя очень удобную возможность – открывать отчет, показывающий остатки материалов по складу, прямо из формы документа с отбором по указанному в документе складу.
Занятие 27 855
Рис. 27.39. Отчет «Материалы» с отбором по складу, указанному в документе
Открытие формы списка с заданным отбором
В заключение рассмотрим распространенный случай, когда требуется открыть форму списка с некоторым заранее установленным отбором. На этом же примере мы поясним различие между фиксированными (программными) пользовательскими настройками и настройками динамического списка, сделанными в конфигураторе.
Предположим, из списка сотрудников нам нужно открыть список документов об оказании услуг, выполненных сотрудником, который выделен в форме списка.
Похожую задачу мы уже решали с помощью критерия отбора и механизма ввода на основании (см. раздел «Получение объектов, введенных на основании» на стр. 811). Теперь выполним ее с помощью встроенного языка.
В режиме «Конфигуратор»
Итак, нам нужно открыть форму списка документов Оказание услуги с отбором по мастеру, в котором поле Мастер будет равно ссылке на текущего сотрудника в списке сотрудников.
Для этого создадим форму списка справочника Сотрудники, затем создадим в ней команду ОказаниеУслуг и перетащим ее в командную
856 1С:Предприятие 8.3. Практическое пособие разработчика
панель формы. В палитре свойств команды ОказаниеУслуг, в строке Действие создадим клиентский обработчик этой команды
(рис. 27.40).
Рис. 27.40. Форма списка справочника «Сотрудники»
В модуле формы заполним обработчик команды следующим образом
(листинг 27.7).
Листинг 27.7. Обработчик команды «Оказание услуг»
&НаКлиенте Процедура ОказаниеУслуг(Команда)
ПараметрыФормы = Новый Структура( «Отбор», Новый Структура(«Мастер», Элементы.Список.ТекущаяСтрока));
ОткрытьФорму(«Документ.ОказаниеУслуги.ФормаСписка», ПараметрыФормы,, Истина);
КонецПроцедуры
Этот код очень похож на предыдущий листинг 27.6, в котором открывалась форма отчета с отбором по значению параметризованной команды. Только здесь в значение отбора для поля Мастер передается ссылка на текущий элемент списка сотрудников, которая содержится в свойстве ТекущаяСтрока таблицы формы Список, отображающей данные динамического списка. Затем этот отбор передается в параметры формы при открытии формы списка документов
Оказание услуги.
Занятие 27 857
В режиме «1С:Предприятие»
Запустим «1С:Предприятие» и откроем список сотрудников. В форме списка появилась кнопка Оказание услуг. При ее нажатии открывается список документов об оказании услуг, где мастером является текущий сотрудник (рис. 27.41).
Рис. 27.41. Отбор по мастеру в списке документов «Оказание услуги»
Однако не все так просто, как может показаться. Здесь есть одна тонкость, которую нужно знать и учитывать при создании настроек (в частности, отборов) динамических списков.
Как уже говорилось, динамический список построен на основе системы компоновки данных. Настройки списка при открытии формы помещаются в свойство динамического списка Компонов-
щикНастроек.
Следует различать три вида настроек динамического списка:
Фиксированные настройки, сделанные программным путем, помещаются в свойство динамического списка КомпоновщикНа-
строек.ФиксированныеНастройки;
Настройки, сделанные в конфигураторе, помещаются в свойство динамического списка КомпоновщикНастроек.Настройки;
Пользовательские настройки, сделанные в режиме 1С:Предприятие, помещаются в свойство динамического списка Компо-
новщикНастроек.ПользовательскиеНастройки.
858 1С:Предприятие 8.3. Практическое пособие разработчика
Пользовательские настройки загружаются из системного хранилища и накладываются на настройки, сделанные в конфигураторе. В случае пересечения этих настроек пользовательские настройки имеют больший приоритет, то есть «затирают» настройки конфигуратора.
Затем к полученным настройкам применяются фиксированные настройки. Но в случае пересечения этих настроек будет выдаваться ошибка. Например, при открытии формы списка с отбором (в нашем случае по полю Мастер) этот отбор помещается в фиксированные настройки. Поэтому пользователь уже не сможет установить отбор списка по тому же полю.
Таким образом, если пользователь должен иметь возможность создаватьотборпополю,участвующемувфиксированныхнастройках списка, нужно удалить отбор из коллекции фиксированных настроек
(КомпоновщикНастроек.ФиксированныеНастройки.Отбор) и добавить этот отбор в коллекцию основных настроек списка (КомпоновщикНа-
строек.Настройки.Отбор).
В режиме «Конфигуратор»
Чтобы решить поставленную задачу, откроем форму списка документа ОказаниеУслуги, которую мы создали ранее. В редакторе формы создадим реквизиты формы ПрограммныйОтбор типа Булево и два реквизита произвольного типа – ПолеОтбора и ЗначениеОтбора. Эти реквизиты будут хранить информацию о программном отборе в форме списка.
Затем создадим обработчик события формы ПриСозданииНаСервере и заполним его следующим образом (листинг 27.8).
Листинг 27.8. Обработчик события формы «ПриСозданииНаСервере»
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Отбор.Свойство(«Мастер») Тогда ПрограммныйОтбор = Истина; ПолеОтбора = Новый ПолеКомпоновкиДанных(«Мастер»);
Параметры.Отбор.Свойство(«Мастер», ЗначениеОтбора); КонецЕсли
КонецПроцедуры
Занятие 27 859
При создании формы списка с помощью коллекции параметров формы мы проверяем, был ли установлен отбор по полю Мастер. Если такой отбор установлен, то мы устанавливаем признак того, что форма была открыта с программным отбором, реквизит ПолеОтбора устанавливаем как поле компоновки данных с именем Мастер, а в реквизит ЗначениеОтбора помещаем соответствующее значение отбора из коллекции параметров формы.
Далее создадим обработчик события формы ПриОткрытии и заполним его следующим образом (листинг 27.9).
Листинг 27.9. Обработчик события формы «ПриОткрытии»
&НаКлиенте Процедура ПриОткрытии(Отказ)
Если ПрограммныйОтбор = Истина Тогда ПрограммныеНастройки = Список.КомпоновщикНастроек.ФиксированныеНастройки;
Для Каждого ЭлементНастроек Из ПрограммныеНастройки.Отбор.Элементы Цикл Если ЭлементНастроек.ЛевоеЗначение = ПолеОтбора Тогда
ПрограммныеНастройки.Отбор.Элементы.Удалить(ЭлементНастроек); КонецЕсли;
КонецЦикла;
Настройки = Список.КомпоновщикНастроек.Настройки;
ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = ПолеОтбора; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = ЗначениеОтбора;
Список.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); КонецЕсли;
КонецПроцедуры
Код обработчика выполняется в случае, если форма была открыта с программным отбором.
Сначала обходится коллекция элементов отбора фиксированных настроек компоновщика настроек динамического списка. Если в коллекции присутствует элемент отбора, в котором ЛевоеЗначение равно значению реквизита ПолеОтбора (т. е. установлен программный отбор по полю Мастер), то этот элемент удаляется.
Затем этот же отбор добавляется в коллекцию настроек динамиче-
ского списка КомпоновщикНастроек.Настройки.Отбор, и измененные настройки загружаются в компоновщик настроек.
860 1С:Предприятие 8.3. Практическое пособие разработчика
Теперь осталось только удалить созданный элемент отбора при закрытии формы списка документа ОказаниеУслуги.
Для этого создадим обработчик события формы ПередЗакрытием и заполним его следующим образом (листинг 27.10).
Листинг 27.10. Обработчик события формы «ПередЗакрытием»
&НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
Если ПрограммныйОтбор = Истина Тогда Настройки = Список.КомпоновщикНастроек.Настройки;
Для Каждого ЭлементНастроек Из Настройки.Отбор.Элементы Цикл Если ЭлементНастроек.ЛевоеЗначение = ПолеОтбора Тогда
Настройки.Отбор.Элементы.Удалить(ЭлементНастроек); КонецЕсли;
КонецЦикла; Список.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
КонецЕсли;
КонецПроцедуры
Код обработчика выполняется в случае, если форма была открыта с программным отбором.
Коллекция элементов отбора настроек компоновщика настроек дина-
мического списка КомпоновщикНастроек.Настройки.Отбор обходится в цикле. Если в коллекции присутствует элемент отбора, в котором ЛевоеЗначение равно значению реквизита ПолеОтбора, то этот элемент удаляется. Затем измененные настройки загружаются в компоновщик настроек.
В режиме «1С:Предприятие»
Запустим «1С:Предприятие», откроем список сотрудников и нажмем кнопку Оказание услуг. Откроется список документов об оказании услуг, где мастером является текущий сотрудник. Вызовем окно настройки списка, выполнив команду Еще Настроить список… В открывшемся окне мы видим добавленный нами отбор по полю Мастер, который пользователь может изменить или очистить
(рис. 27.42).
Соседние файлы в папке Учебники
- #
- #
- #
- #
- #
- #