![]() |
|
Не умею создавать регламентное задание, помогите. | ☑ | ||
---|---|---|---|---|
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) Зарание же можно ее сразу отладить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |