AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.08.2013, 06:30   #1  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Это не баг, как было выше сказано. В тех местах, которые Вы нашли - необходимо убедиться, что в в качестве аргумента передается именно значение, а не номер по порядку в цикле, в котором перебираются все значения енума. Если передается значение - то это баг (причем только в этом месте, а не в ядре), если передается номер по порядку в цикле - то это не баг - это нормальное поведение работы в системе.

Что же касается апгрейд-скриптов - то речь идет о следующей ситуации:
имеем АХ сервис-пак N. В этом приложении имеется енум со значениями 1,2,3,4.
Выпускается сервис-пак N+1. В нем Микрософт добавил новое значение, допустим 5.
Но Вы в своей модификации тоже добавили значение 5. Возникает конфликт - т.к. в БД хранится число 5 и БД заведомо не знает - это 5 для функционала от Микрософта или 5 для функционала Вашего. Требуется выполнение некоторых действий (=написание апгрейд скриптов), которые "разведут" в Вашей БД число 5 от Микрософта и число 5 от Вашей модификации.
Допустим при переносе SP я вместо майкрософтовского 5 сделаю 6... Подниму на Usr слой с этим значением, после этого останется поправить только новые relationы(тем более что relation даже визуально проще найти ошибку)
Какие апгрейд скрипты, какие запросы какие RLS. Передается именно значение
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!

Последний раз редактировалось Murlin; 30.08.2013 в 06:34.
Старый 30.08.2013, 08:10   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Murlin Посмотреть сообщение
Допустим при переносе SP я вместо майкрософтовского 5 сделаю 6... Подниму на Usr слой с этим значением, после этого останется поправить только новые relationы(тем более что relation даже визуально проще найти ошибку)
Какие апгрейд скрипты, какие запросы какие RLS. Передается именно значение
Вы сейчас рассуждаете только с одной стороны - со стороны программного кода.
Ну вот был у Вас SP N, Вы подготовили приложение (переделали все relation-ы) с SP N+1 (заменили все 5 на 6 и т.д.).
А теперь Вам надо обновить рабочую (!) БД. И очевидно, что в процессе обновления люди работать в рабочей системе не смогут. Вопрос: сколько по времени может длиться Ваше обновление? А если система работает в режиме 24х7? Если нет - то ночью могут запускаться какие-то тяжелые процессы каких-нибудь расчетов / пересчетов. И дело тут не в отдельно взятых енумах. Базу не начинают с нуля при обновлении сервис-пака.
Чтобы грамотно все обновить - нужно составить список таблиц и полей в них - где это значение (5) могло бы использоваться, чтобы его там перебить на новое значение (6).

Можно конечно остановить базу и начать искать. Но для сокращения времени простоя рабочей базы и пишутся скрипты по заранее составленному списку мест. Причем в зависимости от объема данных и скрипты могут выполняться далеко не мгновенно.

А как уже было сказано - эти места могут быть и завуалированы (например, в BLOB-поле, в котором хранится запакованный Query),

Т.е. еще раз повторюсь - проблема не столько в программном коде, который выгружается в XPO - сколько в обновлении данных и сокращении времени простоя рабочей БД.
__________________
Возможно сделать все. Вопрос времени
Старый 30.08.2013, 09:29   #3  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Вы сейчас рассуждаете только с одной стороны - со стороны программного кода.
Ну вот был у Вас SP N, Вы подготовили приложение (переделали все relation-ы) с SP N+1 (заменили все 5 на 6 и т.д.).
простоя рабочей БД.
Ok. Предположим я использовал 5 для связки со своими какими то записями, вышло обновление где enum назначена цифра 5, но это новая сущность новое понятие, новые записи. Какой смысл заносить его со старым значением 5. Зачем залазить в blob, rls и сохраненные запросы, если никаких настроек на эту сущность еще в принципе не существовало. Единственный минус тут в том что код a.b > c::a && a.b < c::d работать не будет. (По мойму вот это
a.b > c::a && a.b < c::d нужно сделать антиBP.)
Я вот не могу понять...
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!

Последний раз редактировалось Murlin; 30.08.2013 в 09:35.
Старый 30.08.2013, 11:13   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от Murlin Посмотреть сообщение
Ok. Предположим я использовал 5 для связки со своими какими то записями, вышло обновление где enum назначена цифра 5, но это новая сущность новое понятие, новые записи. Какой смысл заносить его со старым значением 5. Зачем залазить в blob, rls и сохраненные запросы, если никаких настроек на эту сущность еще в принципе не существовало. Единственный минус тут в том что код a.b > c::a && a.b < c::d работать не будет. (По мойму вот это
a.b > c::a && a.b < c::d нужно сделать антиBP.)
Я вот не могу понять...
При обновлении енуму не назначается цифра 5, а в этот енум добавляется элемент со значением 5, меткой и еще парой свойств. Правило гласит, что элементы не могут иметь одинаковые значения. Но иметь разрывы нумерации элементов - вполне допустимо. И этим пользуются. Что тут непонятного?
__________________
// no comments
Старый 30.08.2013, 12:36   #5  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от dech Посмотреть сообщение
При обновлении енуму не назначается цифра 5, а в этот енум добавляется элемент со значением 5, меткой и еще парой свойств. Правило гласит, что элементы не могут иметь одинаковые значения. Но иметь разрывы нумерации элементов - вполне допустимо. И этим пользуются. Что тут непонятного?
При сравнении слоев создавать элемент с таким же именем но другой цифрой, той же меткой и такими же свойствами но с цифрой 6 на usr слое, никаких апгрейд скриптов не нужно. Не существуют записи или сохраненные запросы с таким значением в этом поле соответствующем enum'у, если c SP пришло новое значение enum'а которого до этого на нижних слоях не было. Значения enum'а не несут никакого смысла.
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!

Последний раз редактировалось Murlin; 30.08.2013 в 12:40.
Старый 30.08.2013, 14:06   #6  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Ок, пусть с 5 останется ваш элемент, новый вы вместо 5 переделаете в 6. что имеем
1). Надо пойти и найти все новые релейшены и там то же исправить 5 на 6, причем старые релейшены оставить 5. Это повторять при каждом СП
2). Как уже говорили диапазоны енумов могут начать работать некорректно
3). Некоторые внешние программы/сервисы/партнерские решения напрямую лазяющие в бд видя цифру 5 будут думать что это новое значение из сервиспака а не ваше творчество. У вас с большой вероятностью доступа к их исходному коду не будет
4) Пришедшие после вас/просто коллеги будут три дня охреневать с матюгами какого всё это так сделано. Документирование подобных извращений не спасет ни от матюгов ни от вопросов

В итоге мозг вы взорвете и себе и свои коллегам/последователям на ровном месте, попутно подставив своего работодателя на дополнительные затраты по поддержке хитровывернутых замыслов

Если в стандарте ошибка, то надо ее зарегистрировать в мс и/или исправить самим. Как уже неоднократно писали дырки в енумах это абсолютно нормально. То что и в стандарте кое где про это забыли - ну такова жизнь, что еще сказать
Старый 30.08.2013, 08:33   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Murlin Посмотреть сообщение
Допустим при переносе SP я вместо майкрософтовского 5 сделаю 6...
Обычно в случае конфликта системного кода и собственного меняют собственный, а не наоборот. Можно конечно и системный переопределить но ... остлеживание коллизий при каждом следующем обновлений, несовместимость с другими модификациями ...

Цитата:
Сообщение от Murlin Посмотреть сообщение
при восстановлении очень старой БД(бэкапа) мне нужно будет что то с ней делать..
Востанавливать на очень старую версию приложения.
Старый 30.08.2013, 09:25   #8  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Обычно в случае конфликта системного кода и собственного меняют собственный, а не наоборот. Можно конечно и системный переопределить но ... остлеживание коллизий при каждом следующем обновлений, несовместимость с другими модификациями ...


Востанавливать на очень старую версию приложения.
А отслеживать вызовы index2Symbol??? Не тоже ли самое, не тяжелее. Код я не меняю я меняю только значение enum. Значение enum по мойму вообще не несет никакого смысла абсолютно
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отображение аналитик в гриде складских журналов. Баг? _scorp_ DAX: Программирование 2 25.10.2012 11:48
Баг при печати налогового кода petr DAX: Программирование 0 25.03.2009 16:33
Баг SysDataImport Logger DAX: База знаний и проекты 2 16.07.2008 15:16
баг в 2.5. Будьте осторожнее с символом "_" подчеркивание levsha DAX: Программирование 5 07.12.2004 12:26
Баг в суммовой разнице? maxx DAX: Функционал 3 23.10.2003 18:06
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:10.