Настройка открытия форм при начале работы системы в 1С:ERP 2.5

12.05.25

Разработка - Работа с интерфейсом

В этой статье я расскажу, как в конфигурации 1С:ERP 2.5 при начале работы системы настроить открытие своих нетиповых форм (в том числе и из внешних обработок). Данную методику можно использовать как на тонком клиенте, так и на мобильном или веб-клиенте, а также в мобильном приложении.

  Я Иван Кузьминов, ведущий разработчик 1С и тимлид компании Programming Store.

 

 

В этой статье я расскажу, как в конфигурации 1С:ERP 2.5 при начале работы системы настроить открытие своих нетиповых форм (в том числе и из внешних обработок). 
Данную методику можно использовать как на тонком клиенте, так и на мобильном или веб-клиенте, а также в мобильном приложении.

Содержание:

1. Что нам потребуется.

2. Настройка открытия нетиповой обработки при начале работы системы.

3. Настройка открытия нетиповой ВНЕШНЕЙ обработки при начале работы системы.

4. Резюме.

 

Что нам потребуется:

  1. Регистр сведений НастройкиОткрытияФормПриНачалеРаботыСистемы
  2. Общий модуль ОткрытиеФормПриНачалеРаботыСистемыКлиентСерверПереопределяемый процедура НастройкиФормы()
  3. Перечисление ФормыОткрываемыеПриНачалеРаботыСистемы
  4. Новая роль
  5. Новая обработка в конфигурации
  6. Новая внешняя обработка

Доработку типовых механизмов будем вести в расширении. На момент написания статьи версия ERP - 2.5.17.155.

 

 

Часть 1. Настройка открытия нетиповой обработки при начале работы системы

  1. Создаем новую обработку в дереве конфигурации. Назовем ее Расш_НачальнаяОбработка. Добавляем в нее новую форму “Форма”. В рамках этой части задачи важно лишь наличие формы и ее имя. Структура формы не имеет значения.

 

  1. Создаем новую роль. Назовем ее Расш_ИспользованиеНачальнойОбработки. Синоним – Использование начальной обработки. Даем права на использование и просмотр обработке из п.1.

По этой роли надо будет настроить группы доступа. Но об этом чуть позже.

  1. Переносим перечисление ФормыОткрываемыеПриНачалеРаботыСистемы в расширение и в это перечисление добавляем новое значение, равное имени обработки из п. 1 - Расш_НачальнаяОбработка.

  1.  В общем модуле ОткрытиеФормПриНачалеРаботыСистемыКлиентСерверПереопределяемый ищем функцию НастройкиФормы().

Переносим ее в расширение с типом вызова вызывать вместо (изменение и контроль) и вставляем след. код (наша доработка окаймлена метками #Вставка #КонецВставки):

 

#Вставка

ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.Расш_НачальнаяОбработка") Тогда

                             СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.Расш_НачальнаяОбработка.Форма.Форма");

                             СтруктураПараметров.Вставить("Роль", "Расш_ИспользованиеНачальнойОбработки");

                              СтруктураПараметров.Вставить("ПараметрЗапуска", "rash_UseProcessing");          

#КонецВставки

Функция настройкиФормы() приобретает следующий вид:

&ИзменениеИКонтроль("НастройкиФормы")

Функция Расш_НастройкиФормы(Форма)

                   

                    СтруктураПараметров = ОписаниеНастроекФормы();

                   

                    Если Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.ПомощникПродаж") Тогда

                                      

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.ПомощникПродаж.Форма.Форма");

                                       СтруктураПараметров.Вставить("Роль",                "ИспользованиеПомощникаПродаж");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска",     "SaleAssistant");

                                      

                    ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.РабочееМестоРаботникаСклада") Тогда

                                      

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.РабочееМестоРаботникаСклада.Форма.ФормаРабочегоМеста");

                                       СтруктураПараметров.Вставить("Роль",                "ИспользованиеРабочегоМестаРаботникаСклада");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска",     "WarehouseMobileWorkplace");

                                      

                                       СтруктураПараметров.Вставить("НеобходимыНастройки", Истина);

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

                                      

                    ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.ЧекККМ") Тогда

                                      

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Документ.ЧекККМ.Форма.ФормаДокументаРМК");

                                       СтруктураПараметров.Вставить("Роль",                "ДобавлениеИзменениеЧековККМ");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска",     "CashRegisterReceipt");

                                      

                    ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.РабочееМестоМенеджераПоДоставке") Тогда

                                      

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.РабочееМестоМенеджераПоДоставке.Форма.Форма");

                                       СтруктураПараметров.Вставить("Роль",                "ИспользованиеРабочегоМестаДоставки");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска",     "DeliveryWorkplace");

                                      

                                       //++ НЕ УТКА

                    ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.РабочееМестоВыполнениеОпераций") Тогда

                                      

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.ВыполнениеОпераций2_2.Форма.МобильноеПриложениеНачальнаяСтраница");

                                       СтруктураПараметров.Вставить("Роль",                "ИспользованиеРабочегоМестаВыполнениеОпераций");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска",     "ShopFloorManagement");

                                      

                                       СтруктураПараметров.Вставить("НеобходимыНастройки", Истина);

                                       СтруктураПараметров.Вставить("ИмяФормыНастроек",    "Обработка.ВыполнениеОпераций2_2.Форма.НастройкаПараметровРабочегоМеста");

                                       //-- НЕ УТКА

                                      

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

                                      

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.МобильноеРабочееМестоСборкиИКурьерскойДоставки.Форма.РабочийСтол");

                                       СтруктураПараметров.Вставить("Роль",                "ИспользованиеРабочегоМестаСборкиИКурьерскойДоставки");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска",     "AssemblyAndCourierDeliveryWorkplace");

                                      

                    ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.МобильноеРабочееМестоКладовщика") Тогда

                                      

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.МобильноеРабочееМестоКладовщика.Форма.РабочийСтол");

                                       СтруктураПараметров.Вставить("Роль",                "ИспользованиеРабочегоМестаКладовщика");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска",     "WarehouseWorkplace");

                                      

                    ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.МониторЦелевыхПоказателей") Тогда

                                      

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Отчет.МониторЦелевыхПоказателей.Форма.ФормаМониторЦелевыхПоказателей");

                                       СтруктураПараметров.Вставить("Роль",                "РазделОтчетыИМониторингЦелевыеПоказатели");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска",     "PerformanceDashboard");

                                      

                                       #Вставка

                    ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.Расш_НачальнаяОбработка") Тогда

                                       СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка. Расш_ НачальнаяОбработка.Форма.Форма");

                                       СтруктураПараметров.Вставить("Роль", " Расш_ИспользованиеНачальнойОбработки");

                                       СтруктураПараметров.Вставить("ПараметрЗапуска", "rash_UseProcessing ");                

                                       #КонецВставки

                                      

                    КонецЕсли;

                   

                    Возврат СтруктураПараметров;

                   

КонецФункции

 

Обратим внимание на Ключ "ПараметрЗапуска". О нем поговорим чуть позже.

  1. Обновляем базу.
  2. Заходим в режим предприятия. Для роли из п.2 создаем профиль и группу доступа.

Создаем профиль с ролью из п.2.

 

 

Создаем группу доступа по этому профилю. Добавляем пользователей.

 

 

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

 

 

  1. Заходим в настройку, ставим галочку “открывать по умолчанию”.

 

 

 

  1. Кликаем “Записать и закрыть”. Галочка установлена

 

  1. Перезаходим в базу. Наша форма действительно открывается при начале работы системы. Задача решена!

 

В п.4. мы упоминали про ключ “ПараметрЗапуска”. Так вот если базу запустить с этим параметром запуска, то галочку из п. 8 ставить необязательно.

ВАЖНО! На мобильном клиенте данная особенность может не работать.

 

 

 

Часть 2. Настройка открытия нетиповой ВНЕШНЕЙ обработки при начале работы системы

Часто бывает, что необходимо быстрое изменение обработки, а штатное обновление базы происходит всего 1-2 раза в неделю.

Немного доработаем нашу обработку, чтобы при начале работы системы открывалась внешняя обработка.

  1. В форму “Форма” обработки Расш_НачальнаяОбработка добавим реквизит

ИмяОбработкиСлужебное. Тип - строка неограниченной длины.

 

 

  1. В модуль формы добавим следующий код: 

Не забываем добавить обработчики событий ПриСозданииНаСервере, ПриОткрытии и ПередЗакрытием.

#Область ОбработчикиСобытийФормы



&НаКлиенте

Процедура ПриОткрытии(Отказ)

              

               ЭтотОбъект.Закрыть();

              

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



&НаКлиенте

Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)

              

               Если Не Отказ Тогда

                              ОткрытьНовуюФорму();

               КонецЕсли;

              

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



&НаСервере

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

              

               ИмяОбработки = РеквизитФормыВЗначение("Объект").Метаданные().Имя;

               ПостФикс = "ВО";

               Запрос = Новый Запрос;

               Запрос.Текст =

               "ВЫБРАТЬ ПЕРВЫЕ 1

               |             ДопОтчетыИОбработки.Ссылка КАК Ссылка

               |ИЗ

               |             Справочник.ДополнительныеОтчетыИОбработки КАК ДопОтчетыИОбработки

               |ГДЕ

               |             ДопОтчетыИОбработки.ИмяОбъекта = &ИмяОбработки

               |             И ДопОтчетыИОбработки.Публикация =

               |               ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется)";

              

               Запрос.УстановитьПараметр("ИмяОбработки", СтрШаблон("%1_%2", ИмяОбработки, Постфикс));

               Результат = Запрос.Выполнить();

               Если Результат.Пустой() Тогда

                              Отказ = Истина;

               Иначе

                              Выборка = Результат.Выбрать();

                              Выборка.Следующий();

                              ИмяОбработкиСлужебное =

                              ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(Выборка.Ссылка);

               КонецЕсли;

              

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



#КонецОбласти



#Область СлужебныеПроцедурыИФункции



&НаКлиенте

Процедура ОткрытьНовуюФорму()

              

ИмяФормы = СтрШаблон("ВнешняяОбработка.%1.Форма.Форма", ИмяОбработкиСлужебное);    

ОткрытьФорму(ИмяФормы);

              

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



#КонецОбласти

 

Как нетрудно догадаться, здесь мы открываем форму внешней обработки из справочника доп. отчетов и обработок через форму нашей обработки Расш_НачальнаяОбработка.

ВАЖНО!

Во избежание лишнего “хардкода” для внешней обработки должны выполняться 3 условия:

  1. Имя объекта в справочнике доп. отчетов и обработок должно совпадать с именем обработки конфигурации, из которой она открывается + постфикс (значение указано в коде).
    В качестве постфикса можно использовать любое строковое значение быть пробелов и спецсимволов.
  2. Настройка публикации – используется

  1. Наименование формы внешней обработки должно быть “Форма”

 

  1. С соблюдением условий выше создаем внешнюю обработку и сохраняем ее в справочник доп. отчетов и обработок.

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

Резюме

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

Достоинства:

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

Недостатки:

  1. В расширении в общем модуле используются тип вызова вызывать вместо (изменение и контроль).

На этом все :)

1С:ERP 2.5 нетиповые формы начало работы системы БСП внешние обработки

См. также

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

1800 руб.

21.11.2024    6356    33    23    

35

Работа с интерфейсом Анализ учета Мониторинг Платформа 1С v8.3 8.3.14 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Платные (руб)

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

27.03.2025    1212    3    developer118    7    

8

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

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

6000 руб.

14.01.2016    56548    19    25    

45

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    64727    45    60    

83

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    20566    30    6    

46

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    28938    mrXoxot    44    

133

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    9834    kalyaka    6    

34
Оставьте свое сообщение