1с как сделать форму активной

Обновлено: 06.07.2024

Открытие форм

Область применения: управляемое приложение, мобильное приложение.

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

Рекомендация обусловлена соображениями

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

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

2. В случаях когда форма требует параметризации при открытии, все ее параметры следует указывать в наборе параметров формы. Таким образом, набор параметров формы декларативно описывает возможности формы по ее параметризации.

Параметры формы из этого набора могут быть указаны в вызывающем коде при открытии формы ( ОткрытьФорму ).

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

следует по той же причине использовать параметры формы:

ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме", Новый Структура("РежимОткрытия", "Приветствие"));

4. Для получения результата работы формы, вместо непосредственного обращения к элементам и реквизитам формы

ФормаВопроса = ПолучитьФорму("ОбщаяФорма.ФормаВопроса");
ФормаВопроса.ОткрытьМодально();
Если ФормаВопроса.БольшеНеПоказыватьНапоминание Тогда
// …

следует использовать процедуры-обработчики оповещений, которые будут вызваны при завершении работы пользователя с формой:

Оповещение = Новый ОписаниеОповещения("БольшеНеПоказыватьНапоминаниеЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ФормаВопроса". Оповещение, РежимОткрытияОкнаФормы.БлокироватьВеcьИнтерфейс);
.

&НаКлиенте
Процедура БольшеНеПоказыватьНапоминаниеЗавершение(БольшеНеПоказыватьНапоминание, Параметры) Экспорт

Если БольшеНеПоказыватьНапоминание = Неопределено Тогда
Возврат;
КонецЕсли;

Если БольшеНеПоказыватьНапоминание Тогда
// …

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

5. Другие ограничения:

  • Обработчик события формы ПриОткрытии не должен содержать код по открытию какой-либо другой формы, так как это может привести к нарушению порядка отображения окон. В этом случае рекомендуется использовать обработчик ожидания на короткий интервал или открывать другие формы интерактивно, например, по нажатию на кнопку.
  • Не рекомендуется выполнять программное открытие и закрытие формы в одном обработчике. Такие действия должны быть разнесены по времени. Например, закрытие формы можно выполнять в обработчике ожидания.
  • При использовании в конфигурации Библиотека стандартных подсистем и разработке форм (рабочих мест), предназначенных только для внешних пользователей, следует явно блокировать открытие таких форм в сеансах "обычных" пользователей. Для этого следует устанавливать параметр Отказ при создании формы на сервере с помощью функции ЭтоСеансВнешнегоПользователя общего модуля Пользователи или ПользователиКлиент :

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

Если Не ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;

КонецПроцедуры

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

Распечатать

Как заполнить табличную часть формы программно?  6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С  42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools  50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Google maps : вывод точек на карту и режим панорамы  7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора База 1С при запуске уходит в дамп и вылетает  1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Посмотреть все результаты поиска похожих

Еще в этой же категории

Как обновить динамический список или реквизит на форме клиента?  19
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Как установить параметр динамического списка?  14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Список НЕ модальных методов в 1С  4
Найдено в интернете но говорят что с диска ИТС. Табличная часть

Редактор формы используется для создания и редактирования форм объектов прикладного решения. Формы объектов используются системой для визуального отображения данных в процессе работы пользователя.

Любая форма представляет совокупность нескольких составляющих:
  • элементов — объектов, определяющих визуальное представление формы и осуществляющих взаимодействие с пользователем,
  • командного интерфейса — совокупности команд, отображаемых в форме;
  • реквизитов — объектов, данные которых форма использует в своей работе.
  • команд — действий, которые определены в данной конкретной форме,
  • параметров — объектов, значения которых характеризуют саму форму, используются при ее создании и остаются постоянными в процессе «жизни» формы,
  • модуля — программы на встроенном языке, отвечающей за работу с элементами и за обработку событий;

Редактор формы

Редактор формы содержит несколько закладок, обеспечивающих редактирование всех составляющих формы.

В отдельном окне, в нижней части редактора, отображается внешний вид формы в режиме 1С:Предприятие.

Редактирование элементов

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

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

Редактор формы

Тогда в режиме 1С:Предприятие она будет выглядеть следующим образом:

Редактор формы

Заголовок каждой группы — страницы отображается на отдельной закладке. Разработчик имеет возможность задать режим отображения закладок: снизу или сверху:

Редактор формы

Например, закладки можно расположить снизу:

Редактор формы

Элементы

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

Редактор формы

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

Редактор формы

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

Разделители

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

Редактор формы

При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.

Модуль формы

Для редактирования модуля формы конфигуратор вызывает редактор текстов и модулей. Этот редактор предоставляет разработчику большое разнообразие возможностей для создания и изменения текста модуля. Подробнее…

Реквизиты формы

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

Редактор формы

Если у формы существует основной реквизит, определяющий поведение формы, отличное от типового, — он выделяется жирным шрифтом.

Командный интерфейс формы

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

Редактор формы

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

Команды формы

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

Редактор формы

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

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

Параметры формы

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


Добавили (заимствовали) форму Заказа в расширение. Вывели на заимствованную форму добавленные в расширении реквизиты. Все хорошо…

Выходит новый релиз конфигурации поставщика, где у документа добавлен КакойТоНовыйРеквизит, который выведен на форму документа в конфигурации поставщика.

Если после обновления расширение успешно подключится, то, как минимум, в режиме Предприятия на форме документа не будет этого нового реквизита.

И с этим надо что-то делать:)

Дело в том, что платформа использует сразу 3 формы:

  • Форму из основной конфигурации
  • Сохраненную форму
  • Форму из расширения.

12 минут видео, 100% полезности :)


Профессиональная доработка 1С не должна вызывать проблем с обновлениями

Мы подготовили новый курс, который рассказывает не только про расширения, но и про другие инструменты для доработки типовых конфигураций.

  • Как дорабатывать типовые конфигурации внешними средствами
  • Как разрабатывать и использовать расширения
  • Оптимальные приемы обновления
  • Все, что экономит, страхует, помогает.

Musthave для внедренцев.

Комментарии / обсуждение (70):

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

Извиняюсь, пока писал сам разобрался.

Добрый день!
Спасибо.
Хорошая новость, потому что пути к данным действительно слетают, это мешает использовать расширения на практике.

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

Так что попробуйте платформу посвежее использовать.

Пожалуйста!
Интересного обучения!

Ольга, спасибо за ответ. Да, платформа 8.3.15.
Мне этот реквизит совсем не нужен (реализовала задачу по другому), и добавляла я только его одного, поэтому вариант, который я написала (удалила сам реквизит “тфПараметрыНазначения” и добавила его в расширение обратно) мне подошёл. Проверила работу в данной форме, вроде ничего не поломалось.
Конечно, если бы я добавила много реквизитов, а потом захотела бы удалить один, то получается при таком подходе (удалении реквизита и добавлении его обратно) пришлось бы остальные добавленные мной реквизиты обратно добавлять, что не удобно, но всё таки правильней, а вариант с видимостью на мой взгляд не очень корректный, так как вызывает в последующем непонимание зачем был добавлен данный реквизит и наверно затрачивает дополнительный объем памяти.

Спасибо ещё раз за ответ, теперь буду думать дважды когда буду добавлять свои реквизиты на форму в расширении. Надеюсь, правда, разработчики продумают этот момент.

Добрый день!
У меня не воспроизвелось. Возможно, зависит от типа объекта, который Вы пытаетесь добавить в расширение. Или проблема конкретного релиза платформы.

Добрый день!
В тестовую конфигурацию загрузил расширение, в котором в документе добавил реквизит.
При помощи обработки MD82Exp.epf из Конвертации данных выгружаю структуру конфигурации в xml-файл. В полученном файле новый реквизит из расширения присутствует.

А что если ситуация интереснее?! Вы только добавили реквизиты в только что созданную форму расширения и они не показываются. В чем дело если сохраненная форма не причем?

Добрый день!
Возможно, дело в правах доступа.

Добрый день!
В конструкторе формы добавляю Объект в расширение:

После этого на форму можно вынести созданный в расширении реквизит:

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

2. На этой странице нельзя добавлять скриншоты, только на страницах Мастер-группы.

Конфигурация Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.10.50), платформа 8.3.14.1565

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

Сначала подготовим конфигуратор.

Заходим в конфигуратор 1С. Если конфигурация не открыта, открываем ее и снимаем с поддержки. В меню "Конфигурация" нажимаем "Открыть конфигурацию". Далее в меню "Конфигурация" нажимаем "Поддержка" и выбираем "Настройка поддержки". В окне нажимаем кнопку "Включить возможность изменения" и устанавливаем переключатели как на картинке. Нажимаем "Ок".


Теперь создадим простую обработку.

Находим в левой таблице объектов объект "Обработки", нажимаем на ней правой кнопкой мыши и выбираем "Добавить". Далее потребуется заполнить Имя обработки, указать, в какой подсистеме 1С хотите вызвать обработку, и добавить новую форму в разделе "Формы".


После создания формы появится окно как представлено ниже.

Теперь создадим команду формы "Загрузить" нажав на плюс в верхнем правом окне. Обязательно укажите свойство "Действие". Это будет название процедуры 1С.


Далее добавляем на форму кнопку "Загрузить", нажав на плюс в левом верхнем окне. Обязательно укажите свойство "ИмяКоманды". Здесь укажем название команды, которую создали на предыдущем шаге "Загрузить". В результате на форме появится кнопка "Загрузить".


Далее напишем небольшой код.

Внизу окна нажимаем на закладку "Модуль". У нас здесь уже есть пустая процедура. Добавляем в нее код.

ДиалогВыбора = новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбора.Заголовок = "Выберите файл";

Если ДиалогВыбора.Выбрать() Тогда

В результате получится так как на рисунке ниже.


И в конце остается проверить в пользовательском режиме. Для этого нажимаем "Начать отладку" или F5. Конфигуратор спросит обновить ли конфигурацию базы данных. Отвечаем "Да" и у нас открывается 1С (режим пользователя). Далее находим подсистему, куда добавили обработку (в нашем случае это "Маркетинг") и проверяем.


На простейшем примере было показано как написать код, прикрепить его на форму и вызвать в пользовательском режиме 1С.

Читайте также: