![]() | [1] [2] |
Выполнение автоматических действий каждые несколько секунд Товарищи, помогите, сил уже нет через эти грабли пробираться. Нужно каждые 10 секунд делать опрос другой базы (по ODBC соединяемся) и если стоят флаги принт - печатать документы. Как блин это сделать? 1С 8.2 Бухгалтерия ПРОФ, Клиент-сервер на Postgre. Я нашёл, что это можно сделать фоновыми задания, регламентными заданиями, ПодключитьОбработкиОжидания, ActiveX-компоненту нашёл, всё выдаёт какие-то ошибки или тупо не работает. |
И кстати желательно конфигурацию не трогать, но если никак нельзя - фиг с ней, лишь бы работало. |
я так понимаю развод. например какие ошибки при использовании ПодключитьОбработкиОжидания |
2-angro >Сейчас скажу. Недопустимое значение параметра (параметр номер '1') Запускаю это всё из внешней обработки |
Можно вообще как-то зациклить выполнение обработки с паузой 10 секундной? |
:) запусти обработку напиши пока 1=1 цикл полезнаяобработка(); предупреждение("ждём",10) обработкапрерыванияпользователя(); конецЦикла |
5-angro >Ну это как-то жестоко :) И всё-таки есть возможность как-то регламентные задания использовать? |
(6) да, всё работает |
2(0) Сделай отдельную базу с одной обработкой. И пусть она проверяет внешний SQL, если что найдет - пусть коннектится к бухии и что-то там нехорошее делает. |
7-angro > А печать на сервере вообще возможна? |
х.з. не сталкивался с такой задачей. наверняка как-то можно |
10-angro > Вот именно что никак. Фоновые задания не подходят, регламентное не может печатать, подключитьобработкиожидания нужен глобальный модуль, ActiveX-компонента не работает. Ааааааа |
11-Caballero > Что мешает из клиента запустить приложение на сервере (или любом другом компе)? |
12-VZ >В смысле? |
Поместить на сервере (или другом компе) "Компонента работы с файлами", там же поместить скрипт, который вызывает эту компоненту командной строкой с нужным файлом в параметре, а затем сендкеем заставляет распечатить этот документ на принтере, а затем тем же сендкеем закрывает приложение (F10+END+ENTER) Как активизировать скрипт на чужой машине расскажет Марк Русинович (Mark Russinovich) |
пишется обработка и запускается 1С по шедуллеру с обработкой в командной строке. обработку напишет любой программист 1С. |
Блин, ну как-то всё очень криво, товарищи... 15-Uho >Запуск 1С с внешней обработкой по расписанию винды работает, но она открывается почти полминуты, потом закрывается ещё 10, такую конструкцию каждый раз вытворять для постоянного обновления - проще убиться об стену... Пока "более-менее" стабильно работает только вручную запускаемая обработка с бесконечным циклом и ожиданием (блин, как вспомню, что в 1С нет процедуры паузы...), но она грузит память при каждом вызове и к середине дня уже приходится перегружаться. |
так обновление или печать? |
16-Caballero > [quote=Caballero;25304697]Запуск 1С с внешней обработкой по расписанию винды работает, но она открывается почти полминуты, потом закрывается ещё 10[/quote]Запускать 1 раз в день, далее в самой обработке опрос каждые "несколько" секунд, [quote=angro;25304781]с бесконечным циклом и ожиданием (блин, как вспомню, что в 1С нет процедуры паузы...), но она грузит память при каждом вызове[/quote] бесконечный цикл не нужен, память грузит из-за кривых рук. |
17-angro > Печать 18-Uho > Как сделать опрос каждые несколько секунд без цикла? |
19-Caballero > УправляемаяФорма.ПодключитьОбработчикОжидания (ManagedForm.AttachIdleHandler) УправляемаяФорма (ManagedForm) ПодключитьОбработчикОжидания (AttachIdleHandler) Синтаксис: ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>) Параметры: <ИмяПроцедуры> (обязательный) Тип: Строка. Имя процедуры, подключаемой в качестве обработчика ожидания. <Интервал> (обязательный) Тип: Число. Интервал времени в секундах с точностью до 1/10 секунды, через который будет осуществляться вызов процедуры (положительное число). Если указано значение меньше 1, то значение третьего параметра должно быть равно Истина. <Однократно> (необязательный) Тип: Булево. Признак однократного выполнения обработчика ожидания. Истина - указанный обработчик ожидания будет выполнен один раз. Значение по умолчанию: Ложь Описание: Подключает указанную процедуру в качестве обработчика ожидания. Процедура будет вызываться в период ожидания системы каждый раз по истечению указанного интервала времени. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Примечание: Вызов обработчика ожидания продолжается пока форма не будет закрыта или пока не будет вызван метод формы ОтключитьОбработчикОжидания. |
20-Uho > В посте 3 писал, что подключитьобработчикожидания не работает у меня. Можно как-то это исправить? Модуль создал новый. Атрибуты глобальный и клиент установлены |
21-Caballero > можно, для этого нужен программист 1С или придется все-таки почитать RTFM |
22-Uho > Ответ в духе технической поддержки 1С :) Так на что обратить внимание-то? Где ошибки может быть? |
[quote=Caballero;25305725]Так на что обратить внимание-то? Где ошибки может быть? [/quote]наверное, в коде |
24-Uho > А как прекратить-то внешнюю обработку, в которой ПодключитьОбработчикОжидания срабатывает? Ctrl-break не срабатывает, пишет невозможно отменить. |
отключитьобработкуожидания. кэп |
25-Caballero > опять RTFM УправляемаяФорма (ManagedForm) ОтключитьОбработчикОжидания (DetachIdleHandler) Синтаксис: ОтключитьОбработчикОжидания(<ИмяПроцедуры>) Параметры: <ИмяПроцедуры> (обязательный) Тип: Строка. Имя процедуры, которую необходимо исключить из обработки ожидания. Описание: Отключает ранее подключенную процедуру - обработчик ожидания, подключенный ранее методом формы ПодключитьОбработчикОжидания. Доступность: Тонкий клиент, веб-клиент, толстый клиент |
сопсно, если религия позволяет, то можно запустить клиентское приложение на сервере, а в нем ПодключитьОбработчикОжидания(), который будет смотреть на флаги и посылать на печать |
Так и чем не понравилось (14)? "Фонового" клиента 1С (отжирающего ключ, между прочем) запускать не требуется, скрипт можно разместить на любом компе сети рядом с любимым принтером, все компоненты для сборки сего механизма бесплатны, доступны, документированы, пользоваться может любой юзер 1С, находящийся в сети... Покритиковали бы :D |
26-EvG32 > А пользователем-то как прервать? 29-VZ > Так эти файлы же ещё создать нужно |
[quote=Caballero;25306567]А пользователем-то как прервать?[/quote]зачем? эта обработка не для пользователя же? если в исключительных случаях - то закрыть окно приложения |
(30)вариантов не мало в базе, которую запускаем на сервере, делаем константу "Печать", при подключении обработчика даем ей значение "Печатать"; в общем, например, интерфейсе делаем кнопку, которая меняет значение константы на "Послать в" , перед определением флагов проверяем значение константы и если нас послали, значит ОтключитьОбработчикОжидания(), закрыть приложение |
(31) ну если уж так хочется человеку |
зачем такие извраты, если все решается БЕЗ изменения типовой? |
поддерживаю сендкейный дух темы ) |
31-Uho > Ок 32-EvG32 >Не, ну это совсем геморно Короче, сейчас работает так. В начале работы шедулером винды запускается 1С с внешней обработкой. Она выполняет нужную процедуру каждые 10 секунд. В конце дня видимо будем её отключать. Вроде неплохо :) Остался один вопрос. Сейчас ПодключитьОбработчикОжидания работает с процедурой из добавленного Общего модуля. Можно как-то всё-таки обойтись без изменения конфигурации, то есть чтоб эта процедура где-то внешне хранилась? Если её тупо вставить в эту обработку, пишет, что она не найдена. |
[quote=Caballero;25307130]Если её тупо вставить в эту обработку, пишет, что она не найдена. [/quote]у меня все работает без изменения конфигурации, что я делаю не так? |
[quote=Caballero;25307130]В конце дня видимо будем её отключать[/quote]почему нельзя программно закрывать? |
37-Uho > Можешь скинуть какой-нибудь легкий код? Потому как вроде пишут, что только в глобальном модуле можно процедуры эти вставлять [url]http://it-buh.narod.ru/fmista/v8/v8_1/v8_1_037/476230.htm[/url] 38-Uho > Проверять время и закрывать? |
Текущее время: 15:04. Часовой пояс GMT +3. | [1] [2] |