Цитата:
Сообщение от
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. Но там же "наворотили" кучу всего. Это же тестировать все замучаешься