|  24.02.2018, 00:49 | #1 | 
| Участник | Table extension 
			
			И снова я прошу поделиться опытом о том, как делается у вас на проекте. На этот раз про добавление новых полей в стандартные таблицы.  На предыдущих моих Ax2012 проектах добавлялись в стандартные таблицы. Проблем не имели. Сейчас новый проект начинаем(да, снова на Ax2012 - это выбор клиента, не обсуждается) Заранее спланировать сколько полей будет куда добавляться не реально. Нужно решить добавлять их в стандартные таблицы или создавать новые. (вроде как, основная рекоммендация от мс, что, если больше 5, то надо создавать отдельную таблицу) Посмотрела видео https://www.youtube.com/watch?v=YrfHtAKRMbk и ужаснулась. Особенно неприятен вопрос с производительностью. Столько уродливых чертыханий, а в итоге лишние джойны, перекрытие insert(), не использование кластерного индекса(большинство стд таблиц не по recid кластерный имеют). Да еще лишние потенциальные баги   Особенно насторожил комментарий в конце этой статьи http://daxonline.org/9-table-extension-framework.html о том, что у товарищей были проблемы при использовании document services. Тк у нас будет много интеграций впереди, то самое неприятное было бы напороться на подобные проблемы, когда основной функционал уже разработан и протестирован. Успокойте барышню, cкажите, что все хорошо, и стоит следовать политике партии и в этом случае, а?  Спасибо AX2012 R3 | 
|  | 
|  24.02.2018, 06:36 | #2 | 
| Участник | 
			
			Мой личный подход: Не надо плодить лишние сущности без необходимости. Если нет особых требований, то добавляю поля в нужную таблицу и не парюсь. Особые требования для выделения отдельных таблиц: 1. Желание клиента. Против не попрешь. 2. Информация в дополнительных полях будет заполняться не для всех записей существующей таблицы и необходимо экономить место в базе данных. 3. Есть вероятность распараллеливания данных по одной записи существующей таблицы (несколько дополнительных строк например с историей изменений) | 
|  | |
| За это сообщение автора поблагодарили: sukhanchik (2), axotnik88 (1), alex55 (1). | |
|  24.02.2018, 10:08 | #3 | 
| Участник | 
			
			Я бы добавлял поля и не парился. Новую таблицу нужно добавлять когда нужна таблица. Не забывайте эту систему будут внедрять и сопровождать другие люди и они могут не понять ваших гениальных замыслов    Ну и 12ку я бы больше не внедрял   | 
|  | 
|  24.02.2018, 10:25 | #4 | 
| Участник | 
			
			Просто добавляйте поля. В стандарте не так уж много крупных таблиц с расширением (номенклатура, продажи, покупки, персонал, договора, журналы). На них итак уже есть подходящее вам расширение (_RU, например). Не думаю, что будут у вас еще какие то таблицы где надо будет добавлять больше 30 полей.
		 | 
|  | 
|  24.02.2018, 10:31 | #5 | 
| Участник | |
|  | 
|  24.02.2018, 11:28 | #6 | 
| Участник | 
			
			"Во первых строках" видо, на которое указана ссылка было сказано, что данный функционал (предположительно) был создан для поддержания локализации. Далее в том же видео об этом говорится отдельно и особо. Т.е. если посмотреть, в каких случаях часть полей таблицы в стандартном FrameWork были выделены в отдельную таблицу без "оправдания" в виде структуры данных или бизнес-логики, то это все таблицы-локализации. С окончаниями, вроде RU, BR, UK, PL и т.п., которые явно указывают на страну. Локализацию Собственно, это логично. Зачем тащить в таблицу поля, которые явно никогда использоваться не будут просто потому, что в данной конкретной локализации соответствующий функционал не нужен. Просто в младших версиях Axapta эта задача решалась при помощи конфигурационных ключей, которые меняли структуру данных "на лету". А в Ax2012 для этого предлагают CountryRegionsXXX, поскольку он дает больше "свободы маневра" Отсюда и вывод. Если у Вас не стоит задача поддержки разной локализации, то и нет смысла создавать отдельную таблицу. Но, разумеется, если разделение на таблицы не обусловлено бизнес-логикой, требованием заказчика или какими-то техническими ограничениями базы данных. Другими словами в данном конкретном случае правилом является добавление новых полей в текущую таблицу. Вне зависимости от их количества. Выделение полей в отдельную таблицу - это уже "исключение". Требует дополнительных "оправданий" и обоснований  PS: Хотя сильно подозреваю, что в старших версиях ситуация изменится на прямо противоположную. Уж больно удобный способ "не трогать" хотя бы структуру стандартных таблиц. Но это дело будущих версий   
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  24.02.2018, 11:36 | #7 | 
| Administrator | 
			
			Желание клиента внедрять AX2012 вполне здравое и я его поддерживаю. Любая компания, которая хочет получить инструмент для работы - хочет получить готовый инструмент, в котором уже наиболее известные баги вылечены. D365 сейчас все же еще далека от совершенства (с т.з. готового инструмента), особенно если требуется использование российской локализации. К слову сказать, что со стороны внедренца, конечно лучше внедрять D365 - это и развитие себя и возможность повлиять на исправление багов в МС. Я бы добавлял поля. Просто потому, что это удобно разработчику и как следствие дешевле заказчику. Т.е. если есть заранее информация о том, что полей будет слишком много и все они будут расширять существующую таблицу с большим количеством полей, то тогда может и стоит подумать об отдельной таблице, но... опять-таки взвесив все плюсы (уменьшение размера записи) и минусы (джойны и заполнение данных) Рекомендации Микрософт, как и бест практис надо всегда пропускать через призму разума. Когда выходила RTM-версия - было много рекомендаций про наследование таблиц - про то, что это круто и это надо использовать. А позже как-то все это стушевалось и в рекомендациях разработки одного из партнеров была даже фраза, что наследование стараться не использовать. В Микрософте бывают рекомендации, которые противоречат производительности и удобству поддержки. В моей практике помню мы так отчет ДДС правили путем влезания в разноску, а не собирания его, как это делается штатными средствами, потому что было требование заказчика обеспечить скорость его построения в 1 минуту. Были еще рекомендации (в старых версиях) по экспорту / импорту данных через группу определений. Опять-таки это все работает до определенного объема данных. Заранее все не предусмотришь, поэтому я бы добавлял поля, а потом, если это стало бы краеугольным камнем в производительности - оптимизировал бы код и не факт что это было бы просто вынос полей в отдельную таблицу. 
				__________________ Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 24.02.2018 в 16:26. | 
|  | |
| За это сообщение автора поблагодарили: Logger (3), IKA (1). | |
|  24.02.2018, 22:13 | #8 | 
| Участник | Цитата: 
		
			Сообщение от Владимир Максимов
			   Т.е. если посмотреть, в каких случаях часть полей таблицы в стандартном FrameWork были выделены в отдельную таблицу без "оправдания" в виде структуры данных или бизнес-логики, то это все таблицы-локализации. С окончаниями, вроде RU, BR, UK, PL и т.п., которые явно указывают на страну.  В 2012 все слои были слиты в один. НО получилось так что 
 Чтобы это преодолеть локализация была вынесена в отдельные таблички и в отдельные ifы, проверяющие код страны. | 
|  | 
|  25.02.2018, 11:22 | #9 | 
| Участник | 
			
			2 sukhanchik: Меткая параллель с былыми рекоммендациями про виртуальные таблицы. Тоже концептуально все было как бы логично, а на практике в реалиях аксапты - корявое чудовище  Ситуация ясна. Всем большое спасибо! | 
|  | 
|  26.02.2018, 12:27 | #10 | 
| Участник | 
			
			Глупость написала, и никто из вежливости не поправил ... Не "виртуальных", а "наследование таблиц" имела ввиду , конечно ..
		 | 
|  | 
| Теги | 
| ax2012, как правильно | 
|  | 
| 
 |