Показать сообщение отдельно
Старый 17.11.2010, 09:48   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
вы меня простите, но что то у меня какая то повышенная притензия к тому что публикуется в блогах
опять какой то непонятный код... точнее сказать понятный, и даже он отработает, но в нем как то все коряво написано... а так как интернет читают очень много людей, которые могут этим примером воспользоваться, считаю необходимым внести некие поправки.

0. Нет транзакции (ttsbegin, ttscommit). Т.е. у нас может куда то добавиться запись, а куда то нет. Потом будут висеть не понятные записи в таблицах, и при создании номенклатуры руками вдруг начнет на неё ругаться что мол такая уже есть, хотя на самом деле её нет.
1. Далее бросилось в глаза - это:
X++:
...
if(InventTable::exist(inventTable.ItemId))
{
throw error ("Item already exist,You cannot create duplicate items");
}
else...
в таблице InventTable есть уникальный индекс по ItemId, который не позволит создать две одинаковые записи. Зачем тут проверка на существование с прекращением выполнения? Я бы понял если бы выполнялась проверка, и в зависимости от этого создавалась или не создавалась запись в InventTable, а так это излишний код.
2. Не перед одним из инсертов нет validateWrite()! Это не есть гуд. Ну конечно тут возможно программисту нужно создать эти записи во что бы то не стало, не обращая внимания ни на какие бизнес требования. Но это тоже странно.
3. Для inventTableModule, inventItemLocation и inventTxt не вызывается перед заполнением полей initValue(). А ведь в этих таблицах (кроме inventTxt) заполняются нужные поля по умолчанию. Да даже если бы не заполнялись, в будущем в этот метод может быть добавлен код, который будет заполнять важные поля и тогда этот джоб добавит номенклатуру криво. Т.е. в итоге получаем не совсем заполненные таблицы, что так же не очень корректно.

Вот как то так.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: mazzy (2), AlGol (1).