Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Периодический запуск обработки в сеансе пользователя , Необходимо реализовать периодический запуск обработки в сеансе пользов          
AlexHummer Подменю пользователя
сообщение 17.11.16, 15:28
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0

1С:Предприятие 8.2 (8.2.19.102)
УПП Укр. (1.3.47.2)

Добрый день.
Необходимо реализовать периодический запуск обработки в сеансе пользователя. В настройках пользователя уже имеются признаки по которым нужно проверять саму необходимость запуска обработки и интервал запуска. Не удается только выполнить сам запуск.
Казалось бы, оптимальный вариант - Обработчик ожидания... Но как-то не складывается sad.gif Возможно неправильно делаю.
Делаю так:
"Модуль обычного приложения" - Процедура "ПриНачалеРаботыСистемы" - в ней есть вызов процедуры в моем общем модуле (сервер,внешнее соединение, клиент-обычное прилож.). В той процедуре такая вставка

Если УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ВыполнятьКонтроль") Тогда 
    ПодключитьОбработчикОжидания("ЗапуститьОбработкуКонтроля",УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ИнтервалПроверкиКонтроля"));
    КонецЕсли;


Сама Процедура, которую подключаю является экспортной и лежит рядом:

#Если Клиент тогда
Процедура ЗапуститьОбработкуКонтроля() Экспорт
    ТекОбъект                     = Обработки.ПереченьДокументов.Создать();
    ТекОбъект.КоличествоДней    = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "КоличествоДнейКонтроля");
    ТекОбъект.Дата                 = КонецДня(ТекущаяДата());
    ТекОбъект.НачальнаяДата     = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "НачальнаяДатаКонтроля");
    ТекОбъект.Ответственный     = ПараметрыСеанса.ТекущийПользователь;
    Результат                     = ТекОбъект.ПолучитьДеревоДокумнетов();
    //Если Не Результат.Пустой() Тогда
        ФормаОбъекта             = ТекОбъект.ПолучитьФорму("Форма");
        ТабличноеПоле             = ФормаОбъекта.ЭлементыФормы.Найти("ТабличноеПоле");
        ТабличноеПоле.Значение     = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
        ТабличноеПоле.СоздатьКолонки();
        ФормаОбъекта.Открыть();
    //КонецЕсли;
КонецПроцедуры
#КонецЕсли


В целом, текст процедуры полностью рабочий, он же используется при единоразовом запуске, при начале работы системы - все работает. А вот при попытке подключить его в обработчик ожидания - ругается, причем ошибка указывает именно на первый параметр - Имя процедуры. Что-то не так указано.
По справке:
Цитата
Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля.
Процедура должна располагаться на клиенте.

Вид модуля вроде соответствует требованиям. подскажите, что не так, куда копнуть.
Заранее благодарен. smile.gif

Acid Подменю пользователя
сообщение 17.11.16, 16:19
Сообщение #2

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Копайте в "НастройкиПрограммы" -- "Регламентные задания" -- "Интервал опроса"

AlexHummer Подменю пользователя
сообщение 17.11.16, 17:08
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0

Дело в том, что это не регламентное задание. Мне необходимо конкретному пользователю, в работающий сеанс, с определенной периодичностью запускать обработку и соотв. открывать ее форму. И пользователь чтоб мог видеть что открылось и дальше работать.
Регламентное задание, насколько я понимаю такого не делает, оно отрабатывает где-то "в тени", по крайней мере так, как я пробовал - так и получалось.

Vofka Подменю пользователя
сообщение 17.11.16, 17:12
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

AlexHummer, система ищет процедуру ЗапуститьОбработкуКонтроля в текущем модуле и в глобальных. Но не там не там её не находит.

Цитата
<ИмяПроцедуры> (обязательный)
Тип: Строка.
Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля.


Acid, причем тут регламентные задания? И что такое НастройкиПрограммы?

bakalavr Подменю пользователя
сообщение 17.11.16, 17:43
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 26
Из: Запорожье
Спасибо сказали: 8 раз
Рейтинг: 0

AlexHummer @ Сегодня, 15:28 * ,
Для эксперимента попробуйте переместить процедуру ЗапуститьОбработкуКонтроля в глобальный общий модуль, который выполняется только на клиенте

Спасибо сказали: AlexHummer,

logist Подменю пользователя
сообщение 17.11.16, 19:18
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Вы не допускаете, что вот здесь возвращается значение отличное от необходимого? поэтому обработчик не подключается...
Цитата(AlexHummer @ 17.11.16, 16:28) *
УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ИнтервалПроверкиКонтроля")


Цитата(bakalavr @ 17.11.16, 18:43) *
Для эксперимента

Сомнительный эксперимент, я бы даже сказал бессмысленный.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 17.11.16, 21:45
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(logist @ 17.11.16, 19:18) *
Сомнительный эксперимент, я бы даже сказал бессмысленный.

Можно узнать почему?

logist Подменю пользователя
сообщение 17.11.16, 22:30
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Vofka, если процедура не выполняется в том же модуле в котором она вызывается, 100% она не выполнится и в глобальном. Проблема же не в процедуре, а в запуске обработчика.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Acid Подменю пользователя
сообщение 18.11.16, 2:40
Сообщение #9

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

AlexHummer @ Вчера, 17:08 * ,
Я вам намекнул где копать - от интервала опроса. Посмотрите как и где он используется.
Кстати, есть еще процедура периодической проверки отличия файла конфигурации. Да там много что с периодом опроса связано. Напоминания и прочее. Используйте уже готовый код.

*может быть глоб.модуль должен быть привелегированным?

Сообщение отредактировал Acid - 18.11.16, 2:50

AlexHummer Подменю пользователя
сообщение 18.11.16, 9:04
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Vofka @ 17.11.16, 17:12) *
система ищет процедуру ЗапуститьОбработкуКонтроля в текущем модуле и в глобальных

Процедура ЗапуститьОбработкуКонтроля лежит буквально рядом, следующей процедурой, в текущем модуле. Она экспортная.

Цитата(logist @ 17.11.16, 19:18) *
Вы не допускаете, что вот здесь возвращается значение отличное от необходимого?

Нет. Выдает результат корректный. Именно данный блок также работает при запуске системы, запуская обработку при начале работы первый раз. Также проверял отладчиком и в момент подключения обработчика.

Цитата(Acid @ 18.11.16, 2:40) *
интервала опроса

Никак не пойму, при чем интервал опроса, когда, как я и описал, ругается на вызов процедуры, на имя процедуры, на первый параметр.
Вот собственно текст ошибки:
{ОбщийМодуль.Рез.Модуль(324)}: Ошибка при вызове метода контекста (ПодключитьОбработчикОжидания)
        ПодключитьОбработчикОжидания("ЗапуститьОбработкуКонтроля",УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ИнтервалПроверкиКонтроля"));
по причине:
Недопустимое значение параметра (параметр номер '1')

Vofka Подменю пользователя
сообщение 18.11.16, 9:04
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(logist @ 17.11.16, 22:30) *
Vofka, если процедура не выполняется в том же модуле в котором она вызывается, 100% она не выполнится и в глобальном. Проблема же не в процедуре, а в запуске обработчика.

Цитата(AlexHummer @ 18.11.16, 8:57) *
Процедура ЗапуститьОбработкуКонтроля лежит буквально рядом, следующей процедурой, в текущем модуле.

Меня сбило с толку вот это:
Цитата(AlexHummer @ 17.11.16, 15:28) *
в ней есть вызов процедуры в моем общем модуле (сервер,внешнее соединение, клиент-обычное прилож.)


AlexHummer, а если убрать от процедуры
#Если Клиент тогда
#КонецЕсли

?

Сообщение отредактировал Vofka - 18.11.16, 9:05

AlexHummer Подменю пользователя
сообщение 18.11.16, 10:03
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Vofka @ 18.11.16, 9:04) *
а если убрать от процедуры

Изначально пробовал без всего этого) не отработало, и начал уже экспериментировать..

Цитата(Vofka @ 18.11.16, 9:04) *
Меня сбило с толку вот это:

Уточните, что именно пожалуйста.
Все дело происходит в общем модуле. у него включены галочки: сервер,внешнее соединение, клиент-обычное прилож.. В этом модуле в одной из процедур, которая запускается при начале работы системы происходит разовый запуск требуемой обработки (вызов процедуры ЗапуститьОбработкуКонтроля), и пытаюсь подключить обработчик ожидания на эту же процедуру.

Vofka Подменю пользователя
сообщение 18.11.16, 10:09
Сообщение #13

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

AlexHummer, где у вас определена процедура ЗапуститьОбработкуКонтроля?
Продублирую:
Цитата(Vofka @ 17.11.16, 17:12) *
Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля.


Цитата(logist @ 17.11.16, 22:30) *
Vofka, если процедура не выполняется в том же модуле в котором она вызывается, 100% она не выполнится и в глобальном. Проблема же не в процедуре, а в запуске обработчика.

Ага, как же. Советую проверять и убеждаться в том, что утверждаете, прежде чем утверждать. Ваше утверждение верно с небольшой оговоркой: если модуль глобальный или это модуль управляемого/обычного приложения. Если же это все делается в общем модуле, то так работать не будет. Об этом даже говорится в СП, цитату из которого я выше приводил. Поэтому совет bakalavr @ Вчера, 17:43 * , не бессмысленный, а очень даже правильный.

Спасибо сказали: AlexHummer,

AlexHummer Подменю пользователя
сообщение 18.11.16, 10:46
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0

Разместил процедуру, которую подключаю обработчиком ожидания в глобальном модуле - все пошло работать.
Как и задумывалось:
при запуске открывается первый раз всегда, и ту же процедуру подключаю обработчиком ожидания согласно интервалу из настроек пользователя. Работает.
Сейчас осталось только с формами разобраться, чтоб не открывалась новая каждый раз, если вдруг пользователь не закрыл предыдущую...
Спасибо Всем за помощь и подсказки.
Отдельная благодарность Vofka и bakalavr

Acid Подменю пользователя
сообщение 18.11.16, 10:48
Сообщение #15

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Если у вас
Цитата(AlexHummer @ 17.11.16, 15:28) *
"Модуль обычного приложения"


то у вас режим "Толстый клиент". Тогда конструкция
#Если Клиент тогда
лишняя. Это раз.

Смотрите в синтакс-помошнике описание метода ПодключитьОбработчикОжидания

Почти в самом низу есть такие строки:
Доступность: Толстый клиент.


Вам нужно из Клиента вызвать Серверный метод.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 19:36
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!