Вход | Регистрация
    1  2   

Не умею создавать регламентное задание, помогите.

Не умею создавать регламентное задание, помогите.
Я
   Айрат_116
 
26.07.19 - 09:22
Доброе утро! Подскажите пжл какими вариантами можно сделать такое задание -1) https://wampi.ru/image/62DUzO6  --2)https://wampi.ru/image/62DUMdw
Я понимаю что всех достал здесь(  Но нужен совет. Раньше никогда не делал такое задание.
 
 
   ДенисЧ
 
1 - 26.07.19 - 09:24
Вариант наиболее простой - заплатить мне N тыяч рублей.
   Web00001
 
2 - 26.07.19 - 09:26
(1)Нет. Есть ещё проще. Заплатить мне N+1 тысяч рублей.
   dka80
 
3 - 26.07.19 - 09:31
Создаешь регламентное задание в конфигураторе.
Ставишь расписание на каждый день, например, ночью.
В начале пишешь Если День(ТекущаяДата)<26 ИЛИ День(ТекущаяДата)>27 Тогда Возврат КонецЕсли
Проверяешь 26 число на выходной (например, найдя эту дату в производственном календаре (регистр сведений). Если выходной, то возврат.
Если День=27 и 26 число не выходной, тогда возврат
В коде прописываешь механизмы обмена с САП
   ДенисЧ
 
4 - 26.07.19 - 09:31
(2) N+1 операция сложнее, чем N
   DexterMorgan
 
5 - 26.07.19 - 09:32
Сделаю за N/2
   Джо-джо
 
6 - 26.07.19 - 09:32
(2) Мне N+2 т.р. 3 т.р. верну на карту))
   dka80
 
7 - 26.07.19 - 09:32
(4) зато кратность "тыяч" (см 1) непонятна ))
   Айрат_116
 
8 - 26.07.19 - 09:32
(3) Это да, но там нужно выбрать процедуру которая будет срабатывать
   Mukrob
 
9 - 26.07.19 - 09:33
(4) вы студенты чтоли? ставка эксперта NN+1
   DexterMorgan
 
10 - 26.07.19 - 09:35
(9) можешь считать меня альтруистом
   dka80
 
11 - 26.07.19 - 09:35
(8) ты можешь сказать в чем у тебя проблема? Ты не знаешь как регламентное задание создать, как обеспечить запуск в нужную дату, как написать процедуру обмена с САП?
   ДенисЧ
 
12 - 26.07.19 - 09:36
(9) Предположим N = 0.1
Так что твоё предложение на уровне средней группы детсада...

))
   Айрат_116
 
13 - 26.07.19 - 09:36
(3) Нашел две процедуры. В форме заполнения передачи
Процедура ОсновныеДействияФормыПереформировать(Кнопка)
    
    Если Не ЗначениеЗаполнено(СтатФорма) Тогда
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не указана форма",,"СтатФорма");
        Возврат;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(НачПериода) ИЛИ НЕ ЗначениеЗаполнено(КонПериода) ИЛИ
        НачПериода > КонПериода Тогда
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не правильно задан период",,"НачПериода");    
        Возврат;
    КонецЕсли;
    
    ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("ИДФормы", СтатФорма);
    ПараметрыОтчета.Вставить("Организация", Организация);
    ПараметрыОтчета.Вставить("НачалоПериода", НачалоДня(НачПериода));
    ПараметрыОтчета.Вставить("КонецПериода", КонецДня(КонПериода));
    РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПерезаполнитьОтчетность(ПараметрыОтчета);
    
    Закрыть();
    
КонецПроцедуры

Процедура ОсновныеДействияФормыПередатьВSAP(Кнопка)
    
    КодФормы = РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПолучитьКодФормыПоИДФормы(СтатФорма);
    
    Если ЗначениеЗаполнено(КодФормы) Тогда
        тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоДня(НачПериода), КонецДня(КонПериода));
    КонецЕсли;
    
КонецПроцедуры
   ДенисЧ
 
14 - 26.07.19 - 09:36
(11) С чем  него проблема, могу сказать я. Но не буду.
   Mukrob
 
15 - 26.07.19 - 09:36
(10) дешего не всегда правильно и качественно. ;-) закрыли флуд.
   DexterMorgan
 
16 - 26.07.19 - 09:38
(15) Солнце желтое, трава зеленая
   dka80
 
17 - 26.07.19 - 09:38
(13)
Вот весь твой код
КодФормы = РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПолучитьКодФормыПоИДФормы(СтатФорма);
    
    Если ЗначениеЗаполнено(КодФормы) Тогда
        тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоДня(НачПериода), КонецДня(КонПериода));
    КонецЕсли;

Только каким-нибудь способом определи "СтатФорма":
   Айрат_116
 
18 - 26.07.19 - 09:39
(11) Я не могу понять как сделать. То ли всперва нужна процедура которая будет заполнять все реквизиты автоматом, и потом будет нажимать "Переформировать" а в конце будет срабатывать передать в сап (15)
   dka80
 
19 - 26.07.19 - 09:43
(18) забудь про форму своей обработки. У тебя в регламентном задании никаких форм нет. Будет одна процедура

ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("ИДФормы", СтатФорма);
    ПараметрыОтчета.Вставить("Организация", Организация);
    ПараметрыОтчета.Вставить("НачалоПериода", НачалоДня(ТекущаяДата()));
    ПараметрыОтчета.Вставить("КонецПериода", КонецДня(ТекущаяДата()));
    РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПерезаполнитьОтчетность(ПараметрыОтчета);
    
    
    КодФормы = РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПолучитьКодФормыПоИДФормы(СтатФорма);
    
    Если ЗначениеЗаполнено(КодФормы) Тогда
        тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоДня(НачПериода), КонецДня(КонПериода));
    КонецЕсли;
   dka80
 
20 - 26.07.19 - 09:44
ПараметрыОтчета.Вставить("НачалоПериода", НачалоМесяца(ТекущаяДата()));
   Айрат_116
 
21 - 26.07.19 - 09:49
(20) Что то туго пока что понимаю.
1) действие - Создаю общий модуль
2)  - Создаю процедуру туда пишу то что вы написали
3)- Создаю "Регламетное задание - Привязываю к процедуре - и ставлю даты срабатывания?
   dka80
 
22 - 26.07.19 - 09:53
(21) Да. Только учти (3) и регзадания галочку "Предопределенное" поставь
   Ане4ка1с
 
23 - 26.07.19 - 09:56
(19) Следующий вопрос будет: У меня пишет ошибку "Переменная не определена (СтатФорма)". Что делать?
   Айрат_116
 
24 - 26.07.19 - 09:58
(22) Спасибо) Последний только вопрос как, как проверить работает ли "Задание"? В книжках читал. Ничего не написано, как проверить
   Айрат_116
 
25 - 26.07.19 - 09:58
(23) Не угадали немного)
   hhhh
 
26 - 26.07.19 - 10:04
(24) попробуйте тестовый пример прогнать
   Айрат_116
 
27 - 26.07.19 - 10:06
(23) А нет угадали(
   catena
 
28 - 26.07.19 - 10:10
(27)Ахахах))))
dka80 иди, поциент вернулся.
   Айрат_116
 
29 - 26.07.19 - 10:13
(28) Ужас)) Краснею уже))
   vova1122
 
30 - 26.07.19 - 10:16
(24) Я обычно пишу в начале модуля рег задания Сообщить("Начало рег задан")
а в самом конце Сообщить("Конец рег задан") - по этому и вижу доходит ли до конца
 
 Рекламное место пустует
   Айрат_116
 
31 - 26.07.19 - 10:18
(30) Хороший вариант. Спасибо) Попробую так сделать.
   Айрат_116
 
32 - 26.07.19 - 10:21
Вот так написал, ошибка выходить(
{ОбщийМодуль.тн_ОбменСап.Модуль(16,57)}: Переменная не определена (НачПериода)
        тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоМесяца(<<?>>НачПериода), КонецДня(КонПериода)); (Проверка: Толстый клиент (обычное приложение))

 
Процедура тн_ОбменСап (СтатФорма) Экспорт 
     
    Организация = Справочники.Организации.НайтиПоКоду("000000001");
    
    ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("ИДФормы", СтатФорма);
    ПараметрыОтчета.Вставить("Организация", Организация);
    ПараметрыОтчета.Вставить("НачалоПериода", НачалоМесяца(ТекущаяДата()));
    ПараметрыОтчета.Вставить("КонецПериода", НачалоМесяца(ТекущаяДата()));
    РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПерезаполнитьОтчетность(ПараметрыОтчета);
    
    
    КодФормы = РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПолучитьКодФормыПоИДФормы(СтатФорма);
    
    Если ЗначениеЗаполнено(КодФормы) Тогда
        тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоМесяца(НачПериода), КонецДня(КонПериода));
    КонецЕсли;
    

КонецПроцедуры
   Айрат_116
 
33 - 26.07.19 - 10:22
Дату надо ставить как на скрине? который пользователь заполнял.
   dka80
 
34 - 26.07.19 - 10:22
(32) Удивительно, правда? В (19) по другому написано
   dka80
 
35 - 26.07.19 - 10:24
(24) по хорошему, все регламентные задания должны записывать результаты своей работы в журнал регистрации. ЗаписьЖурналаРегистрации
   dka80
 
36 - 26.07.19 - 10:24
(32) соберись, тряпка! нам немного осталось
   Айрат_116
 
37 - 26.07.19 - 10:26
(36) Ахаха))
   dka80
 
38 - 26.07.19 - 10:26
(30) и куда это у тебя регзадание сообщение выводит?
   Айрат_116
 
39 - 26.07.19 - 10:30
(34) Не понял. Что подругому написано ???
   Айрат_116
 
40 - 26.07.19 - 10:31
(34) Это про дату?
   dka80
 
41 - 26.07.19 - 10:31
(39) не твое это...

 тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоМесяца(ТекущаяДата()), КонецДня(ТекущаяДата()));
   Айрат_116
 
42 - 26.07.19 - 10:34
(41) Может быть.
   Айрат_116
 
43 - 26.07.19 - 10:41
(41) Спасибо) Написал, ошибок пока нет вроде
   Айрат_116
 
45 - 26.07.19 - 10:45
(44) Да, я щас понял в чем была проблема.
   Джо-джо
 
46 - 26.07.19 - 10:46
(45) В неверной профориентации?))
   dka80
 
47 - 26.07.19 - 10:49
(44) а я специально не стал это говорить ))
   vova1122
 
48 - 26.07.19 - 10:50
(38) рег задания в файловом варианте. для теста
   catena
 
49 - 26.07.19 - 10:54
(47)Ок, сохранила интригу)
   Айрат_116
 
50 - 26.07.19 - 11:05
(49) Давайте без интриг пжл=)
   Айрат_116
 
51 - 26.07.19 - 11:15
Последний вопрос)
Подскажите еще как  настройки поставить?  https://wampi.ru/image/62DSTaz

Как поставить такое условие? чтоб если выходной 25-26 тогда 27 чтоб срабатывала.


Нужно чтобы по регламентному заданию данные по КПЭ передавались на 26 число на конец рабочего дня, то есть ежемесячно 26 числа следующего за отчетным периодом. (Пример 26.07.2019 данные передавались за период 01.06.2019-30.06.2019). А если 25-26 числа месяца на выходной выпадают то точно 27.
   dka80
 
52 - 26.07.19 - 11:16
(51) я тебе в (3) что писал про это?
   vova1122
 
53 - 26.07.19 - 11:19
(50) так все работает или есть еще проблемы?
Кстати на будущее: из рег задание недоступны "ПараметрыСеанса". В свое время с этим долго выяснял
   Айрат_116
 
54 - 26.07.19 - 11:23
(52) Увидел.Спасибо
   vova1122
 
55 - 26.07.19 - 11:24
(51) на первой закладке нужно поставить "каждый день". А чтобы виполнялось в в не выходные дни, (25 или 26 или 27...) нужно писать в коде
   Айрат_116
 
56 - 26.07.19 - 11:28
(55) Хорошо понял, спасибо)
   Айрат_116
 
57 - 29.07.19 - 09:15
Доброе утро! Подскажите еще одну вещь. Написал запрос для проверки на выходные дни. А как проверить незнаю(
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня
                   |ИЗ
                   |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                   |ГДЕ
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)";
    Результат = Запрос.Выполнить();
    
    Если Результат.Колонки.ВидДня =  Тогда
   Айрат_116
 
58 - 29.07.19 - 09:28
Как написать так чтоб. Если 25,26 выходные тогда 27
Если 26,27 выходной тогда 28?
   catena
 
59 - 29.07.19 - 10:54
(58)У тебя в запросе только один вид дня, для чего его дополнительно проверять? Сделай запрос по нерабочим дням и на конкретную дату, которую проверяешь. Тогда будет Если Результат.Пустой(), значит твоя дата рабочая.
   Айрат_116
 
60 - 29.07.19 - 10:59
(59) Хорошо. щас попробую напишу такой запрос.
   Айрат_116
 
61 - 29.07.19 - 11:27
(59) https://wampi.ru/image/62mLxKY Вот такая ошибка выходит( Когда я ставлю условие по не рабочим дням
   catena
 
62 - 29.07.19 - 11:52
(61)Нерабочий день - это как рабочий, только не....
   Айрат_116
 
63 - 29.07.19 - 12:00
(62) Это понятно. Что не...
Суббота и воскр и праздники вроде как входит в это "НЕ"
   catena
 
64 - 29.07.19 - 12:24
(63)НЕ твое это, бросай...

В языке запросов используются условия отбора, в соответствии с которыми осуществляется отбор данных в предложениях ГДЕ, ИМЕЮЩИЕ и СОЕДИНЕНИЕ. Условия описываются по следующим правилам:

В простейшем случае условие является выражением, результат которого имеет значение логического типа.

Условия могут определяться и как более сложные логические выражения, где фигурируют простые логические выражения, соединенные между собой с помощью логических операторов И, ИЛИ, НЕ.
   Айрат_116
 
65 - 29.07.19 - 13:15
(64) Хорошо. Спасибо
   Айрат_116
 
66 - 31.07.19 - 09:53
Доброе утро! Подскажите  пжл как написать так чтоб
Если 27 сработала тогда 28 числа возврат 
или 26 сработала 27,28 тогда возврат

Вот такой код

Если День("20191127")<26 ИЛИ День("20191127")>28 Тогда 
    Сообщить("Возврат1");
        Возврат; 
    КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    РегламентированныйПроизводственныйКалендарь.ВидДня,
    |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
    |ИЗ
    |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
    |ГДЕ
    |    Не РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
    |    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря"
    ;
    Запрос.УстановитьПараметр("ДатаКалендаря",Дата("20191127"));
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда
        Сообщить("Выходной");
        Возврат;
    КонецЕсли;
    Если День("20191127") = 28 и 27 и Не Результат.Пустой() Тогда
        Сообщить("Проверка 27-28");
        Возврат;
    КонецЕсли;
    Сообщить("Финиш");
 
 Рекламное место пустует
   catena
 
67 - 31.07.19 - 10:13
Тут все сложно. Тут запоминать придется, когда сработало.
   Айрат_116
 
68 - 31.07.19 - 10:23
(67) Дело в том что 
Если я 28 ноября 2019 это четверг то возврат происходит
Вроде как правильно 

А когда ставлю 28 октября 2019 это понедельник 
То тоже возврат
   Айрат_116
 
69 - 31.07.19 - 10:24
Я вроде понял в чем дело. А как сделать. Незнаю(
   hhhh
 
70 - 31.07.19 - 10:42
(69) там же в расписании есть галочки Понедельник, Вторник и т.д. Проставьте их и всё. Чего вы чудачите?
   Айрат_116
 
71 - 31.07.19 - 10:49
(70) Ну две ситуации может быть
например
Я запускаю 26
1) 26 попал на субботу тогда нужно 28 как это с галочками там сделать?
Или
2)26 попал на воскресенье тогда 27 это тоже как сделать с галочками там?
   hhhh
 
72 - 31.07.19 - 10:53
(71) ну 26 галочка не стоит, значит не сработает. 27-го в понедельник сработает
   Айрат_116
 
73 - 31.07.19 - 10:55
Щас попробую. Покажу как сделал.
   dka80
 
74 - 31.07.19 - 10:58
Опять ты????
   Айрат_116
 
75 - 31.07.19 - 10:59
(74) =)
   Айрат_116
 
76 - 31.07.19 - 11:00
(72) Вот сделал https://wampi.ru/image/623J8dP верно?
   vova1122
 
77 - 31.07.19 - 11:00
Нет. Галочками по дням не сработает. Если 26 попадет например на понедельник, тогда и 26 и 27 сработает (а по условию задачи недолжно)
   vova1122
 
78 - 31.07.19 - 11:03
(76) на первой закладке поставь 1 (чтоб писало "каждый день") но думаю не сработает так как нужно по задаче.
Думаю бедет выполнятся только 26 числа (и + если это не выходные)
   catena
 
79 - 31.07.19 - 11:03
(72)Впрос в том, если 26,27,28 - будние дни, как не отправлять 27 и 28
   hhhh
 
80 - 31.07.19 - 11:06
(79) вообще-то этих дней неисоизмеримо мало: 12 дней в году. Тупо забить 60 значений в массив на ближайшие 5 лет и забыть.
   Айрат_116
 
81 - 31.07.19 - 11:08
Праздники тоже входит в выходные
   catena
 
82 - 31.07.19 - 11:08
(80)Как вариант для ТС - отличное решение :)
   hhhh
 
83 - 31.07.19 - 11:08
(79) а так элементарную проверку
если 26 суббота, то выводить 28
если 26 воскресенье, то выводить 27
иначе выводить 26
   vova1122
 
84 - 31.07.19 - 11:08
(80) Проще проверить на ДеньНедели(ТекущаяДата()) и игратся с этими значениями
   hhhh
 
85 - 31.07.19 - 11:10
(81) у вас какая страна? где это праздник 26го?
   vova1122
 
86 - 31.07.19 - 11:10
(81) Это вопрос? или дополнительное условие которого в (0) небыло.
   Айрат_116
 
87 - 31.07.19 - 11:12
(86) Это в регистре есть
   Айрат_116
 
88 - 31.07.19 - 11:14
Я сделал запрос по совету (59) по не рабочим дням
   vova1122
 
89 - 31.07.19 - 11:15
Если конфигурация нетиповая, то еще такой вариант я бы сделал: Добавил бы контстанту ДатаПоследнейПередачи. И проверял сколько (Если дата между 26-28 числами) дней прошло с последней передачи. И если больше4 дня, то передавать
   dka80
 
90 - 31.07.19 - 11:16
Если День(ТекущаяДата())<26 ИЛИ День(ТекущаяДата())>27 Тогда Возврат КонецЕсли;
Если ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26) Тогда Возврат КонецЕсли;
Если Не ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26) И День(ТекущаяДата())=27 Тогда Возврат КонецЕсли;

Далее твой код по передаче

Функция ЭтоВыходнойДень(ПроверяемаяДата)
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня
                   |ИЗ
                   |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                   |ГДЕ
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
                   |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря= &ПроверяемаяДата";
Запрос.УстановитьПараметр("ПроверяемаяДата", ПроверяемаяДата);
    Результат = Запрос.Выполнить();
Возврат Результат.Пустой();
КонецФункции
   Айрат_116
 
91 - 31.07.19 - 11:23
(90) Спасибо. Щас попробую проверить.
   vova1122
 
92 - 31.07.19 - 11:26
(90) условия невырны. Во первыых период с 26 по 28. Во вторых если 26 будет выходной, то код ниже в ТекущемМесяце вобще никогда не выполнится
   dka80
 
93 - 31.07.19 - 11:28
(92) ТЗ в (0) смотрел? 27 крайняя дата когда должен быть отправлен отчет
   Айрат_116
 
94 - 31.07.19 - 11:32
(93) 28 сказали. просто может быть 26-27 выходной тогда 28 выполнять
   Айрат_116
 
95 - 31.07.19 - 11:32
(90) Ошибка только одна выходит(

{ВнешнийОтчет.ОсвоениеИнвестиционныхПроектов.Форма.ФормаОтчета.Форма(52)}: Преобразование значения к типу Булево не может быть выполнено
    Если Не ЭтоВыходнойДень(Дата(Год("20191126"), Месяц("20191126"), 26) И День("20191126")=27) Тогда
   vova1122
 
96 - 31.07.19 - 11:35
(93) что это меняет, всеравно нужно минимум три дня. А с учетом допУсловия (нужно учитывать также и праздники) период нужно увеличить.
Ну и по условию что ты создал, когда виполнится выгрузка, если 26 -это субота или воскресенье?
   vova1122
 
97 - 31.07.19 - 11:39
(95) что возвращает твоя функция ЭтоВыходнойДень ?
   dka80
 
98 - 31.07.19 - 11:39
(96) по моему условию выполнится 27 числа
   dka80
 
99 - 31.07.19 - 11:40
(95) Ну включи немного голову
Дата оформляется опострофами, а не ковычками. Правильно '20191126'
   dka80
 
100 - 31.07.19 - 11:43
(94) в ТЗ у тебя было написано, что 25,26 может быть выходной и выполнять надо 27. Раз у тебя новые вводные, ну прибавь единичку ко всем цифрам в (90)
  1  2   

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