:: Вопросы по 1С
Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Есть длительные процессы.
Это самописные обработки.
Как бы вклинить туда вывод сообщений.

Делал такое через фоновые задания.
Не нравятся они мне (возможно не умею готовить)
Но сложно отлаживать)))
Есть какие то варианты?

Есть возможность, как при обновлении самой 1С, сделать что бы полоска с процентами ползла?
Ну и заодно сообщать, какой процесс идет.

Одна задача сейчас разбита на три, что бы хоть видели что сейчас делается.
Но... это 3 кнопки жать буху... Не сложно, но не логично)

Возможно, это мне самому нужнее. Бухи то быстро привыкают)
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Наверное спросил глупость.
Для того и придумали асинхронные операции.
Либо молча все выводить, либо в фоне.
В фоне и еще плюс, УИ не блокируется.
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Для БСП или БП30 - ДлительныеОперации.СообщитьПрогресс()
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
pasha_usue
Для БСП или БП30 - ДлительныеОперации.СообщитьПрогресс()
Ага. Уже пример накидал на основе БСП последнего.
Работает. Но разбираюсь.... как то там много...
А у меня с 1й формы, запускается 5-7 разных задач. И все длинные.
Вот складываю пазл... с минимизацией кода.
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

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

Хотелось бы критики)))
ДиспетчерЗадач(); - это моя фишка, что запускать дальше.
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Незадача вышла.
У меня в коде, есть создание в обработке, в ТЧ записей.
Из менеджера объекта, объект не доступен. Передать в параметре, тоже не выходит. ФЗ не допускают этого.
Выкрутился, создал аналогичный справочник.
А можно все же, из менеджера добраться до ТЧ обработки?
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
А можно все же, из менеджера добраться до ТЧ обработки?
Чёт вы пяткой ухо чешете. Я даже понять не могу, какого эффекта вы хотите добиться.

Напишу, на какие мысли меня натолкнуло. Выгрузите таблицу формы в таблицузначений методом Выгрузить(), таблицу значений запихайте в структуру параметров, а структуру уже передавайте куда надо.
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
pasha_usue
Чёт вы пяткой ухо чешете. Я даже понять не могу, какого эффекта вы хотите добиться.
Расскажу что делаем. Может подход не верный.
[attachment 33668 ]
Есть такая форма.
Суть ее. Из нашей БД, не 1С, загружаются доки.
В документах есть контрагенты и номенклатура. Которых может не быть в 1С.
И для этого, по кнопке проверить, все проверяется.
И в ТЧ - (табличка под кнопками) выводится что не сошлось.
Без фона, все делается из методов самой формы.
Что бы работало в фоне, вариант, методы расположить либо в общих модулях, либо в модуле менеджера обработки, в которой все выполняется.
Тупо перенеся с формы, в модуль менеджера, и уперся, что нет доступа к ТЧ.
Вот примерно так...
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Контекст формы доступен только в модуле формы. Конкретно доступны ЭтаФорма (и её свойства и методы без упоминания ЭтаФорма). Если вызывается любая процедура общего модуля, или модуля менеджера объекта, или модуля объекта, контекст теряется. И это правильно, с точки зрения ООП.
Значит, при вызове процедуры модуля менеджера необходимо передать существенные параметры в эту процедуру (без разницы, синхронный вызов, или через фоновое задание).

Отсюда, совет приведённый выше вполне в контексте.

Примерно так:
МояТЗ = ЭтаФорма.ТЧ.Выгрузить(); // Или ЭтаФорма.Объект.ТЧ.Выгрузить();
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("ТЧ", МояТЗ);
СтруктураПараметров.Вставить("КакойТоНепонятныйФлаг", Истина);
ДлительнаяОперация = ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, ФоноваяПроцедура, СтруктураПараметров);
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Хм, батенька, вы у нас, оказывается, сосед. По другую сторону МНПЗ. Похоже наш служебный автобус возит нас где-то рядышком...


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
pasha_usue
МояТЗ = ЭтаФорма.ТЧ.Выгрузить(); // Или ЭтаФорма.Объект.ТЧ.Выгрузить();
Понял.
Теперь не пойму, а как эту МояТЗ вытащить из фона?
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
ssa
Хм, батенька, вы у нас, оказывается, сосед. По другую сторону МНПЗ. Похоже наш служебный автобус возит нас где-то рядышком...
Я между садоводом и МНПЗ)))
Если это по другую сторону, то да)
Автобус не знаю.
Я как то самостоятельно все больше)))
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Аспид
Я между садоводом и МНПЗ)))
Между? Так мы еще более близкие соседи!? Я в здании между МНПЗ, Садоводом и МКАД. А ездим каждый день по улице Верхние поля, проходящей мимо нескольких зданий между Садоводом и МНПЗ.
Цитата:
Автобус не знаю.
Ну, или ходить через Садовод. А нас автобус служебный возит.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Не пойму что за здание.
Но явно мы рядом)
У меня адрес Верхние поля , 54
АБЗ. Трубы торчат. Наверняка их видишь
У меня, если смотреть на МКАД, слева садовод, справа МНПЗ, а прямо МКАД.
Где ты там приютился?))))
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
А, так это твои трубы видны из нашей бухии...
Здание между ЖД, МКАД, Садоводом и МНПЗ, стоящее прямо рядом с МКАД, ЖД, и Садоводом. Между нами один из углов Садовода.
Тут


------------------
Лень - это неосознанная мудрость.




Исправлено 1 раз(а). Последнее : ssa, 26.08.20 20:55
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Теперь ясно что за здание у тебя. Кажется к тебе, легче со МКАДа.
Каждый день мимо проезжаю домой

Трубы вроде не дымят?)))
У нас за экологией... строго)))
Хотя я далек от этого...
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
pasha_usue
МояТЗ = ЭтаФорма.ТЧ.Выгрузить(); // Или ЭтаФорма.Объект.ТЧ.Выгрузить();
Понял.
Теперь не пойму, а как эту МояТЗ вытащить из фона?

По идее, вот так:
ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
В адрес должно поместиться то, что в Возврат функции. Вроде не надо лишних движений. Хотя могу и ошибаться.
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Спасибо Пашь. Уж я тебе задолжал)))
Но я сделал... возможно через зад)))
Сделал справочник "проверка", и через него все делаю, поимел и некий профит от этого...
Ratings: 0 negative/0 positive
Re: Длительные процессы 8.3. Выдать сообщения.
Havric

Сообщений: 139
Дата регистрации: 29.10.2020
тч не сериализуется напрямую
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 3 (Гостей: 3)

© 2000-2024 Fox Club 
Яндекс.Метрика