1с выполнить команду формы программно
В статье будет рассказано о том, как в 1с открыть форму программно. Все описанное ниже, касается только управляемого приложения. Подробно рассмотрим метод глобального контекста ОткрытьФорму.
Также можете ознакомиться с более простыми, но менее гибкими способами открыть форму по ссылке: Как в 1с открыть ссылку.
Метод ОткрытьФорму по имени
Самый гибкий и настраиваемый способ программного открытия формы в 1с 8. Рассмотрим подробно его параметры, а также разберем несколько примеров его использования.
Следует заметить, что метод ОткрытьФорму является клиентским. Т.е его можно использовать либо в общих модулях с установленным флагом Клиент, либо в процедурах (функциях) форм с директивой &НаКлиенте.
Рассмотрим параметры метода и приведем необходимые примеры.
ИмяФормы
Содержит полный путь к форме. Можно указать, как путь к форме по умолчанию, так и путь к произвольной форме объекта метаданных. Имя формы указывается в следующих двух форматах:
- ТипОбъекта. Наименование типа объекта метаданных, например: Справочник, Документ, РегистрСведений и т. д.;
- ИмяОбъекта. Наименование объекта метаданных. Например для справочника: Пользователи, Номенклатура;
- ИмяФормыПоУмолчанию. Стандартное имя формы, набор имен по умолчанию различается для различных объектов метаданных. Например для документа: ФормаВыбора, ФормаОбъекта, ФормаСписка. Полный набор имен по умолчанию можно найти в синтаксис помощнике, в описании метода ОткрытьФорму;
- ИмяФормы. Произвольное имя формы, заданное при ее создании. Например у справочника Пользователи, форма СменаПочты.
Пример 1. Путь к форме выбора по умолчанию, справочника Номенклатура.
Пример 2. Путь к форме СменаПочты справочника Пользователи, по ее имени.
Параметры
Содержит Структуру параметров, которые передаются в открываемую форму. Для каждого типа формы, существует набор стандартных параметров, которые не нужно дополнительно обрабатывать в самой форме. Также набор параметров может различаться и для объектов метаданных. Например, параметр Ключ, для форм объектов. В него можно передать ссылку на открываемый объект (если его не передать, будет открыта форма нового объекта).
Подробнее прочитать описание всех возможных стандартных параметров можно в синтаксис помощнике, в ветке Интерфейс (управляемый) -> Форма клиентского приложения (в старых версиях платформы Управляемая форма). Далее в ветках Расширение объектов, Расширение справочника и т. д., можно найти Параметры формы. Там дается полный список возможных стандартных параметров с описаниями.
Также в структуру можно передавать произвольные параметры, которые можно обрабатывать программно, в открываемой форме. Например в обработчике события ПриСозданииНаСервере.
Рассмотрим примеры открытия различных форм с использованием параметров.
Пример 3. Открыть форму объекта справочника Пользователи, используя ссылку на объект.
Пример 4. Открыть форму списка справочника Номенклатура с отбором по реквизиту ВидНоменклатуры и по списку родителей.
Данным способом можно отобрать значения, используя вид сравнения Равно или ВСписке. Для отбора ВСписке следует добавить в структуру Массив, ФиксированныйМассив, либо СписокЗначений. Следует заметить, что отбор ВИерархии установить данным способом не выйдет.
Владелец
В данный параметр передается элемент формы или форма клиентского приложения (управляемая форма) полностью. Используется для указания подчинения открываемой формы.
Это может потребоваться для многих целей, например для:
- Анализа владельца и выполнения определенных действий в открываемой форме;
- Корректной работы события ОбработкаЗаписиНового, в форме владельце;
- Самостоятельной реализации выбора в поле формы.
Пример 5. Реализовать программный выбор элемента Номенклатура, в поле ввода.
В данном случае необходимо:
- Создать обработчик события НачалоВыбора, для поля ввода;
- Отменить стандартную обработку выбора;
- В параметр Владелец передать элемент формы (поле).
Параметр ТекущаяСтрока, позволяет выделять ранее выбранный элемент в форме выбора. Стоит заменить, что в обычной ситуации такой метод выбора значений не применяется. Его применяют только тогда, когда нет возможности настроить форму выбора под условия задачи.
Уникальность
В параметре можно задать ключ уникальности формы произвольного типа. При открытии формы, платформа будет анализировать, есть в текущем сеансе уже открытая форма, с таким же ключом уникальности. Если такая форма будет найдена, то она будет активизирована, а новая не откроется. Этот механизм работает только для одинаковых форм. Если вы будете открывать формы объекта разных документов с одинаковым ключом, то откроются обе.
По умолчанию, платформа сама генерирует ключ уникальности. Поэтому помимо использования собственного ключа, в параметре Уникальность, можно регулировать использование стандартного. Если передать в него значение Ложь, то будет использован стандартный ключ, если значение Истина, то ключ не будет использоваться совсем. Т.е. будет создаваться новая форма, при каждом использовании метода ОткрытьФорму. Значением по умолчанию является Ложь, поэтому специально задавать его не требуется.
Пример 6. Одновременно открыть две формы объекта справочника Пользователи, по одной и той же ссылке.
В параметре можно указать окно, в котором будет открыта новая форма. Тип параметра ОкноКлиентскогоПриложения.
Пример 7. Реализовать программный выбор элемента Номенклатура, в поле ввода. Реализовать выбор в окне формы, на которой расположено поле.
В этом примере мы получаем окно текущей формы и используем его для открытия формы выбора справочника.
НавигационнаяСсылка
Позволяет установить собственную навигационную ссылку для открываемой формы. Устанавливаемая навигационная ссылка должна иметь тип Строка. Значение по умолчанию: Неопределено, при использовании этого значения, навигационная ссылка задается автоматически.
ОписаниеОповещенияОЗакрытии
В параметр передается описание процедуры, которая будет вызвана после закрытия открываемой формы. Тип параметра: ОписаниеОповещения.
Пример 8. В 1с открыть форму программно. Использовать форму объекта справочника Пользователи. После ее закрытия сообщить, что карточка пользователя закрыта.
Используемые в примере параметры описания оповещения:
- Первый: имя процедуры;
- Второй: модуль, в котором она расположена (в данном случае текущая форма);
- Третий: структура дополнительных параметров, которая будет передана в процедуру;
Описанная процедура обязательно должна иметь два параметра:
- Результат. Значение, которое возвращает форма при закрытии. Форма объекта не возвращает значений (если это специально не прописать), поэтому в данном случае значение параметра будет Неопределено. А вот форма выбора, например, вернет массив выбранных значений.
- ДопПараметры. Структура параметров, созданная в описании оповещения.
Также описанная процедура должна быть экспортной.
РежимОткрытияОкна
Позволяет указать режим открытия управляемой формы. По умолчанию Неопределено, вручную можно задать одно из значений системного перечисления РежимОткрытияОкнаФормы:
- БлокироватьВеcьИнтерфейс;
- БлокироватьОкноВладельца;
- Независимый.
Метод ОткрытьФорму по форме
Существует еще один вариант синтаксиса метода ОткрытьФорму.
Используется, если вы уже получили форму, произвели с ней какие-то действия и теперь ее необходимо открыть.
Пример 9. Получить форму списка справочника Номенклатура, а затем в 1с открыть форму программно.
В этой статье я разберу особенности программного открытия обработок в 1С. Мы узнаем, как открыть форму обработки, как открыть форму внешней обработки из самой внешней обработки, а также как открыть форму внешней обработки из клиентского режима платформы 1С 8.3.
Открыть форму обработки 1С
Начнем с того, что саму по себе открыть программной обработку нельзя. Можно открыть какую-либо из форм обработки. Для программного открытия управляемой формы обработки необходимо использовать метод ОткрытьФорму.
В первой статье, в которой мы начали знакомиться с обработками в 1С, я создал обработку «Обработка для примера» с формой.
В этой статье я покажу, как открыть программно форму этой обработки из другой обработки «Обработка1». Для этого у Обработки1 я создал управляемую форму и команду формы.
В клиентском обработчике команды, напишем код, который будет открывать основную форму обработки.
Какая именно форма обработки будет открыта, можно указать в контекстной подсказке, которая появляется после ввода названия обработки.
После, в результате выполнения команды, в отдельном окне будет открываться форма обработки «Обработка для примера».
Открыть форму внешней обработки 1С
Если нам необходимо, чтобы из одной формы внешней обработки открылась другая форма этой же внешней обработки, то также необходимо использовать метод ОткрытьФорму, как в примере выше, только вместо слова Обработка необходимо написать ВнешняяОбработка.
Разберем пример. Пусть, у внешней обработки будут две формы: Основная и Дополнительная.
На основной форме создадим команду «Открытие дополнительной», при выполнении которой будет открываться дополнительная форма.
У этой команды будет клиентский обработчик события, со следующим кодом:
Теперь, открыв внешнюю обработку, мы сможем из её основной формы открыть дополнительную.
Открыть внешнюю обработку 1С
Выше мы разбирали пример, когда внешняя обработка открыта, и нам нужно открыть форму внешней обработки из самой внешней обработки, но иногда возникают задачи, когда нужно открыть форму внешней обработки из какого-то другого места, зная путь к этой обработке на жестком диске, или выбрав непосредственно файл обработки.
В этой обработке создадим команду, при выполнении которой откроется форма внешней обработки.
В форме обработки напишем следующий код:
Код работает, начиная с платформы 8.3.15.
После выполнения команды, откроется окно выбора файла внешней обработки.
Если файл будет выбран, внешняя обработка откроется.
Статьи про открытие форм:
Статьи по конфигурированию в 1С:
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Есть расположенная на форме новая команда, как в 1С её вызвать программно из модуля формы? Перерыл интернет,не нашел четкого объяснения или кода.
Просто вызови процедуру команды, подставив в параметры команду или кнопку.
Для управляемой формы:
Процедура ВызватьКоманду() ИмяНужнойКоманды = “ИмяКомандыФормы”; // Тут просто имя команды как в конфигураторе. НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды); // Находим команду на форме КакаяТоКоманда(НужнаяКоманда); // Вызываем нужную команду, подставив ее в параметры КонецПроцедуры
Процедура КакаяТоКоманда(Команда) // Тут код твоей команды. КонецПроцедуры
Для обычной формы Процедура ВызватьКоманду() ИмяНужнойКнопки = “ИмяКнопкиФормы”; // Тут просто имя команды как в конфигураторе. НужнаяКнопка = ЭтаФорма.ЭлементыФормы.ОсновныеДействияФормы.Кнопки[ИмяНужнойКнопки]; КакаяТоКоманда(НужнаяКнопка); // Вызываем нужную команду, подставив ее в параметры КонецПроцедуры
Процедура КакаяТоКоманда(Кнопка) // Тут код твоей команды. КонецПроцедуры
Общие команды — механизм платформы, предназначенный для описания часто используемых команд в конфигурации 1С 8.3.
Общие или глобальные команды удобно использовать, если одна команда нужна многих объектам конфигурации. Например, кнопка для вывода структуры подчиненности документов, команда отображения проводок документа, отчет о изменении объекта.
В команду можно передать параметры, например, из формы какого объекта он вызывается.
Настройка и свойства общей команды в 1С
Добавить новую команду и настроить общую форму достаточно просто, рассмотрим этот процесс подробнее:
Получите 267 видеоуроков по 1С бесплатно:
- Бесплатный видео самоучитель по 1С Бухгалтерии 8.3 и 8.2;
- Самоучитель по новой версии 1С ЗУП 3.0;
- Хороший курс по 1С Управление торговлей 11.
- Группа — расположение будущей команды на интерфейсе.
- Тип параметра команды — определяет набор объектов, в котором будет отображаться будущая команда.
- Режим использования параметра — задает возможность передать в качестве параметра команды одно или несколько значений.
- Изменяет данные — если галка установлена, то при выполнение команды форма будет пересчитана с сервера.
- Модуль команды — обработчик выполнения команды, выполняется на клиенте.
Пример модуля команды:
Здесь ПараметрКоманды — объект, вызывающий команду. А в ПараметрыВыполненияКоманды структура, в которой описан Источник (вызываемая Форма), Окно (ОкноКлиентскогоПриложения), Уникальность, указывает, искать ли уже открытую форму или нет.
Группы команд 1С
Объект, позволяющий вывести команды на командный интерфейс конфигурации в отдельную группу:
Видео по общим командам от Павла Чистова:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Похожие FAQ
Еще в этой же категории
Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Как обновить динамический список или реквизит на форме клиента? 6
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Посмотреть все в категории Работа с Формой (Диалог) и её элементами
У многих начинающих программистов, особенно у тех, кто впервые сталкивается с управляемым приложением в 1С, возникает вопрос: как программным способом открыть управляемую форму. Еще больше вопросов возникает с передачей данных, когда одна форма открывается с другой формы. Многих этот момент ставит в тупик.
В этой статье я разберу оба этих момента.
Открытие управляемой формы
Для тренировки создадим в конфигураторе 1С внешнюю обработку, в которой сделаем две формы. Назовем их: Данные и Расчёт. Причем форма Данные это основная форма обработки, т.е. будет открываться при запуске обработки.
В этой тренировке в форме Данные будем вводить некоторые числовые значения, которые потом используем в форме Расчёт. Сделаем простой пример: решим линейное уравнение тип ax + b = c. Для этого на форме Данные зададим величины a,b и с соответственно, а при открытии формы Расчёт вычислим значение x. Пример больше учебный, нужный для того, чтобы показать, как передавать данные с одной формы на другую. a, b и с – это реквизиты управляемой формы Данные с типом число (10,2). Создадим эти реквизиты и перетащим их на форму.
Следующим шагом создадим команду на форме Данные, при выполнении которой откроется форма Расчёт, где мы увидим решение линейного уравнения. Назовем команду«Решить уравнение» и поместим её на форму в виде простой кнопки.
Открывать управляемые формы следует в клиентском контексте. Причем не важно, какой это будет клиент: тонкий, толстый или веб-клиент.
Подробно о клиентском и серверном контексте управляемой формы читайте в статье:
Поэтому создадим обработчик команды «Решить уравнение» на клиенте.
В процедуре-обработчике этой команды откроем форму Расчёт, для этого необходимо использовать метод глобального контекста ОткрытьФорму.
Синтаксис этого метода имеет много параметров, но обязательным является только один – первый, в котором задается путь к управляемой форме.
При работе с этим методом, можно воспользоваться контекстными подсказками: достаточно написать после открывающей скобки параметров кавычки, и выйдут различные варианты, по которым можно получить нужную форму.
Причем в контекстной подсказке можно выбрать, как конкретную форму, так и какую-то основную форму нужного объекта.
В нашем случае мы выбираем форму Расчет обработки.
Подготовим форму Расчёт – создадим у этой формы реквизит x, который поместим на форму.
А так же установим у формы в свойство Режим открытия окна значение Блокировать окно владельца. Тогда форма Расчёт будет открываться в отдельном окне.
Всё! Если мы сейчас сохраним обработку, запустим её и выполним команду «Решить уравнение» формы Данные, то откроется форма Расчёт. На которой, естественно, ни чего пока ещё не рассчитано.
И первое что нам бросается в глаза, это заголовок в названии управляемой формы. Переименуем. Для этого в палитре свойств формы нужно снять флаг у свойства Автозаголовок и написать какой-то заголовок в свойстве Заголовок.
Параметры управляемой формы
С открытием форм все просто и понятно. Но как передать данные с одной формы на другую? Для этого у управляемой формы 1С есть закладка Параметры. В этой закладке перечисляются данные, которые будут использоваться при создании управляемой формы на сервере.
Создадим у управляемой формы Расчёт параметры a,b,c.
Замечу, что к параметрам можно обращаться только в событии управляемой формы ПриСозданииНаСервере. Это событие возникает тогда, когда форма была создана на сервере, но еще не была передана в клиентский контекст.
Если Вы хотите, чтобы параметр был доступен все время существования формы, то у него необходимо установить свойство Ключевой параметр.
У формы Расчёт создадим событие формы ПриСозданиеНаСервере. Для этого в палитре свойств формы нужно найти это событие и кликнуть на кнопку «Лупа».
Решим в этом событие линейное уравнение. Для того, чтобы обратиться к нужному параметру формы, необходимо использовать коллекцию Параметры. И через точку получать значение интересующего нас параметра.
Посмотрим, как будет работать этот код.
Как видите, в управляемом приложении 1С нет ничего сложного в передачи данных с одной формы на другую. Для этого просто необходимо использовать параметры управляемой формы.
Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей
2 thoughts on “ Открытие управляемой формы в 1С 8.3 с передачей параметров ”
Читайте также: