Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Расписание рег.задания: с 10 по 17 число каждого месяца

Расписание рег.задания: с 10 по 17 число каждого месяца
Я
   Asmody
 
13.01.22 - 16:49
Как бы исхитриться и накрутить такое расписание для рег.задания:

10 числа каждого месяца в 5 утра проверить условие.
Если оно выполняется, то сделать некое действие.
Если не выполняется, то попробовать ещё раз завтра в то же время, но только если еще не 17 число (типа после 17 уже можно не возиться).

Чёт и так кручу настройки расписания и эдак..

Можно, конечно, заморочиться, и в самом рег.задании плодить фоновые в зависимости от. Но чёт как-то так себе выглядит
   Asmody
 
1 - 13.01.22 - 16:50
ЗЫ: метод-исполнитель при невыполнении условия кидает исключение
   ДенисЧ
 
2 - 13.01.22 - 16:51
если НачалоДня(ТекущаяДата()) ...
   Naumov
 
3 - 13.01.22 - 16:52
добавь константу -флаг. (или еще что)
в обработчике проверяй и флаг, и дату, и прочее запуска.
   mikecool
 
4 - 13.01.22 - 16:52
расписание же можно по дням настроить, емнип
а метод уже пусть отрабатывает
   Базис
 
5 - 13.01.22 - 16:55
Запуск по всем дням, до 10 и после 17 NOP.
   pechkin
 
6 - 13.01.22 - 16:56
интервал при неудаче поставь сутки
   pechkin
 
7 - 13.01.22 - 16:58
хотя это только в конфигураторе можно
   Asmody
 
8 - 13.01.22 - 17:01
(4)(5) где?
есть детальная настройка в течение дня. но "детальной настройки в течение месяца" я не вижу.

(6) это есть. стоит перезапускать при аварии 7 раз, через 86400.

Сначала тоже такой лихой поставил на вкладке "Месячное" выполнять в 10 день месяца. А он 10 выполнился разок и всё! Теперь висит как активное с ошибкой, ждет следующего 10 числа.
   pechkin
 
9 - 13.01.22 - 17:08
(8) можно несколько расписаний делать
   acht
 
10 - 13.01.22 - 17:08
(0) Если хочешь все гибко только через настройку регламентных, без последующих изменений в коде, то через константу - как в (3) предлагают:

1) Регламентное, которое 10 числа взводит константу
2) Регламентное, которое 17 числа сбрасывает константу
3) Регламентное, которое каждый день в 5 утра читает константу и по ее состоянию что-то делает или не делает.
4) Настраивай, как душе угодно.
   Базис
 
11 - 13.01.22 - 17:09
Каждый день запускай. Но не каждый день работай. NOP - это ассемблерная команда "Ничего не делай".
   pechkin
 
12 - 13.01.22 - 17:09
(8) а вы сервер не перезапускаете случайно? а то наверняка счетчик сбрасывается
   Asmody
 
13 - 13.01.22 - 17:13
(10) как-то сложно получается. тогда уж прямо фоновыми рулить, чтобы лишний раз планировщик не трепыхался
   Asmody
 
14 - 13.01.22 - 17:14
а то в типовых и так этих рег.заданий как грязи на каждый чих
   acht
 
15 - 13.01.22 - 17:17
(13) Зато это самовосстанавливающаяся схема. Если у тебя за эти 7 дней будет перезапуск сервера, или что-то требующее монопольного доступа, то все твои фоновые превратятся в тыкву.
   acht
 
16 - 13.01.22 - 17:21
(15)+ Кстати можно в метаданных сделать вообще одно регламентное. А по нему программно создавать несколько экземпляров с разными расписаниями и параметрами, переключать варианты 1,2,3 методы через параметры.
   Kassern
 
17 - 13.01.22 - 17:24
(0) Запускать каждый день рег задание в 5 утра. А в самой процедуре, если Текущий день между 10 и 17 и статус в регистре не выполнен, тогда выполнять и сделать запись в регистре.
   Serg_1960
 
18 - 13.01.22 - 17:28
Чисто теоретически рассуждая, регламентное задание может самостоятельно изменять своё собственное расписание и/или устанавливать время следующего своего запуска.
   Asmody
 
19 - 13.01.22 - 17:29
(17) а завтра скажут, что надо не с 10 по 17, а с 5 по 20 и повторять через 2 дня. Код менять?
   Kassern
 
20 - 13.01.22 - 17:30
(19) Использовать хранилище настроек для внешней обработки с рег заданием. там же и хранить нужные варианты запуска.
   Kassern
 
21 - 13.01.22 - 17:32
(19) "каждый 2-й день" легко в расписании настраивается, а числа выполнения, как и писал в (20) можно хранить в настройках
   Asmody
 
22 - 13.01.22 - 17:33
(20) ну т.е. ещё написать своё расписание с редактором к этому делу
   Kassern
 
23 - 13.01.22 - 17:37
(22) только в том случае, когда стандартное не устраивает. Через день, или в определенные дни, месяцы легко через расписание поддаются. А вот различные проверки, а успешно ли отработало задание, а все ли записалось, или пришел ли положительный ответ после рег задания, лучше хранить в регистре и с ним сверяться для понимания, надо ли снова выполнять. Всякая экзотика, мол 5 дней выполняем а потом забиваем, только через хранение таковых ограничителей в базе. Стандартное расписание емнип таких возможностей не дает.
   ptiz
 
24 - 13.01.22 - 17:38
(0) Рег задания вообще любят стартовать когда захотят. Если нужна жесткая привязка ко времени - лучше проверять кодом.
   Kassern
 
25 - 13.01.22 - 17:43
в вашем случае (0) Это 2 параметра в хранилище настроек рег задания (если мы про справочник внешних обработок) и простенький РС где измерением будет дата, а ресурсом булево. Плюсом будет история у вас, когда задание запускалось и когда выполнилось. Если история не нужно, то можно в настройках хранить месяц последнего выполнения, тогда и РС не нужен
   Serg_1960
 
26 - 14.01.22 - 09:49
(19) Если условия так часто изменяются - то их нужно хранить "во вне" обработки в "легкодоступном" для изменения месте.
   Asmody
 
27 - 14.01.22 - 09:58
(26) Они меняются, может, и не часто. Но надо, чтобы их смог поменять условный "неодинесник", пусть и специально обученный.
   Serg_1960
 
28 - 14.01.22 - 12:19
(27) Не в тему, но у меня некоторые технологи и конструкторы могут изменять формулы расчета количества материала в спецификациях УПП.  Фишка в том, что формулы мною были переделаны в тексты алгоритмов 1С. Имхо, простейшие конструкции алгоритмов должны понимать любые инженеры с высшим образованием.
   Kassern
 
29 - 14.01.22 - 12:21
(28) А потом все это дело через "Выполнить" работает?
   Serg_1960
 
30 - 14.01.22 - 12:30
(29) Угу :( Уж больно много всякий "если" зависимостей параметров было, чтобы их можно было указать типовой формулой.
 
 
   Kassern
 
31 - 14.01.22 - 12:47
(30) а не боитесь, что юзвер туда воткнет следующее:
Выборка=Документы.РеализацияТоваровУслуг.Выбрать();
Пока Выборка.Следующий() Цикл
 Док=Выборка.ПолучитьОбъект();
 Док.УстановитьПометкуУдаления(Не Док.ПометкаУдаления)
КонецЦикла

Ну или через временное хранилище отправит, что-нибудь веселое на сервак?)
   Serg_1960
 
32 - 14.01.22 - 12:55
(31) Не боюсь :) Это легко блокируется, контролируется, выявляется и наказывается :)
   Kassern
 
33 - 14.01.22 - 13:15
(32) Прям таки легко?
Как заблокировать бесконечный цикл, который будет через временное хранилище передавать на сервер сгенерированные файлы и сохранять их там?
   Kassern
 
34 - 14.01.22 - 13:15
Ведь все взаимодействие с сервером будет выполняться через юзвера агента сервера 1с
   Serg_1960
 
35 - 14.01.22 - 13:25
(33) Ваши страхи беспочвенны - длительный срок использования тому подтверждение. Ограниченный круг юзверей с ограниченными правами в ролях не позволят выполнить иные действия, кроме им разрешённых.
PS: не хотел говорить, ибо это уж совсем не в тему, но... перед записью алгоритм проверяется пробным запуском в специально созданной "среде", где доступ есть только к текущей спецификации и ничему более. Любая возникшая ошибка во время выполнения блокирует запись алгоритма. Как я это сделал - не спрашивайте - не расскажу, это моё ноу-хау :)
   Kassern
 
36 - 14.01.22 - 13:30
(35) ну хоть так, а не просто правами юзвера ограничить
   Serg_1960
 
37 - 14.01.22 - 13:36
(36) На ролях и правах вся система доступа к данным в типовых конфигурациях реализуется - и чего оно вам не нравится, не представляю. "Гы-Гы"(с) :)
   Kassern
 
38 - 14.01.22 - 13:40
(35) раз речь идет о формулах, чем вам не подошел метод Вычислить? Там так же можно условие воткнуть
   Kassern
 
39 - 14.01.22 - 13:42
(37) как с помощью роли/прав запретить юзверу создавать временные файлы на сервере 1с? При этом не поломав работу с базой
   Kassern
 
40 - 14.01.22 - 13:47
Как запретить использовать НайтиФайлы() на сервере? Про http запросы надо уже файрволом настраивать, стандартные права не запрещают делать http запросы, не всегда можно изолировать 1ску от инета. Пишите про права и роли, а сами специальную среду создаете, на всякий случай))
   Serg_1960
 
41 - 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;
КонецЕсли;
   Serg_1960
 
42 - 14.01.22 - 14:01
В "формуле" используются предварительно рассчитанные параметры изделия (ширина, высота, глубина и т.д.), а переменные типа "На***" (НаЛенту, НаЗаклепки и т.д.) - ассоциируются с материалами спецификации, которые будут записаны в спецификацию "вне" алгоритма после его выполнения.
   Kassern
 
43 - 14.01.22 - 14:13
(42) можно наверное было через обычный запрос эти условия прописать, что то типа:
ВЫБОР
 КОГДА &ШифрКорпуса = "С"
  ТОГДА ВЫБОР
   КОГДА &Глубина_L = 20
    ТОГДА (&Глубина_L + 36) * (&Высота_А + &Ширина_В + 7) * 2 * 7.85 * 0.8 * 1.005 * &КвадратныеМетры
......
   КОНЕЦ
КОНЕЦ КАК НаЛенту56
Можно наверное вообще консоль запросов прикрутить для удобного написания формул с условиями и указанием имен созданных полей. Это все дело хранить в xml схемах.
   Kassern
 
44 - 14.01.22 - 14:15
что-то на подобии справочников с сегментами клиентов/номенклатуры.
   Serg_1960
 
45 - 14.01.22 - 14:23
(43) Можно, но сложно, если учесть вышеуказанное условие "но надо, чтобы их смог поменять условный не одинэсник, пусть и специально обученный."(27)


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.