- Как открыть форму списка с некоторым выбором?
- Как открыть форму списка дочерних каталогов с выбором владельца?
- Как открыть дочернюю форму текущего элемента формы списка?
- Программный открытие форм в управляемом приложении 1С
- 1. Как открыть форму объекта в управляемом приложении, если на него есть ссылка.
- 2. Как открыть форму выбора и затем получить выбранное значение.
- 3. Как открыть форму существующего объекта
- 4. Как открыть новый объект формы
- 5. Как открыть новую форму объекта и заполнить ее на основе чего-либо
- 6. Как открыть форму и установить на ней выборку
- 7. Как открыть форму записи журнала информации
- Как открыть форму списка документов с выбором?
Как открыть форму списка с некоторым выбором?
Существует несколько способов открыть форму списка с определенным выбором. Рассмотрим их по порядку:
1. Первый способ заключается в том, что при открытии формы можно задать параметр Select Form и открыть форму списка с этим параметром. Параметр Selection является структурой. Имена элементов соответствуют названиям полей, используемых для выбора, а значения содержат значения выбора. Это вариант расширения управляемой формы динамического списка. Это означает, что он существует для форм, основным атрибутом которых является атрибут DynamicList, например, список форм и селектор форм.
В процессе открытия формы фильтрация будет установлена для указанного поля. Например, в следующем примере открывается список квитанций, отфильтрованных по полю Число, равному 333.
FilterValue = NewStructure(«Число», «333»);
ChoiceParameters = NewStructure(«Filter»,FilterValue);
2. Можно открыть форму списка без параметров:
И затем в обработчике событий формы список входящих накладных При СозданииНаСервере , напишите код, создающий выборку в динамический список, который является основным атрибутом формы:
&OnServer
CreateProcedureOnServer(Failure, StandardProcessing)
FilterItem = List .Filter.Items.Add(Type(» DataCompositionFilterItem»));
ЭлементВыбора.ЛевоеЗначение = Новое ПолеКомпоновкиДанных(«Число»);
ЭлементВыбора.ТипСравнения = ТипСравненияКомпоновкиДанных.Дополнительно;
Элемент выбора Use = true;
SelectionItem.DisplayMode = ElementDisplayModeDataCompositionSettings.N/A;
Selection Element.RightValue = «000000001»;
Преимущество этого метода в том, что Тип сравнения выбора может быть установлен не только равным, как в первом случае, но и больше, меньше чем и т. д.
Но у этого способа есть очень важный недостаток: при таком выборе форма будет открываться всегда. Откуда ей звонили? Поэтому эту форму не следует назначать основной. А если это главное, то перед установкой выделения необходимо проанализировать, откуда открывается эта форма. Например, синтаксический анализ параметров формы.
3. Наконец, в любой запрос, который выбирает данные для динамического списка, можно поместить условие выбора. Например, нам нужно открыть список входящих накладных, в котором выделен пункт в списке товаров.
Для этого в виде списка товаров создаем команду и соответствующий button Счета-фактуры
Обработчик для выполнения этой команды будет заполнен следующим образом:
СписокФорма = ПолучитьФорму(«Документ.Счет.СписокФорма»);
ФормаСписка.ФильтрПоПродукту = Элементы.Список.ТекущаяСтрока;
ListForm.Open();
В этом контроллере мы получаем форму списка входящих счетов и передаем ссылку на текущую в параметр формы FilterByItem. товара в инвентарной ведомости и открываем форму с этим параметром.
Далее мы создаем форму Список документов Счет-фактура и создаем атрибут ФильтрПоЭлементу формы, который мы используем в качестве параметра формы, когда он открыт. Теперь открываем палитру свойств основного атрибута формы Список. Установите флаг ArbitraryRequest и нажмите Открыть в строке конфигурации списка.
Введите следующий текст запроса в поле Запрос:
В запросе используем параметр Product, которому будет передана ссылка на текущую строку в списке товаров, содержащихся в параметре формы FilterByItem списка входящих накладных. Для этого в обработчике события OnOpening формы списка напишите код для установки значения параметра запроса Product:
Здесь List.Parameters — это список параметров запроса динамического списка для атрибута List. Значение параметра Product равно значению параметра формы FilterByProduct.
В результате, когда мы нажимаем кнопку Invoices в форме списка товаров, мы получаем список только тех входящие счета-фактуры, которые содержат текущий выбранный элемент в списке элементов.
Пример третьего варианта можно найти в каталоге 1CITS/EXE/FAQ/OpenFormWithSelection.dt. Пример запускался на платформе версии 8.2.9.356.
Источник
Как открыть форму списка дочерних каталогов с выбором владельца?
В 1С Предприятии 8.2 механика переходит на подчиненную информацию. В результате платформа автоматически выдаст команду для перехода к списку дочерних каталогов и вставит ее в форму каталога владельца в панели навигации в группе Перейти.
Однако платформа поместит такую команду в список, форма не вставит, а может сделать сам разработчик — Команды — Глобальные команды — Параметризуемые — Элементы — Список — Имя подкаталога — Элементы.Список.ТекущиеДанные.Ссылка .
Вы можете сделать то же самое программно, если нужно. Для этого откройте форму дочернего каталога с выбором владельца. Сначала задается параметр Форма выбора и с этим параметром открывается форма списка. В процессе открытия формы указанный владелец устанавливает выбор.
В то же время, если вы поместите команду перехода в дочерний список в форме элемента, значением владельца будет Object.Reference, а если он находится в форме списка, значением владельца является Elements.List.CurrentLine.
Например, процедура в модуле формы элемента справочника контрагентов, открывающая форму выписки дочернего справочника мирового соглашения, может выглядеть следующим образом:
FilterValue = New Structure(«Владелец», Object.Reference);
Параметры формы = New Structure(«Filter», FilterValue);
И если вам нужно открыть форму каталога, которая является дочерней для элемента каталога текущего владельца, соответствующий обработчик нажатия кнопки будет выглядеть следующим образом:
FilterValue = New Structure(«Owner» , Items.List.CurrentRow);
Параметры формы = New Structure(«Filter»,FilterValue);
Демонстрационные примеры с автоматически сгенерированными командами и программным переключением на список подчиненных каталогов … находятся в папке 1CITS/EXE/FAQ/Katalog. Примеры выполнены на платформе версии 8.2.9.356.
Источник
Как открыть дочернюю форму текущего элемента формы списка?
Для открытия формы используется метод OpenForm() глобального контекста.
Если вам необходимо открыть не основную форму, в первом параметре этого метода необходимо указать имя этой формы как полный путь к объекту конфигурации.
Открыть файл формы существующего объекта , необходимо передать ссылку на этот объект в открытую форму. Для этого форма имеет набор параметров. В частности, в параметр Form Key необходимо передать ссылку на элемент, форма которого должна быть открыта. Значения переданных параметров указываются во втором параметре метода OpenForm(). Они задаются в виде структуры: ключ, значение, где ключ — имя параметра, значение — значение параметра.
Так для команды открыть родительскую форму элемента, текущий список , необходимо прописать в модуле формы списка следующий код:
ПараметрыФормы = НоваяСтруктура(«Ключ»,Элементы.Список.ТекущаяСтрока);
OpenForm(«Catalog.Nomenclature.Form.ItemForm1»,FormParameters);
Здесь находится таблица формы списка, а Elements.List.CurrentRow — ссылка на текущий элемент в списке.
Далее для получения информации об использовании ключевого параметра формы см. справку по синтаксису: Интерфейс (управляемый) — управляемая форма — расширение объекта — параметры формы.
Подробнее об использовании метода OpenForm() , см. Справка по синтаксису: Глобальный контекст — Интерактивные процедуры и функции .
Источник
Программный открытие форм в управляемом приложении 1С
Программное открытие форм в управляемом приложении 1С существенно отличается от их открытия в обычном приложении. Начнем со старого метода. Он заключается в принятии формы и последующем ее открытии в обычном или модальном режиме (при открытии в модальном режиме форма блокирует программу).
Это самый медленный способ открытия форм. Однако он позволяет программно обрабатывать форму перед ее открытием. Вам нужно немного изменить код, чтобы он заработал:
Обратите внимание, что при получении формы будет также выполняться процедура события OnCreateOnServer.
.
Рассмотрим другие способы, позволяющие быстрее и удобнее открывать формы в управляемом приложении 1С. В зависимости от конкретной ситуации могут использоваться разные методы.
1. Как открыть форму объекта в управляемом приложении, если на него есть ссылка.
В данном случае все предельно просто.
2. Как открыть форму выбора и затем получить выбранное значение.
Существует функция EnterValue(). Функция имеет 3 параметра:
- Переменная, в которую будет записано выбранное значение;
- Подсказка для отображения в окне выбора;
- Описание выбранных типов значений. Может быть несколько типов, и в этом случае вам будет предложено выбрать тип перед выбором конкретного значения.
В результате выполнения функции открывается форма выбора по умолчанию для объекта заданного типа.
Значение переменной;
Массив = новый массив;
полей. Добавить(Тип(«DirectoryReference.Nomenclature» ));
полей. Добавить (Тип («DirectoryReference.Contractors» ) );
Тип описания = новый ТипОписания(Массив);
Res = EnterValue (Значение, «Подсказка», ТипОписания);
Предыдущие методы позволяли открывать только формы, установленные для объектов по умолчанию (форма объекта или форма выбора). Если вам нужно открыть любую форму, вы можете использовать функцию OpenForm().
У этой функции довольно много параметров. Рассмотрим некоторые из них:
- Имя формы : Здесь вы можете выбрать одну из стандартных форм объекта, например SelectionForm или Форма списка . Или конкретная форма, созданная разработчиком.
- Параметры : позволяет передать некоторые параметры в виде структуры перед открытием формы и, таким образом, определить выходные данные. Параметрами могут быть любые данные, которые могут быть переданы от клиента к серверу. Параметры, передаваемые при открытии формы, могут быть обработаны в процедуре ПриСозданииНаСервере() для открытой формы.
- Режим открытия формы : у вас есть 3 варианта: автономный, заблокировать весь интерфейс, заблокировать форму владельца.
Давайте посмотрим, как функция OpenForm() используется в различных ситуациях.
3. Как открыть форму существующего объекта
У каждой формы есть ключевой аксессуар. В списке атрибутов формы есть выделен жирным шрифтом и обычно называется Object для форм ввода документов и каталогов. Другие объекты могут иметь другое имя. Для открытия формы существующего объекта необходимо передать параметр Ключ со значением как ссылку на открываемый объект формы.
&AtClient
Процедура Команда 1 (Команда )
Параметр = новая структура;
Параметр. Вставить(«Ключ», FindC());
OpenForm(«Справочник.Счета.ОбъектФормы», Параметр );
Конец процедуры
&OnServer
Function FindC ( ) ;
Возврат ссылок. Поставщики. FindByAttribute(«ИНН», «745107734623»)
EndFunction
4. Как открыть новый объект формы
Простая функция OpenForm() без параметров
5. Как открыть новую форму объекта и заполнить ее на основе чего-либо
Вам нужно передать параметр Base , значением которого будет ссылка на основание объекта заливки. Где выполняется процедура FillProcessing().
В данном примере документ Реализация товаров и услуг будет создан и оформлен на основании счета на оплату покупателю, ссылка на который была передана.
6. Как открыть форму и установить на ней выборку
Выборка в формах 1С может быть простой и сложной. Простой выбор включает такие термины, как Organization = Horns and Hooves LLC. Комплексный отбор предполагает другие виды сравнений, например В списке . В этой статье мы разберемся с организацией простого отбора и сложного. посвящена отдельная статья.
Для организации простого отбора необходимо передать параметр с помощью клавиши Фильтр в открываемую форму, значением будет структура, где ключ — название поля динамического списка, а значение — искомые данные.
Например, открываем форму листинга справочника номер ГТД и там делаем выборку по владельцу: элемент каталога Номенклатура .
Selection = new struct;
Выбор. Insert(«Владелец», Справочник по именованию);
Параметр. Insert(«Выделение», Selection) ;
OpenForm(«Directory.Numbers GTE.ListForm», Parameter );
Завершение процедуры
7. Как открыть форму записи журнала информации
Для этого вам потребуется ключ ввода журнала информации.
Ключ регистра содержит значения всех измерений и периодов (если запись периодическая). Это означает, что ключ реестра является параметром, по которому можно однозначно идентифицировать реестр.
Алгоритм открытия следующий:
- Введите ключ реестра данных с помощью требуемое значение в структуре.
- Поместите полученную структуру в массив.
- Создайте раздел реестра из массива.
- Мы передаем параметр Ключ с ключом реестра пункта 3 в качестве значения в форму для открытия.
Ключевые параметры = новая структура;
Основные параметры. Вставить(«Номенклатура», СсылкаКНоменклатуре) ;
Основные параметры. Вставить(«ТипЦены», ТипСсылкиЦены);
Основные параметры. Вставить(«Точка», Дата );
KeyArray = Новый массив;
Массив ключей. Добавить(ключевые параметры);
RecordKey = New(«RegistrarRecordRecordKey.NomenclaturePrices» , KeyArray ) ;
Параметр. Вставить(«Ключ»,КлючЗаписи);
ОткрытьФорму(«Информационная Запись.Номенклатурные Цены.Бланк Записи», Параметр ) ;
Завершить процедуру
Источник
Как открыть форму списка документов с выбором?
Этот код позволяет открыть список документов с заданным фильтром также может открыть список записей каталога с нужным фильтром
Чтобы открыть форму списка с предопределенным выбором , используйте следующие методы:
Первый способ заключается в том, что когда вы открываете форму, вы можете установить параметр формы Select и открыть форму списка с этим параметром.
Параметр Select представляет собой структуру. Имена элементов соответствуют названиям полей, используемых для выбора, а значения содержат значения выбора. Это вариант расширения управляемой формы динамического списка. Это означает, что он существует для форм, основным атрибутом которых является атрибут DynamicList, например список форм и выбор форм.
Например, в следующем примере открывается список входящих счетов, отфильтрованных по полю Число, равному 333.
Второй способ
Можно открыть форму списка без параметров:
И тогда в обработчике событий формы списка список входящих накладных WhenCreatedAtServer, написать код, создающий выборку в динамическом списке, который является основным атрибутом form:
Преимущество этого метода в том, что Тип сравнения Selection может быть установлен не только Equals, как в первом случае, но и main, minor и т.д.
Но у этого метода есть очень важный недостаток: при таком выборе форма будет открываться всегда. Откуда ей звонили? Поэтому эту форму не следует назначать основной. А если она основная, то перед тем, как установить выделение, нужно проанализировать, где будет открываться эта форма. Например, парсинг параметров формы.
Третий способ
Наконец, условие отбора можно поставить в любой запрос, выбирающий данные для динамического списка.
Например, нам нужно открыть список входящих накладных, в котором в списке товаров выбран пункт.
Для этого в виде списка товаров создадим команду и соответствующую кнопку Счета на покупку.
Контроллер для выполнения этой команды будет завершен следующим образом:
В этом контроллере мы откроем форму для список полученных счетов, передав параметру формы FilterByItem ссылку на текущий элемент в списке элементов
Далее мы создадим форму списка документов счета и создадим параметр формы FilterByItem, который мы будем используйте , чтобы открыть форму с нужным выбором.
Теперь мы откроем свойство p палитры основного атрибута формы списка. Установите флаг ArbitraryRequest и нажмите Открыть в строке конфигурации списка.
В поле Запрос введите следующий текст запроса:
В запросе мы используйте параметр Статья, чтобы быть передал ссылку на текущую строку в списке элементов, содержащихся в параметре «Фильтровать по» формы списка элементов.
Для этого напишите код в обработчике событий формы OnCreateAtServer, чтобы установить значение запроса продукта. параметр:
Здесь Список .Параметры — это список параметров запроса динамического списка для атрибута Список. Значение параметра Product равно значению параметра формы FilterByProduct.
В результате нажатие кнопки Invoices в форме списка товаров возвращает список только тех счетов, которые содержат вещь. выбран в данный момент в списке элементов.
Источник