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

Содержание:

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

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

   

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

 

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


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

 

&НаКлиенте

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

 

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

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

 

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

 

&НаСервере

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

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

 

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

 

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


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

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

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

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

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

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

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

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

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

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

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

 

&НаКлиенте

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

 

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

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

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

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

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

           

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

 

&НаСервере

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

 

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

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

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

 

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

 

&НаКлиенте

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

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

                        Возврат;

            КонецЕсли;

 

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

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

 

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

 

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

 

&НаСервере

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

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


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

 

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

 

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


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


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

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


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

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

Наши проекты

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

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

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

- Финансово-бухгалтерский блок
- Казначейство ...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

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

- Разработка подсистемы оперативного учета транзакций...

АО «Вертолетная сервисная компания»
АО «Вертолетная сервисная компания»

Отрасль:
МТО эксплуатации вертолетной техники

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

- Консультации по сложным вопросам налогового и бухгалтерского учета;
- Ра...

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

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

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

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

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

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

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

Апгрейд 1С:Бухгалтерия 8 ПРОФ (USB) до версии 1С:Бухгалтерия 8 КОРП (USB)
ООО «Ява Строй»

Отрасль:
Строительство

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

- Создание чистых конфигураций. Внесение изменений в БД ЗУП и новая расчетна...

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

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

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

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

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

Внедрение 1С:Управление торговлей
ООО «Амперсенд»

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

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

- Оформление заказов поставщикам;
- Управление отношениями с поставщиками;...

ООО "ОМЗ"
ООО "ОМЗ"

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

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

Автоматизация бизнес-процессов...

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

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

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

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

Внедрение 1С:Управление торговлей в оптово-розничной компании «Много Плитки»
ООО «Много Плитки»

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

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

Закупки (снабжение) и управление отношениями с поставщиками:
- Оформление ...

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

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

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

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