Показать сообщение отдельно
Старый 15.02.2019, 12:02   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от dech Посмотреть сообщение
Все бы хорошо, но в более ранних версиях, например в АХ4 она в принципе не работает.
Во-первых из-за того, что вызывается на клиенте.
Во-вторых, абсолютно неверно составляется запрос. Функцию невозможно было вызвать ни при каких условиях. Непонятно, как вообще она прошла в production.
В-третьих, хоть она и была исправлена в 2012, однако с некоторыми отключенными полями запрос все-равно формировался с ошибками.
"Axapta не работает" (с)

Если кому интересно, то проблема в поле DataAreaId. Т.е. для таблиц со свойством SaveDataPerCompany = No данная функция прекрасно работала. А вот если поле DataAreaId надо было учитывать, то вот тут и возникали проблемы с конструированием строки запроса Select-SQL

Это поле не добавлялось в список полей. А здесь нужны 3 списка: Select, Group By, Order By. Поэтому или в полученной строке SQL-запроса появлялось "лишняя" запятая или это поле вообще "забывали", что еще хуже, поскольку получали дубли там, где их нет.

Т.е. модификация сильно избыточная. Надо всего лишь добавить if (dataPrCompany) перед/после формированием очередного списка полей с явным добавлением поля DataAreaId в список полей

Вот здесь был разбор этой функции и зачем нужен параметр fieldNameGenerationMode в методе dictTable.fieldname()

Кнопка "Add-ins\Дубликаты" на табличных индексах в АОТ

PS: Но, вообще-то, есть еще поле Partition. Теоретически, его тоже надо добавлять в формируемый запрос
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Logger (1), SRF (1).