1С открыть общую форму

Программное открытие форм в управляемом приложении 1С значительно отличается от их открытия в обычном приложении. Рассмотрим для начала старый метод. Он заключается в получении формы и ее последующем открытии в обычном или модальном режиме (при открытии в модальном режиме форма блокирует работу программы).

Это самый медленный метод открытия форм. Тем не менее, он позволяет программно обработать форму перед открытием. Для обработки код нужно немного изменить:

Надо учитывать, что при получении формы будет выполняться еще процедура события ПриСозданииНаСервере.

Рассмотрим другие методы, которые позволяют открывать формы в управляемом приложении 1С быстрее и удобнее. В зависимости от конкретной ситуации могут использоваться разные методы.

1. Как открыть форму объекта в управляемом приложении, если есть ссылка на него.

В этом случае все предельно просто.

2. Как открыть форму выбора и получить потом выбранное значение.

Для этого существует функция ВвестиЗначение(). У функции 3 параметра:

  • Переменная, в которую будет записано выбранное значение;
  • Подсказка, которая будет отображена в окне выбора;
  • Описание типов выбираемых значений. Может быть несколько типов, тогда перед выбором конкретного значения будет предложено выбрать тип.

В результате выполнения функции откроется форма выбора по умолчанию для объекта указанного типа.

Перем Значение ;
Массив = новый массив ;
Массив . Добавить ( Тип ( "СправочникСсылка.Номенклатура" ) ) ;
Массив . Добавить ( Тип ( "СправочникСсылка.Контрагенты" ) ) ;

ОписаниеТипов = новый ОписаниеТипов ( Массив ) ;

Рез = ВвестиЗначение ( Значение , "Подсказка" , ОписаниеТипов ) ;

Предыдущие способы позволяли открывать только формы, установленные для объектов по умолчанию (форму объекта или форму выбора). Если нужно открыть произвольную форму, то можно воспользоваться функцией ОткрытьФорму().

Эта функция имеет довольно много параметров. Рассмотрим некоторые из них:

  • Имя формы — тут можно выбрать либо одну из стандартных форм объекта, например, ФормаВыбора или ФормаСписка. Или конкретную, созданную разработчиками форму.
  • Параметры — позволяет передать в форму в виде структуры некоторые параметры перед ее открытием, тем самым определив выводимые данные. Параметры могут представлять собой любые данные, которые можно передавать с клиента на сервер. Переданные при открытии формы параметры можно обработать в процедуре ПриСозданииНаСервере() у открываемой формы.
  • Режим открытия формы — имеет 3 варианта: независимый, блокировать весь интерфейс, блокировать форму владельца.

Рассмотрим, как применяется функция ОткрытьФорму() в различных ситуациях.

3. Как открыть форму существующего объекта

У каждой формы есть один ключевой реквизит. Он выделен жирным в списке реквизитов формы и обычно называется Объект у форм элементов справочников, документов. У других объектов название может быть другим. Для открытия формы существующего объекта нужно передать в открываемую форму параметр Ключ со значением в виде ссылки на объект.

Читайте также:  Где на ноутбуке кнопка пауза

&НаКлиенте
Процедура Команда 1 ( Команда )
Параметр = новый структура ;
Параметр . Вставить ( "Ключ" , НайтиС ( ) ) ;
ОткрытьФорму ( "Справочник.Контрагенты.ФормаОбъекта" , Параметр ) ;
КонецПроцедуры

&НаСервере
Функция НайтиС ( ) ;
Возврат Справочники . Контрагенты . НайтиПоРеквизиту ( "ИНН" , "745107734623" )
КонецФункции

4. Как открыть форму нового объекта

Тут подойдет просто функция ОткрытьФорму() без всяких параметров.

5. Как открыть форму нового объекта и заполнить ее на основании чего-либо

Нужно передать параметр Основание, значением которого будет являться ссылка на объект-основание заполнения. При этом будет запущена процедура ОбработкаЗаполнения().

В этом примере будет создан документ Реализация товаров и услуг и заполнен на основании счета на оплату покупателю, ссылка на который была передана.

6. Как открыть форму и задать на ней отбор

Отбор на формах 1С может быть простым и сложным. Простой отбор предусматривает выражения типа Организация = ООО «Рога и копыта». Сложный отбор предполагает и другие типы сравнения, например, В списке. В данной статье рассмотрим организацию простого отбора, а сложному будет посвящена отдельная статья.

Чтобы организовать простой отбор, нужно передать в открываемую форму параметр с ключом Отбор, значением будет являться структура, в которой ключ — имя поля динамического списка, а значение — искомые данные.

Например, откроем форму списка справочника НомераГТД и сделаем там отбор по владельцу — элементу справочника Номенклатура.

Отбор = новый Структура ;
Отбор . Вставить ( "Владелец" , СсылкаНаНоменклатуру ) ;

Параметр . Вставить ( "Отбор" , Отбор ) ;

ОткрытьФорму ( "Справочник.НомераГТД.ФормаСписка" , Параметр ) ;
КонецПроцедуры

7. Как открыть форму записи регистра сведений

Для этого понадобится ключ записи регистра сведений.

Ключ записи — это значения всех измерений и период (если регистр периодический). То есть ключ записи — это параметры, по которым можно однозначно идентифицировать запись.

Алгоритм открытия следующий:

  1. Заносим в структуру данные ключа записи с необходимыми значениями.
  2. Помещаем полученную структуру в массив.
  3. Из массива создаем ключ записи.
  4. Передаем в открываемую форму параметр Ключ с ключом записи из п.3 в качестве значения.

ПараметрыКлюча = новый Структура ;
ПараметрыКлюча . Вставить ( "Номенклатура" , СсылкаНаНоменклатуру ) ;
ПараметрыКлюча . Вставить ( "ТипЦены" , СсылкаНаТипЦен ) ;
ПараметрыКлюча . Вставить ( "Период" , Дата ) ;

МассивКлюча = Новый Массив ;
МассивКлюча . Добавить ( ПараметрыКлюча ) ;

КлючЗаписи = Новый ( "РегистрСведенийКлючЗаписи.ЦеныНоменклатуры" , МассивКлюча ) ;

Параметр . Вставить ( "Ключ" , КлючЗаписи ) ;

ОткрытьФорму ( "РегистрСведений.ЦеныНоменклатуры.ФормаЗаписи" , Параметр ) ;
КонецПроцедуры

Статья решает задачи:

  • Как передать параметр в открываемую программно форму;
  • Как вернуть параметр из открываемой программно формы;

Исходные данные:

  • Имеется общая форма — «НашаФорма», с реквизитами:
  • «МножительА» — заполняется при открытии формы, по значению переданного параметра;
  • «МножительБ» — заполняется вручную;
  • Необходимо:
    • программно открыть форму «НашаФорма».
    • передать в форму параметр, по значению которого заполнить реквизит «МножительА»;
    • вручную заполнить реквизит формы «МножительБ»;
    • умножить «МножительА» на «МножительБ» и результат вернуть в исходную процедуру;
    • 1. Пишем процедуру по открытию «НашаФорма» и передаче в нее параметра «МножительА»

      2. Пишем процедуру, которая при открытии «Наша форма» (в обработчике ПриСозданииНаСервере) будет заполнять реквизит «МножительА» по полученному значению

      3. Пишем процедуру по вычислению результата умножения и возврату значения

      У многих начинающих программистов, особенно у тех, кто впервые сталкивается с управляемым приложением в 1С, возникает вопрос: как программным способом открыть управляемую форму. Еще больше вопросов возникает с передачей данных, когда одна форма открывается с другой формы. Многих этот момент ставит в тупик.

      Читайте также:  Где находится индекс на банковской карте

      В этой статье я разберу оба этих момента.

      Для тренировки создадим в конфигураторе 1С внешнюю обработку, в которой сделаем две формы. Назовем их: Данные и Расчёт. Причем форма Данные это основная форма обработки, т.е. будет открываться при запуске обработки.

      В этой тренировке в форме Данные будем вводить некоторые числовые значения, которые потом используем в форме Расчёт. Сделаем простой пример: решим линейное уравнение тип ax + b = c. Для этого на форме Данные зададим величины a,b и с соответственно, а при открытии формы Расчёт вычислим значение x. Пример больше учебный, нужный для того, чтобы показать, как передавать данные с одной формы на другую. a, b и с – это реквизиты управляемой формы Данные с типом число (10,2). Создадим эти реквизиты и перетащим их на форму.

      Следующим шагом создадим команду на форме Данные, при выполнении которой откроется форма Расчёт, где мы увидим решение линейного уравнения. Назовем команду«Решить уравнение» и поместим её на форму в виде простой кнопки.

      Открывать управляемые формы следует в клиентском контексте. Причем не важно, какой это будет клиент: тонкий, толстый или веб-клиент.

      Подробно о клиентском и серверном контексте управляемой формы читайте в статье:

      Поэтому создадим обработчик команды «Решить уравнение» на клиенте.

      В процедуре-обработчике этой команды откроем форму Расчёт, для этого необходимо использовать метод глобального контекста ОткрытьФорму.

      &НаКлиенте
      Процедура РешитьУравнение ( Команда )

      Синтаксис этого метода имеет много параметров, но обязательным является только один – первый, в котором задается путь к управляемой форме.

      При работе с этим методом, можно воспользоваться контекстными подсказками: достаточно написать после открывающей скобки параметров кавычки, и выйдут различные варианты, по которым можно получить нужную форму.

      Причем в контекстной подсказке можно выбрать, как конкретную форму, так и какую-то основную форму нужного объекта.

      В нашем случае мы выбираем форму Расчет обработки.

      Подготовим форму Расчёт – создадим у этой формы реквизит x, который поместим на форму.

      А так же установим у формы в свойство Режим открытия окна значение Блокировать окно владельца. Тогда форма Расчёт будет открываться в отдельном окне.

      Всё! Если мы сейчас сохраним обработку, запустим её и выполним команду «Решить уравнение» формы Данные, то откроется форма Расчёт. На которой, естественно, ни чего пока ещё не рассчитано.

      И первое что нам бросается в глаза, это заголовок в названии управляемой формы. Переименуем. Для этого в палитре свойств формы нужно снять флаг у свойства Автозаголовок и написать какой-то заголовок в свойстве Заголовок.

      С открытием форм все просто и понятно. Но как передать данные с одной формы на другую? Для этого у управляемой формы 1С есть закладка Параметры. В этой закладке перечисляются данные, которые будут использоваться при создании управляемой формы на сервере.

      Создадим у управляемой формы Расчёт параметры a,b,c.

      Замечу, что к параметрам можно обращаться только в событии управляемой формы ПриСозданииНаСервере. Это событие возникает тогда, когда форма была создана на сервере, но еще не была передана в клиентский контекст.

      Читайте также:  Етокен не видит ключ

      Если Вы хотите, чтобы параметр был доступен все время существования формы, то у него необходимо установить свойство Ключевой параметр.

      У формы Расчёт создадим событие формы ПриСозданиеНаСервере. Для этого в палитре свойств формы нужно найти это событие и кликнуть на кнопку «Лупа».

      Решим в этом событие линейное уравнение. Для того, чтобы обратиться к нужному параметру формы, необходимо использовать коллекцию Параметры. И через точку получать значение интересующего нас параметра.

      &НаСервере
      Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )

      x = ( Параметры . c — Параметры . b )/ Параметры . a ;

      Теперь нам осталось передать параметры при открытии формы. Для этого на форме Данные в обработчике команды «Решить уравнение» создадим структуру, в которой перечислим все передаваемые параметры. Ключ этой структуры должен соответствовать названию параметра в открываемой форме.
      И эту структуру будем указывать в качестве второго параметра метода ОткрытьФорму.

      &НаКлиенте
      Процедура РешитьУравнение ( Команда )

      Если a = 0 Тогда
      Возврат;
      КонецЕсли;

      СтруктураПараметров = Новый Структура ;
      СтруктураПараметров . Вставить ( «a» , a );
      СтруктураПараметров . Вставить ( «b» , b );
      СтруктураПараметров . Вставить ( «c» , c );

      ОткрытьФорму ( «ВнешняяОбработка.ОткрытиеУправляемойФормы.Форма.Расчёт» ,
      СтруктураПараметров );

      Посмотрим, как будет работать этот код.

      Как видите, в управляемом приложении 1С нет ничего сложного в передачи данных с одной формы на другую. Для этого просто необходимо использовать параметры управляемой формы.

      Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.

      Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

      1. Без сложных технических терминов;
      2. Более 600 страниц практического материала;
      3. Каждый пример сопровождается рисунком (скриншот);
      4. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

      Промо-код на скидку в 15% — 48PVXHeYu

      Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

      Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

      1. Книга написана понятным и простым языком — для новичка.
      2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
      3. Научитесь понимать архитектуру 1С;
      4. Станете писать код на языке 1С;
      5. Освоите основные приемы программирования;
      6. Закрепите полученные знания при помощи задачника;


      Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:

      можно оплатить вручную:

      Яндекс.Деньги — 410012882996301
      Web Money — R955262494655

      Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей

      Оцените статью
      ПК Знаток
      Добавить комментарий

      Adblock
      detector