Имя: Пароль:
1C
1С v8
Расписание рег.задания: с 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)