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

Содержание:

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

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

   

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

 

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


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

 

&НаКлиенте

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

 

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

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

 

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

 

&НаСервере

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

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

 

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

 

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


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

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

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

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

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

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

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

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

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

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

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

 

&НаКлиенте

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

 

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

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

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

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

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

           

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

 

&НаСервере

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

 

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

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

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

 

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

 

&НаКлиенте

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

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

                        Возврат;

            КонецЕсли;

 

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

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

 

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

 

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

 

&НаСервере

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

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


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

 

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

 

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


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


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

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


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

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

Наши проекты

ООО «Экслтрейд»
ООО «Экслтрейд»

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

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

Оформление заказов поставщикам Оптовая торговля Торговые операции ...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

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

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

ООО "Смена"
ООО "Смена"

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

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

Банк и касса
Расчеты с контрагентами
Торговые операции
Взаиморасчеты с...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

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

Внедрение ПП "1С:Управление небольшой фирмой 8 ПРОФ" в ООО «Шокостайл»
ООО «Шокостайл»

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

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

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Планирование п...

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

Отрасль:
Авиационно-космическая промышленность

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

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование прод...

Автоматизация производственного планирования нефтесервисной компании на базе 1С:ЕРП 2.0
ЗАО «Инвестгеосервис»

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

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

- Блок планирования проектов (процессы объемно-календарного планирования пр...

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

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

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

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

ООО "Эскорт-Центр"
ООО "Эскорт-Центр"

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

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

- Сквозной учет затрат по объектам
- Бухгалтерский учет
- Расчет зарплаты...

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

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

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

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

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

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

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

Финансы, управленческий учет, мониторинг показателей:
- Налоговый учет...

Автоматизация контроля исполнительской дисциплины на базе ПП «1С:Документооборот 8 ПРОФ»
ООО «ФСК Лидер»

Отрасль:
Строительство и девелопмент

Внедренное типовое решение:
1С:Документооборот 8 ПРОФ

- Делопроизводство;
- Учет и хранение документов;
- Учет и контроль исполне...

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

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

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

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