РК_ПроверкаСерий — объединение дублей СерииНоменклатуры с учётом остатков #15

Open
opened 2026-08-17 07:32:22 +00:00 by mk · 14 comments
Owner

Контекст

В целевой ИБ crm3 (crm3-26) в Справочник.СерииНоменклатуры накопились дубли (перенос, обмен, ручной ввод).

#14: вкладка «Заполнение реквизитов». #15: вкладка «Объединение дублей».


Критерий группы дублей (с 1.3.1.80)

Одинаковые (не помеченные на удаление):

  • ВидНоменклатуры
  • Номер (в т.ч. пустой)
  • ГоденДо

ДатаПроизводства не входит в ключ (политика вида у РАНА не используется; иначе группы дробятся). Колонка остаётся справочно.

Наименование в ключ не входит.


Связь с #14

#14 заполняет номер из наименования, не нумератором. Одинаковые имена → одинаковый номер → дубли остаются. Уникальный нумератор разбил бы группы с пустым номером.

Порядок: сначала объединить дубли с пустым номером (#15), затем заполнять реквизиты (#14).


Выбор мастер-серии

Наибольшее число регистраторов в ДвиженияСерийТоваров; при равенстве — меньшая ссылка.


Остатки

ТоварыНаСкладах.Остатки (ВНаличии). ДвиженияСерийТоваров — оборотный регистр, .Остатки нет.


Реализация

Версия Коммит Статус
1.3.1.71 ed9a0e9 вкладка «Объединение дублей»
1.3.1.72 cf9f49d hotfix XML
1.3.1.77 968e73e остатки из ТоварыНаСкладах
1.3.1.80 2727353 ключ дубля без ДатаПроизводства

Критерии приёмки

  • «Найти дубли» группирует по виду + номер + срок (без даты производства)
  • Группы с конфликтующими остатками помечены
  • Без остатков — автоотметка; с остатками — вручную + подтверждение
  • Режим тест не вызывает ЗаменитьСсылки
  • После объединения остатки на мастере

Зависимости: #14.

## Контекст В целевой ИБ `crm3` (crm3-26) в `Справочник.СерииНоменклатуры` накопились дубли (перенос, обмен, ручной ввод). **#14**: вкладка «Заполнение реквизитов». **#15**: вкладка «Объединение дублей». --- ## Критерий группы дублей (с 1.3.1.80) Одинаковые (не помеченные на удаление): - `ВидНоменклатуры` - `Номер` (в т.ч. пустой) - `ГоденДо` `ДатаПроизводства` **не входит в ключ** (политика вида у РАНА не используется; иначе группы дробятся). Колонка остаётся справочно. Наименование в ключ не входит. --- ## Связь с #14 #14 заполняет номер **из наименования**, не нумератором. Одинаковые имена → одинаковый номер → дубли остаются. Уникальный нумератор разбил бы группы с пустым номером. Порядок: сначала объединить дубли с пустым номером (#15), затем заполнять реквизиты (#14). --- ## Выбор мастер-серии Наибольшее число регистраторов в `ДвиженияСерийТоваров`; при равенстве — меньшая ссылка. --- ## Остатки `ТоварыНаСкладах.Остатки` (`ВНаличии`). `ДвиженияСерийТоваров` — оборотный регистр, `.Остатки` нет. --- ## Реализация | Версия | Коммит | Статус | |--------|--------|--------| | 1.3.1.71 | `ed9a0e9` | вкладка «Объединение дублей» | | 1.3.1.72 | `cf9f49d` | hotfix XML | | 1.3.1.77 | `968e73e` | остатки из `ТоварыНаСкладах` | | 1.3.1.80 | `2727353` | ключ дубля без `ДатаПроизводства` | --- ## Критерии приёмки - [x] «Найти дубли» группирует по виду + номер + срок (без даты производства) - [ ] Группы с конфликтующими остатками помечены - [ ] Без остатков — автоотметка; с остатками — вручную + подтверждение - [ ] Режим тест не вызывает `ЗаменитьСсылки` - [ ] После объединения остатки на мастере **Зависимости:** #14.
mk changed title from Проверка повторяемости серий (по номеру и дате срока годности) и объединение to РК_ПроверкаСерий — объединение дублей `СерииНоменклатуры` с учётом остатков 2026-08-17 07:33:41 +00:00
Member

При тестировании вкладки «Заполнение реквизитов» (#14) исправлены ошибки загрузки и поиска:

  • 1.3.1.73 — убрано поле Сер.Владелец (в crm3-26 серии не подчинены номенклатуре); поле формы «Последняя ошибка» для копирования текста.
  • 1.3.1.74 — ошибка «Поле объекта недоступно для записи (Наименование)» при парсинге наименования из выборки запроса.

Поиск проблем работает.

1.3.1.75 — доработка таблицы ПроблемныеСерии:

  • колонки № и Остаток;
  • кнопка Заполнить по предложениям (без записи в ИБ);
  • запись в справочник из колонок таблицы.
При тестировании вкладки «Заполнение реквизитов» (#14) исправлены ошибки загрузки и поиска: - **1.3.1.73** — убрано поле `Сер.Владелец` (в crm3-26 серии не подчинены номенклатуре); поле формы «Последняя ошибка» для копирования текста. - **1.3.1.74** — ошибка «Поле объекта недоступно для записи (Наименование)» при парсинге наименования из выборки запроса. Поиск проблем работает. **1.3.1.75** — доработка таблицы `ПроблемныеСерии`: - колонки **№** и **Остаток**; - кнопка **Заполнить по предложениям** (без записи в ИБ); - запись в справочник из колонок таблицы.
Author
Owner

ДатаПроизводства - по политики учета в видах номенклатур вроде у нас нигде не настраивалось.

Если мы в рамках #14 выполним автозаполнение номеров (нумератором) или наименований, то поиск дублей уже не сработает?

`ДатаПроизводства` - по политики учета в видах номенклатур вроде у нас нигде не настраивалось. Если мы в рамках #14 выполним автозаполнение номеров (нумератором) или наименований, то поиск дублей уже не сработает?
Member

Дата производства

По политикам видов (ИспользоватьДатуПроизводстваСерии) у РАНА поле, как правило, не используется. Если оставить его в ключе, группа развалится, когда у одной серии дата пустая, а у «того же» дубля случайно заполнена.

С 1.3.1.80 ключ дубля: вид + номер + ГоденДо. ДатаПроизводства только справочно (с мастера).

Это совпадает с оценкой в плане: ~870 уникальных ключей «вид + номер + срок».


Сломает ли #14 поиск дублей?

Наименование в ключ не входит. Заполнение «до dd.MM.yy» поиск дублей не ломает.

Номер в ключ входит. Важно, чем заполняем:

Как заполняем номер Что будет с дублями
Из наименования (как сейчас в #14, не нумератор) Одинаковое имя → одинаковый номер → группа остаётся. Разные имена → разные номера → это уже не дубли.
Нумератором (уникальный номер каждой ссылке) Группы с пустым номером исчезнут — поиск по номеру их больше не склеит.

Сейчас #14 не выдаёт номера нумератором, а вытаскивает текст из наименования (… до 31.12.25 → номер слева).

Практический порядок:

  1. Сначала объединить дубли с пустым номером (вкладка #15).
  2. Потом заполнять номера/сроки (#14) у оставшихся серий.

Если сначала проставить уникальные номера — шаг 1 по пустым номерам сделать будет уже нельзя.

## Дата производства По политикам видов (`ИспользоватьДатуПроизводстваСерии`) у РАНА поле, как правило, не используется. Если оставить его в ключе, группа развалится, когда у одной серии дата пустая, а у «того же» дубля случайно заполнена. **С 1.3.1.80** ключ дубля: **вид + номер + ГоденДо**. `ДатаПроизводства` только справочно (с мастера). Это совпадает с оценкой в плане: ~870 уникальных ключей «вид + номер + срок». --- ## Сломает ли #14 поиск дублей? **Наименование** в ключ не входит. Заполнение «до dd.MM.yy» поиск дублей **не ломает**. **Номер** в ключ входит. Важно, *чем* заполняем: | Как заполняем номер | Что будет с дублями | |---------------------|---------------------| | Из **наименования** (как сейчас в #14, не нумератор) | Одинаковое имя → одинаковый номер → группа **остаётся**. Разные имена → разные номера → это уже не дубли. | | **Нумератором** (уникальный номер каждой ссылке) | Группы с **пустым** номером **исчезнут** — поиск по номеру их больше не склеит. | Сейчас #14 **не выдаёт номера нумератором**, а вытаскивает текст из наименования (`… до 31.12.25` → номер слева). **Практический порядок:** 1. Сначала **объединить дубли** с пустым номером (вкладка #15). 2. Потом **заполнять** номера/сроки (#14) у оставшихся серий. Если сначала проставить уникальные номера — шаг 1 по пустым номерам сделать будет уже нельзя.
Owner

Для серий, у которых нет срока годности (Пустой срок годности), но он должен быть по политики учета серий из настроек вида номенклатуры, в обработке РК_ПроверкаСерий на форме надо добавить поле с датой срока годности, которая будет устанавливаться по умолчанию в такие серии.

Для серий, у которых нет срока годности (**Пустой срок годности**), но он должен быть по политики учета серий из настроек вида номенклатуры, в обработке `РК_ПроверкаСерий` на форме надо добавить поле с датой срока годности, которая будет устанавливаться по умолчанию в такие серии.
Member

1.3.1.81 (1fecdb5) — поле Срок годности по умолчанию на вкладке «Заполнение реквизитов» (#15#issuecomment-266).

Для проблемы «Пустой срок годности» (срок обязателен по политике вида):

  1. сначала дата из наименования;
  2. если не разобралась — значение поля на форме.

Подставляется при «Найти проблемы», «Сформировать предложения» и «Заполнить по предложениям». Пустое поле — умолчание не подставляется.

Ключ дублей (#15) не менялся.

Загрузить расширение из git после git pull.

**1.3.1.81** (`1fecdb5`) — поле **Срок годности по умолчанию** на вкладке «Заполнение реквизитов» ([#15](https://git.p7net.ru/1c/crm3_26.rhana/issues/15)#issuecomment-266). Для проблемы **«Пустой срок годности»** (срок обязателен по политике вида): 1. сначала дата из наименования; 2. если не разобралась — значение поля на форме. Подставляется при «Найти проблемы», «Сформировать предложения» и «Заполнить по предложениям». Пустое поле — умолчание не подставляется. Ключ дублей (#15) не менялся. Загрузить расширение из git после `git pull`.
Owner

После исправления данных в сериях (#17) - возвращаемся к данной задаче.

Начинаю тестировать процедуру анализа и объединения серий в версии расширения 1.3.1.96.

В версию 1.3.1.97 добавлено

  • ГруппыДублейДеталиОстатков1 - отдельный элемент из таблицы ГруппыДублей для отображения деталий анализа дублирования для удобного отображения серий, которые пересекаются с текущей выделенной строкой таблицы.
  • В ТЧ ГруппыДублей обработки РК_ПроверкаСерий добавлен реквизит ИдентификаторСерии для заполнения UUID мастер серий. На форме дроблен элемент таблицы ГруппыДублейИдентификаторСерии.
  • Добавлена пустая форма ФормаИзмененияМастерСерии в обработку для реализации выбора другой мастер серии.

Надо добавить / доработать

  • В таблицу ГруппыДублей надо добавить возможность сортировки по столбам.
  • Заполнять ГруппыДублейИдентификаторСерии в таблице ГруппыДублей.
  • При двойном нажатии строки (событие Выбор) - открывать форму элемента мастер серии текущей строки.
  • Добавить команду в таблицу ГруппыДублей Выбрать другую мастер серию (назначить горячу клавишу на команду - Ctrl + C) для текущей выбранной строки с открытием дополнительной формы выбора серий (ФормаИзмененияМастерСерии) в группе (совпадающие) с мастер серией в текущей строке таблицы ГруппыДублей. После выбора - выполнить изменения в текущей строке в соответствии с выбранной серией (если она отлична от текущей мастер серии).

Выявленные ошибки версии 1.3.1.96

Остается в версии 1.3.1.97.

  • При выполнении команды ОбъединитьГруппы с несколькими отмеченными строками через ГруппыДублейОтметка и отключенным режимом тестирования (Объект.РежимТест = Ложь) - выдается предупреждение "Отметьте группы для объединения". Надо уточнить при каких условиях выполнять объединение и проверить логику выполнения команды.
После исправления данных в сериях (#17) - возвращаемся к данной задаче. Начинаю тестировать процедуру анализа и объединения серий в версии расширения `1.3.1.96`. ## В версию `1.3.1.97` добавлено - `ГруппыДублейДеталиОстатков1` - отдельный элемент из таблицы `ГруппыДублей` для отображения деталий анализа дублирования для удобного отображения серий, которые пересекаются с текущей выделенной строкой таблицы. - В ТЧ `ГруппыДублей` обработки `РК_ПроверкаСерий` добавлен реквизит `ИдентификаторСерии` для заполнения UUID мастер серий. На форме дроблен элемент таблицы `ГруппыДублейИдентификаторСерии`. - Добавлена пустая форма `ФормаИзмененияМастерСерии` в обработку для реализации выбора другой мастер серии. ## Надо добавить / доработать - В таблицу `ГруппыДублей` надо добавить возможность сортировки по столбам. - Заполнять `ГруппыДублейИдентификаторСерии` в таблице `ГруппыДублей`. - При двойном нажатии строки (событие `Выбор`) - открывать форму элемента мастер серии текущей строки. - Добавить команду в таблицу `ГруппыДублей` **Выбрать другую мастер серию** (назначить горячу клавишу на команду - `Ctrl + C`) для текущей выбранной строки с открытием дополнительной формы выбора серий (`ФормаИзмененияМастерСерии`) в группе (совпадающие) с мастер серией в текущей строке таблицы `ГруппыДублей`. После выбора - выполнить изменения в текущей строке в соответствии с выбранной серией (если она отлична от текущей мастер серии). ## Выявленные ошибки версии `1.3.1.96` _Остается в версии `1.3.1.97`._ - При выполнении команды `ОбъединитьГруппы` с несколькими отмеченными строками через `ГруппыДублейОтметка` и отключенным режимом тестирования (`Объект.РежимТест = Ложь`) - выдается предупреждение "Отметьте группы для объединения". Надо уточнить при каких условиях выполнять объединение и проверить логику выполнения команды.
Member

Выполнено по comment-354 в версии 1.3.1.98 (d2aa3cd).

Исправление ОбъединитьГруппы

  • Перед проверкой отметок вызывается ЗакончитьРедактированиеСтроки, чтобы значение колонки Отметка успело зафиксироваться.
  • У ГруппыДублейОтметка режим редактирования изменён на Directly.
  • Сообщения разделены: нет отметок / отмеченные группы уже имеют Объединено.

Доработки таблицы ГруппыДублей

  • Заполняется ИдентификаторСерии (UUID мастер-серии) при поиске дублей и при смене мастера.
  • Команда Сортировать по колонке.
  • Событие Выбор открывает форму элемента мастер-серии.
  • Команда Выбрать другую мастер серию (Ctrl+C) → ФормаИзмененияМастерСерии со списком серий группы; после выбора пересчитываются мастер, остатки, детали, UUID.

Можно git pull и проверять на 1.3.1.98.

Выполнено по [comment-354](https://git.p7net.ru/1c/crm3_26.rhana/issues/15#issuecomment-354) в версии **1.3.1.98** (`d2aa3cd`). ### Исправление `ОбъединитьГруппы` - Перед проверкой отметок вызывается `ЗакончитьРедактированиеСтроки`, чтобы значение колонки `Отметка` успело зафиксироваться. - У `ГруппыДублейОтметка` режим редактирования изменён на `Directly`. - Сообщения разделены: нет отметок / отмеченные группы уже имеют `Объединено`. ### Доработки таблицы `ГруппыДублей` - Заполняется `ИдентификаторСерии` (UUID мастер-серии) при поиске дублей и при смене мастера. - Команда **Сортировать по колонке**. - Событие `Выбор` открывает форму элемента мастер-серии. - Команда **Выбрать другую мастер серию** (`Ctrl+C`) → `ФормаИзмененияМастерСерии` со списком серий группы; после выбора пересчитываются мастер, остатки, детали, UUID. Можно `git pull` и проверять на `1.3.1.98`.
Owner

Проверяю версию 1.3.1.100 на предмет установки пометки на удаление в дублирующие серии. По факту - работает, но нигде в интерфейсе не отображается отметка о пометке на удаление.

Надо, например, в форме ФормаИзмененияМастерСерии добавить поле с отображением этой информации, и при выполнении изменении пометки на удаление (при записи дублирующих серий во время объединения) - сообщать об этом пользователю.

При повторном формировании таблицы дублей серии, которые помечены на удаление и по которым нет остатков в поиске дублей не учитывать.

Проверяю версию `1.3.1.100` на предмет **установки пометки на удаление** в дублирующие серии. По факту - работает, но нигде в интерфейсе не отображается отметка о пометке на удаление. Надо, например, в форме `ФормаИзмененияМастерСерии` добавить поле с отображением этой информации, и при выполнении изменении пометки на удаление (при записи дублирующих серий во время объединения) - сообщать об этом пользователю. При повторном формировании таблицы дублей серии, которые помечены на удаление и по которым нет остатков в поиске дублей не учитывать.
Member

Выполнено по comment-373 в 1.3.1.101 (e7aa007).

UI пометки удаления

  • В ФормаИзмененияМастерСерии добавлена колонка Пометка удаления; помеченные серии тоже показываются в списке.
  • Нельзя выбрать мастер-серией помеченную на удаление серию без остатка.

Сообщение при объединении

  • После пометки дублей на удаление: оповещение + сообщение пользователю с количеством; в комментарии строки группы тоже фиксируется число помеченных.

Поиск дублей

  • Серии с пометкой удаления и без остатков в поиске дублей больше не учитываются (помеченные с остатком по-прежнему могут попадать в группы).

Можно git pull и проверять.

Выполнено по [comment-373](https://git.p7net.ru/1c/crm3_26.rhana/issues/15#issuecomment-373) в **1.3.1.101** (`e7aa007`). ### UI пометки удаления - В `ФормаИзмененияМастерСерии` добавлена колонка **Пометка удаления**; помеченные серии тоже показываются в списке. - Нельзя выбрать мастер-серией помеченную на удаление серию без остатка. ### Сообщение при объединении - После пометки дублей на удаление: оповещение + сообщение пользователю с количеством; в комментарии строки группы тоже фиксируется число помеченных. ### Поиск дублей - Серии с пометкой удаления и без остатков в поиске дублей больше не учитываются (помеченные с остатком по-прежнему могут попадать в группы). Можно `git pull` и проверять.
Owner

В рабочую целевую базу установил расширение версии 1.3.1.101. Применил. Продолжаю тестирование.

В рабочую **целевую** базу установил расширение версии `1.3.1.101`. Применил. Продолжаю тестирование.
Member

Окно для приёмки #15 (контекст crm3-migration#24)

В целевой ИБ crm3 на 01.08.2026 ТнС/комиссия = 0 (после #23). Это оптимальный момент объединить дубли до записи вводов 01.08.

Расширение в цели уже 1.3.1.101 (comment-621).

Прогон

  1. РК_ПроверкаСерий → вкладка Объединение дублей → Найти дубли (ключ: вид + номер + срок).
  2. Режим тест: убедиться, что ЗаменитьСсылки не вызывается; группы без остатков автоотмечены (Отметка при пустом Предупреждение).
  3. Запись: объединить автоотмеченные; конфликтующие (если есть) — вручную / в протокол.
  4. Повторный поиск — очевидных дублей нет (или акт исключений).
  5. Итог сюда → закрываем #15; затем можно #14.

Код приёмки уже в 1.3.1.101; нужна операционная приёмка на пустых складах.

## Окно для приёмки #15 (контекст crm3-migration#24) В целевой ИБ `crm3` на **01.08.2026** ТнС/комиссия = **0** (после #23). Это оптимальный момент объединить дубли **до** записи вводов 01.08. Расширение в цели уже **1.3.1.101** (comment-621). ### Прогон 1. `РК_ПроверкаСерий` → вкладка **Объединение дублей** → **Найти дубли** (ключ: вид + номер + срок). 2. Режим **тест**: убедиться, что `ЗаменитьСсылки` не вызывается; группы без остатков автоотмечены (`Отметка` при пустом `Предупреждение`). 3. Запись: объединить автоотмеченные; конфликтующие (если есть) — вручную / в протокол. 4. Повторный поиск — очевидных дублей нет (или акт исключений). 5. Итог сюда → закрываем #15; затем можно #14. Код приёмки уже в 1.3.1.101; нужна операционная приёмка на пустых складах.
Member

Срез дублей при пустых складах (BSL)

docs/transfer/Код_анализа_дублей_серий_crm3-26.bsl → data_transfer/crm3-26/series_dup_groups_20260827.log

Метрика Значение
Серий всего 10471
Пропуск помеченных без ост. 79
Уникальных ключей (вид+номер+срок) 875
Групп дублей 292
Серий в дублях 9809
Без остатков (автоотметка) 292
Конфликт остатков 0
Остаток только на дублях 0
Серий с остатком ТнС 0

Критерии кода 1.3.1.101 для автоотметки выполняются на данных: все 292 группы без предупреждений.

Просьба: в РК_ПроверкаСерий → Найти дубли → тест → запись объединения всех отмеченных → повторный поиск → итог сюда (числа объединений). После этого закрываем #15.

## Срез дублей при пустых складах (BSL) `docs/transfer/Код_анализа_дублей_серий_crm3-26.bsl` → `data_transfer/crm3-26/series_dup_groups_20260827.log` | Метрика | Значение | |---------|----------| | Серий всего | 10471 | | Пропуск помеченных без ост. | 79 | | Уникальных ключей (вид+номер+срок) | 875 | | **Групп дублей** | **292** | | Серий в дублях | 9809 | | Без остатков (автоотметка) | **292** | | Конфликт остатков | **0** | | Остаток только на дублях | **0** | | Серий с остатком ТнС | **0** | Критерии кода 1.3.1.101 для автоотметки выполняются на данных: **все 292 группы** без предупреждений. **Просьба:** в `РК_ПроверкаСерий` → Найти дубли → тест → запись объединения всех отмеченных → повторный поиск → итог сюда (числа объединений). После этого закрываем #15.
Member

BSL merge attempt

Тест (РежимТест=Да): групп=266, ссылок=9268, конфликт=0, ошибок=0 → series_merge_test_20260827.log.

Запись через ОбщегоНазначения.ЗаменитьСсылки зависла (~26 мин, 0% CPU, пустой лог) — процесс убит. Частичных итогов в логе нет.

Просьба: объединить в UI РК_ПроверкаСерий (1.3.1.101) — там тот же алгоритм, но с прогрессом/отменой. После — числа сюда.

Код BSL оставлен: docs/transfer/Код_объединения_дублей_серий_crm3-26.bsl (по умолчанию снова тест).

### BSL merge attempt Тест (`РежимТест=Да`): групп=266, ссылок=9268, конфликт=0, ошибок=0 → `series_merge_test_20260827.log`. Запись через `ОбщегоНазначения.ЗаменитьСсылки` зависла (~26 мин, 0% CPU, пустой лог) — процесс убит. Частичных итогов в логе нет. **Просьба:** объединить в UI `РК_ПроверкаСерий` (1.3.1.101) — там тот же алгоритм, но с прогрессом/отменой. После — числа сюда. Код BSL оставлен: `docs/transfer/Код_объединения_дублей_серий_crm3-26.bsl` (по умолчанию снова тест).
Member

Приёмка по данным ✅

Повторный BSL-анализ series_dup_groups_now.log:

Метрика Было Сейчас
Групп дублей 292 0
Серий в дублях 9809 0
Пропуск помеченных без ост. 79 9596
Конфликт остатков 0 0
Серий с остатком ТнС 0 0
Уникальных ключей 875 875

Дубли по ключу вид+номер+срок в поиске больше не находятся (дубли помечены на удаление / ссылки сведены на мастера). Критерии приёмки по остаткам закрыты при пустых складах.

Закрываю #15. Дальше по порядку — #14 (заполнение реквизитов).

## Приёмка по данным ✅ Повторный BSL-анализ `series_dup_groups_now.log`: | Метрика | Было | Сейчас | |---------|------|--------| | Групп дублей | 292 | **0** | | Серий в дублях | 9809 | **0** | | Пропуск помеченных без ост. | 79 | 9596 | | Конфликт остатков | 0 | 0 | | Серий с остатком ТнС | 0 | 0 | | Уникальных ключей | 875 | 875 | Дубли по ключу вид+номер+срок в поиске больше не находятся (дубли помечены на удаление / ссылки сведены на мастера). Критерии приёмки по остаткам закрыты при пустых складах. Закрываю #15. Дальше по порядку — #14 (заполнение реквизитов).
Sign in to join this conversation.
No Label
3 Participants
Notifications
Due Date
No due date set.
Reference: 1c/crm3_26.rhana#15