Показать сообщение отдельно
Старый 08.12.2023, 23:39   #3  
online
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Raven Melancholic
Я нудный и поэтому сказал вы, что не два, а три паттерна
Связь через ГАК - это частный случай второго варианта. Просто еще один дополнительный посредник возникает. Не напрямую от документа, а сначала надо перейти к ГАК, чтобы уже от него искать адреса

DirPartLocation - это тот же НечтоLogisticsLocation

Хотя, да. Формально - это отдельный набор классов и View. Можно считать отдельным паттерном

Цитата:
Сообщение от Raven Melancholic
Так же можно привести в качестве примера
Полный список можно посмотреть в методе

\Classes \ LogisticsLocationEntity \ locationTableList

Цитата:
Сообщение от Raven Melancholic
Там же конкретный RecId таблицы LogisticsLocation, который ссылается на конкретный LogisticsPostalAddress. То есть на запись с конкретным периодом действия.

Формально. На практике, при редактировании адреса по первому паттерну делается настройка

X++:
// \Forms\LogisticsPostalAddress\Data Sources\LogisticsLocation\Methods\executeQuery


if (postalAddressForm.isMultiple())
{
	(...)
}
else
{
	(...)
	logisticsPostalAddress_ds.query().validTimeStateDateTimeRange(DateTimeUtil::minValue(), DateTimeUtil::utcNow());
	logisticsPostalAddress_ds.validTimeStateUpdate(ValidTimeStateUpdate::Correction);
}
Т.е. при редактировании не новая запись в истории создается, а правим одну и ту же существующую запись, не меняя ее период действия

Собственно, легко проверяется. После изменения существующего адреса новой записи с новым периодом действия в таблице LogisticsPostalAddress не возникает. Именно по этой причине и нет просмотра истории, поскольку нет этой самой истории. Нечего просматривать

Цитата:
Сообщение от Raven Melancholic
Тут стандарт явно ничего не предложит.
Явно напрашивается либо связь с ГАК, либо свой НечтоLogisticsLocation.
Если речь идет о создании новых справочников, то да. Самый простой путь. Но если просят изменить существующий справочник, то будут сложности с существующим функционалом, который использует этот справочник

Теоретически, тут достаточно было бы добавить новый параметр в класс LogisticsLocationFormHandler и сделать настройки по аналогии с параметром isMultiple. Но там же "наворотили" кучу всего. Это же тестировать все замучаешься
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...