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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2007, 16:33   #1  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
? Правильные справочники
Есть устойчивая концептуальная проблема со справочниками.

Она исходит из двух посылок:
1. Аксапта практически не использует суррогатных ключей.
2. Аксапта не поддерживает вывод наименования рядом с кодом в ссылке на справочник

Соответственно, во-первых, кто-то должен присваивать идентификаторы для кодов справочников отличные от их наименования.

Во-вторых, для вывода описаний значений справочника надо делать дополнительный код (обычно, дисплей-методы)

В-третьих, фильтрация по наименованиям затрудняется (при этом часто ее требуют): либо для фильтрации нужно лезть в дополнительную форму либо надо программировать дополнительные контролы для ввода параметров фитльтра?

Кто как решает эту проблему?

Я встречал два противоположных способа и их горячих сторонников.

1. Идентификаторы делают длинными и осмысленными -- соотвественно они требуют переименования при изменении названия значения

2. Идентификаторы делают неосмысленными или они содержат небольшой условный префикс и номер типа спирт001.

Какой по вашему должны быть структура справочника?
Есть ли у вас проблема того,что пользователи требуют фильтрацию по наименованию прямо в гриде?

P.S я знаю что для обязательных атрибутов это решается более-менее приемлемо.
Старый 02.07.2007, 16:40   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
В догон: одной из первых моих реальных задач на Аксапте было прилепление названия номенклатуры в строки закупок, складских журналов и т.д.

Есть ли люди пользователям которых достаточно видеть коды номенклатуры в этих местах и как они этого от пользователей добились?
Старый 02.07.2007, 16:47   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ответом это не будет, но расскажу, как сделали у нас.
название номенклатуры так и выводят дисплей методами (редко через доп. источник - в случае, когда еще пару полей из ном. справочника тоже надо выводить)
но у нас есть еще одно поле - каталожный номер (типа второй код номенклатуры). Нужны оба кода, (один - реальный код, второй - из 1С). и искать хотят, ессно, по обоим.

так вот пошли путем денормализации базы. и добавили это поле рядом с кодом номенклатуры в требуемые справочники.
и написали движок небольшой, который при изменении номенклатуры подтаскивает и каталожный номер.
и периодическую операцию обновления на всякий случай.

пока проблем не было. Производительность выше. А база данных не намного больше размером (поле то всего одно).
Но, конечно, это не выход в общем случае.
Старый 02.07.2007, 17:11   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А коды какие используюте? осмысленны или номера?
Старый 02.07.2007, 17:13   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от belugin Посмотреть сообщение
А коды какие используюте? осмысленны или номера?
ItemId - из 1С (то есть код номенклатуры, используемый в 1С до внедрения Аксапты)
CatalogNum - общепринятое название запчасти - менеджерам проще его использовать некоторым.
За это сообщение автора поблагодарили: belugin (1).
Старый 02.07.2007, 17:20   #6  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
В номенклатуре используем артикул, который абстрактный, но несет в себе некоторую нагрузку (группы товаров, подвид и т.п.), описание пришлось тащить везде, т.к. при небольшом наборе активных позиций быстрее работать с артикулами (причем числовыми с использованием некотрых разделителей), да и индексировать поля длиной не более 12 символов легче, чем по названиям в пятьдесят.
А вот там, где одно из ключевых полей достаточно коротко, можно отойти от кодировния. Так поступили, например, с городами и улицами.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
За это сообщение автора поблагодарили: belugin (1).
Старый 02.07.2007, 17:23   #7  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Нужен более концептуальный механизм. Что-то вроде определения аттрибутов в справочнике, которые понадобятся для анализа\поиска\сортировки. И вывода их куда-то, по какой-то кнопке и возможностью их скрытия. Завтра идею разработаю подробно.
__________________
С уважением Шатохин Святослав.
Старый 02.07.2007, 17:26   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Нужен более концептуальный механизм
В принципе, есть titleField2 в таблице, который, например, используется при выводе подсказки.
Старый 02.07.2007, 19:26   #9  
Vals is offline
Vals
Аманд
Аватар для Vals
Компания АМАНД
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2009
 
1,765 / 507 (20) +++++++
Регистрация: 27.02.2002
Адрес: Pass partout, Москва
Цитата:
одной из первых моих реальных задач на Аксапте было прилепление названия номенклатуры в строки закупок
Оно там есть в стандарте.
Старый 02.07.2007, 19:28   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Vals Посмотреть сообщение
Оно там есть в стандарте.
Имелось ввиду, думаю, возможность сортировки и фильтрации по названию номенклатуры в строках закупок/заказов
Старый 02.07.2007, 21:20   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Имелось ввиду, думаю, возможность сортировки и фильтрации по названию номенклатуры в строках закупок/заказов
Не, это я ошибся, наверное. За 3 года какую-то конкретную форму перепутал. Но я помню там была куча форм. Если кто-то собирается писать мою биографию, могу попросить раскопать, каких именно.
Старый 02.07.2007, 21:39   #12  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
На моей памяти добавление названия номенклатуры с возможностью поиска и сортировки в запрос в наличии и в форму создания строк заказов и закупок (+ форма создания строк журналов переноса, содранная с заказов).

В строках складских журналов добавляли display-методом. Может еще где-то.

Клиенты и поставщики нужны были с фильтрацией и сортировкой в заказах и закупках. Решалось закрытием редактирования поля SalesName и аналогичного в закупках. Возможно, к Счету на что-то джоинилось.

Чего-то мне не запомнилось особенно много мест, где очень важно искать и сортировать именно по имени клиента.

Может вам стоит задуматься над архитектурой решения? У вас точно все в порядке, если вам сплошь и рядом нужен поиск и сортировка по... ну ладно по номенклатуре... но вы же наверное видели, что пользователи пишут в имени клиента...
__________________
С уважением,
glibs®
Старый 02.07.2007, 21:54   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
У меня сейчас ситуация несколько другая.
Мне сейчас приходится создавать кучу нестандартных
справочников. Вот и интересно, какие разновидности справочников бывают и какие у них особенности реализации.

Как я понял, номенклатуру обычно кодируют по номерам, потому что ее много и названия сложные, а клиентов - по именам, потому, что часто названия есть короткие типа

ЗАО Флористическая Компания "Цветочек"

можно удобно сократить до

Цветочек

и даже если она поменяет название на "Кактус" то пользователи по старой памяти могут продолжать называть ее "Цветочек"
Старый 02.07.2007, 22:26   #14  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от belugin
...
номенклатуру обычно кодируют по номерам, потому что ее много и названия сложные, а клиентов - по именам
...
Не факт. Я чаще встречал цифровую кодировку клиентов.

По моему опыту кодировка клиента мало кого интересует (если их количество не измеряется десятками, конечно). Там действительно нужен поиск по названию (кому-то помогает по городу, встречал вариант идеи идентифицировать клиента даже по номеру телефона). Но поиск по названию нужен не везде, а только в том месте, где принимается заказ и определяется необходимость ввода нового клиента.

Кодировка номенклатуры куда важнее. Точнее, даже не кодировка, а классификация. Был свидетелем занимательного процесса кодировки номенклатуры, когда клиент сначала (серьезно, долго и старательно) пытался построить дерево, а потом выкинул его нафиг, так как менеджмент не смог договориться о принципах классификации (у каждого было свое мнение), и сошлись на взаимозависимых фильтрах "как в Excel".

Возможно, для ваших справочников подойдут какие-то принципы из тех, которые применимы для клиентов или номенклатуры.
__________________
С уважением,
glibs®
Старый 03.07.2007, 09:45   #15  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Еще вопрос, а кто работает номерной серией в случае номерной кодировки?
Старый 03.07.2007, 09:51   #16  
twilight is offline
twilight
MCTS
MCBMSS
 
867 / 237 (9) ++++++
Регистрация: 17.10.2004
Адрес: Королёв
Цитата:
Сообщение от belugin Посмотреть сообщение
Еще вопрос, а кто работает номерной серией в случае номерной кодировки?
Мы в справочнике номенклатуры сделали древовидный классификатор, к узлу классификатора прикрепляется номерная серия и при создании номенклатуры ее номер выбирается из номерной серии соответствующего узла.
За это сообщение автора поблагодарили: belugin (2).
Старый 03.07.2007, 10:54   #17  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
С чисто формальной стороны, то, что используется в AXAPTA и есть суррогатный ключ, поскольку это не есть информационное поле. В смысле, поле, содержащее некую осмысленную информацию о сущности. Это просто идентификатор записи.

Другое дело, что, как правило, суррогатный ключ используется для внутренних механизмов обеспечения ссылочной целостности и пользователю не показывается. Пользователь видит как раз "Имя", а не "Код".

А в AXAPTA пошли более простым путем - дали пользователю возможность напрямую как просматривать, так и вводить коды записей. Поэтому возникла иллюзия того, что это "естесственные ключи". На самом деле это не так. И об этом надо всегда помнить.

Где-то здесь была ссылка на статью Mazzy по поводу поиска по внешнему ключу в связанном справочнике. Не могу найти.

Суть в том, что таблица-справочник цепляется по JOIN к основной таблице и в Grid отображаются напрямую поля из таблицы-справочника. Никаких дисплейных методов и дополнительных полей.

Работают все штатные механизмы поиска и фильтрации. Более того, через расширенное окно поиска можно задать критерии отбора по полям, не отображаемым на форме.

Недостаток такого метода в том, что он не подходит для внешних объединений, когда код может быть, но может и не быть. И есть некоторые проблемы при модификации внешнего кода. Надо не забыть принудительно обновить текущую запись в связанной таблице.
Старый 03.07.2007, 11:00   #18  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Основаня проблема предложенного подхода, описанного Вами, заключается в том, что после определенного числа источников (7 вроде) они перестают работать.
+ если неправильно построены они иерархически, то перестать работать они могут и раньше. А именно так обычно и получается, когда добавлять поля надо в существующие формы.
Старый 03.07.2007, 11:15   #19  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
С чисто формальной стороны, то, что используется в AXAPTA и есть суррогатный ключ
Мне нравится понятие искусственный ключ.

Цитата:
Суть в том, что таблица-справочник цепляется по JOIN к основной таблице и в Grid отображаются напрямую поля из таблицы-справочника. Никаких дисплейных методов и дополнительных полей.
Ага я про это знаю...
Старый 04.07.2007, 17:35   #20  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Можно попробоваь направить пожелание MS через программу TAP по поводу работы со справочником. Я пока вижу следующее:
  • В EDT добавить свойство с названием типа "Добавлять поля заголовка"
  • Если свойство установлено, то тех случаях, когда по полю с этим EDT автоматически генерируется контролы (например, если оно является частью группы присвоенной какому-нибудь элементу управления или его перетаскивают из DataSource на форму), это поле должно отображаться в группу в которую входят:
    • или поля составляющие специальную группу "TitleFields" на таблице, на которую сслыается EDT
    • или поля titleField1, titleField2 этой таблице если в TitleFields нет полей
Теги
естественный ключ, искусственный ключ, как правильно, ключ, суррогатный ключ, crm2011

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Абстрактный классификатор Maxim Gorbunov DAX: Программирование 52 17.01.2005 13:52
Централизованные справочники ZVV DAX: Прочие вопросы 12 02.09.2004 13:42
А есть ли в Аксапте стандартные российские справочники? edd DAX: Функционал 11 22.07.2003 05:49
Как заполнять основные справочники? renat DAX: Функционал 9 13.11.2002 17:39
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:53.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.