|
Расписание рег.задания: с 10 по 17 число каждого месяца | ☑ | ||
---|---|---|---|---|
0
Asmody
13.01.22
✎
16:49
|
Как бы исхитриться и накрутить такое расписание для рег.задания:
10 числа каждого месяца в 5 утра проверить условие. Если оно выполняется, то сделать некое действие. Если не выполняется, то попробовать ещё раз завтра в то же время, но только если еще не 17 число (типа после 17 уже можно не возиться). Чёт и так кручу настройки расписания и эдак.. Можно, конечно, заморочиться, и в самом рег.задании плодить фоновые в зависимости от. Но чёт как-то так себе выглядит |
|||
1
Asmody
13.01.22
✎
16:50
|
ЗЫ: метод-исполнитель при невыполнении условия кидает исключение
|
|||
2
ДенисЧ
13.01.22
✎
16:51
|
если НачалоДня(ТекущаяДата()) ...
|
|||
3
Naumov
13.01.22
✎
16:52
|
добавь константу -флаг. (или еще что)
в обработчике проверяй и флаг, и дату, и прочее запуска. |
|||
4
mikecool
13.01.22
✎
16:52
|
расписание же можно по дням настроить, емнип
а метод уже пусть отрабатывает |
|||
5
Базис
naïve
13.01.22
✎
16:55
|
Запуск по всем дням, до 10 и после 17 NOP.
|
|||
6
pechkin
13.01.22
✎
16:56
|
интервал при неудаче поставь сутки
|
|||
7
pechkin
13.01.22
✎
16:58
|
хотя это только в конфигураторе можно
|
|||
8
Asmody
13.01.22
✎
17:01
|
(4)(5) где?
есть детальная настройка в течение дня. но "детальной настройки в течение месяца" я не вижу. (6) это есть. стоит перезапускать при аварии 7 раз, через 86400. Сначала тоже такой лихой поставил на вкладке "Месячное" выполнять в 10 день месяца. А он 10 выполнился разок и всё! Теперь висит как активное с ошибкой, ждет следующего 10 числа. |
|||
9
pechkin
13.01.22
✎
17:08
|
(8) можно несколько расписаний делать
|
|||
10
acht
13.01.22
✎
17:08
|
(0) Если хочешь все гибко только через настройку регламентных, без последующих изменений в коде, то через константу - как в (3) предлагают:
1) Регламентное, которое 10 числа взводит константу 2) Регламентное, которое 17 числа сбрасывает константу 3) Регламентное, которое каждый день в 5 утра читает константу и по ее состоянию что-то делает или не делает. 4) Настраивай, как душе угодно. |
|||
11
Базис
naïve
13.01.22
✎
17:09
|
Каждый день запускай. Но не каждый день работай. NOP - это ассемблерная команда "Ничего не делай".
|
|||
12
pechkin
13.01.22
✎
17:09
|
(8) а вы сервер не перезапускаете случайно? а то наверняка счетчик сбрасывается
|
|||
13
Asmody
13.01.22
✎
17:13
|
(10) как-то сложно получается. тогда уж прямо фоновыми рулить, чтобы лишний раз планировщик не трепыхался
|
|||
14
Asmody
13.01.22
✎
17:14
|
а то в типовых и так этих рег.заданий как грязи на каждый чих
|
|||
15
acht
13.01.22
✎
17:17
|
(13) Зато это самовосстанавливающаяся схема. Если у тебя за эти 7 дней будет перезапуск сервера, или что-то требующее монопольного доступа, то все твои фоновые превратятся в тыкву.
|
|||
16
acht
13.01.22
✎
17:21
|
(15)+ Кстати можно в метаданных сделать вообще одно регламентное. А по нему программно создавать несколько экземпляров с разными расписаниями и параметрами, переключать варианты 1,2,3 методы через параметры.
|
|||
17
Kassern
13.01.22
✎
17:24
|
(0) Запускать каждый день рег задание в 5 утра. А в самой процедуре, если Текущий день между 10 и 17 и статус в регистре не выполнен, тогда выполнять и сделать запись в регистре.
|
|||
18
Serg_1960
13.01.22
✎
17:28
|
Чисто теоретически рассуждая, регламентное задание может самостоятельно изменять своё собственное расписание и/или устанавливать время следующего своего запуска.
|
|||
19
Asmody
13.01.22
✎
17:29
|
(17) а завтра скажут, что надо не с 10 по 17, а с 5 по 20 и повторять через 2 дня. Код менять?
|
|||
20
Kassern
13.01.22
✎
17:30
|
(19) Использовать хранилище настроек для внешней обработки с рег заданием. там же и хранить нужные варианты запуска.
|
|||
21
Kassern
13.01.22
✎
17:32
|
(19) "каждый 2-й день" легко в расписании настраивается, а числа выполнения, как и писал в (20) можно хранить в настройках
|
|||
22
Asmody
13.01.22
✎
17:33
|
(20) ну т.е. ещё написать своё расписание с редактором к этому делу
|
|||
23
Kassern
13.01.22
✎
17:37
|
(22) только в том случае, когда стандартное не устраивает. Через день, или в определенные дни, месяцы легко через расписание поддаются. А вот различные проверки, а успешно ли отработало задание, а все ли записалось, или пришел ли положительный ответ после рег задания, лучше хранить в регистре и с ним сверяться для понимания, надо ли снова выполнять. Всякая экзотика, мол 5 дней выполняем а потом забиваем, только через хранение таковых ограничителей в базе. Стандартное расписание емнип таких возможностей не дает.
|
|||
24
ptiz
13.01.22
✎
17:38
|
(0) Рег задания вообще любят стартовать когда захотят. Если нужна жесткая привязка ко времени - лучше проверять кодом.
|
|||
25
Kassern
13.01.22
✎
17:43
|
в вашем случае (0) Это 2 параметра в хранилище настроек рег задания (если мы про справочник внешних обработок) и простенький РС где измерением будет дата, а ресурсом булево. Плюсом будет история у вас, когда задание запускалось и когда выполнилось. Если история не нужно, то можно в настройках хранить месяц последнего выполнения, тогда и РС не нужен
|
|||
26
Serg_1960
14.01.22
✎
09:49
|
(19) Если условия так часто изменяются - то их нужно хранить "во вне" обработки в "легкодоступном" для изменения месте.
|
|||
27
Asmody
14.01.22
✎
09:58
|
(26) Они меняются, может, и не часто. Но надо, чтобы их смог поменять условный "неодинесник", пусть и специально обученный.
|
|||
28
Serg_1960
14.01.22
✎
12:19
|
(27) Не в тему, но у меня некоторые технологи и конструкторы могут изменять формулы расчета количества материала в спецификациях УПП. Фишка в том, что формулы мною были переделаны в тексты алгоритмов 1С. Имхо, простейшие конструкции алгоритмов должны понимать любые инженеры с высшим образованием.
|
|||
29
Kassern
14.01.22
✎
12:21
|
(28) А потом все это дело через "Выполнить" работает?
|
|||
30
Serg_1960
14.01.22
✎
12:30
|
(29) Угу :( Уж больно много всякий "если" зависимостей параметров было, чтобы их можно было указать типовой формулой.
|
|||
31
Kassern
14.01.22
✎
12:47
|
(30) а не боитесь, что юзвер туда воткнет следующее:
Выборка=Документы.РеализацияТоваровУслуг.Выбрать(); Пока Выборка.Следующий() Цикл Док=Выборка.ПолучитьОбъект(); Док.УстановитьПометкуУдаления(Не Док.ПометкаУдаления) КонецЦикла Ну или через временное хранилище отправит, что-нибудь веселое на сервак?) |
|||
32
Serg_1960
14.01.22
✎
12:55
|
(31) Не боюсь :) Это легко блокируется, контролируется, выявляется и наказывается :)
|
|||
33
Kassern
14.01.22
✎
13:15
|
(32) Прям таки легко?
Как заблокировать бесконечный цикл, который будет через временное хранилище передавать на сервер сгенерированные файлы и сохранять их там? |
|||
34
Kassern
14.01.22
✎
13:15
|
Ведь все взаимодействие с сервером будет выполняться через юзвера агента сервера 1с
|
|||
35
Serg_1960
14.01.22
✎
13:25
|
(33) Ваши страхи беспочвенны - длительный срок использования тому подтверждение. Ограниченный круг юзверей с ограниченными правами в ролях не позволят выполнить иные действия, кроме им разрешённых.
PS: не хотел говорить, ибо это уж совсем не в тему, но... перед записью алгоритм проверяется пробным запуском в специально созданной "среде", где доступ есть только к текущей спецификации и ничему более. Любая возникшая ошибка во время выполнения блокирует запись алгоритма. Как я это сделал - не спрашивайте - не расскажу, это моё ноу-хау :) |
|||
36
Kassern
14.01.22
✎
13:30
|
(35) ну хоть так, а не просто правами юзвера ограничить
|
|||
37
Serg_1960
14.01.22
✎
13:36
|
(36) На ролях и правах вся система доступа к данным в типовых конфигурациях реализуется - и чего оно вам не нравится, не представляю. "Гы-Гы"(с) :)
|
|||
38
Kassern
14.01.22
✎
13:40
|
(35) раз речь идет о формулах, чем вам не подошел метод Вычислить? Там так же можно условие воткнуть
|
|||
39
Kassern
14.01.22
✎
13:42
|
(37) как с помощью роли/прав запретить юзверу создавать временные файлы на сервере 1с? При этом не поломав работу с базой
|
|||
40
Kassern
14.01.22
✎
13:47
|
Как запретить использовать НайтиФайлы() на сервере? Про http запросы надо уже файрволом настраивать, стандартные права не запрещают делать http запросы, не всегда можно изолировать 1ску от инета. Пишите про права и роли, а сами специальную среду создаете, на всякий случай))
|
|||
41
Serg_1960
14.01.22
✎
13:56
|
(38) Это не совсем "формулы" - это "полноценные" алгоритмы обработки, которая имеет доступ чтения/записи к заранее определенным переменным (это часть вышеуказанной "среды"). Вот, например:
Если ШифрКорпуса = "С" Тогда Если Глубина_L = 20 Тогда НаЛенту56 = (Глубина_L + 36) * (Высота_А + Ширина_В + 7) * 2 * 7.85 * 0.80 * 1.005 * КвадратныеМетры; ИначеЕсли Глубина_L = 48 Тогда НаЛенту84 = (Глубина_L + 36) * (Высота_А + Ширина_В + 7) * 2 * 7.85 * 0.80 * 1.005 * КвадратныеМетры; ИначеЕсли Глубина_L = 45 Тогда НаЛенту84 = (48 + 36) * (Высота_А + Ширина_В + 7) * 2 * 7.85 * 0.80 * 1.005 * КвадратныеМетры; ИначеЕсли Глубина_L = 100 Тогда НаЛенту136 = (Глубина_L + 36) * (Высота_А + Ширина_В + 7) * 2 * 7.85 * 0.80 * 1.005 * КвадратныеМетры; Иначе НаОцинковку = (Глубина_L + 36) * (Высота_А + Ширина_В + 7) * 2 * 7.85 * 0.80 * 1.03 * КвадратныеМетры; КонецЕсли; Иначе //Если Глубина_L < 50 Тогда ТолщинаКартона = 1.00; ВесКартона = 1.00; //Иначе // ТолщинаКартона = 1.50; // ВесКартона = 1.63; //КонецЕсли; Если Высота_А < 306 И Ширина_В < 306 Тогда НаКартон = (Глубина_L + 50) * (Высота_А * 2 + Ширина_В * 2 + 13) * ТолщинаКартона * ВесКартона * 1.25 * КвадратныеМетры; Иначе НаКартон = (Глубина_L + 50) * (Высота_А + Ширина_В + 21) * 2 * ТолщинаКартона * ВесКартона * 1.25 * КвадратныеМетры; КонецЕсли; КонецЕсли; Если Глубина_L<=50 Тогда НаЗаклепки=8; Иначе НаЗаклепки=12; КонецЕсли; |
|||
42
Serg_1960
14.01.22
✎
14:01
|
В "формуле" используются предварительно рассчитанные параметры изделия (ширина, высота, глубина и т.д.), а переменные типа "На***" (НаЛенту, НаЗаклепки и т.д.) - ассоциируются с материалами спецификации, которые будут записаны в спецификацию "вне" алгоритма после его выполнения.
|
|||
43
Kassern
14.01.22
✎
14:13
|
(42) можно наверное было через обычный запрос эти условия прописать, что то типа:
ВЫБОР КОГДА &ШифрКорпуса = "С" ТОГДА ВЫБОР КОГДА &Глубина_L = 20 ТОГДА (&Глубина_L + 36) * (&Высота_А + &Ширина_В + 7) * 2 * 7.85 * 0.8 * 1.005 * &КвадратныеМетры ...... КОНЕЦ КОНЕЦ КАК НаЛенту56 Можно наверное вообще консоль запросов прикрутить для удобного написания формул с условиями и указанием имен созданных полей. Это все дело хранить в xml схемах. |
|||
44
Kassern
14.01.22
✎
14:15
|
что-то на подобии справочников с сегментами клиентов/номенклатуры.
|
|||
45
Serg_1960
14.01.22
✎
14:23
|
(43) Можно, но сложно, если учесть вышеуказанное условие "но надо, чтобы их смог поменять условный не одинэсник, пусть и специально обученный."(27)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |