|
Как лучше спроектировать регистр? Ø (Волшебник 27.08.2024 11:07) |
☑ | ||
---|---|---|---|---|
0
Шебвольник С1
26.08.24
✎
16:45
|
Задача следующая:
Когда появляется реализация, контрагенту нужно отправить уведомление, чтобы тот подписал документ. Если через 5 дней подписания не произойдет, нужно отправить повторное уведомление. Пока дошел вот до чего. Измерение: - Реализация Ресурс: - Статус (какое перечисление лучше? ОжидаетОтправки|УведомлениеОтправлено|ПовторноеУведомлениеОтправлено) Чего не хватает? ДатаСледующейОтправки? Дальше вопрос производительности. В фоновом задании будем брать СрезПоследних, где Статус В (ОжидаетОтправки,УведомлениеОтправлено). В индексы это дело попадет каким-то образом? Второй регистр лепить не хочется. |
|||
1
mmg
26.08.24
✎
03:54
|
(0) Зачем здесь срез последних? Непериодический регистр сведений. Измерение: Реализация, ресурс: дата последнего уведомления.
|
|||
2
Волшебник
26.08.24
✎
07:41
|
(0) Начните с НАЗВАНИЯ регистра
|
|||
3
maxab72
26.08.24
✎
08:36
|
(0)
два измерения: адресат, реализация (адресат это контактное лицо у контрагента, которому направлять оповещение о конкретной накладной) два ресурса: Дата следующей проверки (до этой даты не проверяем подписан или нет документ), и Дата последнего уведомления. Тогда можно быстро в запросе сразу получить список адресатов, с накладными на каждый день. Отправили оповещение - поменяли в регистре Дата следующей проверки, она у разных контрагентов может быть разной. ИП-шника можно долбить хоть каждый день, а какой-нибудь Газпром не любит, когда ему надоедают, может и в спам лист внести. Пришла подпись - очищаем поле Дата следующей проверки и больше рассылок не уходит. |
|||
4
Ненавижу 1С
26.08.24
✎
08:51
|
Похоже на эдо. Изобретение велосипеда?
|
|||
5
butterbean
26.08.24
✎
09:43
|
(4) прикручивать ЭДО ради отправки одного уведомления??
|
|||
6
Волшебник
26.08.24
✎
11:08
|
Лучше создать документ "Письмо", а в нём "Основание" со ссылкой на док. "Реализация".
|
|||
7
ptiz
26.08.24
✎
13:51
|
(0) "Когда появляется реализация" - неправильно. Правильно - когда товар хотя бы отгрузился со склада. Или документ по ЭДО ушел клиенту.
Достаточно двух свойств: - дата подписания документа контрагентом - дата последнего уведомления |
|||
8
Шебвольник С1
26.08.24
✎
14:11
|
Да, видимо, историю проще в лог вынести. Всем спасибо!
|
|||
9
Волшебник
26.08.24
✎
14:15
|
(8) а-ха-ха...🤦
|
|||
10
Irbis
26.08.24
✎
14:18
|
(8) Проще не значит лучше. В данном случае простота хуже воровства
|
|||
11
Шебвольник С1
26.08.24
✎
15:31
|
(10) В чем проблема?
|
|||
12
Irbis
26.08.24
✎
15:34
|
(11) Отслеживать по текстовым логам что-то на постоянной основе сомнительное удовольствие
|
|||
13
Garykom
26.08.24
✎
15:35
|
(0) Справочник ИсходящиеСообщения
|
|||
14
Garykom
26.08.24
✎
15:38
|
(13)+ РС обычный не периодический
СтатусыУведомленияДокументов И регламентное для обработки Еще подписки на события для документов |
|||
15
Волшебник
26.08.24
✎
15:46
|
(14) СтатусыУведомленияДокументов - плохое название.
лучше УведомленияКонтрагентов |
|||
16
Шебвольник С1
26.08.24
✎
16:22
|
(12) Так а что там отслеживать? Наоборот, на всякий случай пусть будет.
В общем, посыл понятен, благодарю. |
|||
17
Волшебник
26.08.24
✎
16:45
|
(16)
>> Так а что там отслеживать? в (0) написано: >> Если через 5 дней подписания не произойдет, нужно отправить повторное уведомление. Как будете отслеживать 5 дней? |
|||
18
Шебвольник С1
26.08.24
✎
17:06
|
(18) Непериодический регистр
Измерение: - Реализация Ресурсы: - Статус - ДатаСледующейОбработки или ДатаПоследнейОтправки Статус индексируем. |
|||
19
Волшебник
26.08.24
✎
17:15
|
(18) Плохое решение.
|
|||
20
_alex1974
26.08.24
✎
17:22
|
измерение: реализация
ресурс: статус 1. при проведении реализации статус "создана" 2. при отправке клиенту статус "отправлена клиенту" 3. при повторной отправке статус "отправлена клиенту n-раз" ... 4. после ответа клиента статус "принята клиентом" если периодический РС, то в период пишем дату события если хочется непериодический, то добавляется измерение "дата события" |
|||
21
ManyakRus
26.08.24
✎
17:49
|
Чтоб отправить уведомление - надо сохранить где-то:
1) текст уведомления 2) кому 3) дата отправки 4) текст ошибки 5) и др. В любом случае потребуется документ "Исходящее сообщение". Даже регистр не нужен особо, если только для ускорения |
|||
22
Шебвольник С1
26.08.24
✎
17:49
|
(19) Аргументы?
(20) И как фоновое задание будет отбирать то, что нужно отправить? |
|||
23
Волшебник
26.08.24
✎
17:50
|
(21) а я предлагал в (6)
|
|||
24
Волшебник
26.08.24
✎
17:51
|
(22) слишком частное
|
|||
25
Шебвольник С1
26.08.24
✎
17:56
|
(21) С простой отправкой уведомлений проблем нет, вопрос не про это
|
|||
26
_alex1974
26.08.24
✎
17:58
|
(22) при периодическом регистре срез последних, где статус <> "принята клиентом"
при непериодическом РС придется делать запрос с соединением с самим собой по максимуму даты события если не нужен аудиторский след, то хватит примитивного варианта с одним измерением (реализация) и двумя ресурсами (дата отправки клиенту, дата ответа клиента). |
|||
27
Шебвольник С1
26.08.24
✎
18:05
|
(26) Про СрезПоследних я писал в (0), последний абзац.
|
|||
28
Mort
26.08.24
✎
18:31
|
Стандартные реквизиты:
- Период Измерения: -Документ Ресурсы: -Сообщение -Условие повтора (понятное для трансляции, хоть кодом, например, "документ.Подписан = Истина") -Период повтора Читаем все сообщения через срез последних (их всех удалим) Те у которых условие не сработало, пишем обратно с новым периодом. И т.д. |
|||
29
Mort
26.08.24
✎
18:33
|
Период можно вынести в измерение "дата" чтобы читать/удалять наборами, срезы тут особо не нужны.
|
|||
30
Волшебник
26.08.24
✎
18:34
|
(28) 👍 Да, это уже более общее решение, которое охватит больше документов и больше сценариев. Это более архитектурный подход. Решение более устойчиво к дальнейшему развитию и пересмотру.
|
|||
31
Mort
26.08.24
✎
18:35
|
Можно добавить ресурс "Количество сообщений отправлено" если очень хочется узнать сколько раз игнорили, и его каждый раз в +.
|
|||
32
Волшебник
26.08.24
✎
18:48
|
(0) Решение от ChatGPT 4o ниже:
Для более общего решения, подходящего для любого типа документов, можно использовать следующую структуру: Измерения: * Документ (тип документСсылка) Ресурсы: * Статус (перечисление ОжидаетОтправки | УведомлениеОтправлено | ПовторноеУведомлениеОтправлено, см. ниже) * ДатаПоследнейОтправки (дата, отражает последнюю дату уведомления) * ПлановаяДатаСледующейОтправки (дата, когда нужно отправить следующее уведомление, если нет реакции) Статус: * ОжидаетОтправки — еще не было отправки уведомления. * УведомлениеОтправлено — уведомление отправлено, но требуются проверки на подпись. * ПовторноеУведомлениеОтправлено — отправлено повторно, но подписания по-прежнему нет. Запрос, который покажет документы, по которым надо отправить уведомление прямо сейчас: ВЫБРАТЬ Документ, Статус, ПлановаяДатаСледующейОтправки ИЗ РегистрыСведений.Уведомления.СрезПоследних(&ТЕКУЩАЯДАТА) ГДЕ Статус В (&СтатусОжидаетОтправки, &СтатусУведомлениеОтправлено) И ПлановаяДатаСледующейОтправки <= &ТЕКУЩАЯДАТА Запрос выбирает документы, по которым либо еще не было отправки, либо истек срок ожидания подписания, и требуется отправка нового уведомления. Такой подход обеспечивает гибкость в работе с различными типами документов и их состояниями. |
|||
33
Garykom
26.08.24
✎
18:49
|
(32) Отбор по Статусу индекс нужен
|
|||
34
Волшебник
26.08.24
✎
18:54
|
(33) Не поможет. Здесь уже СрезПоследних
А может поможет... Ну можно добавить, чтоб наверняка |
|||
35
Шебвольник С1
27.08.24
✎
10:35
|
(30) Про запросы в циклах и тормоза не понаслышке знаете, смотрю
1С Предприятие замедляется, 1С Executer ускоряется. Обсудим будущее 1C Предприятие 8...#41 (32) (34) Садись, два |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |