Вывод в windows-проводнике названия баз в каталоге кластера 1С и каталогах локального кэша и настроек пользователя

Администрирование - Системное

Вывод в windows-проводнике названия баз в каталоге кластера 1С и каталогов локального кэша и настроек пользователя. Используется создание файла desktop.ini, который автоматически размещается в подкаталогах кластера 1С. Теперь станет немного проще определить прямо в windows-проводнике, что, к примеру, каталог fd531400-428c-41c0-954f-b910bb5cc552 это именно база ERP.

Возможно, существует много обработок которые анализируют файл 1CV8Clst.lst, выводят из него данные в человеческом, позволяют удалить каталоги несуществующих баз, предоставляют другие сервисные возможности и т.д. Да что там говорить, я и сам когда-то в качестве развлечения тоже делал различные варианты парсера этого файла.

Однако что интересно, я не смог найти на Инфостарте упоминания файла desktop.ini или уникального идентификатора {F29F85E0-4FF9-1068-AB91-08002B27B3D9}.

А между тем, несложно сложив одно с другим, мы получаем возможность задать некоторые свойства каталога (что, как мне кажется, невозможно сделать интерактивно), которые будут видны в отдельных колонках в проводнике Windows при выводе в режиме "таблица". Если кому-то, как и мне, надоело видеть в каталоге "reg_1541" безликие УИДы, это можно легко исправить -- всего-то создать desktop.ini нужного формата и включить отображение колонки "Название".

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

  • выбираем место выполнения кода (клиент или сервер).
  • выбираем или указываем каталог кластера 1С (с учётом контекста; помним что выполнение возможно на клиенте и на сервере). Например каталог "C:\Test" при работе с сервера и "\\Server1C\C$\Test" при работе с клиента это суть одно и то же, вопрос только в авторизации доступа.
  • нажимаем "Создать desktip.ini". После этого:
  • проверяется доступ к каталогу.
  • считывается и парсится файл 1CV8Clst.lst.
  • считываются подкаталоги кластера.
  • в каждом подкаталоге создаётся файл desktop.ini, формирующийся по заданному шаблону, используя данные из 1CV8Clst.lst и любой код на языке 1С.
  • теперь в windows-проводнике каталога кластера можно отобразить колонки, заполненные нашими данными. Данные могут появиться не мгновенно, но в пределах десятка секунд.

Информации о desktop.ini довольно мало, и иное его использование (кроме задания тех свойств про которые я упоминал) у меня не получилось. Даже свойство "Комментарий" почему-то не работает, не говоря уже о более экзотических вариантах типа установки индивидуальной иконки для папки (хотя описано и такое, и ещё куча прочих). Однако лёгкая возможность настройки произвольного шаблона создания файла даёт возможность поэкспериментировать самостоятельно.

Ссылки к размышлению (https://msdn.microsoft.com/en-us/library/ms692560, https://hwiegman.home.xs4all.nl/desktopini.html) есть в обработке.

Обработка прилагается, собственно идея не так уж сложна, так что основной объём кода -- это обвязка, интерфейс, удобства и настройки. Ах да, управляемые формы.
Результаты работы -- на скриншотах. Буду рад, если кому-то пригодится.

Upd. 17.11.2017 - "Хочу такую же для локального кэша и для настроек пользователя!" (с)
Теперь нужно выбрать ещё и "Режим работы" -- каталог кластера или каталоги пользователя. Первый режим (для кластера) работает по старому, а во втором (каталоги пользователя) каталог выбирать уже не нужно, используются AppData и LocalAppData. Второй режим можно включить только в случае выполнения кода на клиенте. Шаблоны для двух режимов -- разные.
Схема работы во втором режиме:
- считываются и парсятся файлы ibases.v8i из каталогов %APPDATA%\1C\1Cv81, %APPDATA%\1C\1CEstart;
- в каталоге %APPDATA%\1C\1CEstart считываются указанные в файле 1CEStart.cfg параметры CommonInfoBases, и указанные в них файлы ibases.v8i тоже считываются и парсятся;
- считываются подкаталоги %APPDATA%\1C\1Cv81, 1Cv82, 1Cv8, %LOCALAPPDATA%\1C\1Cv81, 1Cv82, 1Cv8
- в каждом подкаталоге создаётся файл desktop.ini, формирующийся по заданному шаблону, используя данные из ibases.v8i (поиск по УИД) и любой код на языке 1С

NB! в настоящее время наименее производительным местом является разбор файла-шаблона, который осуществляется много раз и посимвольно (для каждого подкаталога). В результате при большом количестве подкаталогов формирование файлов может затянуться на несколько лишних секунд, хотя парсинг, фактически, каждый раз выполняется один и тот же. Не оптимизировал, т.к. обработка не предполагается для частого запуска. Удаляйте из шаблона лишние комментарии и неиспользуемые параметры.

P.S. не знаю можно ли скачивать обновление без $m, получится ли обновить предыдущий файл; так что выложил новый в то же место как v2. Если что не так, то скачавшие первую версию могут написать, вышлю вторую.

Скачать файлы

Наименование Файл Версия Размер
Вывод в windows-проводнике названия баз в каталоге кластера 1С и локальных каталогах пользователя (v2)
.epf 119,13Kb
17.11.17
21
.epf 119,13Kb 21 Скачать

См. также

Комментарии
1. Валентин Виноградов (guy_septimiy) 16.11.17 09:44 Сейчас в теме
Полезно.
Плюс
nomadon; cleaner_it; mrDSide; +3 Ответить
2. Артем Бардюг (Йожкин Кот) 1039 16.11.17 09:54 Сейчас в теме
Очень здорово! Хочу такую же для локального кэша и для настроек пользователя!
the1; BigB; nixel; nomadon; cleaner_it; ALagutin; mrDSide; KroVladS; baton_pk; +9 Ответить
3. Роман Осадченко (cleaner_it) 217 16.11.17 13:50 Сейчас в теме
Очень даже полезно, молодец)
4. Денис Харченко (nomadon) 168 16.11.17 14:39 Сейчас в теме
5. Павел Одинцов (Darklight) 16.11.17 16:49 Сейчас в теме
6. Игорь Фелькер (Brawler) 343 16.11.17 18:23 Сейчас в теме
Подайте кто нить идею самой 1С.
Прогеры платформы, могли бы такое тоже спокойно замутить))

P.S.
Я бы наверное поступил несколько иначе при оформлении ini файла.
В такой ситуации имя папки в проводнике заменяется на указанное в ini файле.

Например

[.ShellClassInfo]
InfoTip=Супер база!!!
IconFile=ico.ico
IconIndex=0
LocalizedResourceName=Супер база!!! [9a0b6c4b-c564-4b66-8e14-9c0b8f565564]



IconFile - путь к файлу иконки ежели очень нужно, в данном случае она лежит в этой же папке
7. Александр Полетаев (Alias) 120 17.11.17 09:09 Сейчас в теме
(6)
Однако лёгкая возможность настройки произвольного шаблона создания файла даёт возможность поэкспериментировать самостоятельно.

Скажите, а Вы сами проверяли указанный вариант? Работало? На какой ОС?

Использование иных параметров (кроме задания тех свойств про которые я упоминал) у меня не получилось. Даже свойство "Комментарий" почему-то не работает, не говоря уже о более экзотических вариантах.

Конечно я пробовал и "несколько иначные" варианты. У меня на WinServ2008R2 и Win7Pro не взлетели. Если у Вас есть успешный опыт использования иных вариантов -- делитесь :)
8. Игорь Фелькер (Brawler) 343 17.11.17 09:56 Сейчас в теме
(7) Это точно вопросы ко мне? Цитаты просто не из моего сообщения. Я в замешательстве.
9. Александр Полетаев (Alias) 120 17.11.17 10:02 Сейчас в теме
(8) Прошу прощения, вопросы к Вам. :) а цитаты из текста публикации, которые заранее ответили на сообщение. В частности, на Ваше "Я бы наверное поступил несколько иначе" есть ответ в тексте -- "лёгкая возможность даёт поэкспериментировать"; а на "использовать LocalizedResourceName" -- "я пробовал у меня не получилось".
10. Игорь Фелькер (Brawler) 343 17.11.17 10:38 Сейчас в теме
(9) У папки должен быть установлен атрибут "Только чтение", только так начинает показывать.
Атрибут устанавливать рекомендую не при помощи проводника винды)))
Прикрепленные файлы:
cleaner_it; Alias; +2 Ответить
11. Александр Полетаев (Alias) 120 17.11.17 11:44 Сейчас в теме
(10) Спасибо, да, действительно сработало. Видимо нужно в настройки вывести отдельно галочку "Устанавливать атрибут Только чтение", чтобы для желающих обеспечить возможность такого отображения...
Для себя я не хочу менять отображаемое имя, опасаюсь. Нужна всё же какая-то стабильность :) а то видим имя одно, а по факту оно другое -- это может ввести в ступор.
12. Игорь Фелькер (Brawler) 343 17.11.17 12:22 Сейчас в теме
(11)
Для себя я не хочу менять отображаемое имя, опасаюсь. Нужна всё же какая-то стабильность :) а то видим имя одно, а по факту оно другое -- это может ввести в ступор.


Поэтому я в примере и заключил в квадратные скобки GUID базы, ну чтобы не вызывать внутренние противоречия.
13. Сергей Маслов (LexSeIch) 188 18.11.17 14:15 Сейчас в теме
Интересная статья. Будет время попробую на практике. Спасибо!
14. Вячеслав Григорьев (Vyatcheslav) 3 22.11.17 09:56 Сейчас в теме
Очень оригинально, спасибо!
15. Семён Павлюков (7OH) 31 22.11.17 10:54 Сейчас в теме
У вас ошибка в шаблоне по-умолчанию в ШаблонПоУмолчаниюКаталогПользователя.
М.Получить(
У структуры не такого метода - там должно быть
ИсточникДанных.Получить(
16. Дмитрий Фатов (Fatov_DI) 23.11.17 11:58 Сейчас в теме
(15)
У себя исправил так М.НаименованиеВСписке
Оставьте свое сообщение