|  | 
|  08.11.2017, 21:28 | #1 | 
| Участник | Цитата: Последний раз редактировалось skuull; 08.11.2017 в 23:12. | 
|  | |
| За это сообщение автора поблагодарили: MazZzDaI (1). | |
|  13.11.2017, 11:11 | #2 | 
| Участник | Цитата: 
		
			Сообщение от skuull
			   Поиск по форуму великолепный Что значит kind в xReference в ax7? Сделал приложение для замены кодов меток Ax7LabelsReplacer Критика приветствуется. | 
|  | |
| За это сообщение автора поблагодарили: mazzy (4). | |
|  13.11.2017, 12:22 | #3 | 
| Участник | Цитата: 
		
			Сообщение от MazZzDaI
			   Сделал приложение для замены кодов меток Ax7LabelsReplacer Критика приветствуется. Пусть будет больше проектов - хороших и разных. Не столько критика, сколько предложения для обсуждения: 
 Последний раз редактировалось mazzy; 13.11.2017 в 12:40. | 
|  | |
| За это сообщение автора поблагодарили: MazZzDaI (1). | |
|  13.11.2017, 13:55 | #4 | 
| Участник | 
			
			Спасибо большое за отзыв! Цитата: Цитата: Поиск на моём инстансе занимал 22 сек для каждой метки, для оптимизации перенёс все нужные References в отдельную таблицу путём select * into. Цитата:  Цитата: Цитата: 
		
			Сообщение от mazzy
			   чтение файла - очень медленная операция. поэтому хотелось бы, чтобы алгоритм был более умным и читал только один раз. могу ошибаться, но мне кажется, что сейчас каждый xml-файл будет читаться столько раз, сколько меток в этом файле найдено перекрестными ссылками (retList - обычный список, который позволяет хранить дубли. в sql нет group by) Цитата: Цитата: Действительно  Цитата: При подключенной системе контроля версий все изменённые файлы сваливаются в Pending changes, выгребаю оттуда командой "tf status". Цитата: 
		
			Сообщение от mazzy
			
			 при включенной системе контроля версий, в большинстве случаев у файлов будет включен ReadOnly атрибут.  Цитата: Цитата:   Последний раз редактировалось MazZzDaI; 13.11.2017 в 13:59. | 
|  | 
|  13.11.2017, 14:29 | #5 | 
| Участник | 
			
			еще бы! where like c первым символом '%' - почти гарантированный table scan )))) Цитата: а реентерабельность? а параллельная обработка? а разрастание tempDB на ровном месте? значит, для "оптимизации". ладно, молчу-молчу... чтобы задуматься над вопросом, не обязательно входить в группу разработчиков. Цитата: это человек должен вручную запускать столько раз, сколько моделей он хочет изменить? Цитата: Все - не хорошее слово. Как только появляется слово "все" - жди логической ошибки. я правильно понимаю, что вы считаете, что в одном сеансе человек будет делать только метки? и человеку действительно улыбается откатить ВСЕ свои изменения из-за "не так" сработавших меток? Цитата: данная утилита добавит еще несколько десятков, а несколько десятков изменит непредсказуемым для человека образом. ))) Угу-угу. Все. Именно. Кроме того, утилита не выдает(!) список измененных файлов. А только выводит сообщения на консоль. )))) угу-угу. Сваливаются. Я об этом же. Му-ха-ха-ха! Извините. Вы точно не входите в команду разработчиков? У вас ход мыслей очень похож. Думаю, что вы нашли бы общий язык с ними. Можем. пока предпочитаю потрыднеть на форуме. Сблизить подходы, так сказать. прежде всего, лично я считаю, что подобные утилиты лучше делать так, чтобы их можно было добавлять в конвеер обработчиков. поэтому подобные утилиты лучше писать на powershell. ну, или хотя бы использовать stdin, stdout, stderr. Последний раз редактировалось mazzy; 13.11.2017 в 14:41. | 
|  | 
|  14.11.2017, 12:27 | #6 | 
| Участник | 
			
			На выходе функции "SearchFiles" будет foundFiles со списком файлов найденных в папке(rootDirectory) и ее подпапках  согласно заданному критерию поиска (SearchPattern), за исключением папок и файлов с ошибками доступа. В myLogFile будет записан лог с добавленными файлами для изменений и ошибками доступа. Код: private List<string> foundFiles = new List<string>();
private void SearchFiles(string myLogFile, string rootDirectory, string SearchPattern) // Search Document at disks by its pattern
        {
            var Coder = Encoding.GetEncoding(65001);
            File.AppendAllText(myLogFile, ";Changing history:\n", Coder);
            Stack<string> dirs = new Stack<string>(100);
            if (!Directory.Exists(rootDirectory))
            { throw new ArgumentException(); }
            dirs.Push(rootDirectory);
            while (dirs.Count > 0 )
            {
                string currentDir = dirs.Pop();
                string[] subDirs;
                try { subDirs = Directory.GetDirectories(currentDir); }
                catch (UnauthorizedAccessException e)
                {
                    File.AppendAllText(myLogFile, "; Wrong Access to the Folder:  " + currentDir + " \n", Coder);
                    continue;
                }
                catch { continue; }
                string[] files = null;
                try
                { files = Directory.GetFiles(currentDir); }
                catch (UnauthorizedAccessException e)
                {
                    File.AppendAllText(myLogFile, "; Wrong Access to Files in the Folder:  " + currentDir + " \n", Coder);
                    continue;
                }
                catch { continue; }
                foreach (string file in files)
                {
                    try
                    {
                        FileInfo fi = new FileInfo(file); 
                        if (fi.FullName.ToString().ToLower().Contains(SearchPattern) == true) 
                        {
                            File.AppendAllText(myLogFile, fi.FullName + " - add to list\n", Coder);
                            foundFiles.Add(fi.FullName, Coder);
                        }
                    }
                    catch (FileNotFoundException e) 
                    { 
                    File.AppendAllText(myLogFile, "; The File was deleted" + " \n", Coder);
                    continue; 
                    } 
                    catch { continue; }
                }
                foreach (string str in subDirs)
                { dirs.Push(str); }
            }
        } | 
|  | 
|  13.11.2017, 12:38 | #7 | 
| Участник | Цитата: 
		
			Сообщение от MazZzDaI
			   Да, ты прав, Евгений, спасибо ^_^ Сделал приложение для замены кодов меток Ax7LabelsReplacer Критика приветствуется.  мне осталось только дополнить, что сканирование папок лучше завернуть в обертку try catch так как во время поиска возможны ошибки доступа и ошибки с пермишенами - и программа будет просто вывалиться. | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2). | |
|  13.11.2017, 12:48 | #8 | 
| Участник | Цитата: и, при включенной системе контроля версий, в большинстве случаев у файлов будет включен ReadOnly атрибут. | 
|  | 
| Теги | 
| ax7, d365, label | 
|  | 
| 
 |