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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.07.2007, 09:52   #1  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
:( Работа напрямую с SQLServer2005
работаем с Dynamix AX 4.0 SQL Server 2005
в коде динамически создаю подключение к SQL Server и получаю через ADOConnection набор записей RecordSet. Удивило поначалу что вместо ожидаемых 1 записи получаю 2, выбрал данные из обоих строк, получил любопытный результат, строки идентичные, отличаются RecVersion. Как с этим бороться подскажите? В результатах выборки мне нужна только одна запись которую я читаю, а что делать с остальными? И как определить нужную?
Старый 13.07.2007, 10:26   #2  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Всем спасибо нашел причину, оказывается выбирались строки по всем компаниям, сказываются последствия плохого изучения различий между 3 и 4 версией.
Старый 13.07.2007, 13:15   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от KingPeas Посмотреть сообщение
Всем спасибо нашел причину, оказывается выбирались строки по всем компаниям, сказываются последствия плохого изучения различий между 3 и 4 версией.
при чем здесь различия?
вы поищите ветку про прямой доступ. несколько раз уже обсуждалось.
не надо так делать.
__________________
полезное на axForum, github, vk, coub.
Старый 13.07.2007, 14:00   #4  
mono is offline
mono
Участник
 
18 / 10 (1) +
Регистрация: 26.10.2006
Цитата:
Сообщение от KingPeas Посмотреть сообщение
Всем спасибо нашел причину, оказывается выбирались строки по всем компаниям, сказываются последствия плохого изучения различий между 3 и 4 версией.
Я бы сказал, что последствия плохого изучения 3 и 4 версий...
Старый 02.04.2008, 11:30   #5  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Talking
Цитата:
Сообщение от mazzy Посмотреть сообщение
при чем здесь различия?
вы поищите ветку про прямой доступ. несколько раз уже обсуждалось.
не надо так делать.
Объясню почему мы остановились на прямом доступе. Механизм который создавался настраивался непосредственно пользователями и по сути создавал сложный запрос к источникам используемым в AX. Стандартный QueryRun осилить большое количество источников со сложными связями между ними не мог. Вот и пришлось остановиться на прямом доступе. Поскольку механизм создавался для формирования документов, ограничение прав на просмотр данных уже ложилось на плечи админа на распределение доступа к кнопкам формирующим эти документы.
Немножко муторно настраивать источники для выборки данных, зато получился отличный механизм для издания документов в Microsoft Word, работающий гораздо быстрее чем через Com_OfficeDocumentRu. И при этом пользователь сам с легкостью мог настроить шаблон для вывода, что снижало нагрузку на отдел разработки и само по себе огромный плюс.
А вы говорите не надо так делать)))
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Старый 02.04.2008, 11:35   #6  
aidsua is offline
aidsua
AX*****
Аватар для aidsua
 
106 / 40 (2) +++
Регистрация: 28.09.2005
Адрес: 2:463/Kyiv
Цитата:
Сообщение от KingPeas Посмотреть сообщение
Объясню почему мы остановились на прямом доступе. Механизм который создавался настраивался непосредственно пользователями и по сути создавал сложный запрос к источникам используемым в AX. Стандартный QueryRun осилить большое количество источников со сложными связями между ними не мог. Вот и пришлось остановиться на прямом доступе. Поскольку механизм создавался для формирования документов, ограничение прав на просмотр данных уже ложилось на плечи админа на распределение доступа к кнопкам формирующим эти документы.
Немножко муторно настраивать источники для выборки данных, зато получился отличный механизм для издания документов в Microsoft Word, работающий гораздо быстрее чем через Com_OfficeDocumentRu. И при этом пользователь сам с легкостью мог настроить шаблон для вывода, что снижало нагрузку на отдел разработки и само по себе огромный плюс.
А вы говорите не надо так делать)))
Насколько я понял, то права доступа к функционалу и данным (RLS) настраиваются и в ПО "Axapta", и админом для "прямого доступа". Насколько у Вас синхронно работают эти две команды?
__________________
О, как беден, как груб наш русский язык! [c] А.С.Пушкин
Старый 02.04.2008, 11:47   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от KingPeas Посмотреть сообщение
Стандартный QueryRun осилить большое количество источников со сложными связями между ними не мог.


Цитата:
Сообщение от KingPeas Посмотреть сообщение
И при этом пользователь сам с легкостью мог настроить шаблон для вывода, что снижало нагрузку на отдел разработки и само по себе огромный плюс.

Вот... Я просто шизею... Типично программистский подход.
QueryRun у них не может осилить, а "пользователь сам с легкостью".
Вы сами то не замечаете ошибки в своей логике?
"Может в консерватории что подправить"? (С) Райкин

Цитата:
Сообщение от KingPeas Посмотреть сообщение
А вы говорите не надо так делать)))
Конечно же не надо.

Если ВЫ делаете такие запросы, что их даже QueryRun "не может осилить"
То это всего лишь значит, что вы не разобрались до конца с задачей.

Это всего лишь значит, что вместо того, чтобы решить бизнес-задачу, вы начинаете заглубляться в сугубо программистские заморочки, которые никому кроме вас (программистов) не нужны и не интересны.
__________________
полезное на axForum, github, vk, coub.
Старый 02.04.2008, 11:48   #8  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Цитата:
Сообщение от aidsua Посмотреть сообщение
Насколько я понял, то права доступа к функционалу и данным (RLS) настраиваются и в ПО "Axapta", и админом для "прямого доступа". Насколько у Вас синхронно работают эти две команды?
Перед нами не ставилась задача по RLS исходя из того, что по условию для формирования документа курсор на базе которого формируется документ уже должен быть доступен. То бишь в форме клиент выделяет запись, щелкает по кнопке и получает в итоге документ, если по RLS он не может эту запись видеть он и курсор соответственно не поставит. Требовалось только настроить какие помимо этого данные из связанных источников требуется выбрать. Таким образом RLS на уровне текущего источника учтены, на остальных источниках на свой страх и риск уже. Админу нужно было только определить доступность кнопки для юзера на форме, ну это как всегда. То бишь если требовалось по сотруднику напечатать карточку по зп, достаточно было закрыть кнопку тем кто не имеет права видеть зп.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Старый 02.04.2008, 11:51   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от KingPeas Посмотреть сообщение
Перед нами не ставилась задача по RLS...
Это не повод убивать возможность включить RLS в связанных источниках
__________________
полезное на axForum, github, vk, coub.
Старый 02.04.2008, 12:00   #10  
aidsua is offline
aidsua
AX*****
Аватар для aidsua
 
106 / 40 (2) +++
Регистрация: 28.09.2005
Адрес: 2:463/Kyiv
Цитата:
Сообщение от KingPeas Посмотреть сообщение
Перед нами не ставилась задача по RLS исходя из того, что по условию для формирования документа курсор на базе которого формируется документ уже должен быть доступен. То бишь в форме клиент выделяет запись, щелкает по кнопке и получает в итоге документ, если по RLS он не может эту запись видеть он и курсор соответственно не поставит. Требовалось только настроить какие помимо этого данные из связанных источников требуется выбрать. Таким образом RLS на уровне текущего источника учтены, на остальных источниках на свой страх и риск уже. Админу нужно было только определить доступность кнопки для юзера на форме, ну это как всегда. То бишь если требовалось по сотруднику напечатать карточку по зп, достаточно было закрыть кнопку тем кто не имеет права видеть зп.
Типичная задача -- заблокировать к просмотру группу полей для определенных групп пользователей. Ваш подход к данной проблеме? Или Вы считаете, что все поля текущей записи должны быть доступны во внешних отчетах? Самый простой пример -- себестоимость.
__________________
О, как беден, как груб наш русский язык! [c] А.С.Пушкин
Старый 02.04.2008, 13:06   #11  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Cool
Цитата:
Сообщение от mazzy Посмотреть сообщение




Вот... Я просто шизею... Типично программистский подход.
QueryRun у них не может осилить, а "пользователь сам с легкостью".
Вы сами то не замечаете ошибки в своей логике?
"Может в консерватории что подправить"? (С) Райкин.
Что ж я попытаюсь объяснить) И никакой ошибки в логике нет.)

Цитата:
Сообщение от mazzy Посмотреть сообщение
Конечно же не надо.

Если ВЫ делаете такие запросы, что их даже QueryRun "не может осилить"
То это всего лишь значит, что вы не разобрались до конца с задачей.

Это всего лишь значит, что вместо того, чтобы решить бизнес-задачу, вы начинаете заглубляться в сугубо программистские заморочки, которые никому кроме вас (программистов) не нужны и не интересны.
Судите сами.
Перед нами ставилась задача создать механизм позволяющий максимально упростить разработку печатных форм документа в Word. Начиналось это все на 3.0, перекочевало в 4.0.
Печатный документ для вывода подразумевает использование как правило нескольких источников в том числе данные о компании, данные об официальных лицах и прочее не связанные с текущей записью на основании которой формируется документ. Обычно обработка этих данных подтягивается в процессе разработки внутри классов. Наша задача была свести кодинг к минимуму при создании отчетов.
Что удалось сделать:
1. Создан механизм формирования перечня источников данных из которых выбираются данные с учетом и возможностью настройки связей между ними, наложения фильтров, а также возможностью получения расчетных значений в том числе и с использованием дисплэй методов источников.
Реализовано это все в формах (надеюсь с дружественным интерфейсом ). Данная часть работы ложится на человека обладающего познаниями по иерархии данных в AX.
2. После определения данных дело встает за пользователем владеющим навыками работы в Word. Работа с документов в формате XML не особо отличается от работы с обычным файлом Word, но с помощью схемы XML позволяет наглядно и быстро разметить в документе точки для подстановки данных .
Созданный документ сохраняется как шаблон в базе данных AX.
3. Последний пункт добавления на форму MenuItem и настройка для этого MenuItem (опять же с помощью формы) привязки к документу. Эта функция подразумевалась админу.
Причем заметьте работы выполненные по пункту 1 могут использоваться многократно для использования в 2 и 3.
Не говоря уже о таких сладостях как:
1) возможность использования нескольких шаблонов на одном источнике и выбор по настройке для menuItem конкретного шаблона или на усмотрение пользователя из списка доступных по этому источнику
2) при формировании документов источники имеющие несколько записей добавляют свои записи столько раз сколько в этом есть необходимость. То бишь указываете в таблице что в эту строку надо проставить данные из этого источника вот такие и такие то, а дальше все строки при формировании будут добавлены в документ в соотвествии с шаблоном. Ну и разумеется автосумирование где надо рассчитывается)
3) данные в документ позволяется подставлять столько раз сколько в этом есть необходимость (втом числе и в колонтитулы) без создания каких либо закладок
4) форматирование документа сохраняется для всех подставляемых данных. Причем в документе можно сделать шаблон данных для подстановки если данных в источниках нет.
5) количество используемых источников гораздо больше чем может позволить себе queryrun) О том что парсер аксапты не всегда корректно работает с большим количеством источников и так все знают) Для примера для формирования приказа на обучение сотрудников было необходимо подтянуть следующие источники:
-Приказ
-Строки приказа
-Данные о компании
-Должностные обязаности
-Картотека
-Окружение
-Курсы
-Слушатели курсов
и еще пяток мелких таблиц для получения данных связанных с приказом. Итого до 4-5 уровней вложенности по источникам. И это не предел.

В результате при создании документов теперь, используя этот механизм, кодинг делается только если необходимо создать новую функцию для определения вычисляемого поля (делается это созданием наследника к классу где необходимо перекрыть 3-4 метода). Процесс издания документа осуществляется очень быстро, сравнивали с COM). И все настройки механизма (в том числе шаблоны) сохраняются непосредственно в базе, то бишь могут быть выгружены с помощью стандартного экспорта/импорта группы определений(разумеется кроме MenuItem). Процесс модификации достаточно прост. Изменяешь источники, добавляешь нужные поля. выгружаешь шаблон из базы или берешь сохраненную копию добавляешь эти поля в нужное место разметкой и сохраняешь шаблон в базе. Сразу после сохранения документ будет формироваться в соответствии с настройкой. Шаблоны можно править когда и как удобно, перечень используемых данных для использования в шаблоне на усмотрение пользователя, изменения вступают в силу только после обновления шаблона в базе данных AX . При этом если из настройки удалят источник в шаблоне они просто не будут заполняться, к сбою это не приведет.

Работа была очень интересная и познавательная. Те из клиентов кто с ней работал в целом отзывались о получившемся механизме неплохо, даже не смотря на то, что на них фактически этот механизм и обкатывали).
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
За это сообщение автора поблагодарили: aidsua (1).
Старый 02.04.2008, 13:19   #12  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Цитата:
Сообщение от aidsua Посмотреть сообщение
Типичная задача -- заблокировать к просмотру группу полей для определенных групп пользователей. Ваш подход к данной проблеме? Или Вы считаете, что все поля текущей записи должны быть доступны во внешних отчетах? Самый простой пример -- себестоимость.
Видите ли мы делали не столько отчеты, сколько механизм издания печатных форм документов. Какой смысл издавать тот же приказ если в нем будут отсутствовать часть данных из за того что у кадровика которые его печатает нет прав на просмотр этих данных? Думаю в таком случае он не имеет права печатать такой документ верно.)
Ради гибкости и универсальности механизма настройки RLS пришлось принебречь. При желании можно конечно и RLS прикрутить, только надо ли? Все таки это же не отчеты
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Теги
ax3.0, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сергей Герасимов: На что похожа работа в технической поддержке Blog bot DAX Blogs 0 04.02.2008 10:40
Доступ к меню "Работа с документами" Kuat DAX: Администрирование 4 16.11.2007 17:07
Совместная работа заказчика и исполнителя в разных или одном слое? Кузин Владимир В. DAX: Программирование 6 08.08.2006 10:02
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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