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