|   |   | 
| 
 | 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) e.meil@mail.ru     | |||
| 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) можно и мне на smitti911@mail.ru     | |||
| 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-ку. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |