Имя: Пароль:
1C
 
Состояние процесса &НаСервере
, , ,
0 Mikhail Volkov
 
04.05.16
19:31
Переписываю свои старые 8.2 обработки на УФ. В процедурах &НаКлиенте нет проблем в циклах с:

    Состояние("Заполнение списка GUID: " + СписокGUID.Количество());
    ОбработкаПрерыванияПользователя();

А вот если подобный процесс выполняется &НаСервере, например, выборка запросом, то проблематично... Что посоветуете?
1 PR пять
 
04.05.16
19:43
Все сложно.
1. Ничего
2. Отдавать на сервер порциями
3. Выполнять в фоновом задании
2 zak555
 
04.05.16
19:54
3 Aleksey
 
04.05.16
19:58
(2) это п.2 Отдавать на сервер порциями
4 zak555
 
04.05.16
20:01
5 Aleksey
 
04.05.16
20:04
(4) а это п.3  Выполнять в фоновом задании
6 zak555
 
04.05.16
20:04
(5) на п.1 не могу найти ссылки
7 ifso
 
04.05.16
23:21
(6) попробуй съЕСТЬNULL )
8 Mikhail Volkov
 
05.05.16
06:04
(1) Спс, в моем случае 1-й пункт более всего подходит. Остальные для действительно "Длительные операции".
9 zak555
 
05.05.16
08:03
(8) очень зря
10 DrZombi
 
гуру
05.05.16
08:37
(0) Советую успокоиться и отстать от сообщить, для наглядности пользователя.
Как вариант начать писать выполнения своих обработок через фоновое задание :)
11 Mikhail Volkov
 
06.05.16
06:01
(10) Считаю "правилом хорошего тона" показывать пользователю, что процесс идет (желательно дать возможность его прервать). Иногда у самого возникает недоумение, например, с "Дополнительные процедуры обработки данных" при обновлении (ситуация подробно описана в Куда дели "Описание изменений программы" в КА2.0/ERP?) - "колесико" крутится, вроде процесс идет, а на самом деле ничего не происходит!?
Фоновое задание - не для моих процедур, слишком просты для них. Отдавать на сервер порциями - тоже. Одна только Функция ИнициализацияОбработкиСервер() сравнима по сложности с моей, выполняемой &НаСервере. Она выполняет выборку нужного справочника, все его ссылки помещает в хранилище. Мне нужно тоже почти самое: все его GUID-ы поместить в список значений. Стоит ли ради этого огород городить!? Обошелся выводом Состояние() перед вызовом моей процедуры &НаСервере.
12 Провинциальный 1сник
 
06.05.16
06:32
(10) Фоновое само по себе не решает проблему оповещения. Нужно еще изобрести костыль, чтобы фоновое периодически информировало клиента о реальном статусе выполнения. Крутящаяся анимация "выполняется обработка" - не замена реальному прогресс-бару.
13 zak555
 
06.05.16
08:03
(12) в БСП посмотри
14 Провинциальный 1сник
 
06.05.16
08:26
(13) Ну, а что такое БСП, как не коллекция костылей на любой вкус? То, что должно быть реализовано на уровне платформы, пытаются реализовать в виде некого "подслоя" конфигурации, получается плохо - ибо в 1с нет инкапсуляции, наследования и полиморфизма - спагетти-код из десятков общих модулей. Да еще в нагрузочку каждые полгода перетасовывают функции и процедуры из одного модуля в другой. Безблагодатность.
15 ifso
 
06.05.16
13:55
(14) "страховка" на случай кризиса жанра у нормотворцев, не?
16 PR пять
 
06.05.16
13:56
(12) В БСП уже изобрели
17 PR пять
 
06.05.16
13:57
(14) Вот с чем соглашусь, так это с тем, что да, хотелось бы в платформе
18 Мыш
 
06.05.16
13:59
(16) Как называется?
19 rozer76
 
06.05.16
14:05
20 Карупян
 
06.05.16
14:06
в фоновом нельзя выводить прогресс бар.
Нужно что-то в базу писать. Но только куда?
21 Карупян
 
06.05.16
14:06
(14) не костыли, а фреймворк )))
22 ДенисЧ
 
06.05.16
14:08
(21) Не фреймворк, а система костылей и подпорок
23 Карупян
 
06.05.16
14:09
БСП = Библиотека свистелок и перделок
24 rozer76
 
06.05.16
14:09
(20) можно оповещать сообщениями пользователя и обработкой ожидания считывать... ну конечно только текстовым представлением ограничивается инфо
25 Карупян
 
06.05.16
14:10
(24) И что это работает? Можно код?
26 ДенисЧ
 
06.05.16
14:12
(25) Открой консользаданий из портативных инструментов разработчика
27 rozer76
 
06.05.16
14:13
(25) поищи на инфостарте по "индикация фонового задания"
28 rozer76
 
06.05.16
14:15
(27) + без БСП делается за 5сек, хотя БСП мне нравиться больше ибо "крутящееся колесико" вычисляет процент за тебя
29 rozer76
 
06.05.16
14:17
30 Рэйв
 
06.05.16
14:21
(0)да выводи ты сообщение раз в 200-300 итераций и не мучайся:-)
31 Drac0
 
06.05.16
14:26
(14) Честно, заиб... устанешь все функции БСП пихать в платформу. А если функциональность реализована уже в БСП, то зачем шевелиться платформе? В целом, логично, ИМХО.
32 Провинциальный 1сник
 
06.05.16
14:35
(31) Да не все конечно же. Всякие там ФИО и адресная фигня пусть будет в БСП. А вот оповещение сервера клиентом следовало бы в платформе реализовать.
33 Mikhail Volkov
 
06.05.16
17:28
(32) Печально, думал это временные недоделки 1С. Оказалось для УФ это в принципе пока невозможно. Тему можно закрывать.

Попутно вопросик: Сделал небольшую доработку "Поиск и удаление дублей", сохранил как внешнюю, в ее модуль добавил ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ - вроде стандартные, не 1-й раз их использую, в предыдущих внешних обработках нормально работают. Эту обработку добавил в "Дополнительные отчеты и обработки", указал размещение: Раздел "НСИ и администрирование", Публикация: Используется - вроде все как надо. Но не запускается: откроется на миг (Даже скрин успеваю снять: http://s019.radikal.ru/i628/1605/f6/b555fcef2a65.jpg), и исчезает!? Хотя через Файл/Открыть нормально работает. Может чего упустил при ее регистрации? Как искать?
34 bolobol
 
06.05.16
19:08
Что-то там с Блокировать окно владельца...
35 bolobol
 
06.05.16
19:08
Если окон ни одного не открыто - не открывается.
36 Mikhail Volkov
 
07.05.16
04:26
(34) Нашел:
&НаКлиенте
Процедура ПоказатьМестаИспользования(ДеревоИсточник)
    МассивСсылок = Новый Массив;
    Для Каждого ГруппаДублей Из ДеревоИсточник.ПолучитьЭлементы() Цикл
        Для Каждого СтрокаДерева Из ГруппаДублей.ПолучитьЭлементы() Цикл
            МассивСсылок.Добавить(СтрокаДерева.Ссылка);
        КонецЦикла;
    КонецЦикла;
    
    ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("Отбор", Новый Структура("НаборСсылок", МассивСсылок));
    РежимОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
    ОткрытьФорму("Отчет.МестаИспользованияСсылок.Форма", ПараметрыОтчета, ЭтотОбъект, , , , , РежимОкна);
КонецПроцедуры

БлокироватьОкноВладельца заменил на Независимый - не помогло!? Может где-то еще есть блокировка окна всей обработки?
37 Mikhail Volkov
 
07.05.16
10:36
Спс за подсказку (34), нашел в свойствах формы Использование/РежимОткрытияОкна стояло "Блокировать окно владельца". Сейчас вроде заработало!
Ошибка? Это не ошибка, это системная функция.