|
v7: Запуск из ГМ функций по расписанию | ☑ | ||
---|---|---|---|---|
0
evgpinsk_
18.08.19
✎
23:34
|
Предположим каждый час нужно запускать вызов формы.
Реализовал в ГМ так: Процедура Планировщик() экспорт Час=Число(Лев(Константа.ВремяВыходаИз1с,2)); Мин_=Число(Сред(Константа.ВремяВыходаИз1с,3,2)); Сек=Число(Прав(Константа.ВремяВыходаИз1с,2)); Если (Число(М)=59) и (Число(с)<4) тогда ОткрытьФорму("Отчет.ЭкспортвCSV#","КопияФоток"); конецесли; // и здесь ещё многу других заданий,выполняемых в разное время конецпроцедуры ОбработкаОжидания("Планировщик", 2); Но мне нужно чтобы процедура внутри планировщика выполнялась только один раз каждый час. Есть способ не сильно заморачиваясь реализовать? |
|||
1
Сияющий в темноте
19.08.19
✎
01:38
|
запускаешь функцию раз в минуту,а в ней проверяешь время и раз в час запускаешь то,что нужно.
|
|||
2
Lazy Stranger
19.08.19
✎
04:03
|
ТекущееВремя(Ч,М,С)
Если Константа.ВремяПоследнегоЗапуска = Ч тогда возврат; // уже запускали иначе // тут весь твой код Константа.ВремяПоследнегоЗапуска = Ч; КонецЕсли; |
|||
3
Kigo_Kigo
19.08.19
✎
07:24
|
(2) + ну и по хорошему бы еще проверку по дате и по пользователю
то есть в константу писать ВремяЗапуска = ТекущееВремя(); Константа.ВремяПоследнегоЗапуска = ТекущайДата() + "$" + Сред(ВремяЗапуска,,2) + "$" + СокрЛП("глПользователь"); ну и про проверке через СтрНайти(Константа.ВремяПоследнегоЗапуска,"$") разложить на параметры и проверять |
|||
4
trdm
19.08.19
✎
08:12
|
лучше справочник, а не константы.
|
|||
5
dk
19.08.19
✎
08:19
|
или глобальная переменная типа массив
это если несколько обработок с разной периодичностью |
|||
6
evgpinsk_
19.08.19
✎
08:48
|
Сорян, разобрался. Небольшая неточность кода заставила меня подумать что код в ГМ
ОбработкаОжидания("Планировщик", 2); запускается чаще чем каждые две секунды |
|||
7
Kigo_Kigo
19.08.19
✎
08:49
|
(4) Зачем справочник?
(5) глобальная переменная обнулится после перезапуска я бы вообще сделал отдельного пользователя для этого, для которого бы открывалась обработка с обработкойОжидания, что бы не у всех пользователей срабатывала а только у конкретного недокументированная функция у клюшек для формы Форма.ОбработкаОжидания() |
|||
8
Kigo_Kigo
19.08.19
✎
08:50
|
Форма.ОбработкаОжидания() будет срабатывать только тогда когда открыта эта форма
|
|||
9
Провинциальный 1сник
19.08.19
✎
08:55
|
(7) "Зачем справочник? "
Потому что константы в семерке - большое и толстое зло. Ибо хранятся в одной огромной таблице вперемешку со значениями периодических реквизитов справочников, так что лучше отдельный справочник - он гарантированно в отдельной таблице хранится. |
|||
10
Kigo_Kigo
19.08.19
✎
09:03
|
(9) Константой больше, константой меньше, зато прямой доступ с ксчитыванию и записи данных, а чтотам до справочника достучаться из-зи одной переменной?
а ну да, Спр = СоздатьОбъек("Справочник.ВремяЗапуска"); и так далее, не рационально из-за одной переменной городить огород |
|||
11
ADirks
19.08.19
✎
09:05
|
(10) дык ведь потом понадобится не одно регламентное задание запускать, и что, по константе на каждое задание?
|
|||
12
Провинциальный 1сник
19.08.19
✎
09:09
|
(10) Вы же планируете дергать его по расписанию каждую минуту, а зачем нам эскалация блокировок?
|
|||
13
ADirks
19.08.19
✎
09:13
|
(12) и кстати да, блокировки же
|
|||
14
АгентБезопасной Нацио
19.08.19
✎
10:10
|
хосспадя. опять он....
ну возьмите конфигурацию Агент+ образца 2004 года, выдерните оттуда подсистему-планировщик (это один справочник и десяток функций ГМ), и наступит вам счастье - можно выгонять подьзователей (хоть всех, хоть по отдельности, хоть сразу, хоть в нужное время), запускать обработки (внешние и внутренние) по гибкому графику (через время, в заданное время - ежедневно, еженедельно, по дням недели, ежемесячно), отправлять сообщения пользователю или всем... |
|||
15
АгентБезопасной Нацио
19.08.19
✎
11:22
|
вот как-то так
http://prntscr.com/ouhzan |
|||
16
evgpinsk_
19.08.19
✎
11:37
|
(7) можно по идее проще:
Если ИмяПользователя()=СокрЛП(Константа.ИмяПользователяРобота) тогда // здесь запускаем все регламентные функции по расписанию КонецЕсли |
|||
17
HawkEye
19.08.19
✎
11:42
|
(0) пфф... в планировщике винды настрой по расписанию старт 1С под нужным пользователем...
в 1С приСтартеРаботыСистемы сделай что надо и закрой сеанс... |
|||
18
АгентБезопасной Нацио
19.08.19
✎
11:46
|
(17) ну, держать много разных служебных пользователей - не комильфо.
|
|||
19
HawkEye
19.08.19
✎
11:55
|
(18) зачем много, держи одного )) в зависимости от времени запускай то, что тебе надо...
заодно и конфликтов не будет... |
|||
20
АгентБезопасной Нацио
19.08.19
✎
12:00
|
(19) ну вот для этого и делается шедулер типа (14)(15). Вот я воткнул его на той конфе, которая показана на скрине, в августе 2005 - проработало без проблем до декабря 2018. там и запуски. и напоминалки, и сообщения о заявках, выгрузка в кубики олаповские, отсылка отчетности поставщикам, прием заявок с планшетов и EDI, выгонялка для нерадивых, всякие АРМЫ грузчиков и весовые места...
|
|||
21
HawkEye
19.08.19
✎
12:00
|
+19
у меня вот так автоомбен РБД сделан: Если СокрЛП(ИмяПользователя()) = "AO" Тогда //автообмен ОткрытьФормуМодально("Обработка.Автообмен","изГМ"); СтатусВозврата(0); Возврат; Конецесли; |
|||
22
АгентБезопасной Нацио
19.08.19
✎
12:01
|
(21) должно быть "изГК" ?
|
|||
23
HawkEye
19.08.19
✎
12:03
|
(20) зачем, если все что касается расписания есть в виндовом шудулере?
(22) у нее есть еще несколько мест откуда она запускается, в т.ч. и интерактивно.. |
|||
24
evgpinsk_
19.08.19
✎
12:04
|
(17) Да ну, для каждой новой задачи запускать 1с?
Помоему проще отдельный сеанс на Робота, в нём всегда запущена 1с. И уже в ГМ добавляем разные регламентные процедуры. |
|||
25
HawkEye
19.08.19
✎
12:05
|
(24) тебе виднее...
|
|||
26
АгентБезопасной Нацио
19.08.19
✎
12:05
|
(23) (24) каждый сам кузнец своего геморроя...©
|
|||
27
evgpinsk_
19.08.19
✎
12:07
|
(25) У меня 1с постоянно отслеживает извне обращения к ней (c интернет-магазина). Всегда должна быть запущена
|
|||
28
HawkEye
19.08.19
✎
12:07
|
(26) а кто с этим спорит...
только все равно потом придет к шедулеру, который будет смотреть, а запущен ли сеанс под роботом и если не запущен то запускать его ))) |
|||
29
evgpinsk_
19.08.19
✎
12:08
|
(28) запустить за в неделю не запущенный сеанс тоже самое что запускать 1с 20 раз в день ? )
|
|||
30
HawkEye
19.08.19
✎
12:09
|
(27) так ты определись, всегда или раз в час?
в твоем сценарии вообще надо запускать по появлению в папке файла... есть файл - запустил, обработал его, перенес в другое место, закрылся... (29) понедельник день тяжелый.... прожуй и внятно скажи.. |
|||
31
evgpinsk_
19.08.19
✎
12:13
|
(30) В данном топике одна из 20ти регламентных задача. Запускается раз в час
Есть куча других задач, в том числе и анализировать папку на наличие CSV-заказов, поступивших извне |
|||
32
evgpinsk_
19.08.19
✎
12:15
|
И запускать в сеансе тяжёлую 1с 20 раз в сутки для 20ти разных задач ??
Помоему логичней, когда 1с запущена в сеансе всегда и в своём шедулеле (в ГМ) что хочет и когда хочет запускает |
|||
33
evgpinsk_
19.08.19
✎
12:16
|
(30) "в твоем сценарии вообще надо запускать по появлению в папке файла... есть файл - запустил, обработал его, перенес в другое место, закрылся... "
если файлы появляются каждую минуту? )) Что будем наблюдать в сеансе робота? ) |
|||
34
HawkEye
19.08.19
✎
12:18
|
(32) что будет если твой сеанс с роботом завис?
(33) ну вот проблема.. перед закрытием проверь, есть новый файл - не закрывайся, его обрабатывай, нет - закройся... что-то у тебя требования меняются каждые 2 минуты... в заголовке написано - РАЗ в час, в (33) каждую минуту... ты может определишься для начала? |
|||
35
АгентБезопасной Нацио
19.08.19
✎
12:24
|
(34) Зависание сеанся - проблема, не решающаяся и виндовым шедулером. Без принудительного киляния, конечно.
впрочем, все проблемы решаемы, с той или иной кровью и с тем или иным геморроем. ТСу сказали достаточно. но, как всегда, не в кобылу сено... |
|||
36
evgpinsk_
19.08.19
✎
12:33
|
(34)
" ну вот проблема.. перед закрытием проверь, есть новый файл - не закрывайся, его обрабатывай, нет - закройся... " Из интернет-магазины заказы поступают постоянно с разной периодичностью. И их нужно отслеживать. Каким это образом можно не закрываться ? )) "что-то у тебя требования меняются каждые 2 минуты... в заголовке написано - РАЗ в час, в (33) каждую минуту... ты может определишься для начала?" у меня требования не меняются. Уже выше писал, в (0) была одна задача /которая запускается 1 раз в час, копирование фотографий на хостинг/, а позже объяснил, что есть ещё много других задач. И под каждую задачу запускать 1с - ну очень не рационально |
|||
37
evgpinsk_
19.08.19
✎
12:36
|
В (0) я просто затупил. Приведённый в (0) код нормально отрабатывается и запускается как и нужно - каждый час. Без всяких констант и справочников. Может не совсем красиво (расчлиняем текущее время на часы минуты и секунды) , но работает.
|
|||
38
АгентБезопасной Нацио
19.08.19
✎
12:36
|
(36) ты (14) прочитал?
|
|||
39
HawkEye
19.08.19
✎
12:46
|
(37) оставив в стороне "тяжелую" и "1С:7.7"....
если у тебя там все так критично, то давно уже должны быть созданы объекты для контроля выполнения регламентных заданий с фиксацией времени старта, времени финиша и результата выполнения, а их у тебя судя по всему нет... может и не все так критично? |
|||
40
Cthulhu
19.08.19
✎
12:57
|
Процедура ПросмотрБлокнота() - есть в ГМ? ну и вперед.
|
|||
41
Eiffil123
19.08.19
✎
13:02
|
когда работал с 7.7, на сервере висело 3 разных 1с-ки постоянно открытие. В них были открыты обработки для загрузки данных из агент+ и еще каких-то систем. Проблем с запуском после обновления баз раз в день не возникало.
Было несколько раз, что обработки зависали или падали с ошибкой (при этом обработкаожидания переставала работать). Вышли из положения так: обработка при регулярном запуске создает в специальной папке на сервере пустой файл. На компах у службы поддержки работала самопальная программа, которая смотрела время файла. Если больше 15 минут - ругалась, типа "проверьте обмен, возможно отвалился". Можно наверно было написать какой-нибудь bat-файл, который перезапускал бы 1С-ку на сервере. Но это уже было лень, т.к. случаи были редки. |
|||
42
vova1122
19.08.19
✎
13:23
|
(41) вот это совпадение. У меня тоже самое было. (с текстовым файлом) Я писал в текстовый файл, дату и время, и также проверял это время, но уже в рег задании восьмерки и в случае аварии (время также не обновлялось) отправлял сообщение на телефон.
|
|||
43
АгентБезопасной Нацио
19.08.19
✎
13:33
|
(41) (42) так самый простой способ.
шедулер пишет каждые 15 минут. а как админы контолировали - я не знаю... |
|||
44
vova1122
19.08.19
✎
13:53
|
+(41) кстати, в соседней ветке про авторское право ( Как вы относитесь к авторскому праву? ). Кому должно пренадлежать авторское право на эту идею.....
|
|||
45
Злопчинский
19.08.19
✎
15:39
|
||||
46
vtolga
19.08.19
✎
16:21
|
(45)+100 Классная вещь, работает как часы.
|
|||
47
vtolga
19.08.19
✎
16:22
|
И все твои проблемы решит просто настройками, без велосипедов
|
|||
48
Salimbek
19.08.19
✎
16:46
|
(32) 1С 7-ка вообще не тяжело запускается на современных компах. Есть еще такая штука, как открытие периода и прочие монопольные режимы, которым все время запущеный сеанс мешается
|
|||
49
ДенисЧ
19.08.19
✎
16:47
|
(48) открытие периода в 7ке можно и немонопольно делать.
|
|||
50
АгентБезопасной Нацио
19.08.19
✎
19:25
|
(48) открытие периода - достаточно легко делается и без монопольного режима.
Единственное, где нужен монопольный (по крайней мере, я не смог обойтись) - обновление конфигурации в периферийных базах (хотя у меня периферийки работали не 24/7). |
|||
51
evgpinsk_
19.08.19
✎
20:04
|
(38) Да прочитал. Но пока не хочется наворачивать новую ВК для решения того, что впринципе нормально решено стандартными средствами.
Хотя функционал в ней конечно не плохой - если будет время, можно будет попробовать применить |
|||
52
evgpinsk_
19.08.19
✎
20:04
|
(47) Проблем на самом деле никаких нет ).
Создавая тему я затупил, предполагая что есть проблема. Её нет |
|||
53
evgpinsk_
19.08.19
✎
20:07
|
(39) Ничего критичного нет. Но когда есть /как у меня/ внешние обращения к 1с, логичней её всегда держать открытой, чтобы эти воздействия обрабатывать
|
|||
54
АгентБезопасной Нацио
19.08.19
✎
20:14
|
(51) никаких ВК там нет - всё сделано накошерном языке 7.7, благославленным нуралиевым.
|
|||
55
Злопчинский
19.08.19
✎
20:36
|
(49) и как? есть инструмент для немонопольного открытия периода в файловом варианте?
|
|||
56
ДенисЧ
19.08.19
✎
20:55
|
(55) Тот же, что и для скулёвой.
|
|||
57
Злопчинский
19.08.19
✎
20:55
|
(56) Не видел такого.
|
|||
58
HawkEye
19.08.19
✎
21:25
|
(57) есть обработка, сам не пользовался... использует 1С++ пересчитывает непосредственно в таблицах БД...
куда тебе кинуть? |
|||
59
Злопчинский
19.08.19
✎
23:04
|
(58) [email protected]
|
|||
60
ДенисЧ
20.08.19
✎
04:00
|
(57) А я тебя живьём не видел... Стоит ли мне отрицать твоё существование?
|
|||
61
АгентБезопасной Нацио
20.08.19
✎
04:58
|
(58) пересчитать-то - не проблема
Записать вместе с индексами - вот проблема для файловой... |
|||
62
ДенисЧ
20.08.19
✎
06:53
|
(61) Если писать не через побайтовый вывод, а через дб-драйвер - нет такой проблемы
|
|||
63
АгентБезопасной Нацио
20.08.19
✎
07:25
|
(62) с чтением нет. с записью - были.
впрочем. я с файловыми работал крайне мало и очень давно ("на заре"). |
|||
64
Salimbek
20.08.19
✎
08:53
|
(50) А я и это обошел, используя TurboMD
|
|||
65
ДенисЧ
20.08.19
✎
08:57
|
(64) Добавь новый справочник через турбу )))
А тексты можно обновлять и без неё. ПРавда, с ней удобней |
|||
66
АгентБезопасной Нацио
20.08.19
✎
09:03
|
(64) Добавление метаданных через турбомд не сделать. в ЦБ на SQL - можно.
|
|||
67
Злопчинский
20.08.19
✎
11:57
|
(60) солпсист елы-палы.
положил бы куда-нить обработку. |
|||
68
ДенисЧ
20.08.19
✎
12:21
|
(67) ТЫ знаешь, когда я последний раз брал в руки клюшки? Сколько компов я с тех поменял.
|
|||
69
HawkEye
20.08.19
✎
19:39
|
(67) отправил на почту..
|
|||
70
Злопчинский
20.08.19
✎
20:10
|
(69) Получил, спсб
|
|||
71
Злопчинский
20.08.19
✎
20:14
|
(68) Стабильность - признак мастерства!
|
|||
72
smitti911
21.08.19
✎
09:33
|
(70) можно и мне на [email protected]
|
|||
73
Salimbek
21.08.19
✎
09:45
|
(65),(66) Добавил один раз свою Таблицу прямо в СКЛ, типа ИД метаданных, ИД объекта, ИД реквизита - Значение. И все что нужно туда записывал/считывал через 1С++/ОДБЦ
|
|||
74
ДенисЧ
21.08.19
✎
09:46
|
(73) А появился новый справочник? В ДД его добавиьт надо. В таблицы - надо. В твою таблицу надо.
|
|||
75
ДенисЧ
21.08.19
✎
09:46
|
Хотя всё это можно всё тоже немонопольно длеать...
|
|||
76
Salimbek
21.08.19
✎
11:05
|
(74) А зачем мне нужен был новый справочник? Я, в таком случае, писал в свою таблицу: ИД - "МойСправочник1", ИД объекта - 1, ИД реквизита - "Поле 1", Значение - "Вася Пупкин". Потом получал выборку через select * from Table where ID="МойСправочник1". Для бОльшей части задач - этого вполне хватало. Для "типа справочника" с большим количеством данных - там просто создал отдельную Таблицу.
А потом все переехало на 8-ку. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |