Вывод в 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
37
.epf 119,13Kb 37 Скачать

См. также

Комментарии
Сортировка: Древо
1. guy_septimiy 16.11.17 09:44 Сейчас в теме
Полезно.
Плюс
nomadon; cleaner_it; mrDSide; +3 Ответить
2. Йожкин Кот 1049 16.11.17 09:54 Сейчас в теме
Очень здорово! Хочу такую же для локального кэша и для настроек пользователя!
the1; BigB; nixel; nomadon; cleaner_it; ALagutin; mrDSide; KroVladS; baton_pk; +9 Ответить
3. cleaner_it 232 16.11.17 13:50 Сейчас в теме
Очень даже полезно, молодец)
4. nomadon 272 16.11.17 14:39 Сейчас в теме
5. Darklight 6 16.11.17 16:49 Сейчас в теме
6. Brawler 380 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 148 17.11.17 09:09 Сейчас в теме
(6)
Однако лёгкая возможность настройки произвольного шаблона создания файла даёт возможность поэкспериментировать самостоятельно.

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

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

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


Поэтому я в примере и заключил в квадратные скобки GUID базы, ну чтобы не вызывать внутренние противоречия.
13. LexSeIch 193 18.11.17 14:15 Сейчас в теме
Интересная статья. Будет время попробую на практике. Спасибо!
14. Vyatcheslav 8 22.11.17 09:56 Сейчас в теме
Очень оригинально, спасибо!
15. 7OH 32 22.11.17 10:54 Сейчас в теме
У вас ошибка в шаблоне по-умолчанию в ШаблонПоУмолчаниюКаталогПользователя.
М.Получить(
У структуры не такого метода - там должно быть
ИсточникДанных.Получить(
16. Fatov_DI 23.11.17 11:58 Сейчас в теме
(15)
У себя исправил так М.НаименованиеВСписке
17. kolya_tlt 11 26.01.18 09:05 Сейчас в теме
идентификаторы зачем было замазывать? это же не пароли от карточки банковской
18. kuzyara 515 31.01.18 05:17 Сейчас в теме
Колонки отображаются автоматически, или их через диалог "Выбор столбцов в таблице" нужно включать?
19. Alias 148 31.01.18 10:08 Сейчас в теме
(18) К сожалению, включить самому. Я не знаю где хранятся эти настройки (отображаемых колонок)... Если бы знал -- подумал бы как включить их автоматически. Буду рад любой информации :)
20. spogo 2 01.02.18 11:04 Сейчас в теме
Ошибка при разборе файла списка на баз на строках типа:
//Folder=/ИмяПапки
21. Alias 148 01.02.18 16:20 Сейчас в теме
(20) Такая строка не является штатной... Документация по структуре v8i -- https://its.1c.ru/db/v8312doc#bookmark:adm:TI000000368
Если такая строка появилась путём ручной корректировки файла -- что ж, всего предусмотреть невозможно :)
Обработка гарантированно умеет работать с форматом файла, описанным в документации. Иные варианты требуют хоть и простейшей, но всё же доработки.
P.S. Хотите я дополню код чтобы строки файла v8i, начинающиеся с "//", пропускались?
22. spogo 2 01.02.18 16:59 Сейчас в теме
(21) ручной корректировки не было. Спасибо сам поправлю.
23. Zhilyakovdr 88 15.02.18 11:39 Сейчас в теме
В шаблоне по умолчанию поправьте М.Получить("Имя базы 1С") на ИсточникДанных.Получить("Имя базы 1С")
Оставьте свое сообщение