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

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

Не умею создавать регламентное задание, помогите.
Я
   Айрат_116
 
26.07.19 - 09:22
Доброе утро! Подскажите пжл какими вариантами можно сделать такое задание -1) https://wampi.ru/image/62DUzO6  --2)https://wampi.ru/image/62DUMdw
Я понимаю что всех достал здесь(  Но нужен совет. Раньше никогда не делал такое задание.
 
 
   vova1122
 
101 - 31.07.19 - 11:44
(98) Уверен?
Если ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26) Тогда Возврат КонецЕсли;
Вот эта строка не пропустит дальше. Ты же проверяешь является ли 26 число выходным (но если ТекущаяДата например 27 число, то это не отменяет того факта что 26 - выходной и по твоему условию всеравно будет Возврат)
   dka80
 
102 - 31.07.19 - 11:47
(101) Если ЭтоВыходнойДень(Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 26) И День(ТекущаяДата())=26 Тогда Возврат КонецЕсли;
Пусть ТС немного голову включит
   Айрат_116
 
103 - 31.07.19 - 11:59
(99) Разницу я не увидел
   vova1122
 
104 - 31.07.19 - 12:04
(103) больше конкретики
   Айрат_116
 
105 - 31.07.19 - 12:07
Что то все равно не хочет получатся(
   dka80
 
106 - 31.07.19 - 12:10
(105) ты на (103) ответишшь?
   dka80
 
107 - 31.07.19 - 12:10
точнее на (104)
   Айрат_116
 
108 - 31.07.19 - 12:11
(106) Извините не увидел
   Айрат_116
 
109 - 31.07.19 - 12:14
(104) То что дату ставишь хоть в кавычках хоть с опострофами

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

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

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

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

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

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

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

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

но лучше так

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

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


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

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