К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Выполнение автоматических действий каждые несколько секунд

Гость
0 - 30.05.2012 - 10:44
Товарищи, помогите, сил уже нет через эти грабли пробираться.
Нужно каждые 10 секунд делать опрос другой базы (по ODBC соединяемся) и если стоят флаги принт - печатать документы.
Как блин это сделать?
1С 8.2 Бухгалтерия ПРОФ, Клиент-сервер на Postgre.
Я нашёл, что это можно сделать фоновыми задания, регламентными заданиями, ПодключитьОбработкиОжидания, ActiveX-компоненту нашёл, всё выдаёт какие-то ошибки или тупо не работает.



Гость
1 - 30.05.2012 - 10:44
И кстати желательно конфигурацию не трогать, но если никак нельзя - фиг с ней, лишь бы работало.
Гость
2 - 30.05.2012 - 11:20
я так понимаю развод.
например какие ошибки при использовании ПодключитьОбработкиОжидания
Гость
3 - 30.05.2012 - 11:22
2-angro >Сейчас скажу.
Недопустимое значение параметра (параметр номер '1')
Запускаю это всё из внешней обработки
Гость
4 - 30.05.2012 - 11:23
Можно вообще как-то зациклить выполнение обработки с паузой 10 секундной?
Гость
5 - 30.05.2012 - 11:27
:) запусти обработку напиши
пока 1=1 цикл
полезнаяобработка();
предупреждение("ждём",10)
обработкапрерыванияпользователя();
конецЦикла
Гость
6 - 30.05.2012 - 11:29
5-angro >Ну это как-то жестоко :)
И всё-таки есть возможность как-то регламентные задания использовать?
Гость
7 - 30.05.2012 - 11:36
(6) да, всё работает
8 - 30.05.2012 - 11:39
2(0) Сделай отдельную базу с одной обработкой. И пусть она проверяет внешний SQL, если что найдет - пусть коннектится к бухии и что-то там нехорошее делает.
Гость
9 - 30.05.2012 - 11:40
7-angro > А печать на сервере вообще возможна?
Гость
10 - 30.05.2012 - 11:50
х.з. не сталкивался с такой задачей. наверняка как-то можно
Гость
11 - 30.05.2012 - 12:02
10-angro > Вот именно что никак. Фоновые задания не подходят, регламентное не может печатать, подключитьобработкиожидания нужен глобальный модуль, ActiveX-компонента не работает. Ааааааа
Гость
12 - 30.05.2012 - 12:20
11-Caballero > Что мешает из клиента запустить приложение на сервере (или любом другом компе)?
Гость
13 - 30.05.2012 - 12:22
12-VZ >В смысле?
Гость
14 - 30.05.2012 - 12:42
Поместить на сервере (или другом компе) "Компонента работы с файлами", там же поместить скрипт, который вызывает эту компоненту командной строкой с нужным файлом в параметре, а затем сендкеем заставляет распечатить этот документ на принтере, а затем тем же сендкеем закрывает приложение (F10+END+ENTER)
Как активизировать скрипт на чужой машине расскажет Марк Русинович (Mark Russinovich)
Uho
15 - 30.05.2012 - 12:45
пишется обработка и запускается 1С по шедуллеру с обработкой в командной строке.
обработку напишет любой программист 1С.
Гость
16 - 30.05.2012 - 13:59
Блин, ну как-то всё очень криво, товарищи...
15-Uho >Запуск 1С с внешней обработкой по расписанию винды работает, но она открывается почти полминуты, потом закрывается ещё 10, такую конструкцию каждый раз вытворять для постоянного обновления - проще убиться об стену...
Пока "более-менее" стабильно работает только вручную запускаемая обработка с бесконечным циклом и ожиданием (блин, как вспомню, что в 1С нет процедуры паузы...), но она грузит память при каждом вызове и к середине дня уже приходится перегружаться.
Гость
17 - 30.05.2012 - 14:02
так обновление или печать?
Uho
18 - 30.05.2012 - 14:05
16-Caballero >
Цитата:
Сообщение от Caballero Посмотреть сообщение
Запуск 1С с внешней обработкой по расписанию винды работает, но она открывается почти полминуты, потом закрывается ещё 10
Запускать 1 раз в день, далее в самой обработке опрос каждые "несколько" секунд,



Цитата:
Сообщение от angro Посмотреть сообщение
с бесконечным циклом и ожиданием (блин, как вспомню, что в 1С нет процедуры паузы...), но она грузит память при каждом вызове
бесконечный цикл не нужен, память грузит из-за кривых рук.
Гость
19 - 30.05.2012 - 14:29
17-angro > Печать
18-Uho > Как сделать опрос каждые несколько секунд без цикла?
Uho
20 - 30.05.2012 - 14:31
19-Caballero >

УправляемаяФорма.ПодключитьОбработчикОжидания (ManagedForm.AttachIdleHandler)
УправляемаяФорма (ManagedForm)
ПодключитьОбработчикОжидания (AttachIdleHandler)
Синтаксис:

ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>)
Параметры:

<ИмяПроцедуры> (обязательный)

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

Тип: Число.
Интервал времени в секундах с точностью до 1/10 секунды, через который будет осуществляться вызов процедуры (положительное число).
Если указано значение меньше 1, то значение третьего параметра должно быть равно Истина.
<Однократно> (необязательный)

Тип: Булево.
Признак однократного выполнения обработчика ожидания.
Истина - указанный обработчик ожидания будет выполнен один раз.
Значение по умолчанию: Ложь
Описание:

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

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
Примечание:

Вызов обработчика ожидания продолжается пока форма не будет закрыта или пока не будет вызван метод формы ОтключитьОбработчикОжидания.
Гость
21 - 30.05.2012 - 14:41
20-Uho > В посте 3 писал, что подключитьобработчикожидания не работает у меня. Можно как-то это исправить?
Модуль создал новый. Атрибуты глобальный и клиент установлены
Uho
22 - 30.05.2012 - 14:43
21-Caballero > можно, для этого нужен программист 1С или придется все-таки почитать RTFM
Гость
23 - 30.05.2012 - 14:46
22-Uho > Ответ в духе технической поддержки 1С :)
Так на что обратить внимание-то? Где ошибки может быть?
Uho
24 - 30.05.2012 - 15:04
Цитата:
Сообщение от Caballero Посмотреть сообщение
Так на что обратить внимание-то? Где ошибки может быть?
наверное, в коде
Гость
25 - 30.05.2012 - 15:07
24-Uho >
А как прекратить-то внешнюю обработку, в которой ПодключитьОбработчикОжидания срабатывает? Ctrl-break не срабатывает, пишет невозможно отменить.
Гость
26 - 30.05.2012 - 15:10
отключитьобработкуожидания. кэп
Uho
27 - 30.05.2012 - 15:10
25-Caballero > опять RTFM

УправляемаяФорма (ManagedForm)
ОтключитьОбработчикОжидания (DetachIdleHandler)
Синтаксис:

ОтключитьОбработчикОжидания(<ИмяПроцедуры>)
Параметры:

<ИмяПроцедуры> (обязательный)

Тип: Строка.
Имя процедуры, которую необходимо исключить из обработки ожидания.
Описание:

Отключает ранее подключенную процедуру - обработчик ожидания, подключенный ранее методом формы ПодключитьОбработчикОжидания.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент
Гость
28 - 30.05.2012 - 15:17
сопсно, если религия позволяет, то можно запустить клиентское приложение на сервере, а в нем ПодключитьОбработчикОжидания(), который будет смотреть на флаги и посылать на печать
Гость
29 - 30.05.2012 - 15:17
Так и чем не понравилось (14)? "Фонового" клиента 1С (отжирающего ключ, между прочем) запускать не требуется, скрипт можно разместить на любом компе сети рядом с любимым принтером, все компоненты для сборки сего механизма бесплатны, доступны, документированы, пользоваться может любой юзер 1С, находящийся в сети...
Покритиковали бы :D
Гость
30 - 30.05.2012 - 15:23
26-EvG32 > А пользователем-то как прервать?
29-VZ > Так эти файлы же ещё создать нужно
Uho
31 - 30.05.2012 - 15:29
Цитата:
Сообщение от Caballero Посмотреть сообщение
А пользователем-то как прервать?
зачем? эта обработка не для пользователя же? если в исключительных случаях - то закрыть окно приложения
Гость
32 - 30.05.2012 - 15:33
(30)вариантов не мало
в базе, которую запускаем на сервере, делаем константу "Печать", при подключении обработчика даем ей значение "Печатать"; в общем, например, интерфейсе делаем кнопку, которая меняет значение константы на "Послать в" , перед определением флагов проверяем значение константы и если нас послали, значит ОтключитьОбработчикОжидания(), закрыть приложение
Гость
33 - 30.05.2012 - 15:33
(31) ну если уж так хочется человеку
Uho
34 - 30.05.2012 - 15:34
зачем такие извраты, если все решается БЕЗ изменения типовой?
Гость
35 - 30.05.2012 - 15:37
поддерживаю сендкейный дух темы )
Гость
36 - 30.05.2012 - 15:46
31-Uho > Ок
32-EvG32 >Не, ну это совсем геморно

Короче, сейчас работает так. В начале работы шедулером винды запускается 1С с внешней обработкой. Она выполняет нужную процедуру каждые 10 секунд. В конце дня видимо будем её отключать. Вроде неплохо :)
Остался один вопрос. Сейчас ПодключитьОбработчикОжидания работает с процедурой из добавленного Общего модуля. Можно как-то всё-таки обойтись без изменения конфигурации, то есть чтоб эта процедура где-то внешне хранилась? Если её тупо вставить в эту обработку, пишет, что она не найдена.
Uho
37 - 30.05.2012 - 15:56
Цитата:
Сообщение от Caballero Посмотреть сообщение
Если её тупо вставить в эту обработку, пишет, что она не найдена.
у меня все работает без изменения конфигурации, что я делаю не так?
Uho
38 - 30.05.2012 - 15:56
Цитата:
Сообщение от Caballero Посмотреть сообщение
В конце дня видимо будем её отключать
почему нельзя программно закрывать?
Гость
39 - 30.05.2012 - 16:01
37-Uho > Можешь скинуть какой-нибудь легкий код?
Потому как вроде пишут, что только в глобальном модуле можно процедуры эти вставлять
http://it-buh.narod.ru/fmista/v8/v8_...037/476230.htm
38-Uho > Проверять время и закрывать?


К списку вопросов






Copyright ©, Все права защищены