Путь к локальному кэшу файлов
В одной отраслевой конфигурации не открывался сохраненный в базе присоединенный файл Excel, потому что он и так имел длинное наименование, а еще и размещался в рабочем каталоге с длинным наименованием:
C:\Users\prg1\AppData\Roaming\1C\1cv8\3597e00c-adf8-490c-a00a-6f5d705e14c3\9a8d5a9f-ed25-46ad-b817-6c758f657e75\App\00000004wq
Поискал возможные решения, но все они однотипные и не решают проблему.
Поискал, где хранится и устанавливается путь для временного кэша файлов на стороне клиента.
В параметрах сеанса ПутьКЛокальномуКэшуФайлов устанавливается в процедуре ДобавитьНастройкиРаботыСФайлами модуля ФайловыеФункцииСлужебныйПовтИсп:
Путь к каталогу пользователя запрашивается в функции РабочийКаталогПользователя:
Путь устанавливается в модуле ФайловыеФункции в хранилище общих настроек под именем ЛокальныйКэшФайлов/ПутьКЛокальномуКэшуФайлов:
Эта процедура вызывается из другой процедуры этого же модуля:
В общем, мне надоело разбираться в хитросплетениях типового кода и я сделал простую заплатку в процедуру ДобавитьНастройкиРаботыСФайлами модуля ФайловыеФункцииСлужебныйПовтИсп:
// ПутьКЛокальномуКэшуФайлов. ПутьКЛокальномуКэшуФайлов = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ЛокальныйКэшФайлов", "ПутьКЛокальномуКэшуФайлов"); // Не следует получать эту переменную непосредственно. // Нужно использовать функцию РабочийКаталогПользователя // модуля ФайловыеФункцииСлужебныйКлиент. ПерсональныеНастройки.Вставить("ПутьКЛокальномуКэшуФайлов", ПутьКЛокальномуКэшуФайлов); //Осипов 2022-03-03 +++ Поз = Найти(ВРЕГ(ПутьКЛокальномуКэшуФайлов), ВРЕГ("\AppData")); Если Поз <> 0 Тогда РабочийКаталог = Лев(ПутьКЛокальномуКэшуФайлов, Поз); РабочийКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РабочийКаталог) + "tmp1s\"; ПерсональныеНастройки.Вставить("ПутьКЛокальномуКэшуФайлов", РабочийКаталог); КонецЕсли; //Осипов 2022-03-03 +++
UDP: добавил еще и сохранение в общие параметры, т.к. в некоторых случаях запрос идет непосредственно оттуда:
ПерсональныеНастройки.Вставить("ПутьКЛокальномуКэшуФайлов", РабочийКаталог); ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ЛокальныйКэшФайлов", "ПутьКЛокальномуКэшуФайлов", РабочийКаталог); //Еще и сюда вставляем
Это процедура на сервере, тут клиентская функция РабочийКаталогДанныхПользователя() недоступна, поэтому я меняю штатный путь на свой.
Сначала я ошибся и устанавливал путь как C:\Users\prg1\tmp1s. В итоге у меня создавались папки так:
Но потом я добавил в конце бэк-слеш и все заработало, как задумано:
В проводнике это выглядит забавно:
Объем: 1.5 час
Свежие комментарии