Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0
1С:Предприятие 8.2 (8.2.19.102) УПП Укр. (1.3.47.2)
Добрый день. Необходимо реализовать периодический запуск обработки в сеансе пользователя. В настройках пользователя уже имеются признаки по которым нужно проверять саму необходимость запуска обработки и интервал запуска. Не удается только выполнить сам запуск. Казалось бы, оптимальный вариант - Обработчик ожидания... Но как-то не складывается Возможно неправильно делаю. Делаю так: "Модуль обычного приложения" - Процедура "ПриНачалеРаботыСистемы" - в ней есть вызов процедуры в моем общем модуле (сервер,внешнее соединение, клиент-обычное прилож.). В той процедуре такая вставка
Если УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ВыполнятьКонтроль") Тогда ПодключитьОбработчикОжидания("ЗапуститьОбработкуКонтроля",УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ИнтервалПроверкиКонтроля")); КонецЕсли;
Сама Процедура, которую подключаю является экспортной и лежит рядом:
В целом, текст процедуры полностью рабочий, он же используется при единоразовом запуске, при начале работы системы - все работает. А вот при попытке подключить его в обработчик ожидания - ругается, причем ошибка указывает именно на первый параметр - Имя процедуры. Что-то не так указано. По справке:
Цитата
Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля. Процедура должна располагаться на клиенте.
Вид модуля вроде соответствует требованиям. подскажите, что не так, куда копнуть. Заранее благодарен.
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0
Дело в том, что это не регламентное задание. Мне необходимо конкретному пользователю, в работающий сеанс, с определенной периодичностью запускать обработку и соотв. открывать ее форму. И пользователь чтоб мог видеть что открылось и дальше работать. Регламентное задание, насколько я понимаю такого не делает, оно отрабатывает где-то "в тени", по крайней мере так, как я пробовал - так и получалось.
AlexHummer @ Сегодня, 15:28
, Для эксперимента попробуйте переместить процедуру ЗапуститьОбработкуКонтроля в глобальный общий модуль, который выполняется только на клиенте
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Vofka, если процедура не выполняется в том же модуле в котором она вызывается, 100% она не выполнится и в глобальном. Проблема же не в процедуре, а в запуске обработчика.
Личные бесплатные консультации не даю, для этого есть форум!
AlexHummer @ Вчера, 17:08
, Я вам намекнул где копать - от интервала опроса. Посмотрите как и где он используется. Кстати, есть еще процедура периодической проверки отличия файла конфигурации. Да там много что с периодом опроса связано. Напоминания и прочее. Используйте уже готовый код.
*может быть глоб.модуль должен быть привелегированным?
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0
Цитата(Vofka @ 17.11.16, 17:12)
система ищет процедуру ЗапуститьОбработкуКонтроля в текущем модуле и в глобальных
Процедура ЗапуститьОбработкуКонтроля лежит буквально рядом, следующей процедурой, в текущем модуле. Она экспортная.
Цитата(logist @ 17.11.16, 19:18)
Вы не допускаете, что вот здесь возвращается значение отличное от необходимого?
Нет. Выдает результат корректный. Именно данный блок также работает при запуске системы, запуская обработку при начале работы первый раз. Также проверял отладчиком и в момент подключения обработчика.
Цитата(Acid @ 18.11.16, 2:40)
интервала опроса
Никак не пойму, при чем интервал опроса, когда, как я и описал, ругается на вызов процедуры, на имя процедуры, на первый параметр. Вот собственно текст ошибки:
{ОбщийМодуль.Рез.Модуль(324)}: Ошибка при вызове метода контекста (ПодключитьОбработчикОжидания) ПодключитьОбработчикОжидания("ЗапуститьОбработкуКонтроля",УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ИнтервалПроверкиКонтроля")); по причине: Недопустимое значение параметра (параметр номер '1')
Группа: Основатель
Сообщений: 13983
Из: Киев
Спасибо сказали: 4553 раз
Рейтинг: 3682.7
Цитата(logist @ 17.11.16, 22:30)
Vofka, если процедура не выполняется в том же модуле в котором она вызывается, 100% она не выполнится и в глобальном. Проблема же не в процедуре, а в запуске обработчика.
Цитата(AlexHummer @ 18.11.16, 8:57)
Процедура ЗапуститьОбработкуКонтроля лежит буквально рядом, следующей процедурой, в текущем модуле.
Меня сбило с толку вот это:
Цитата(AlexHummer @ 17.11.16, 15:28)
в ней есть вызов процедуры в моем общем модуле (сервер,внешнее соединение, клиент-обычное прилож.)
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0
Цитата(Vofka @ 18.11.16, 9:04)
а если убрать от процедуры
Изначально пробовал без всего этого) не отработало, и начал уже экспериментировать..
Цитата(Vofka @ 18.11.16, 9:04)
Меня сбило с толку вот это:
Уточните, что именно пожалуйста. Все дело происходит в общем модуле. у него включены галочки: сервер,внешнее соединение, клиент-обычное прилож.. В этом модуле в одной из процедур, которая запускается при начале работы системы происходит разовый запуск требуемой обработки (вызов процедуры ЗапуститьОбработкуКонтроля), и пытаюсь подключить обработчик ожидания на эту же процедуру.
Группа: Основатель
Сообщений: 13983
Из: Киев
Спасибо сказали: 4553 раз
Рейтинг: 3682.7
AlexHummer, где у вас определена процедура ЗапуститьОбработкуКонтроля? Продублирую:
Цитата(Vofka @ 17.11.16, 17:12)
Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля.
Цитата(logist @ 17.11.16, 22:30)
Vofka, если процедура не выполняется в том же модуле в котором она вызывается, 100% она не выполнится и в глобальном. Проблема же не в процедуре, а в запуске обработчика.
Ага, как же. Советую проверять и убеждаться в том, что утверждаете, прежде чем утверждать. Ваше утверждение верно с небольшой оговоркой: если модуль глобальный или это модуль управляемого/обычного приложения. Если же это все делается в общем модуле, то так работать не будет. Об этом даже говорится в СП, цитату из которого я выше приводил. Поэтому совет bakalavr @ Вчера, 17:43
, не бессмысленный, а очень даже правильный.
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0
Разместил процедуру, которую подключаю обработчиком ожидания в глобальном модуле - все пошло работать. Как и задумывалось: при запуске открывается первый раз всегда, и ту же процедуру подключаю обработчиком ожидания согласно интервалу из настроек пользователя. Работает. Сейчас осталось только с формами разобраться, чтоб не открывалась новая каждый раз, если вдруг пользователь не закрыл предыдущую... Спасибо Всем за помощь и подсказки. Отдельная благодарность Vofka и bakalavr
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!