В данной статье описаны примеры программного создания объектов управляемой формы 1С : элементов, команд, реквизитов, а также описание стандартных возможностей для работы с ними.
Введение в управляемая форма 1С реквизиты элементы команды
Рекомендуется модифицировать управляемые формы типового решения 1С программно для удобного будущего обновления и исключения конфликтов, а также для удобной работы с изменениями и надежности при использовании механизма расширений.
В некоторых типовых конфигурациях 1С (ЕРП 2, УТ 11) используется механизм упрощенного изменения конфигурации. Статьи о типовом механизме можно найти в разделе полезных ссылок. Данный механизм используется в БСП, и его необходимо знать при модификации типовых конфигураций.
При добавлении элементов на форму программно можно отредактировать практически любое свойство из панель свойств, которое можно установить вручную в конфигураторе.
Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.
Примеры работы с объектом «ДанныеФормыКоллекция» и созданием дин. списка и таблицы значений программно можно будет посмотреть в части 2.
Для запуска обработки в режиме предприятия необходимо наличие объектов «Справочники.Номенклатура», подчиненный ему «Справочники.ХарактеристикиНоменклатуры» и «РегистрыСведений.ЦеныНоменклатуры”.
Программное переопределение обработчиков событий формы и элементов формы
Переопределить обработчики событий формы можно в обработчике «ПриСозданииНаСервере» (кроме самого обрабочика «ПриСозданииНаСервере») или в теле модуля формы в контексте сервера (например, Переопределение событий ПриЧтениинаСервере и ПриСозданииНаСервере).
В теле модуля формы:
А в новой процедуре нужно добавить вызов основной, если такая процедура есть.
Аналогично можно поступить и с обработчиками элементов формы:
Программное создание групп формы.
Доступные виды групп формы:
Программное добавление команды на форму.
Удалить команду можно при помощи метода коллекции формы команд: Команды.Удалить( ). Удалять можно только те команды, которые были созданы программно.
Программное создание декораций форм.
Программное добавление реквизита на форму.
Добавлять новые реквизиты в управляемую форму и удалять необходимо с помощью метода ИзменитьРеквизиты(), куда в параметры передается массив добавляемых реквизитов и массив удаляемых. Удалять при этом можно только те реквизиты, которые были созданы программно.
Вывод реквизитов на форму.
Вызов процедур при создании на сервере 1С
После описания всех процедур выводим их в процедуре ПриСозданииНаСервере. Также можно изменить программно некоторые свойства формы, например, заголовок. Чтобы был виден только наш заголовок, нужно отключить свойство Автозаголовок.
Некоторые советы при программном редактировании формы
Итак, взглянем на получившийся результат. Все элементы на форме созданы программно:
1с добавить общую команду на форму программно
Войдите как ученик, чтобы получить доступ к материалам школы
Создание конфигураций 1С: добавляем команду
Автор уроков и преподаватель школы: Владимир Милькин
Продолжаем изучение азов создания конфигураций на 1С.
Где находится форма у обработки
Откроем окно настроек обработки «УдалениеУволенныхСотрудников»:
Открылось окно с закладками во многом повторяющими закладки из справочника «Сотрудники». Это совершенно нормально, ведь настройки объектов в конфигураторе во многом похожи друг на друга.
Давайте откроем его двойным щелчком:
Открылось окно со множеством панелей. И нам сейчас очень важно для будущих уроков разобраться что здесь за что отвечает.
Меняем код на встроенном языке 1С для формы
Ну прежде всего обратим внимание в самый низ открывшегося окна. Там мы найдём две закладки «Форма» и «Модуль».
Попробуем переключиться на закладку «Модуль»:
Здесь присутствует всего одна процедура с именем «УдалитьСотрудников». Очевидно именно она и вызывается при нажатии на кнопку.
Изменим этот код следующим образом:
Снова запустим режим 1С:Предприятие (меню «Отладка»->»Начать отладку»), откроем обработку и нажмём кнопку «Удалить сотрудников»:
И получим то самое сообщение, которое написали только что:
Закладка «Элементы» у формы
Вернёмся в конфигуратор в нашу форму на закладку «Форма»:
Обратите внимание на закладку «Элементы» в верхней части формы. Содержимое этой закладки дублирует визуальное представление формы. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Можно сказать ещё, что всё, что вы видите в визуальной части формы можно найти на закладке «Элементы».
Откроется окно со свойствами кнопки:
Давайте установим для кнопки заголовок «БАХ»:
Форма теперь будет выглядеть так:
Закладка «Реквизиты» у формы
Теперь перейдём к закладке «Реквизиты»:
Эта закладка содержит имена по которым мы можем «достучаться» до данных объекта, которые представляет форма. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Пока на этой закладке всего лишь один реквизит «Объект» и то пустой.
Но если бы мы перешли на аналогичную закладку в форме справочника «Сотрудники», то обнаружили бы тут реквизиты «ДатаРождения», «НомерПаспорта» и «СерияПаспорта». Это означало бы, что мы можем их использовать в коде модуля формы.
Закладка «Команды» у формы
Заключительная закладка, которую мы рассмотрим сегодня это закладка «Команды»:
Вообще все команды, которые вы видите на одной из закладок («Команды формы», «Стандартные команды» и «Глобальные команды»), можно смело перетаскивать на закладку «Элементы» и они «волшебным образом» превратятся в кнопки на форме.
Как вы понимаете, нажатие на эти кнопки, будет приводить к выполнению этих команд.
Ну, например, перейдём на закладку «Стандартные команды» и перетащим на закладку «Элементы» команду «Закрыть»:
На форме появилась кнопка закрыть. Запустим 1С:Предприятие (меню «Отладка»->»Начать отладку»), откроем обработку и убедимся, что кнопка работает:
Вернёмся в конфигуратор в форму обработки и перейдём на закладку «Команды формы»:
На этой закладке мы видим команды формы, которые мы определили сами. В том числе мы можем видеть здесь команду, которую я определил ещё в самом начале с именем «УдалитьСотрудников».
Откроем свойства этой команды (двойным щелчком).
Нас интересует прежде всего поле «Действие», нажмите на кнопку с лупой рядом с ним:
Нас перенесло в процедуру «УдалитьСотрудников» в модуле формы. Это означает, эта команда и эта процедура связаны между собой. И выполнение команды (например, при нажатии на кнопку, в которую она превратилась) приведёт к выполнению кода процедуры.
Добавляем новую команду для формы
Давайте создадим ещё одну команду формы. Для этого вернёмся на закладку «Команды формы» и нажмём зелёную кнопку с плюсом:
На закладку добавилась новая команда «Команда1»:
Откроем её свойства и установим имя «Привет», а затем нажмём на лупу рядом с полем «Действие»:
Нас спрашивают какой именно вид обработчика мы хотим создать.
Выбираем вариант «НаКлиенте» и нажимаем «ОК»:
Нас перенесло в модуль формы в автоматически созданную процедуру «Привет». Теперь эта процедура связана с командой формы «Привет»:
Давайте напишем в ней вывод строки привет пользователю:
Но как нам теперь заставить выполнять команду (а значит и процедуру) «Привет»? Для этого вернёмся на закладку «Команды формы» и перетащим наш «Привет» на форму, так как мы это сделали ранее с командой «Закрыть»:
На форме появилась ещё одна кнопка. Запустим 1С:Предприятие, откроем обработку и нажмём на кнопку «Привет». Должно получиться вот так:
Вводим от пользователя имя и говорим ему привет
А теперь давайте поставим себе такую задачу. Нужно, чтобы пользователь ввёл своё имя, мы нажали на кнопку и вывелось, например, «Привет, Алексей».
Переходим на закладку «Реквизиты» и нажимаем зелёную кнопку плюс:
Добавился реквизит с именем «Реквизит1»:
В окне свойств этого реквизита установим имя «Имя» и тип «Строка»:
После этого перетащим уже привычным образом реквизит «Имя» на закладку «Элементы»:
Запустим 1С:Предприятие, откроем обработку и попробуем туда ввести своё имя:
Всё получилось, но вот нажатие на кнопку «Привет» пока работает по-прежнему.
Сейчас всё исправим. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Для этого вернёмся в конфигуратор, перейдём в модуль формы обработки и найдём там процедуру «Привет»:
Перепишем её таким образом, чтобы к строке «Привет, » добавлялось значение реквизита «Имя», который связан с элементом ввода на форме:
Теперь снова запустим 1С:Предприятие, обработку, введём своё имя и нажмём кнопку «Привет»:
Команды, элементы, реквизиты, объект. вы ещё не запутались?
Элементы позволяют нам некоторым образом взаимодействовать с формой: читать, нажимать, проматывать и т.п.
Кнопка
Команды бывают встроенные (закладки «Стандартные команды» и «Глобальные команды») и те, что программист придумывает сам (закладка «Команды формы»).
Надпись
Это просто текст на форме. У такого элемента есть свойство «Заголовок», значение которого мы задаём в редакторе и оно отображается в виде текста.
Поле
А вот это уже интересно. Потому что это такой особый элемент, который не сам по себе (как надпись), а обязательно должен быть связан с какими-то данными или по-другому РЕКВИЗИТАМИ (закладка «Реквизиты»).
Так вот в 1С так нельзя. Тут (начиная с «управляемых» форм) представление данных отделено от самих данных.
И получается, что при написании кода на языке 1С для отображения и изменения данных мы прежде всего должны использовать реквизиты. Мы меняем из кода реквизиты, а связанные с ними поля на форме изменяются при этом автоматически.
И наоборот. Пользователь вводит на форме значения в элементы ввода (числа, текст, даты) и значения реквизитов также меняются автоматически.
Какие преимущества даёт такое отделение элементов формы от данных (реквизитов)? Большие! Программист создает нужные ему реквизиты (для хранения, отображения и ввода некоторых полей на форме) и пишет программный код работая только с этими реквизитами (данными). Он совершенно не задумывается пока как всё это будет выглядеть на форме. Оно ему и не надо! Он пока пишет только программный код.
А уже затем он перетаскивает эти реквизиты на форму, реквизиты превращаются в визуальные элементы формы, он их как-то настраивает, распихивает по закладкам и прочее. В общем на этом этапе (визуального проектирования формы) он работает уже только с элементами. При этом во много раз снижается вероятность сломать уже написанный код.
Чтобы обратиться к реквизиту «Возраст» из модуля формы достаточно сразу использовать его имя:
А чтобы обратиться к элементу формы, который связан с этим реквизитом нужно использовать префикс «Элементы.», например:
Что такое Объект?
Рядом с ним бы появился плюсик и мы могли бы его раскрывать и перетаскивать отдельные его части на форму и они бы также превращались в элементы.
Общие команды и группы команд в 1С 8.3
Общие команды — механизм платформы, предназначенный для описания часто используемых команд в конфигурации 1С 8.3.
Общие или глобальные команды удобно использовать, если одна команда нужна многих объектам конфигурации. Например, кнопка для вывода структуры подчиненности документов, команда отображения проводок документа, отчет о изменении объекта.
В команду можно передать параметры, например, из формы какого объекта он вызывается.
Настройка и свойства общей команды в 1С
Добавить новую команду и настроить общую форму достаточно просто, рассмотрим этот процесс подробнее:
Пример модуля команды:
Здесь ПараметрКоманды — объект, вызывающий команду. А в ПараметрыВыполненияКоманды структура, в которой описан Источник (вызываемая Форма), Окно (ОкноКлиентскогоПриложения), Уникальность, указывает, искать ли уже открытую форму или нет.
Группы команд 1С
Объект, позволяющий вывести команды на командный интерфейс конфигурации в отдельную группу:
Видео по общим командам от Павла Чистова:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
1с программно выполнить общую команду
Есть расположенная на форме новая команда, как в 1С её вызвать программно из модуля формы? Перерыл интернет,не нашел четкого объяснения или кода.
Просто вызови процедуру команды, подставив в параметры команду или кнопку.
Для управляемой формы:
Процедура ВызватьКоманду() ИмяНужнойКоманды = “ИмяКомандыФормы”; // Тут просто имя команды как в конфигураторе. НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды); // Находим команду на форме КакаяТоКоманда(НужнаяКоманда); // Вызываем нужную команду, подставив ее в параметры КонецПроцедуры
Процедура КакаяТоКоманда(Команда) // Тут код твоей команды. КонецПроцедуры
Для обычной формы Процедура ВызватьКоманду() ИмяНужнойКнопки = “ИмяКнопкиФормы”; // Тут просто имя команды как в конфигураторе. НужнаяКнопка = ЭтаФорма.ЭлементыФормы.ОсновныеДействияФормы.Кнопки[ИмяНужнойКнопки]; КакаяТоКоманда(НужнаяКнопка); // Вызываем нужную команду, подставив ее в параметры КонецПроцедуры
Процедура КакаяТоКоманда(Кнопка) // Тут код твоей команды. КонецПроцедуры
В принципе, можешь и не заморачиваться с кнопками и командами, если они не обрабатываются в коде. Хотя что мешает вообще вынести код команды в процедуру и вызывать ее сколько влезет?
Общие команды — механизм платформы, предназначенный для описания часто используемых команд в конфигурации 1С 8.3.
Общие или глобальные команды удобно использовать, если одна команда нужна многих объектам конфигурации. Например, кнопка для вывода структуры подчиненности документов, команда отображения проводок документа, отчет о изменении объекта.
В команду можно передать параметры, например, из формы какого объекта он вызывается.
Настройка и свойства общей команды в 1С
Добавить новую команду и настроить общую форму достаточно просто, рассмотрим этот процесс подробнее:
Получите 267 видеоуроков по 1С бесплатно:
Пример модуля команды:
Здесь ПараметрКоманды — объект, вызывающий команду. А в ПараметрыВыполненияКоманды структура, в которой описан Источник (вызываемая Форма), Окно (ОкноКлиентскогоПриложения), Уникальность, указывает, искать ли уже открытую форму или нет.
Группы команд 1С
Объект, позволяющий вывести команды на командный интерфейс конфигурации в отдельную группу:
Видео по общим командам от Павла Чистова:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Расширение управляемой формы для справочника (Managed form extension for catalogs) — Прочитать (Read)
Синтаксис: Прочитать()
Описание: Обновляет объект управляемой формы.
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент.
Похожие FAQ
Еще в этой же категории
Заполнение списка значений в элементе поле выбора на форме 9
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Как установить параметр динамического списка? 8
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма
Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Как обновить динамический список или реквизит на форме клиента? 6
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Посмотреть все в категории Работа с Формой (Диалог) и её элементами
1с программно выполнить общую команду
Есть расположенная на форме новая команда, как в 1С её вызвать программно из модуля формы? Перерыл интернет,не нашел четкого объяснения или кода.
Просто вызови процедуру команды, подставив в параметры команду или кнопку.
Для управляемой формы:
Процедура ВызватьКоманду() ИмяНужнойКоманды = “ИмяКомандыФормы”; // Тут просто имя команды как в конфигураторе. НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды); // Находим команду на форме КакаяТоКоманда(НужнаяКоманда); // Вызываем нужную команду, подставив ее в параметры КонецПроцедуры
Процедура КакаяТоКоманда(Команда) // Тут код твоей команды. КонецПроцедуры
Для обычной формы Процедура ВызватьКоманду() ИмяНужнойКнопки = “ИмяКнопкиФормы”; // Тут просто имя команды как в конфигураторе. НужнаяКнопка = ЭтаФорма.ЭлементыФормы.ОсновныеДействияФормы.Кнопки[ИмяНужнойКнопки]; КакаяТоКоманда(НужнаяКнопка); // Вызываем нужную команду, подставив ее в параметры КонецПроцедуры
Процедура КакаяТоКоманда(Кнопка) // Тут код твоей команды. КонецПроцедуры
В принципе, можешь и не заморачиваться с кнопками и командами, если они не обрабатываются в коде. Хотя что мешает вообще вынести код команды в процедуру и вызывать ее сколько влезет?
Общие команды — механизм платформы, предназначенный для описания часто используемых команд в конфигурации 1С 8.3.
Общие или глобальные команды удобно использовать, если одна команда нужна многих объектам конфигурации. Например, кнопка для вывода структуры подчиненности документов, команда отображения проводок документа, отчет о изменении объекта.
В команду можно передать параметры, например, из формы какого объекта он вызывается.
Настройка и свойства общей команды в 1С
Добавить новую команду и настроить общую форму достаточно просто, рассмотрим этот процесс подробнее:
Получите 267 видеоуроков по 1С бесплатно:
Пример модуля команды:
Здесь ПараметрКоманды — объект, вызывающий команду. А в ПараметрыВыполненияКоманды структура, в которой описан Источник (вызываемая Форма), Окно (ОкноКлиентскогоПриложения), Уникальность, указывает, искать ли уже открытую форму или нет.
Группы команд 1С
Объект, позволяющий вывести команды на командный интерфейс конфигурации в отдельную группу:
Видео по общим командам от Павла Чистова:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Расширение управляемой формы для справочника (Managed form extension for catalogs) — Прочитать (Read)
Синтаксис: Прочитать()
Описание: Обновляет объект управляемой формы.
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент.
Похожие FAQ
Еще в этой же категории
Заполнение списка значений в элементе поле выбора на форме 9
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Как установить параметр динамического списка? 8
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма
Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Как обновить динамический список или реквизит на форме клиента? 6
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Посмотреть все в категории Работа с Формой (Диалог) и её элементами