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

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

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

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

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


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

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

тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоМесяца(ТекущаяДата()), КонецДня(ТекущаяДата()));
42 Айрат_116
 
26.07.19
10:34
(41) Может быть.
43 Айрат_116
 
26.07.19
10:41
(41) Спасибо) Написал, ошибок пока нет вроде
45 Айрат_116
 
26.07.19
10:45
(44) Да, я щас понял в чем была проблема.
46 Джо-джо
 
26.07.19
10:46
(45) В неверной профориентации?))
47 dka80
 
26.07.19
10:49
(44) а я специально не стал это говорить ))
48 vova1122
 
26.07.19
10:50
(38) рег задания в файловом варианте. для теста
49 catena
 
26.07.19
10:54
(47)Ок, сохранила интригу)
50 Айрат_116
 
26.07.19
11:05
(49) Давайте без интриг пжл=)
51 Айрат_116
 
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.
52 dka80
 
26.07.19
11:16
(51) я тебе в (3) что писал про это?
53 vova1122
 
26.07.19
11:19
(50) так все работает или есть еще проблемы?
Кстати на будущее: из рег задание недоступны "ПараметрыСеанса". В свое время с этим долго выяснял
54 Айрат_116
 
26.07.19
11:23
(52) Увидел.Спасибо
55 vova1122
 
26.07.19
11:24
(51) на первой закладке нужно поставить "каждый день". А чтобы виполнялось в в не выходные дни, (25 или 26 или 27...) нужно писать в коде
56 Айрат_116
 
26.07.19
11:28
(55) Хорошо понял, спасибо)
57 Айрат_116
 
29.07.19
09:15
Доброе утро! Подскажите еще одну вещь. Написал запрос для проверки на выходные дни. А как проверить незнаю(

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

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

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

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

Вот такой код

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

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

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

если 26 суббота, то выводить 28
если 26 воскресенье, то выводить 27
иначе выводить 26
84 vova1122
 
31.07.19
11:08
(80) Проще проверить на ДеньНедели(ТекущаяДата()) и игратся с этими значениями
85 hhhh
 
31.07.19
11:10
(81) у вас какая страна? где это праздник 26го?
86 vova1122
 
31.07.19
11:10
(81) Это вопрос? или дополнительное условие которого в (0) небыло.
87 Айрат_116
 
31.07.19
11:12
(86) Это в регистре есть
88 Айрат_116
 
31.07.19
11:14
Я сделал запрос по совету (59) по не рабочим дням
89 vova1122
 
31.07.19
11:15
Если конфигурация нетиповая, то еще такой вариант я бы сделал: Добавил бы контстанту ДатаПоследнейПередачи. И проверял сколько (Если дата между 26-28 числами) дней прошло с последней передачи. И если больше4 дня, то передавать
90 dka80
 
31.07.19
11:16
Если День(ТекущаяДата())<26 ИЛИ День(ТекущаяДата())>27 Тогда Возврат КонецЕсли;
Если ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26) Тогда Возврат КонецЕсли;
Если Не ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26) И День(ТекущаяДата())=27 Тогда Возврат КонецЕсли;

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

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

{ВнешнийОтчет.ОсвоениеИнвестиционныхПроектов.Форма.ФормаОтчета.Форма(52)}: Преобразование значения к типу Булево не может быть выполнено
    Если Не ЭтоВыходнойДень(Дата(Год("20191126"), Месяц("20191126"), 26) И День("20191126")=27) Тогда
96 vova1122
 
31.07.19
11:35
(93) что это меняет, всеравно нужно минимум три дня. А с учетом допУсловия (нужно учитывать также и праздники) период нужно увеличить.
Ну и по условию что ты создал, когда виполнится выгрузка, если 26 -это субота или воскресенье?
97 vova1122
 
31.07.19
11:39
(95) что возвращает твоя функция ЭтоВыходнойДень ?
98 dka80
 
31.07.19
11:39
(96) по моему условию выполнится 27 числа
99 dka80
 
31.07.19
11:40
(95) Ну включи немного голову
Дата оформляется опострофами, а не ковычками. Правильно '20191126'
100 dka80
 
31.07.19
11:43
(94) в ТЗ у тебя было написано, что 25,26 может быть выходной и выполнять надо 27. Раз у тебя новые вводные, ну прибавь единичку ко всем цифрам в (90)
101 vova1122
 
31.07.19
11:44
(98) Уверен?
Если ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26) Тогда Возврат КонецЕсли;
Вот эта строка не пропустит дальше. Ты же проверяешь является ли 26 число выходным (но если ТекущаяДата например 27 число, то это не отменяет того факта что 26 - выходной и по твоему условию всеравно будет Возврат)
102 dka80
 
31.07.19
11:47
(101) Если ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26) И День(ТекущаяДата())=26 Тогда Возврат КонецЕсли;
Пусть ТС немного голову включит
103 Айрат_116
 
31.07.19
11:59
(99) Разницу я не увидел
104 vova1122
 
31.07.19
12:04
(103) больше конкретики
105 Айрат_116
 
31.07.19
12:07
Что то все равно не хочет получатся(
106 dka80
 
31.07.19
12:10
(105) ты на (103) ответишшь?
107 dka80
 
31.07.19
12:10
точнее на (104)
108 Айрат_116
 
31.07.19
12:11
(106) Извините не увидел
109 Айрат_116
 
31.07.19
12:14
(104) То что дату ставишь хоть в кавычках хоть с опострофами

Разницы нет вроде как
110 Айрат_116
 
31.07.19
12:17
Вот так написал пока
Если День('20191126')<26 ИЛИ День('20191126')>27 Тогда
        Сообщить("1");
        Возврат;
    КонецЕсли;
    Если ЭтоВыходнойДень(Дата(Год('20191126'), Месяц('20191126'), 26)) Тогда
        Сообщить("2");
        Возврат;
    КонецЕсли;
    Если Не ЭтоВыходнойДень(Дата(Год('20191126'), Месяц('20191126'), 26) и День('20191126')=27) Тогда
        Сообщить("3");
        Возврат;
    КонецЕсли;
   Сообщить("Фин");

На второй он возврат не делает
а на 3  на строке Если Не ЭтоВыходнойДень ошибка
111 vova1122
 
31.07.19
12:23
(110) в 3-м напутал с скобками
Если Не ЭтоВыходнойДень(Дата(Год('20191126'), Месяц('20191126'), 26)) и День('20191126')=27 Тогда
112 vova1122
 
31.07.19
12:24
или даже так:
Если Не (ЭтоВыходнойДень(Дата(Год('20191126'), Месяц('20191126'), 26))) и (День('20191126')=27) Тогда
113 Айрат_116
 
31.07.19
12:25
(111) Точно. Щас до "фин" дошла
114 Айрат_116
 
31.07.19
12:26
Щас буду проверять дальше
115 dka80
 
31.07.19
12:29
(112) (День('20191126')=27) точно?
116 dka80
 
31.07.19
12:29
(115) а, или потом это будет заменено на текущаядата()?
117 vova1122
 
31.07.19
12:30
Кстати покажи саму функцию - ЭтоВыходнойДень
118 Айрат_116
 
31.07.19
12:43
(117) Функция ЭтоВыходнойДень(ПроверяемаяДата)
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня
                   |ИЗ
                   |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                   |ГДЕ
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
                   |    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря";
    Запрос.УстановитьПараметр("ДатаКалендаря", Дата('20191126'));
    Результат = Запрос.Выполнить();
Возврат Результат.Пустой();  

КонецФункции
119 dka80
 
31.07.19
12:44
(118) Запрос.УстановитьПараметр("ДатаКалендаря", Дата('20191126'));
Замени на  Запрос.УстановитьПараметр("ДатаКалендаря", ПроверяемаяДата);
120 Айрат_116
 
31.07.19
12:45
(119) Да это ставил
121 Айрат_116
 
31.07.19
12:46
Ааа понял
122 Айрат_116
 
31.07.19
12:54
Только я щас не пойму.
Я поставил 27 мая понедельник
и в итоге возврат 2 происходит.


Если ЭтоВыходнойДень(Дата(Год('20190527'), Месяц('20190527'), 26)) Тогда
        Сообщить("2");
        Возврат;
    КонецЕсли;
    Если Не ЭтоВыходнойДень(Дата(Год('20190527'), Месяц('20190527'), 26)) и День('20190527')=27 Тогда
        Сообщить("3");
        Возврат;
    КонецЕсли;
   Сообщить("Фин");
123 vova1122
 
31.07.19
13:01
(122) читал исправление в (102)  ?
124 Айрат_116
 
31.07.19
13:05
(123) Прочитал
125 Айрат_116
 
31.07.19
13:18
(116) Да это потом на текущую дату заменю
126 Айрат_116
 
31.07.19
13:27
Щас получается так что
если я ставлю  
27 на воскресенье то она возврат не делает.
127 dka80
 
31.07.19
13:45
(126) наверное, потому что 27 мая 2019 это понедельник
128 Айрат_116
 
31.07.19
13:48
(127) Я ставил на 27 октября 2019
129 Айрат_116
 
31.07.19
13:55
(127) Это воскресенье
Если вот так написать
Если  ЭтоВыходнойДень(Дата(Год('20191027'), Месяц('20191027'), 26)) и День('20191027')=27 Тогда
Писать то возврат срабатывает
А так нет
Если Не ЭтоВыходнойДень(Дата(Год('20191027'), Месяц('20191027'), 26)) и День('20191027')=27 Тогда
130 Fish
 
гуру
31.07.19
14:01
(129) Ну так логично. Как ставишь условие, так и срабатывает.
131 Айрат_116
 
31.07.19
14:35
Вот сделал так. Проверял вроде нормально. dka80  vova1122 Спасибо вам большое помогли)
Если День('20190528')<26 ИЛИ День('20190528')>28 Тогда
        Сообщить("1");
        Возврат;
    КонецЕсли;
    Если ЭтоВыходнойДень(Дата(Год('20190528'), Месяц('20190528'), 26)) И   День('20190528')=26 Тогда
        Сообщить("2");
        Возврат;
    КонецЕсли;
    Если  НЕ ЭтоВыходнойДень(Дата(Год('20190528'), Месяц('20190528'), 26)) и День('20190528')=27 Тогда
        Сообщить("3");
        Возврат;
    КонецЕсли;
    Если НЕ ЭтоВыходнойДень(Дата(Год('20190528'), Месяц('20190528'), 27)) и День('20190528')=28 Тогда
        Сообщить("4");
        Возврат;
    КонецЕсли;
    Сообщить("финиш");    
КонецПроцедуры
Функция ЭтоВыходнойДень(ПроверяемаяДата)
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня
                   |ИЗ
                   |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                   |ГДЕ
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
                   |    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря";
    Запрос.УстановитьПараметр("ДатаКалендаря", Дата(ПроверяемаяДата));
    Результат = Запрос.Выполнить();
Возврат Результат.Пустой();  

КонецФункции
132 Greeen
 
31.07.19
14:40
ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)

еще  надо предпраздничные добавить по идее
133 Айрат_116
 
31.07.19
14:46
(132) Вот так?

ВЫБРАТЬ
                   |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня
                   |ИЗ
                   |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                   |ГДЕ
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный)
                   |    И РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
                   |    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря";
134 piter3
 
31.07.19
14:56
Напомните,а что день может быть и рабочим и предпраздничным одновременно?
135 Айрат_116
 
31.07.19
14:57
(134) Например может перед 28 февралём быть
136 Айрат_116
 
31.07.19
14:59
(134) Если 26 воскресенье, 27 понедельник предпраздничный день как бы получается
137 piter3
 
31.07.19
15:03
(136)Открой и посмотри РегламентированныйПроизводственныйКалендарь.Что у тебя может в один деь стоять два варианта: Предпраздничный и Рабочий?
138 Айрат_116
 
31.07.19
15:10
(137) Посмотрел. Все в отдельный дни
Например
29.04.2019 Раб
30.04.2019 Предпраз
01.05.2019 Праздник
139 piter3
 
31.07.19
15:11
(138) Тогда какого рожна у тебя между Предпраздничный и Рабочий стоит условие И?А?
140 Айрат_116
 
31.07.19
15:16
(139) Да в консоле проверил не правильно
141 Greeen
 
31.07.19
15:22
(140) нужный нам день должен быть рабочим ИЛИ предпразничным имелось в виду

Т.е. в запросе должно быть условие не И а ИЛИ =)
                   |ГДЕ
                   |    (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный)
                   |    ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий))
                   |    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря";

но лучше так

                   |ГДЕ
                   |    (РегламентированныйПроизводственныйКалендарь.ВидДня в (ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный),ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий))
                   |    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря";
142 Айрат_116
 
31.07.19
15:26
(141) Спасибо) я в консоле тоже всперва сделал  первый вариант
Но почему то всперва не было ничего. Результат не тот выходил
143 vova1122
 
31.07.19
15:30
Первый и второй вариант дают одинаковый результат. Ты скорее забыл про скобки (для объединения двух условий)
144 Айрат_116
 
31.07.19
15:40
(143) Точно
145 Айрат_116
 
31.07.19
15:54
Итог: Вот так вообщем получилось. Посмотрите пжл. Что может быть не так.

И вот такой настройки поставил: https://wampi.ru/image/628xjli

Процедура тн_РегламетноеЗаданиеОбменSap (СтатФорма) Экспорт
    
    Если День(ТекущаяДата())<26 ИЛИ День(ТекущаяДата())>28 Тогда
        Возврат;
    КонецЕсли;
    Если ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26)) И   День(ТекущаяДата())=26 Тогда
        Возврат;
    КонецЕсли;
    Если ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 27)) И   День(ТекущаяДата())=27 Тогда
        Возврат;
    КонецЕсли;
    Если  НЕ ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26)) и День(ТекущаяДата())=27 Тогда
        Возврат;
    КонецЕсли;
    Если НЕ ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 27)) и День(ТекущаяДата())=28 Тогда
        Возврат;
    КонецЕсли;
    
    Организация = Справочники.Организации.НайтиПоКоду("000000001");
    
    ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("ИДФормы", СтатФорма);
    ПараметрыОтчета.Вставить("Организация", Организация);
    ПараметрыОтчета.Вставить("НачалоПериода", НачалоМесяца(ТекущаяДата()));
    ПараметрыОтчета.Вставить("КонецПериода", КонецМесяца(ТекущаяДата()));
    
    РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПерезаполнитьОтчетность(ПараметрыОтчета);
    
    КодФормы = РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПолучитьКодФормыПоИДФормы(СтатФорма);
    
    Если ЗначениеЗаполнено(КодФормы) Тогда
        тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
    КонецЕсли;
    
КонецПроцедуры
Функция ЭтоВыходнойДень(ПроверяемаяДата)
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня
                   |ИЗ
                   |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                   |ГДЕ
                   |    РегламентированныйПроизводственныйКалендарь.ВидДня в (ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный) ,ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий))
                   |    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря";
    Запрос.УстановитьПараметр("ДатаКалендаря", Дата(ПроверяемаяДата));
    Результат = Запрос.Выполнить();
Возврат Результат.Пустой();  

КонецФункции
146 vova1122
 
31.07.19
15:59
Убери 26 число в настройках. Во первых рег задание будет запускаться только 26-го числа, А во вторых ты в самом коде определил даты когда запускать
147 Айрат_116
 
31.07.19
16:02
(146) Хорошо. Поставил просто что "Каждый день"
148 vova1122
 
31.07.19
16:07
+ Ну и время и один раз в день оставь
149 Айрат_116
 
31.07.19
16:09
(148) Выполнять: каждый день; с 23:00:00 один раз в день
Вот так поставил
150 Айрат_116
 
31.07.19
16:38
(148) Можно еще такой вопрос на всякий случай. Общий модуль. Такие же должны быть галочки?https://wampi.ru/image/62868BY (В книге прочитал что так должно быть)
151 vova1122
 
31.07.19
16:48
(150) У меня  "Обычное приложение" не отмечено, а "Привелигирований" -Отмечено.   Хотя может более опытные посоветуют. Так как я с 1С8 только пол года, и много еще чего незнаю
152 Айрат_116
 
31.07.19
16:52
(151) Ок. Спасибо за помощь)
153 Айрат_116
 
16.08.19
11:16
Здравствуйте. Не работает Регл Задание=(
ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("ИДФормы", СтатФорма); ---- Не определена пишет.
    ПараметрыОтчета.Вставить("Организация", Организация);
    ПараметрыОтчета.Вставить("НачалоПериода", НачалоМесяца(ТекущаяДата()));
    ПараметрыОтчета.Вставить("КонецПериода", КонецМесяца(ТекущаяДата()));
    
    РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПерезаполнитьОтчетность(ПараметрыОтчета);
    
    КодФормы = РегистрыСведений.тн_СтатистическаяОтчетностьДляSAP.ПолучитьКодФормыПоИДФормы(СтатФорма);


Вот это условие не срабатывает.
Если ЗначениеЗаполнено(КодФормы) Тогда
        тн_ОбменSAP.ПередатьВSAP(КодФормы, НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
    КонецЕсли;
154 hhhh
 
16.08.19
11:22
(153) так оно же у тебя 26-го срабатывает. а 26-е еще не наступило. Жди.
155 Айрат_116
 
16.08.19
11:26
(154) Я в обработку закинул ее. Чтоб посмотреть отладкой.  И когда  я вычесляю СтатФорма там не не определенно.
И тут она пишет ЗначениеЗаполнено(КодФормы)  Значение Ложь
156 Айрат_116
 
16.08.19
11:27
(154) Зарание же можно ее сразу отладить