У многих начинающих программистов, особенно у тех, кто впервые сталкивается с управляемым приложением в 1С, возникает вопрос: как программным способом открыть управляемую форму. Еще больше вопросов возникает с передачей данных, когда одна форма открывается с другой формы. Многих этот момент ставит в тупик.
В этой статье я разберу оба этих момента.
Открытие управляемой формы
Для тренировки создадим в конфигураторе 1С внешнюю обработку, в которой сделаем две формы. Назовем их: Данные и Расчёт. Причем форма Данные это основная форма обработки, т.е. будет открываться при запуске обработки.
В этой тренировке в форме Данные будем вводить некоторые числовые значения, которые потом используем в форме Расчёт. Сделаем простой пример: решим линейное уравнение тип ax + b = c. Для этого на форме Данные зададим величины a,b и с соответственно, а при открытии формы Расчёт вычислим значение x. Пример больше учебный, нужный для того, чтобы показать, как передавать данные с одной формы на другую. a, b и с – это реквизиты управляемой формы Данные с типом число (10,2). Создадим эти реквизиты и перетащим их на форму.
Следующим шагом создадим команду на форме Данные, при выполнении которой откроется форма Расчёт, где мы увидим решение линейного уравнения. Назовем команду«Решить уравнение» и поместим её на форму в виде простой кнопки.
Открывать управляемые формы следует в клиентском контексте. Причем не важно, какой это будет клиент: тонкий, толстый или веб-клиент.
Подробно о клиентском и серверном контексте управляемой формы читайте в статье:
Архитектура управляемой формы 1С
Поэтому создадим обработчик команды «Решить уравнение» на клиенте.
В процедуре-обработчике этой команды откроем форму Расчёт, для этого необходимо использовать метод глобального контекста ОткрытьФорму.
&НаКлиенте Процедура РешитьУравнение(Команда) ОткрытьФорму("ВнешняяОбработка.ОткрытиеУправляемойФормы.Форма.Расчёт"); КонецПроцедуры
Синтаксис этого метода имеет много параметров, но обязательным является только один – первый, в котором задается путь к управляемой форме.
При работе с этим методом, можно воспользоваться контекстными подсказками: достаточно написать после открывающей скобки параметров кавычки, и выйдут различные варианты, по которым можно получить нужную форму.
Причем в контекстной подсказке можно выбрать, как конкретную форму, так и какую-то основную форму нужного объекта.
В нашем случае мы выбираем форму Расчет обработки.
Подготовим форму Расчёт – создадим у этой формы реквизит x, который поместим на форму.
А так же установим у формы в свойство Режим открытия окна значение Блокировать окно владельца. Тогда форма Расчёт будет открываться в отдельном окне.
Всё! Если мы сейчас сохраним обработку, запустим её и выполним команду «Решить уравнение» формы Данные, то откроется форма Расчёт. На которой, естественно, ни чего пока ещё не рассчитано.
И первое что нам бросается в глаза, это заголовок в названии управляемой формы. Переименуем. Для этого в палитре свойств формы нужно снять флаг у свойства Автозаголовок и написать какой-то заголовок в свойстве Заголовок.
Параметры управляемой формы
С открытием форм все просто и понятно. Но как передать данные с одной формы на другую? Для этого у управляемой формы 1С есть закладка Параметры. В этой закладке перечисляются данные, которые будут использоваться при создании управляемой формы на сервере.
Создадим у управляемой формы Расчёт параметры a,b,c.
Замечу, что к параметрам можно обращаться только в событии управляемой формы ПриСозданииНаСервере. Это событие возникает тогда, когда форма была создана на сервере, но еще не была передана в клиентский контекст.
Если Вы хотите, чтобы параметр был доступен все время существования формы, то у него необходимо установить свойство Ключевой параметр.
У формы Расчёт создадим событие формы ПриСозданиеНаСервере. Для этого в палитре свойств формы нужно найти это событие и кликнуть на кнопку «Лупа».
Решим в этом событие линейное уравнение. Для того, чтобы обратиться к нужному параметру формы, необходимо использовать коллекцию Параметры. И через точку получать значение интересующего нас параметра.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) x = (Параметры.c - Параметры.b)/Параметры.a; КонецПроцедуры
Теперь нам осталось передать параметры при открытии формы. Для этого на форме Данные в обработчике команды «Решить уравнение» создадим структуру, в которой перечислим все передаваемые параметры. Ключ этой структуры должен соответствовать названию параметра в открываемой форме.
И эту структуру будем указывать в качестве второго параметра метода ОткрытьФорму.
&НаКлиенте Процедура РешитьУравнение(Команда) Если a = 0 Тогда Возврат; КонецЕсли; СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("a",a); СтруктураПараметров.Вставить("b",b); СтруктураПараметров.Вставить("c",c); ОткрытьФорму("ВнешняяОбработка.ОткрытиеУправляемойФормы.Форма.Расчёт", СтруктураПараметров); КонецПроцедуры
Посмотрим, как будет работать этот код.
Как видите, в управляемом приложении 1С нет ничего сложного в передачи данных с одной формы на другую. Для этого просто необходимо использовать параметры управляемой формы.
Открытие управляемой формы существующего объекта
Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.
Книга «Основы разработки в 1С: Такси»
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
{ВнешняяОбработка.ОткрытиеУправляемойФормы.Форма.Расчёт.Форма(4,18)}: Ожидается символ ‘)’
x = (Параметры.c<> — Параметры.b)/Параметры.a; (Проверка: Сервер)
{ВнешняяОбработка.ОткрытиеУправляемойФормы.Форма.Расчёт.Форма(4,18)}: Ожидается символ ‘)’
x = (Параметры.c<> — Параметры.b)/Параметры.a; (Проверка: Тонкий клиент)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
x = (Параметры.c — Параметры.b)/Параметры.a;
КонецПроцедуры
Слово в слово, а все равно такая ошибка
У Вас «—» при копировании не тем символом вставился, наберите с клавиатуры. Вордпресс некоторые символы искажает, видать.
Спасибо, друг. Ты единственный, кто простым языком и с примером изложил тему. Большой респект.
Спасибо! Наконец-то нашёл. искренне признателен за помощь!