Параметры формы значениязаполнения 1с
Действия в форме выполняются с помощью команд формы. Сами команды служат лишь описанием выполняемых действий. Для того чтобы команда стала выполнять свою функцию, она должна быть привязана к элементу формы (типа Кнопка ). Можно выделить несколько групп команд, которые присутствуют в форме:
● Команды, создаваемые разработчиком в процессе проектирования формы. Для них необходимо создавать обработчик непосредственно в модуле формы.
● Стандартные команды , которые предоставляются расширением основного реквизита формы и расширениями реквизитов, которые являются списками (например, табличная часть объекта, динамический список, набор записей регистра сведений и т. д.), если с этим реквизитом есть связанный элемент формы.
● Глобальные команды – команды, предоставленные глобальным командным интерфейсом . Такие команды могут быть непараметризованными и параметризованными. Параметризованные глобальные команды будут предоставлены форме только в
том случае, если на форме есть источники параметров с соответствующими типами.
Доступность стандартных команд формы и элементов формы определяется свойством Состав команд соответствующего элемента формы.
Команды, которые предоставляет глобальный командный интерфейс (закладка Глобальные команды) , могут быть размещены в любом месте формы, точно так же, как и команды формы.
В свойстве Действие указывается обработчик, который реализует действие, выполняемое командой. Если обработчик не задан, то команда будет недоступна для использования. К выбору в этом поле доступны только процедуры и функции без параметров, которые являются клиентскими
Если команда изменяет данные формы, то следует указать на это установкой свойства Изменяет сохраняемые данные. Тогда при попытке выполнения команды будут выполняться следующие действия:
● Попытка выполнить блокировку основного реквизита формы. Если попытка закончится неудачей – команда не будет выполнена.
● Установлен признака изменения у формы (флаг Модифицированность ).
Если для команды установлено свойство Изменяет сохраняемые данные и форма находится в режиме Только просмотр , то все элементы формы, связанные с этой командой, также будут находиться в состоянии Только просмотр .
Кроме того, исполнение параметризованной глобальной команды, для которой параметр предоставляется реквизитом с установленным свойством Сохраняемые данные , для нового и несохраненного объекта приведет к попытке записать объект. При этом пользователю будет задан вопрос о необходимости записи. Если ответ будет отрицательный – команда не будет выполнена.
ПРИМЕЧАНИЕ . При автоматическом заполнении командных панелей и контекстных меню, для которых указан источник команд, стандартные команды не добавляются, если в данном элементе есть кнопки, добавленные вручную с такими же командами. Данная логика не распространяется на команды, добавляемые из фрагмента глобального командного интерфейса.
Для упрощения разработки различных диалогов в стандартные команды формы добавлены команды Да, Нет, ОК, Отмена, Повторить, Прервать,Игнорировать. Если такая команда добавлена в форму, то при нажатии пользователем этой кнопки будут выполнены следующие действия:
● Для формы, открытой в модальном режиме, выполняется закрытие формы и возвращается соответствующее значение типа КодВозвратаДиалога.
● Для формы, открытой в немодальном режиме, выполняется только закрытие формы.
При формировании имени обработчика выполнения команды будет использоваться свойство команды Имя .
Стандартная команда формы Справка служит для открытия справочной информации по форме/объекту конфигурации. Расположение этой кнопки на командной панели формы определяется свойством ТолькоВоВсехДействиях этой кнопки. Если данное свойство установлено в значение Авто (и для командной панели с автоматическим заполнением), то фактическое расположение будет следующим:
● Интерфейс Такси – если у формы или родительского объекта конфигурации имеется справочная информация, то кнопка будет располагаться на командной панели. В противном случае кнопка будет располагаться только в меню Еще .
● Другие интерфейсы – кнопка всегда располагается на командной панели формы.
Функциональные опции – определяет, с какими функциональными опциями связан данный реквизит формы.
2. Особенности применения различных команд
Для расширений управляемой формы для объекта, справочника, документа, плана видов характеристик, бизнес-процесса, задачи и записи регистра сведений существует стандартная команда Показать в списке , которая предназначена для отображения формы списка соответствующего объекта с позиционированием открываемого списка на объекте, из которого выполняется команда. В интерфейсе команда будет недоступна, если ключевой реквизит формы равен пустой ссылке (или пустому ключу записи), т. е. редактируется новый объект.
Если команда используется в форме документа, то для такой команды доступно свойство Параметр, в котором можно выбрать форму, которая будет использоваться для отображения списка. Для выбора доступен собственно документ и все журналы, в состав которых входит используемый документ.
Кнопка, связанная с командой ПоказатьВСписке , отображается на форме вне зависимости от заполненности свойства Параметр. Если значение свойства Параметр задано, то в качестве заголовка по умолчанию у кнопки, связанной с командой ПоказатьВСписк е, используется представление списка соответствующего объекта конфигурации (документа или журнала).
При автоматическом заполнении командной панели формы документа анализируются журналы, в которые входит документ, при этом на эти журналы текущий пользователь должен иметь право Просмотр и они (журналы) должны быть включены функциональным опциям . Если есть хотя бы один такой журнал, то в командной панели вместо кнопки Показать в списке размещается группа кнопок с заголовком Показать в списке . Подменю содержит:
● Команду ПоказатьВСписке , для которой свойство Параметр заполняется ссылкой на документ, в форме которого формируется командная панель;
● Команды ПоказатьВСписке (по одной на каждый подходящий журнал), для которых свойство Параметр заполняется ссылкой на соответствующий журнал документов.
Если нет доступных журналов, то в командной панели размещается команда ПоказатьВСписке , у кнопки которой свойство Параметр не задано.
Для отображения используется основная форма списка (с учетом возможности переопределения, подробнее см. здесь) соответствующего объекта конфигурации.
Если необходимо обеспечить функциональность команды ПоказатьВСписке в рамках реализации какого-то другого алгоритма, то для этого следует использовать метод ВыполнитьПереход( ), существующий для объекта УправляемаяФорма.
Пример реализации:
Форма = ПолучитьФорму (“Справочник.Контрагенты.ФормаСписка”);
Форма.ВыполнитьПереход(Объект.Ссылка) ;
Если необходимо каким-то образом обработать открытие формы с позиционированием на нужном объекте, то это можно сделать с помощью обработчика события ОбработкаПерехода (событие вызывается для управляемой формы). Если после исполнения обработчик события ОбработкаПерехода требуется
выполнить стандартные действия (значение параметра СтандартнаяОбработка равна значению Истина ), то у первой таблицы управляемой формы, связанной с основным реквизитом формы типа ДинамическийСписок текущая строка устанавливается в значение, переданное в качестве параметра Объект обработчика события. Если основным реквизитом открываемой формы выступает не динамический список – никаких действий
выполнено не будет.
Хочу программно вызвать создание нового документа - по логике:
Но хочется заполнить его по данным заполнения. Столкнулся с тем, что требуемая процедура вызывается только на сервере:
Как выйти из положения? Как реализованы стандартные команды ввода на основании? Есть иной путь, кроме как явно передавать нужные мне данные на форму параметром и вызывать их анализ уже на форме?
При открытии формы можно передать Структуру "ДанныеЗаполнения". А в форме приемнике проставить флаги "Заполнять из данных заполнения" у нужных реквизитов. Можно еще при создании формы на сервере анализировать новый это объект или нет, переданные параметры и выполнять обработку, запустить например процедуру Заполнить объекта.
Так, вижу флаг "Заполнять из данных заполнения" для обычных реквизитов, у меня табличная часть, флага нет. Можно с ней что-то сделать, кроме
Можно еще при создании формы на сервере анализировать новый это объект или нет, переданные параметры и выполнять обработку, запустить например процедуру Заполнить объекта.
Разобрался. Вызывать форму нужно так:
(4)Огромное спасибо!
Столкнулся с такой задачей - надо было создать документ Расходная накладная на основании Поступления, но с таким условием что в табличной части поступления присутствуют множество контрагентов, на которых стоит бронь и надо было выводить доп форму со списком контрагентов в которой пользователь выбирал нужного и затем по данному контрагенту отбирались данные для заполнения. В итоге Ваш вариант очень помог:
Таблицу передать в параметрах не получится. Откуда (какими данными) у Вас заполняется таблица? Может передать параметры для заполнения таблицы, а в процедуре ПриСозданииНаСервере открываемой формы заполнять таблицу или вызывать процедуру Заполнить модуля объекта Например вроде так:
У меня для заполнения таблицы передается список значений, поэтому тут все нормально.
В моем случае не принципиально, но если нужно передать именно таблицу, то думаю можно пользоваться функцией стандартных конфиг ТаблицаЗначенийВМассив(ТаблицаЗначений).
Ссылка - ссылка на док
Если пишу
ЗначенияЗаполнения = Ссылка;
ОткрытьФорму("Документ.Реализация.Форма.ФормаДокумента", Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения));
то в открываемой форме в ОбработкаЗаполнения ДанныеЗаполнения = Неопределено, если
ЗначенияЗаполнения = Новый Структура("Ключ/Объект/Ссылка/ДанныеЗаполнения", Ссылка"), то ДанныеЗаполнения = Структура. Не могу вспомнить, какой ключ надо указать в структуре ЗначенияЗаполнения, чтобы данные заполнения были ссылкой. В инете на нашел
(1) В обработке заполнения все заточено на ДанныеЗаполнения = ссылка. Не хотелось бы перепахивать все доки.
Расширение управляемой формы для объектов (Managed form extension for objects)
ЗначенияЗаполнения (FillingValues)
Описание:
Тип: Структура.
Параметры заполнения нового объекта.
Тип: Произвольный.
Значение, которое используется как основание для заполнения.
Если обработчик вызван 1. при выполнении метода Заполнить, параметр равен параметру "Данные заполнения" метода Заполнить.
При обработке заполнения 2. во время ввода на основании параметр имеет значение основания.
3. При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено. Если параметр "Стандартная обработка" по окончании работы обработчика равен Истина (установлен по умолчанию), система автоматически произведет заполнение одноименными элементами структуры.
т.е. только при вводе на основании ДанныеЗаполнения будет ссылка.
(3) Лопухнулся, засунул основание в значениязаполнения. твой синтаксис прокатил, спасибо. Работает.
(9) У меня все обработки заполнения выглядят ДокументыСервер.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка) для ввода на основании из интерфейса и при выборе док-основания, поэтому все переделывать(((. Но спасибо за участие!
По теме открытия формы с параметрами, часто возникают вопросы, надеюсь данная статья поможет кому-либо.
Обычные формы
Для передачи параметра в обычную форму существует два способа.
Первый, менее распространенный, заключается в создании реквизита формы (этот реквизит, при необходимости, можно отобразить визуальным элементом).
Реквизит на обычной форме
Второй вариант используется значительно чаще. Его суть заключается в том, что в модуле открываемой формы нужно объявить экспортную переменную, а обработка этой переменной производится в событии «ПередОткрытием» открываемой формы:
И для первого и для второго способа используется одинаковый код:
Управляемые формы
В управляемых формах появилась прекрасная возможность предавать параметры сразу при получении формы. Кроме этого, в управляемых формах появились стандартные параметры для различных объектов (справочники , документы и тд.), большим плюсом которых является отсутствие необходимости какой-либо обработки (задал параметр — получил результат). Список этих параметров, определяется типом объекта.
Например, параметр «ТекущееЗначение», позволяет позиционировать форму выбора справочника на определенном элементе.
Для собственных параметров, потребуется обработка, которая выполняется в событии «ПриСозданииНаСервере» открываемой формы, в остальном механизм передачи параметра такой же.
Получение формы и передача параметра:
Обработка передаваемого параметра в модуле открываемой формы:
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 20, средняя оценка: 3,70 из 5)
Продолжаем разговор о открытие форм различным способом (и с различными целями), предыдущая статья рассказывала
Dropbox — это один самых популярных сервисов облачного хранения данных. Подобному сервису облачного хранения
В управляемых формах появилась очевидная проблема: Как открыть форму с объектом который я программно заполнил, но не сохранил еще в базу?
ОТВЕТ: По умолчанию — никак.
Единственное что можно заставить сделать систему по умолчанию, при открытии формы, это выполнить стандартную функцию модуля объекта ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка), где ДанныеЗаполнения — это структура которую мы передали при открытии формы.
Сначала небольшой кусок кода чтобы не забыть что какие ключи надо передавать при открытии формы.
Данные = Новый Структура();
Данные.Вставить("Наименование", "ТЕСТ НАИМЕНОВАНИЯ");
Данные.Вставить("Комментарий", "ТЕСТ");
Данные.Вставить("Артикул", "ТЕСТ");
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", Данные);
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", ПараметрыФормы);
Собственно что здесь важно:
- Данные — структура в которую мы пишем наименования полей открываемого объекта и их значения
- ПараметрыФормы — тоже структура с ключом «ЗначенияЗаполнения» — это предопределенный ключ для параметров передаваемых в форму. Платформа при получении этого ключа выполнить стандартную функцию модуля объекта ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка), где ДанныеЗаполнения — это структура которую мы передали при открытии формы.
ПРИМЕЧАНИЕ:
В открывшейся форме все данные которые вы ей передадите будут так же лежать в переменной Параметры.ЗначенияЗаполнения в модуле формы объекта
У переменной Параметры, есть еще несколько предопределенных ключей
- Ключ — сюда ложим ссылку если хотим открыть форму существующего объекта
- ЗакрыватьПриВыборе — для форм списков, что написано то и делает, после двойного щелчка по строке списка закрывает форму выбора
- ЗакрыватьПриЗакрытииВладельца — если форма А владелец формы Б, то при закрытии А, закроется и Б.
- ЗначениеКопирования — ссылка на объект копию которого мы хотим открыть. копия будет не сохранена.
- ЗначенияЗаполнения — Это мы отобразили в самом начале. Структура с данными заполнения
- Основание — ссылка на объект основание
- ПараметрыВыбора — Содержит значения, по которым проверяется возможность выбора для форм, находящихся в режиме выбора.
- РежимВыбора — Если Истина, открывает форму в режиме выбора.
Передавать можно несколько параметров одновременно.
ДОПОЛНИТЕЛЬНЫЙ ХАК
Если по каким-то причинам, нет желания пихать логику заполнения в сам объект. Вот идея и немного кода для облегчения жизни:
В функцию ОбработкаЗаполнения все равно придется написать немного своего кода, хорошо то что он может быть универсальный и его можно запихать в расширение (очень полезно для стандартных конфигураций)
Читайте также: