Индикация прогресса выполнения фонового задания на управляемой форме внешней обработки

28.04.23

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

Внешняя обработка с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП >= 2.3 без изменения конфигурации и встраивания обработки в "Дополнительные отчеты и обработки".

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
ИндикацияУФФайловыйВариант.epf
.epf 8,41Kb
63 1 850 руб. Купить
ИндикацияУФКлиентСерверныйВариант.epf
.epf 8,92Kb
81 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

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

Оформить подписку и скачать решение со скидкой

Развитие функциональности БСП поражает, то что раньше приходилось реализовывать через "костыли", теперь можно сделать парой строк кода, используя штатные механизмы БСП. Данная внешняя обработка использует пару процедур общих модулей "Длительные операции", входящих в состав БСП.

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

Отличие данной обработки от других в том, что максимально упрощен код, использующий механизмы БСП для индикации процесса выполнения длительного процесса, и это все реализовано на внешней обработке, которую не нужно встраивать в справочник "Дополнительные отчеты и обработки". Отладку можно производить прям в самом теле обработки, предварительно прописав параметр "РежимОтладки" (раздел "Отладка длительных операций").

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

и получения результатов выполнения фонового задания на клиент

Код модуля обработки

 

 

&НаСервере

//здесь имитация длительной операции на сервере
Процедура ВыполнитьПримерНаСервере(СтруктураПараметров, АдресРезультата) Экспорт

    //проверим структуру входящих параметров (задаются на форме)

    Если ТипЗНЧ(СтруктураПараметров) = Тип("Структура") 
            И НЕ ЗначениеЗаполнено(СтруктураПараметров.ТекущийПользователь) Тогда
        Возврат;
    КонецЕсли;
    
    ТекущийПользователь = СтруктураПараметров.ТекущийПользователь;
    КоличествоИтераций   = 0;
    МассивИтераций         = Новый Массив;
    
    //формируем возвращаемую структуру на клиент

    СтруктураВозврата = Новый Структура("ТекущийПользователь, ВремяНачала, ВремяОкончания, КоличествоИтераций, МассивИтераций");
    СтруктураВозврата.Вставить("ТекущийПользователь", "Тек. пользователь: "+ ТекущийПользователь);
    СтруктураВозврата.Вставить("ВремяНачала",          "Время начала: "+ ТекущаяДата());
    

    //имитируем длительную операцию 100 сек - 100%
    ВремяЗавершения = ТекущаяДата() + 100; //выполняем 100 сек
    Пока ТекущаяДата() < ВремяЗавершения Цикл
        Процент = 100 - (ВремяЗавершения - ТекущаяДата());
        Если НЕ (Процент % 10) И Процент Тогда
            ДлительныеОперации.СообщитьПрогресс(Процент, "Обработано: "+Строка(КоличествоИтераций));
            КоличествоИтераций=КоличествоИтераций+1;
            МассивИтераций.Добавить(Строка(КоличествоИтераций)+ ". " + ТекущаяДата());
        КонецЕсли;
    КонецЦикла;
    
    СтруктураВозврата.Вставить("КоличествоИтераций",    "Количество итераций: "+КоличествоИтераций);
    СтруктураВозврата.Вставить("ВремяОкончания",         "Время окончания: "+ ТекущаяДата());
    СтруктураВозврата.Вставить("МассивИтераций",        МассивИтераций);
    

    //помещаем в ВХ данные для клиента
    ПоместитьВоВременноеХранилище(СтруктураВозврата, АдресРезультата);

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


 

 

создаем форму обработки, в модуль формы помещаем

 


 

//здесь понадобится для примера заполнить текущего пользователя,

// параметры естественно могут быть другими, все что можно поместить в структуру

&НаКлиенте
Процедура КомандаПуск(Команда)
        
    ПараметрыЗапуска          = Новый Структура("ТекущийПользователь");
    ПараметрыЗапуска.Вставить("ТекущийПользователь",ПолучитьТекущийПользователь());
    
    СтруктураФоновогоЗадания = ВыполнитьФоновоеЗаданиеНаСервере(ПараметрыЗапуска, УникальныйИдентификатор);
    
    ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
    ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
    // указываем интервал обновления состояния в секундах, если не указать, 
    // то интервал будет увеличиваться при каждой итерации в 1.4 раза.
    ПараметрыОжидания.Интервал = 10;
    
    ДлительныеОперацииКлиент.ОжидатьЗавершение(СтруктураФоновогоЗадания, Новый ОписаниеОповещения("ОбработатьДанные", ЭтотОбъект), ПараметрыОжидания);
        
КонецПроцедуры

&НаСервере
Функция ВыполнитьФоновоеЗаданиеНаСервере(ПараметрыЗапуска, УникальныйИдентификатор)

    НаименованиеЗадания = НСтр("ru = 'Фоновое задание длительной тестовой операции");
    
    ВыполняемыйМетод = "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки";
    
    ПараметрыЗадания = Новый Структура;
    ПараметрыЗадания.Вставить("ИмяОбработки", РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла);
    ПараметрыЗадания.Вставить("ИмяМетода", "ВыполнитьПримерНаСервере");
    ПараметрыЗадания.Вставить("ПараметрыВыполнения", ПараметрыЗапуска);
    ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина);
    ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка",Неопределено);
    
    ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
    ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания;
    ПараметрыВыполнения.ЗапуститьВФоне = Истина;
    ПараметрыВыполнения.Вставить("ИдентификаторФормы", УникальныйИдентификатор); 
    
    СтруктураФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗадания, ПараметрыВыполнения);
    
    Возврат СтруктураФоновогоЗадания;
    
КонецФункции



// здесь также понадобится обработать возвращаемый массив ЗаполнитьМассивИтераций(Данные.МассивИтераций), 
// если например, нужно вывести какой-нибудь список обработанных документов, можно закомментить

&НаКлиенте
Процедура ОбработатьДанные(Результат, ДополнительныеПараметры) Экспорт
    
    Если Результат = Неопределено Тогда
        Возврат;
    ИначеЕсли Результат.Статус = "Ошибка" Тогда
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Результат.ПодробноеПредставлениеОшибки);
    ИначеЕсли Результат.Статус = "Выполнено" Тогда
        // обрабатываем результат
        Данные = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
        Если ТипЗнч(Данные) = Тип("Структура") Тогда
            Сообщить(Данные.ТекущийПользователь);
            Сообщить(Данные.ВремяНачала);
            Сообщить(Данные.КоличествоИтераций);
            Сообщить(Данные.ВремяОкончания);
            ЗаполнитьМассивИтераций(Данные.МассивИтераций);
        КонецЕсли;
        
    КонецЕсли;

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

 

 

UPD: По наработкам данной статьи добавлена возможность запуска обработки в клиент-серверном варианте.

Длительная операция прогресс отладка дополнительная обработка индикация процесса фоновое задание отслеживание статуса выполнения индикатор управляемые формы БСП ВнешняяОбработка ДлительныеОперации ФоновыеЗадания

См. также

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

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

16800 руб.

27.03.2025    4055    12    11    

15

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

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

1800 руб.

21.11.2024    7501    37    23    

41

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

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

6000 руб.

14.01.2016    57026    19    25    

45

Работа с интерфейсом 1С v8.3 Платные (руб)

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

6000 руб.

18.01.2022    11002    2    2    

7

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

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

2400 руб.

29.06.2020    20935    30    6    

46

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

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

20.08.2024    32262    mrXoxot    44    

134

Работа с интерфейсом 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    20017    1260    elcoan    53    

128
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 27.12.19 09:26 Сейчас в теме
В общих модулях итак код выполнения в фоне максимально упрощен и примеры запуска можно найти в конфигах.

Так что очередная попытка халтуры в стиле сухариков, когда крошки хлеба крошат в пакетик и вопят, что это крута.

Да и перестаньте обманывать надуманными отличиями от сотен подобных костылей, кроме "Пожалуйста, подождите..." и индикатора времени в сообщение нечего вывести, т.к. в 90% случаев вычислить результирующую коллекцию в фоне до старта задания невозможно.
1giga; fokin; Evg-Lylyk; dime2; user1274438; +5 5 Ответить
2. 1sig 255 27.12.19 09:29 Сейчас в теме
(1) во внешней обработке, чтобы все это взлетело без встраивания в "Дополнительные внешние отчеты и обработки"?
baranchikov; +1 Ответить
4. webester 26 27.12.19 10:24 Сейчас в теме
Не показывать код жлобство конечно) Но спасибо и на том, что есть.
baranchikov; +1 Ответить
5. 1sig 255 27.12.19 11:03 Сейчас в теме
(4) с замечанием согласен, принято, сам жлобство не люблю, чуть позже по примеру аналогичных публикаций будет оформлен и код обязательно, если что ловите на слове)
baranchikov; umy; user1804494; CodeNull; +4 Ответить
3. VmvLer 27.12.19 09:30 Сейчас в теме
Муся, не нервируй меня
(с)классика к/ф
6. Lancelot-2M 116 29.12.19 03:05 Сейчас в теме
А что с замерами производительности? Как оно работает с индикацией и без на конкретных таких рабочих выборках (ну хотя бы за 100 000 неважно чего)?
8. 1sig 255 29.12.19 09:22 Сейчас в теме
(6) хороший вопрос, нагрузочное тестирование не проводилось, по времени ограничений не было, пользователь просто хотел видеть - на каком этапе идет обработка пакетов документов. Пример длительной операции в данном задании - только пример, он не хорош с точки зрения холостой загрузки проца, в 1С к сожалению так и не появился встроенный метод Delay, поэтому проц грузится большую часть времени впустую в данном условии цикла "ТекущаяДата() < ВремяЗавершения"
15. serverstar 70 14.09.21 18:20 Сейчас в теме
(8) (почти) бесконечный цикл иногда тоже бывает полезен 🙃
7. webester 26 29.12.19 04:29 Сейчас в теме
(6)Я так понимаю,единственное, что влияет на производительность это вот эта строчка
ДлительныеОперации.СообщитьПрогресс(Процент, "Обработано: "+Строка(КоличествоИтераций));

В остальном разницы нет. 5 там строк или 55000
baranchikov; maksa2005; +2 Ответить
9. manlak 77 30.12.19 11:52 Сейчас в теме
Класс! Давно искал такую штуку.
10. PowerBoy 3464 09.01.20 07:56 Сейчас в теме
Меня смущает вот эта строка:
ПараметрыЗадания.Вставить("ИмяОбработки", РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла);

Передается путь и имя файла на клиенте, а выполняться серверный код будет на сервере и файл не найдет.
KPAMOP; MaxTolya; maksa2005; +3 Ответить
11. 1sig 255 09.01.20 09:29 Сейчас в теме
(10) для серверной базы верное замечание! но как вариант, расшарить на машине-сервере, где крутится сервер 1С, общедоступную сетевую папку, поместить файл внешней обработки туда и запускать с нее - найдет файл, проверено :)
12. Xershi 1535 13.01.20 21:00 Сейчас в теме
(10) ну код кривой у автора что поделать. Я давно использую в своих наработках такой подход.
Единственный момент в старых бсп 2.3 процент без допила не выводится.
baranchikov; serverstar; +2 Ответить
16. serverstar 70 14.09.21 18:22 Сейчас в теме
30. KPAMOP 32 25.04.25 09:49 Сейчас в теме
(10) Сделал на эту тему доработку тут.
13. maksa2005 374 14.08.20 15:23 Сейчас в теме
Каталог не обнаружен 'C:\Users\litvinov\Desktop\PUBID_1174382-ИндикацияУФ.epf'
{ОбщийМодуль.ДлительныеОперации.Модуль(649)}: Обработка = ВнешниеОбработки.Создать(Параметры.ИмяОбработки, БезопасныйРежим);
{(1)}:ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4797)}: Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(768)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыПроцедуры);
{ОбщийМодуль.ДлительныеОперации.Модуль(759)}: ВыполнитьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

по причине:
Ошибка подключения внешних метаданных
по причине:
Каталог не обнаружен 'C:\Users\litvinov\Desktop\PUBID_1174382-ИндикацияУФ.epf'
14. 1sig 255 14.08.20 18:54 Сейчас в теме
(13)
запускайте обработку с общедоступной сетевой папки,
PowerBoy в (10) сообщении написал, в чем причина такой ошибки.
17. zels 175 13.06.22 08:49 Сейчас в теме
Как вывести "палку" индикатора?
18. triviumfan 102 18.08.22 11:41 Сейчас в теме
Нерабочая, как пример не подойдёт.
19. 1sig 255 18.08.22 13:19 Сейчас в теме
(18) обработка рабочая, на какой конфигурации запускаете?
20. triviumfan 102 18.08.22 14:26 Сейчас в теме
(19) Нету передачи обработки на сервер, это решение лишь для файловой базы, которая по сути нигде не используется.
Пришлось самому пилить.
21. 1sig 255 18.08.22 17:13 Сейчас в теме
(20) добавлена возможность запуска обработки в клиент-серверном варианте
22. Dakaskas1 20.12.22 08:37 Сейчас в теме
Единственный рабочий пример, который реально работает без подключения к доп обработкам и работает отладка.
23. gosizo 38 26.04.23 16:49 Сейчас в теме
(22) Согласен полностью, столько стартмани потратил скачивая не работающие обработки , а эта работает. Низкий поклон автору
24. user756806 27.04.23 13:08 Сейчас в теме
Если СтруктураПараметров = Тип("Структура")

Чел, не делай так больше никогда!
фоновые задания на сервере крайне сложно отладчиком ловить!
Я понимаю, что надо смотреть что копируешь... но блин... подстава!
25. 1sig 255 28.04.23 09:31 Сейчас в теме
(24) подстава :) спасибо за найденную очепятку, исправлено
26. gosizo 38 03.05.23 16:58 Сейчас в теме
Все хорошо, только если обработку прикрепить в справочнике дополнительные отчеты и обработки, то вываливается ошибка
https://ibb.co/LNDTyGP

Как можно исправить?
29. 1sig 255 04.05.23 10:32 Сейчас в теме
(26)
если обработку прикрепить в справочнике дополнительные отчеты и обработки

Добрый день, обработка изначально разрабатывалась на внешний запуск, из файла, по ходу без изменения кода не получится ее сделать встроенной доп. обработкой
27. gosizo 38 03.05.23 17:00 Сейчас в теме
обработку прописывал:
Функция СведенияОВнешнейОбработке() Экспорт

ИмяОтчета = ЭтотОбъект.Метаданные().Имя;
Синоним = ЭтотОбъект.Метаданные().Синоним + " " + ЭтотОбъект.Метаданные().Комментарий;
Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОтчета);
РегистрационныеДанные = Новый Структура();
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
РегистрационныеДанные.Вставить("Наименование", Синоним);
РегистрационныеДанные.Вставить("Версия", "1.0");
РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
РегистрационныеДанные.Вставить("Информация", "Обработка "+Синоним);
//РегистрационныеДанные.Вставить("ВерсияБСП", "3.1.6.437");

ТаблицаКоманд = ПолучитьТаблицуКоманд();

// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, Синоним, "1" , "ОткрытиеФормы", Истина, );

// Сохраним таблицу команд в параметры регистрации обработки
РегистрационныеДанные.Вставить("Команды", ТаблицаКоманд);

Возврат РегистрационныеДанные;

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

Функция ПолучитьТаблицуКоманд()

// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;

// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));

// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));

// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ОткрытиеФормы", ПоказыватьОповещение = Ложь, Модификатор)

// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
28. gosizo 38 04.05.23 10:28 Сейчас в теме
31. alexcw@list.ru 26.05.25 01:18 Сейчас в теме
Добрейшего времени суток!
А как правильно при запуске в фоне процедуры из внешней обработки без добавления в справочник получить табличную часть этой обработки
Сами вызовы фактически один в один
ПараметрыЗадания = Новый Структура;
	ПараметрыЗадания.Вставить("ИмяОбработки", РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла);
	ПараметрыЗадания.Вставить("ИмяМетода", "ПроверкаНаличияВходящихДокументов");
	ПараметрыЗадания.Вставить("ПараметрыВыполнения", ПараметрыЗапуска);
	ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина);
	ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка", Неопределено);
	
	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания;
	ПараметрыВыполнения.ЗапуститьВФоне = Истина;
	ПараметрыВыполнения.Вставить("ИдентификаторФормы", УникальныйИдентификатор); 
	
	СтруктураФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗадания, ПараметрыВыполнения);
Показать


Процедура "ПроверкаНаличияВходящихДокументов" должна обработать табличную часть обработки, и проверить запросом наличие определенных данных в БД

&НаСервере
Процедура ПроверкаНаличияВходящихДокументов(СтруктураПараметров, АдресРезультата) Экспорт
	
	СтруктураВозврата = Новый Структура("ВремяНачала, ВремяОкончания, КоличествоСтрок");
	СтруктураВозврата.Вставить("ВремяНачала", "Время начала: " + ТекущаяДата());
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	|	ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
	|	ПоступлениеТоваровУслуг.Номер КАК Номер,
	|	ПоступлениеТоваровУслуг.Дата КАК Дата,
	|	ПоступлениеТоваровУслуг.ПометкаУдаления КАК ПометкаУдаления,
	|	ПоступлениеТоваровУслуг.Склад КАК Склад,
	|	ПоступлениеТоваровУслуг.Контрагент КАК Контрагент,
	|	ПоступлениеТоваровУслугТовары.НомерСтроки КАК НомерСтроки,
	|	ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
	|	ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения
	|ИЗ
	|	Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
	|		ПО (ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка)
	|ГДЕ
	|	ПоступлениеТоваровУслуг.ПометкаУдаления = ЛОЖЬ
	|	И ПоступлениеТоваровУслуг.НомерВходящегоДокумента = &НомерВходящегоДокумента
	|	И ПоступлениеТоваровУслугТовары.Номенклатура.Артикул = &Артикул"); 
	
	ВсегоСтрок = ЭтотОбъект.Поступление.Количество(); 
	ОбработаноСтрок = 0;
	
	ТабЧасть = ЭтотОбъект.Поступление;  // Получаем объект табличной части «Поступление»  
	Для Каждого строка из ТабЧасть Цикл
			
		Запрос.УстановитьПараметр("НомерВходящегоДокумента", строка.Входящийномер);
		Запрос.УстановитьПараметр("Артикул", строка.Артикул);
		Результат = Запрос.Выполнить().Выбрать();
		Если Результат.Следующий() Тогда
			строка.Загружен = Истина;
			строка.ДокументПоступлениеТоваровУслуг = Результат.Ссылка;   
		КонецЕсли; 
		ОбработаноСтрок = ОбработаноСтрок + 1; 
		ПроцентВыполнения = (ОбработаноСтрок/ВсегоСтрок)*100;
		ПроцентВыполнения = Окр(ПроцентВыполнения,0);
		
		ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, "Обработано: "+ Строка(ОбработаноСтрок));

	КонецЦикла;  
	
	СтруктураВозврата.Вставить("КоличествоСтрок",	"Количество строк: " + ВсегоСтрок);
	СтруктураВозврата.Вставить("ВремяОкончания", 	"Время окончания: "+ ТекущаяДата());
	
	ПоместитьВоВременноеХранилище(СтруктураВозврата, АдресРезультата);
	
КонецПроцедуры
Показать


в итоге ЭтотОбъект.Поступление всегда пуст, хотя в интерфейсе там данные предварительно загружены и видны
и вообще, под отладкой все реквизиты формы пустые. Надо передавать в параметры вызова как РеквизитыФормыВЗначние?
Оставьте свое сообщение