| 
			
			 | 
		#1 | 
| 
			
			 Сенбернар 
		
			
	 | 
	
	
	
		
		
			
			
			С Id или без Id?
			 
			
			Тут некоторые продвинутые программисты предлагают плевать на Id объектов при переносе доработок на Production. Ну, мешают они им свободно жыть ))) 
		
		
		
		
		
		
			Очень хотелось бы их тормознуть (сам я привык к Id), но умных мыслей как-то в голову нейдет... да и работы по уши. Не поможете, с умными мыслями? DAX2009, да. 
				__________________ 
		
		
		
		
	Best Regards, Roman  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Тут нет однозначено правильного ответа. Смотря какую цель преследуете. На разных проектах разные регламенты. У переноса проектами с сохранением Id плюс только один - можно быстро БД с Prod на Test восстановить. Но опыт показываетя, что это недолго происходит - рано или поздно Id все равно разъезжаются. Это же все до первой ошибки при переносе, когда забыл чекбокс поставить. Я на 95% проектов для древних версий переносил без сохранения Id, а актуальность тестовых данных обеспечивал другими способами. 
		
		
		
		
		
		
		
		
			А в AX2012 вообще нельзя с сохранением Id проекты переносить и вопрос стал неактуальным. Последний раз редактировалось oip; 07.07.2020 в 23:53.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
В связи с этим вопрос - все после переноса в своих классах делают инкрементную компиляцию? Или на Production запросто могут быть наследники, которые ничего не знают об изменении родителей? Ну или на Prod регулярно делается глобальная компиляция и регулярно перестартовываются АОСы Нельзя на Prod накатывать обновления приложением, если ID-шники разъехались между Prod и тем приложением, с которого выполняется накат. 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Сенбернар 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Цитата: 
	
Тут вопрос в другом - есть любители посоздавать объекты непосредственно на Prod... и очень хотелось бы их от этого отучить. Id, ИМХО - один из методов это сделать. Знаю. Мне тоже много, что не нравится в 12-й ))) 
				__________________ 
		
		
		
		
	Best Regards, Roman  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ид можно все же при экспорте сохранять в 2012-й. Но немного извращенным способом. 
		
		
		
		
		
		
		
		
			Нужно написать простую обработку на деве, которая пройдется по всем узлам и заполнит legacyId. Затем выгрузит проект в xpo. Удалит свежие узлы. Импортнет из xpo обратно. Это приведет к тому что во всех узлах заполнен legacyId и он же равен обычному id. Если разово надо, то можно без обработки вручную сделать. Затем при переносе через xpo ядро присвоит идентификаторам в тесте и проде значнния равные legacyId. Это выглядит, словно обычный перенос с сохранением идентификаторов. Последний раз редактировалось Logger; 08.07.2020 в 12:02. Причина: Опечатки  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: RVS (3), raz (5), sukhanchik (4). | |
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
ну... вот здесь точно мало человеческого фактора. здесь тупой опыт, который сын ошибок трудных. в ранних Аксаптах было принято хранить в базе tableId/FieldId. такого много в настройках складских аналитик, в markup и в других местах. если на проекте также используется метод хранения идентификаторов объектов, то смена идентификаторов в базе - нетривиальная задача. в остальном - совершенно без разницы id или имена объектов. =========== Отвлеченное рассуждение 1: вообще говоря, в других инструментах где практикуется "код как настройка" вполне обходятся без числовых идентификаторов, используются обычные имена Отвлеченное рассуждение 2: вообще говоря, в других IDE есть вполне рабочий инструмент "Рефакторинг \ Переименование". Это переименование вполне находит используемые имена и вполне успешно переименовывает. И в коде, и в конфиг-файлах и в остальных местах. В Аксапте подобный инструмент называется "Синтаксическое переименование" и работает через перекрестные ссылки. Для пользовательских данных в Аксапте есть "Паспорт записи \ переименование кода". Отвлеченное рассуждение 3: вообще говоря, очень интересно как программисты делают себе любимым противоположный по действию инструмент, чем пользователям. так, в ранних Аксаптах для пользователей предлагали естественные ключи, а внутри инструментов разработки были искусственные идентификаторы объектов а в последних Аксаптах наоборот, для пользователей предлагаются искусственные ключи, но объекты AOT наоброт имеют естественные наименования ![]() очень прикольно. Цитата: 
	
С именами (естественными ключами) работать удобнее. Но решение должно быть осознанным. Как и в остальных областях. Цитата: 
	
а есть еще любители посоздавать объекты из кода (в стандартной аксапте всякие модули Зарплат, например. в старой аксапте ProductBuilder) Зря. Понаблюдайте как идет программирование/конфигурирование в других инструментах. Вспомните где используются идентификаторы (SIDы всякие, идентификаторы групп в линуксах, коды тем и сообщений на форумах) а где используются просто имена (url, современные блоги, docker-файлы, nuget-пакеты, npm-пакеты, maven-gradle, электронная почта и много где) Последний раз редактировалось mazzy; 08.07.2020 в 13:47.  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			И еще: 
		
		
		
		
		
		
			
		
		
		
		
	внутри Аксапты Dict-классы работают с ID объектов, а TreeNode работает с наименованиями. если вспомнить инструменты интеграции AIF, DMF, DataEnity, OData, то там никаких идентификаторов ![]() получается, что идентификаторы удобны только в случае, когда Аксапта - единственная система, которая работает сама с собой. Как только Аксапта находится в комплексе взаимосвязанных систем, то идентификаторы становятся неудобными.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Буквально вчера понадобилось расширить ExtCodeTable. При переносе на TEST и STAGE придется после переноса проекта не забыть поменять число с моей таблицей. PS: хорошо что со STAGE на PROD хранилищем обновляемся. А не, вру, табличку расширял AifEndpointActionValueMap, в ExtCodeTable проще. Последний раз редактировалось Raven Melancholic; 08.07.2020 в 14:18. Причина: Ошибся с табличкой  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На самом деле при восстановлении вам все равно придется в версии что-то менять(типа различный параметры интеграции и прочее).   
		
		
		
		
		
		
		
	Для актуализации ID можно использовать вот такой джоб - если данные АХ отличаются от таблицы SQLDictionary, он корректирует таблицу. https://github.com/TrudAX/TRUDScript...Dictionary.xpo Просто вставьте его одним из шагов  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
"параметры интеграции и прочее" надо вынести за аксапту в конфигурационные файлы, которые не будут копироваться ![]() https://github.com/mazzy-ax/SysConfigFile Цитата: 
	
![]() в общем, подходы разные.  
		 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Интерестно. но я что-то не понял идеи, откуда этот файл возьмется к примеру на новом АОСе. И как гарантируется что у одного окружения(к примеру прод - 3 аоса) будут одинаковые файлы?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			а откуда берется новый АОС? 
		
		
		
		
		
		
			
		
		
		
		
		
			кто-то его устанавливает. в рамках установки должен появиться и новый конфигурационный файл. Цитата: 
	
Наводящий вопрос - есть ли что-нибудь общее у одного окружения с кластером АОСов? Ответ - по идее, каталог Application. Поэтому дефолтное расположение конфиг-файлов - %Appl%\Config Однако мы знаем подходы, когда Application для кластера все-таки не делается одним. Ну... для разных специфических целей. Тогда нужно обеспечивать единость или синхронизировать конфигов руками (как и Application-каталоги). Поэтому: сам класс SysConfigFile НЕ занимается этим вопросом, оставляя на откуп архитекторам проекта. Однако по умолчанию используется %Appl%\Config, который в нормальном окружении должен быть единым для разных АОСов Последний раз редактировалось mazzy; 08.07.2020 в 17:46.  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
В 2012 вроде кластер - это же настройка в форме, т.е. аосы друг друга не видят с точки зрения файловой системы. Почему не база?   хотя это тоже наверное обсуждалось
		 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			наверное стоит выделить в отдельную ветку mazzy: Опубликовал проект SysConfigFile 2.0 
		
		
		
		
		
		
			
		
		
		
		
		
			Цитата: 
	
![]() обсуждалось. 1. установку аксапты может делать человек, который не знает Аксапты. Этот человек не будет заходить внутрь аксапты, а тем более менять код чего-бы то ни было внутри аксапты. Тем более, если это не человек, а скрипт ![]() 2. использовать какой-либо признак внутри Аксапты - не выход. прежде всего потому что в современных условиях "установка Аксапты" - это не запуск setup.exe, а копирование виртуалки в другую подсетку. (при этом хорошо выделяются базовые образы и изменения. базовые могут быть общими для нескольких экземпляров виртуалок) как бы то-ни было, при копировании стоит избегать модификации чего-бы то-ни было. поскольку в современных условиях копируется не одна аксапта, а большой набор взаимосвязанных систем. изменить инстанс, порт, название базы или что-нибудь в этом духе - это ж кучу всего перенастроить придется. а вот подмонтировать другой storage с другими конфигурационными файлами к новой виртуалке - раз плюнуть. или склонировать файлы из системы контроля версий куда-нибудь внутрь виртуалки. Такую операцию может проделать человек, который аксапты вообще не знает. а также человек, который доступа к Аксапте не имеет. мало того, и не человек даже ![]() мало того, в большинстве случаев именно так виртуалки и разворачиваются - базовый образ, снапшоты и подмонтируются конфиги для разных программ внутри виртуалки или набора виртуалок. конечно, обсуждалось. можно и какую-то внешнюю базу. мало того, такой вариант даже в коде был. но базу не подошьешь к системе контроля версий ![]() а текстовые файлы - запросто. Последний раз редактировалось mazzy; 08.07.2020 в 18:51.  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			почему эта тема возникла в 2020 году? 
		
		
		
		
		
		
		
	хотя у меня была проблема с ID - создал модель, а потом микросовт тоже создал, с таким же ID и обновление файлилось из-за этого  | 
| 
	
 | 
| 
	
	 | 
	
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
		
  |