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

Содержание:

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

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

   

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

 

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


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

 

&НаКлиенте

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

 

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

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

 

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

 

&НаСервере

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

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

 

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

 

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


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

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

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

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

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

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

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

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

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

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

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

 

&НаКлиенте

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

 

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

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

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

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

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

           

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

 

&НаСервере

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

 

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

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

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

 

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

 

&НаКлиенте

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

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

                        Возврат;

            КонецЕсли;

 

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

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

 

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

 

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

 

&НаСервере

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

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


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

 

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

 

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


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


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

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


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

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

Наши проекты

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

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

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

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

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

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

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

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

Управление отношениями с клиентами (CRM) ...

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

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

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

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

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

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

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО «Союз Три» (Кондитерский дом Renardi)
ООО «Союз Три»

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

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

Бухгалтерский учет
- Банк и касса
- Расчеты с контрагентами
Налоговый ...

Автоматизация кадрового учета на базе ПП "1С:Зарплата и управление персоналом" в ТД НМК
ООО «Торговый дом Нальчикский молочный комбинат»

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

Внедренное типовое решение:
1С:Зарплата и управление персоналом

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

Автоматизация учета на базе ПП "1С:Комплексная автоматизация 8" в ЗАО "Крюгер-Гранд"
ЗАО «Крюгер-Гранд»

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

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

- Создание интерфейсов и наборов прав пользователей;
- Отражению временных ...

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

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

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

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

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

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

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и И...

Филиал ГлавУпДК при МИД России фирма «Инпредкадры»
Филиал ГлавУпДК при МИД России фирма «Инпредкадры»

Отрасль:
Государственное управление

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

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

ОАО «Интер РАО – Электрогенерация»
ОАО «Интер РАО – Электрогенерация»

Отрасль:
Электрогенерация

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

Для работы 2500 пользователей в 9 часовых поясах организована территориально-...

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

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

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

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