|
Отправка уведомления на указанную дату 🠗 (Serg_1960 21.06.2022 08:53) | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
21.06.22
✎
03:14
|
Здравствуйте! Необходимо определить момент отправки уведомления ответственному лицу.
У документа есть табличная часть, там поле типа дата, и 2 поля типа булево. Если прошло два дня с этой даты (ДатаПоступления), то отправлять заданный текст письма ответственному менеджеру по документу. Если эти два поля так же ложь. Хочу понять как реализовать механизм, выявление события, момента отправки письма. Поля булево это понятно, а как рассчитывать дату на которую нужно произвести отправку? |
|||
1
NIGHTHUNTER
21.06.22
✎
03:19
|
Я делаю запрос, потом иду по нему перебором. Получается это как то нужно в запросе рассчитывать, что бы в нем отбирались эти документы.
У которых с ДатыПоступления. прошло 2 дня и нет галок в нужных полях. Пока не представляю как это будет. Запрос = Новый Запрос; Запрос.Текст = " "ВЫБРАТЬ | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка КАК Ссылка, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Номер КАК Номер, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Дата КАК Дата, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Менеджер КАК Менеджер, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ДатаПоступления КАК ДатаПоступления, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Сертификат КАК Сертификат, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ПаспортИзделия КАК ПаспортИзделия |ИЗ | Документ.ХХХ_ПредварительныйЗаказПоставщику.ОтметкиСклада КАК ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада"; КонецЕсли; Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата()); Рез = Запрос.Выполнить(); Если Не Рез.Пустой() Тогда Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл // |
|||
2
NIGHTHUNTER
21.06.22
✎
03:22
|
(1) Это делаю я регламентное задание. Запускаться оно будет как я понимаю ежедневно, раз в день.
Как задать что бы в запросе отбирались документы, у которых с даты ДатаПоступления, в табличной части прошло 2 и более дней? |
|||
3
VoditelKobyly
21.06.22
✎
05:50
|
А как ты в жизни определяешь?
Пришел к фотографу, сделал фотографию на память. Он тебе говорит: если я не уеду, то через два дня будет готово, приходите за фоткой. Как определишь что тебе пора идти? |
|||
4
NIGHTHUNTER
21.06.22
✎
06:10
|
Пока мой запрос такой, вроде все в порядке? Или что подскажете?
(3) Да вот я уже сделал. на первом этапе просто нет вообще понимания. вот и спросил. Сейчас думаю все есть, детали только остались. Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка КАК Ссылка, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Номер КАК Номер, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Дата КАК Дата, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Менеджер КАК Менеджер, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ДатаПоступления КАК ДатаПоступления, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Сертификат КАК Сертификат, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ПаспортИзделия КАК ПаспортИзделия, | РАЗНОСТЬДАТ(ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ДатаПоступления, &ТекДата, ДЕНЬ) КАК РазностьДата |ПОМЕСТИТЬ ВТ_ПредварительныйЗаказ |ИЗ | Документ.ХХХ_ПредварительныйЗаказПоставщику.ОтметкиСклада КАК ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада |ГДЕ | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Сертификат = ЛОЖЬ | И ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ПаспортИзделия = ЛОЖЬ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ПредварительныйЗаказ.Ссылка КАК Ссылка, | ВТ_ПредварительныйЗаказ.Номер КАК Номер, | ВТ_ПредварительныйЗаказ.Дата КАК Дата, | ВТ_ПредварительныйЗаказ.Менеджер КАК Менеджер, | ВТ_ПредварительныйЗаказ.ДатаПоступления КАК ДатаПоступления, | ВТ_ПредварительныйЗаказ.Сертификат КАК Сертификат, | ВТ_ПредварительныйЗаказ.ПаспортИзделия КАК ПаспортИзделия, | ВТ_ПредварительныйЗаказ.РазностьДата КАК РазностьДата |ИЗ | ВТ_ПредварительныйЗаказ КАК ВТ_ПредварительныйЗаказ |ГДЕ | ВТ_ПредварительныйЗаказ.РазностьДата >= 2 | |УПОРЯДОЧИТЬ ПО | РазностьДата"; |
|||
5
Мимохожий Однако
21.06.22
✎
07:38
|
Осталось выяснить, где фиксируется факт отправки уведомления, чтобы не создавать спам. В параметре запроса достаточно сразу вычислить дату на два дня до текущего дня и сразу искать нужные документы.
|
|||
6
NIGHTHUNTER
21.06.22
✎
08:34
|
(5) В условии то есть ГДЕ ?
Да я думаю над этим, что бы не использовать пакетный запрос. Думаю фиксировать, галкой булево в табличной части , по которой идет выборка. Но ее ещё нужно создать будет, если так. Как будет правильно если делать в условии ГДЕ, вычисление даты ? |
|||
7
Serg_1960
21.06.22
✎
08:52
|
(0) ДОБАВИТЬКДАТЕ(ДатаПоступления, ДЕНЬ, 2) <= &ТекущаяДата
PS: "на первом этапе просто нет вообще понимания" - нет и не было "понимания" где именно должна фиксироваться отметка о факте отправки уведомления; нет и не было "понимания" о том, что после отправки уведомления ключевые поля документа (поля, которые используются в условиях запроса) могут быть изменены... совет бесплатно: не начинайте программировать, пока нет "понимания". |
|||
8
NIGHTHUNTER
21.06.22
✎
08:56
|
(7) Задачей то нужно начинать заниматься.
На первом этапе нет ничего, потом есть первое решение, которое нужно развивать. |
|||
9
Гипервизор
21.06.22
✎
09:03
|
(8) "Что тут думать, трясти надо"?
|
|||
10
Мимохожий Однако
21.06.22
✎
09:17
|
(8) Подобный подход отодвигает решение задачи в бесконечность.
|
|||
11
NIGHTHUNTER
21.06.22
✎
09:47
|
Сейчас такой запрос, в условии стоит < - это свидетельствует о просроченных 2х днях.
Начинается это с сегодняшнего дня, то есть сейчас буду добавлять условия на отбор ДатыПоступления, что она должна быть больше или равно сегодняшний день. Что исключит из выборки все старые документы. У табличной части добавлю реквизит, отвечающий за факт отправки. Пока не знаю отправлять ли уведомление на каждую строку. Или как говорят, в общем по документы. Если у него есть строка или строки, с просроченными датами, из за чего они попали в выборку. Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка КАК Ссылка, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Номер КАК Номер, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Дата КАК Дата, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка.Менеджер КАК Менеджер, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ДатаПоступления КАК ДатаПоступления, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Сертификат КАК Сертификат, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ПаспортИзделия КАК ПаспортИзделия, | РАЗНОСТЬДАТ(ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ДатаПоступления, &ТекДата, ДЕНЬ) КАК РазностьДат |ИЗ | Документ.ХХХ_ПредварительныйЗаказПоставщику.ОтметкиСклада КАК ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада |ГДЕ | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Сертификат = ЛОЖЬ | И ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ПаспортИзделия = ЛОЖЬ | И ДОБАВИТЬКДАТЕ(ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.ДатаПоступления, ДЕНЬ, 2) < &ТекДата | |УПОРЯДОЧИТЬ ПО | РазностьДат"; Запрос.УстановитьПараметр("ТекДата", ТекущаяДата()); Рез = Запрос.Выполнить(); Если Не Рез.Пустой() Тогда Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл // |
|||
12
NIGHTHUNTER
21.06.22
✎
09:48
|
(10) Ее не было, она начинается. В процессе же возникают разные моменты. И идет решение. всегда так было.
|
|||
13
Мимохожий Однако
21.06.22
✎
11:32
|
(11) [она должна быть больше или равно сегодняшний день.]
Удивил. Это документы не просроченные. |
|||
14
Vlaloplo
21.06.22
✎
17:02
|
(6), для начала придумайте как точно фиксировать факт отправки письма, а потом выбирайте не отправленные письма, где дата меньше текущей на два дня
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |