27.07.2025 Константин Маркин 6258
Повышаем качество разработки в системе 1С: вы...

Содержание:

1.     Отчет в управляемой форме в 1С

2.     Шаги по выполнению фоновой процедуры в учетной программе 1С  

   

1.     Отчет в управляемой форме в 1С

 

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


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

 

&НаКлиенте

Процедура Сформировать(Команда)

 

            табДокумент = СформироватьОтчетНаСервере();

            табДокумент.Показать(«Классификация расходов по статьям УУ»);

 

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

 

&НаСервере

Функция СформироватьОтчетНаСервере()

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

 

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

 

2.     Шаги по выполнению фоновой процедуры в учетной программе 1С


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

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

            Во второй строке сохраним Идентификатор чтобы использовать для отмены выполнения фонового задания, передав его в функцию ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторФоновогоЗадания);

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

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

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

            В нашем примере запускает процедуру в фоне функция «НачатьВыполнениеНаСервере». Разберем три строки этой процедуры.

            В первой строке мы получаем структуру «ПараметрыВыполнения», используя функционал БСП. В формирование этой структуры мы передаем УникальныйИдентификатор формы, чтобы платформа знала, в какую форму возвращать результат.

            Во второй строке мы формируем структуру параметров необходимых для выполнения нашей процедуры («ПараметрыПроцедуры»). В нашем примере для выполнения отчета необходимо знать только период, за который нужно сформировать отчет, если бы были дополнительные условия, их также нужно было бы поместить в эту структуру.

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

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

 

&НаКлиенте

Процедура Сформировать(Команда)

 

              ДлительнаяОперация = НачатьВыполнениеНаСервере();

             ЭтаФорма.ИдентификаторЗадания = ДлительнаяОперация.ИдетификаторЗадания;

             ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);

             ОповещениеОЗавершении = Новый ОписаниеОповещения(«ВывестиРезультатыНаФорму», ЭтотОбъект);

             ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);

           

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

 

&НаСервере

Функция НачатьВыполнениеНаСервере()

 

              ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);

              ПараметрыПроцедуры = Новый Структура(«ПериодНачало,ПериодКонец», ЭтаФорма.ПериодНачало, ЭтаФорма.ПериодКонец);

              Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, «Справочники.аи_КлассификацияРасходов.СформироватьОтчет», ПараметрыПроцедуры,ПараметрыВыполнения);

 

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

 

&НаКлиенте

Процедура ВывестиРезультатыНаФорму(Результат, ДополнительныеПараметры) Экспорт

            Если Результат = Неопределено Тогда

                        Возврат;

            КонецЕсли;

 

            табДокумент = ПолучитьИзВременногоХранилища(Результат.АдресХранилища);

            табДокумент.Показать(«Классификация расходов по статьям УУ»);

 

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

 

Саму процедуру, выполняющую наш функционал (в нашем примере формирование табличного документа) необходимо перенести в модуль менеджера, сделав её экспортной и на вход принимающей 2 параметра.

 

&НаСервере

Процедура СформироватьОтчет(ПараметрыПроцедуры, ПараметрыФоновогоЗадания) Экспорт

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


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

 

       ПоместитьВоВременноеХранилище(табДокумент, ПараметрыФоновогоЗадания.АдресРезультата);

 

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


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


Результат выполнения в фоне.png

Результат выполнения в фоне


Специалист компании ООО "Кодерлайн"

Константин Маркин

Наши проекты

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Объемно-календарное планирование производства Автоматизация бизнес-проце...

Оптимизация производительности системы
ЗАО ИД «Комсомольская правда»

Отрасль:
Медиа

Внедренное типовое решение:
1С:Бухгалтерия

- Оптимизация производительности системы, в том числе сервера Postgre. ...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО "ДЕКОР"
ООО «ДЕКОР»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Управление персоналом и кадровый учет (HRM):
- Кадровый учет
- Расчет зарпл...

ООО "ТК "Сытый Дом-НН"
ООО "ТК "Сытый Дом-НН"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Управление торговлей 8

Взаиморасчеты с покупателями
Оптовая торговля
Управление складскими за...

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Управление нашей фирмой 8 ПРОФ

Взаиморасчеты с покупателями
Автоматизация бизнес-процессов...

ПАО «АрселорМиттал Кривой Рог»
ПАО «АрселорМиттал Кривой Рог»

Отрасль:
Металлургическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием для Украины

- Кадровый учет
- Расчет зарплаты
- Регламентированная отчетность
- Уч...

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:

- Совместная работа по внедрению разных решений, в том числе «1С:ERP Управление...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оформление заказов покупателей Управление ...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

ООО “РТИТС”
ООО “РТИТС”

Отрасль:
Транспортные системы

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Блок регламентированного кадрового учета и расчета заработной платы в 1С:ERP;...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение