Для печати нужен интерактивный вход пользователя, в серверном контексте он не используется, поэтому я, для себя, воспользовался консольной утилитой печати, примерный алгоритм настройки печати такой, (для клиент-серверного варианта):
1. Дать пользователю USR1CV8 право локального входа (можно временно, можно, оставить для дальнейших настроек)
2. Войти под пользователем USR1CV8 и установить ему нужный, для печати, принтер
3. Если требуются нестандартные размеры печати (как в моем случае) настроить дополнительные пользовательские размеры печати.
С предварительной подготовкой, все*.
* Найти / скачать / установить понравившуюся утилиту консольной печати (мой пример ниже)
Создать в конфигурации модуль с серверным контекстом, ниже, пример такого модуля ("ПечатьСервер"):
Для печати ВПФ пользователь должен выбрать пункт из меню "Печать", т.е. интерактивно войти...
З.Ы. Спасибо за информацию, но у меня уже есть ВПФ которая всё делает как мне надо, просто время её работы от 2 до 10 минут хотелось бы разрешить пользователю что нибудь делать ещё...
Просто, в приведенном примере интерактивный вход не обязателен (основная цель, отказ от интерактивного входа), а функцию можно вызывать из фонового/регламентного задания (побочный эффект)
З.Ы. При условии существенного прироста быстродействия работа будет оплачена $m. Например - 30 $m.
Для такого рода задачи (регулярное наси чтение ЖР) я бы сделал хранение данных (дубль) в таком виде, чтобы это занимало до нескольких секунд.
И использовал регламентное задание, чтобы синхронизировать (догрузить) данные в "копию".
(21)
Эта задача (с использованием данной ВПФ) решается крайне редко и нерегулярно...
Поэтому считаю, что дублирование информации из журнала регистрации в базу и использование регламентных заданий для этого, ничего не даст кроме увеличения объема хранимой информации и нагрузки на сервер регзаданием...
З.Ы. Можно переписать полностью весь отчет для выполнения его в фоне, но т.к. он (как писалось выше) редко используется, и появился данный вопрос:
МОЖНО ЛИ ЗАПУСТИТЬ ВПФ ФОНОВО???? Из подключаемой (для ВПФ "стандартной" команды) "ПЕЧАТЬ"...
(26)Если в конфигурации есть подсистема БСП Варианты отчетов, то как вариант - можно предложить переделать ВПФ на отчет.
Отчет по умолчанию умеет формироваться в фоновом режиме.
В отчете сделать СКД с внешним набором данных, добавить параметр для указания ссылок.
А далее в модуле объекта в ПриКомпоновкеРезультата формировать печатную форму стандартным образом, не используя СКД, параметры получать из настроек компоновки.
Поверьте - приведенный код "тот тормоз" который меня интересует, остальное: "такая мелочь"...
Так что замер производительности я не буду выкладывать...
Вопрос всё тот же: Как запустить выполнения кода из ВПФ фоново, без формы...
Из стандартной процедуры Печать.
Подзадача за которую вы не взялись - оптимизировать обработку журнала регистрации
(15)Если вам интересна оптимизация формы - сделайте замер производительности, выделите места, которые долго выполняются, выложите замер и код.
Тогда вполне возможно, что что-то получится улучшить.
(1) Глянь сюда: https://infostart.ru/public/274721/ (я когда-то давно рисовал) или в похожую - их достаточно. Может, поможет.
ЗЫ. Хотя нет, сюда не смотри :) Если тебе без своего прогресс-бара, то поищи другой пример. Там все гораздо проще делается. Вот что-то из этой серии: https://infostart.ru/1c/articles/1352398/
З.Ы, Цеплять к внешней обработке общий модуль - "не комильфо"...
Без общего модуля не обойтись никак.
Ибо изначально в фоне можно выполнить только экспортную процедуру общего модуля. А все остальное - это фокусы с Выполнить() через такую процедуру.
(1) А это решение вообще рабочее? Сталкивался с ЖР и часто зависания были, что рейд-диски на 100% загружены были, базы лагали, юзеры жаловались - и это стоило только обратиться к ЖР за большой период или со специфическими отборами. Журнал вроде lgd был.
наверное, поэтому мы используем внешний ЖР.
Полагаю, этой "печатной форме" категорически не рекомендуется запуск при параллельной работе/в разных сеансах.
(7) Я с длительными операциями ещё не сталкивался - может что и представляю неправильно...
А доступа к документации нет ;-(
ИТС: Длительные операции на сервере
29.
vadim1011985
10210.11.21 13:24 Сейчас в теме+1 $m
Фоновое выполнение длительных операций
Для того чтобы длительные операции дополнительного объекта запускались в фоновом режиме, необходимо запустить выполнение команды в фоновом задании и после его завершения принять результат.
Программный интерфейс, помогающий запускать длительные операции в фоне, представлен следующими процедурами:
1. В общем модуле ДополнительныеОтчетыИОбработкиКлиент: процедуры ВыполнитьКомандуВФоне и ПараметрыВыполненияКомандыВФоне.
2. В общем модуле ДополнительныеОтчетыИОбработки: ВыполнитьКомандуИзФормыВнешнегоОбъекта и ВыполнитьКоманду.
Рассмотрим подключение по шагам.
Шаг 1. В форме дополнительной обработки добавить ключевые параметры:
● ДополнительнаяОбработкаСсылка типа СправочникСсылка.ДополнительныеОтчетыИОбработки для хранения ссылки внешнего объекта;
● ИдентификаторКоманды типа Строка для хранения идентификатора выполняемой команды.
Шаг 2. Запустить длительную операцию при помощи кода:
ПараметрыКоманды = ДополнительныеОтчетыИОбработкиКлиент.ПараметрыВыполненияКомандыВФоне(Параметры.ДополнительнаяОбработкаСсылка);
ПараметрыКоманды.СопровождающийТекст = НСтр("ru = '<Вставить представление выполняемой команды...>'");
Обработчик = Новый ОписаниеОповещения("ПослеЗавершенияДлительнойОперации", ЭтотОбъект, СопровождающийТекст);
ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКомандуВФоне(Параметры.ИдентификаторКоманды, ПараметрыКоманды, Обработчик);
Шаг 3. Добавить процедуру для приемки результата:
&НаКлиенте
Процедура ПослеЗавершенияДлительнойОперации(Операция, СопровождающийТекст) Экспорт
// Обработка результата.
Если Операция.Статус = "Выполнено" Тогда
ПоказатьОповещениеПользователя(НСтр("ru = 'Успешное завершение'"), , СопровождающийТекст, БиблиотекаКартинок.Успешно32);
Иначе
ВызватьИсключение Операция.КраткоеПредставлениеОшибки;
КонецЕсли;
КонецПроцедуры
Показать
Шаг 4. В модуле объекта добавить обработчик команды Вызов серверного метода по шаблону, приведенному в разделе Вариант запуска «Вызов серверного метода».
В демонстрационной базе БСП данная возможность представлена в обработках Демо: Управление полнотекстовым поиском, Демо: Загрузка номенклатуры из прайс-листа (профили безопасности), Демо: Обработка заполнения и Демо: Создание связанных объектов в справочнике Дополнительные отчеты и обработки.
Это я знаю, но по умолчанию ВПФ не имеет "формы"...
З.Ы. Вы меня почти убедили что решить "без привязки" к форме у пользователя нельзя, ещё правда есть форма из которой "вызывается" ВПФ, но можно ли на сервере в команде ВПФ "поймать" форму владелец и привязать к ней обработчик ожидания я пока не представляю как...
З.Ы.Ы. Вторая проблема - использование общего модуля, т.е. должен существовать "общий функционал" который выполнит фоново обработку из ВПФ.
Есть БСП, но как "привязать" ВПФ я пока не представляю...
(18) если в базе есть какая-то БСП, то внешние обработки/отчеты, можно запускать в фоновом режиме
если БСП нет, то необходимо доработать какой либо общий модуль - без этого ни как
по поводу прогресс бара, - а в каком окне вы планируете за ним наблюдать?
для этого нужна форма, в своей внешней обработке?
как бы действия такие
запускаете свою обработку в Фоне, получаете его ИД
запускаете форму с прогрессом баром, в ней по ИД фонового задания получаете его данные и показываете прогресс бар
(пока писал ответ,, в принципе уже все и насоветовали)