Показать сообщение отдельно
Старый 24.02.2009, 21:17   #8  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Шаблоны записей компании.
Понадобилось настроить в пустой базе некоторое количество шаблонов номенклатуры для того, чтобы пользователи уже по готовым шаблонам ввводили в дальнейшем номенклатуру. В справочнике номенклатуры создал записи, на их основе через паспорт записей создал шаблоны компании. Проверил и немного подкорректировал шаблоны и записи из справочника удалил. Захожу в форму изменения любого шаблона, а она пустая! Более того, данные в соответствующем поле таблицы SysRecordTemplateTable для шаблонов, которые открывал удалены.
Выяснилось, что очистка производится в методе initValue класса SysRecordTemplate. Для таблицы InventTable все нормально, а для трех записей таблицы InventTableModule и одной записи таблицы InventItemLocation код:
X++:
if (!excludeValidateField.in(fieldId) && !common.validateField(fieldId))
{
        doClear = true;
        common.(fieldId) = nullValue(conpeek(valueSet, 2));
}
очищает поле ItemId, что естественно, так как common.validateField(fieldId) не проходит проверку из-за того, что в таблице InventTable нет соответствующей записи (в форме редактирования шаблона эта таблица временная).
Конкретно для номенклатуры по аналогии с таблицей EventRuleData для InventTableModule и InventItemLocation добавил поле ItemId в excludeValidateField. Грубо, но работает. Только вот как определить все варианты для других шаблонов непонятно.