Используется создание файла 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" при работе с сервера и "\Server1CC$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.2025 — "Хочу такую же для локального кэша и для настроек пользователя!" (с)
Теперь нужно выбрать ещё и "Режим работы" — каталог кластера или каталоги пользователя. Первый режим (для кластера) работает по старому, а во втором (каталоги пользователя) каталог выбирать уже не нужно, используются AppData и LocalAppData. Второй режим можно включить только в случае выполнения кода на клиенте. Шаблоны для двух режимов — разные.
Схема работы во втором режиме:
— считываются и парсятся файлы ibases.v8i из каталогов %APPDATA%1C1Cv81, %APPDATA%1C1CEstart;
— в каталоге %APPDATA%1C1CEstart считываются указанные в файле 1CEStart.cfg параметры CommonInfoBases, и указанные в них файлы ibases.v8i тоже считываются и парсятся;
— считываются подкаталоги %APPDATA%1C1Cv81, 1Cv82, 1Cv8, %LOCALAPPDATA%1C1Cv81, 1Cv82, 1Cv8
— в каждом подкаталоге создаётся файл desktop.ini, формирующийся по заданному шаблону, используя данные из ibases.v8i (поиск по УИД) и любой код на языке 1С
NB! в настоящее время наименее производительным местом является разбор файла-шаблона, который осуществляется много раз и посимвольно (для каждого подкаталога). В результате при большом количестве подкаталогов формирование файлов может затянуться на несколько лишних секунд, хотя парсинг, фактически, каждый раз выполняется один и тот же. Не оптимизировал, т.к. обработка не предполагается для частого запуска. Удаляйте из шаблона лишние комментарии и неиспользуемые параметры.
P.S. не знаю можно ли скачивать обновление без $m, получится ли обновить предыдущий файл; так что выложил новый в то же место как v2. Если что не так, то скачавшие первую версию могут написать, вышлю вторую.
Полезно.
Плюс
Очень здорово! Хочу такую же для локального кэша и для настроек пользователя!
Очень даже полезно, молодец)
клева
Забавно, +
Подайте кто нить идею самой 1С.
Прогеры платформы, могли бы такое тоже спокойно замутить))
P.S.
Я бы наверное поступил несколько иначе при оформлении ini файла.
В такой ситуации имя папки в проводнике заменяется на указанное в ini файле.
Например
IconFile — путь к файлу иконки ежели очень нужно, в данном случае она лежит в этой же папке
(6)
Скажите, а Вы сами проверяли указанный вариант? Работало? На какой ОС?
Конечно я пробовал и «несколько иначные» варианты. У меня на WinServ2008R2 и Win7Pro не взлетели. Если у Вас есть успешный опыт использования иных вариантов — делитесь 🙂
(7) Это точно вопросы ко мне? Цитаты просто не из моего сообщения. Я в замешательстве.
(8) Прошу прощения, вопросы к Вам. 🙂 а цитаты из текста публикации, которые заранее ответили на сообщение. В частности, на Ваше «Я бы наверное поступил несколько иначе» есть ответ в тексте — «лёгкая возможность даёт поэкспериментировать»; а на «использовать LocalizedResourceName» — «я пробовал у меня не получилось».
(9) У папки должен быть установлен атрибут «Только чтение», только так начинает показывать.
Атрибут устанавливать рекомендую не при помощи проводника винды)))
(10) Спасибо, да, действительно сработало. Видимо нужно в настройки вывести отдельно галочку «Устанавливать атрибут Только чтение», чтобы для желающих обеспечить возможность такого отображения…
Для себя я не хочу менять отображаемое имя, опасаюсь. Нужна всё же какая-то стабильность 🙂 а то видим имя одно, а по факту оно другое — это может ввести в ступор.
(11)
Поэтому я в примере и заключил в квадратные скобки GUID базы, ну чтобы не вызывать внутренние противоречия.
Интересная статья. Будет время попробую на практике. Спасибо!
Очень оригинально, спасибо!
У вас ошибка в шаблоне по-умолчанию в ШаблонПоУмолчаниюКаталогПользователя.
М.Получить(
У структуры не такого метода — там должно быть
ИсточникДанных.Получить(
(15)
У себя исправил так М.НаименованиеВСписке
идентификаторы зачем было замазывать? это же не пароли от карточки банковской
Колонки отображаются автоматически, или их через диалог «Выбор столбцов в таблице» нужно включать?
(18) К сожалению, включить самому. Я не знаю где хранятся эти настройки (отображаемых колонок)… Если бы знал — подумал бы как включить их автоматически. Буду рад любой информации 🙂
Ошибка при разборе файла списка на баз на строках типа:
//Folder=/ИмяПапки
(20) Такая строка не является штатной… Документация по структуре v8i —https://its.1c.ru/db/v8312doc#bookmark:adm:TI000000368
Если такая строка появилась путём ручной корректировки файла — что ж, всего предусмотреть невозможно 🙂
Обработка гарантированно умеет работать с форматом файла, описанным в документации. Иные варианты требуют хоть и простейшей, но всё же доработки.
P.S. Хотите я дополню код чтобы строки файла v8i, начинающиеся с «//», пропускались?
(21) ручной корректировки не было. Спасибо сам поправлю.
В шаблоне по умолчанию поправьте М.Получить(«Имя базы 1С») на ИсточникДанных.Получить(«Имя базы 1С»)