Начинает получение имени каталога, который используется программой для размещения временных файлов.
Синтаксис
НачатьПолучениеКаталогаВременныхФайлов(<ОписаниеОповещения>)Полное описание, параметры и ограничения
Глобальный контекст.НачатьПолучениеКаталогаВременныхФайлов (Global context.BeginGettingTempFilesDir)
Глобальный контекст (Global context)
НачатьПолучениеКаталогаВременныхФайлов (BeginGettingTempFilesDir)
Доступен, начиная с версии 8.3.6.
Синтаксис:
НачатьПолучениеКаталогаВременныхФайлов(<ОписаниеОповещения>)
Параметры:
<ОписаниеОповещения> (обязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами:
<ИмяКаталогаВременныхФайлов> – имя временного файла, тип Строка.
<ДополнительныеПараметры> – значение, которое было указано при создании объекта ОписаниеОповещения.
Описание:
Начинает получение имени каталога, который используется программой для размещения временных файлов.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Примечание:
Для работы метода на веб-клиенте необходимо предварительно подключить расширение работы с файлами.
См. также:
Глобальный контекст, метод КаталогВременныхФайлов
Использование в версии:
Доступен, начиная с версии 8.3.6.
Методическая информация
Практические примеры
Callback native-temp: подтвердить каталог и сохранить собственный structured file
Полный собственный учебный маршрут с concrete UTF8/typedrecord/UUID/state, positive readback и отрицательными проверками. Native сигнатуры/результаты проверены; сторонние файлы, настройки и каталоги не принимаются как fixture.
Где и как запускать
Полный модуль управляемой формы только толстого Windows-клиента8.5.1.1343 своей новой пустой файловой ИБ; server только guard, actual0.
Подготовка
Создайте новую пустую файловую ИБ платформы ровно8.5.1.1343, имя корня УчебноеФайловоеСостояние85, русский встроенный язык/управляемое приложение, совместимость Не использовать. Никакие реальные настройки, документы/архивы или рабочие папки не использовать.
В этой ИБ0предметных объектов, регистров, внешних источников, общих реквизитов, заданий/подписок;0расширений базы/сеанса. Полный серверный guard проверяет exact версию/metadata/все3nativeисточника расширений и отсутствие транзакции.
Запускайте только толстый управляемый Windows-клиент8.5.1.1343 под отдельным учебным Windows-профилем; thin/web/mobile/server positive пути не заявляются. File value API и SaveValue/RestoreValue поддерживаются в толстом клиенте, не переносите их на сервер или browser.
Создайте внешнюю обработку OwnGlobalIO85 с собственной управляемой формой. Реквизиты ПодтверждаюСвойОпыт85 Булево начальноЛожь, Статус85 Строка0 многострочный ТолькоПросмотр, ПутьОпыта85 Строка0 ТолькоПросмотр. Назначьте ПриОткрытии и команду/действие Выполнить85 из выбранного целого модуля.
Settings-урок вместо Выполнить85 имеет3отдельные команды/кнопки СоздатьНастройку85, ПрочитатьНастройку85, ОбновитьТолькоСвоюНастройку85. Дополнительно UUIDНастройки85 Строка36. При чтении следующего сеанса вставьте сохраненный собственный UUID, не начинайте новую настройку.
Модули самостоятельны: вставляйте весь выбранный code, не склеивайте одинаковые процедуры/guards из нескольких уроков. Обновите только свою учебную ИБ и подтвердите только этот пустой стенд.
Файловые workflows используют лишь actual native временный каталог толстого клиента. Проверяется локальный абсолютный диск/существующая папка/отличие от КаталогПрограммы; далее fresh OwnGlobalIO85-UUID, отсутствие/пустота. Native ЗначениеВФайл/ИзФайла могут использовать каталог программы при отсутствующем каталоге — эту fallback-ветку блокируем ДО вызова.
Split/merge payload — конкретный UTF8безBOM BEGIN:<ownUUID>|Книга;3;250;750|END. РазделитьФайл получает16БАЙТ, не16символов, и свою пустую parts-папку. Возвращенный массив используется только как count: type его элементов в native не описан и не угадывается.
Documented имена частей own-payload.bin.001/.002... проверяются реально через Файл и размеры16/остаток; порядок для merge array задан explicit. Для merge mask набор предварительно доказывается точным количеством своих частей; именам свойственен lexicographic порядок с ведущими нулями.
Native value-file fixture — сериализуемая реальная Структура из6полей: Версия1,ownUUID,Книга,Количество3,Цена250,Сумма750. ЗначениеВФайл даетBool, проверяем его; ЗначениеИзФайла возвращает actualтип, сверяем все поля/типы/расчет, не любое восстановленное значение.
Настройки SaveValue/RestoreValue имеют область именно текущая параИБ-пользователь. Создается один новый namespace OwnGlobalIO85:<ownUUID> после проверки отсутствия; последующая отдельная команда меняет только доказанную own v3/750 наv4/1000. Никакого перечисления/очистки всех пользовательских настроек нет.
Все созданные собственные files/parts/wrong-order-output и свой namespace сохраняются после ВАШЕГО ручного опыта для контроля. Автоматического/рекурсивного удаления или очистки настроек нет; повторный overwrite не допускается.
При ожидании callback не закрывайте форму/клиент; Занято85 блокирует вторую команду. Completion native tempdir имеет2параметра, error callback3в правильном порядке. Каталог из callback сверяется с реальным native temp, не становится произвольным input-путем.
Actual1C/files/user-settings/network0: здесь только авторство/статические source/native tests. Никаких резервных копий/архивов не создаем. До ручного опыта сообщения успеха — ожидаемый протокол, не runtime-доказательство.
&НаКлиенте
Перем КонтекстКаталога85;
&НаКлиенте
Процедура Выполнить85(Команда)
Если Занято85 Тогда
ВызватьИсключение "Свое получение каталога еще выполняется";
КонецЕсли;
Занято85 = Истина;
Статус85 = "Свой temp-directory callback еще не подтвержден";
Попытка
ПроверитьСвоегоКлиента85();
К = Новый Структура("Запуск,Завершено", Строка(Новый УникальныйИдентификатор), Ложь);
КонтекстКаталога85 = К;
Оповещение = Новый ОписаниеОповещения("СвойTempКаталог85", ЭтотОбъект, К, "ОшибкаСвоегоКаталога85", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
Исключение
КонтекстКаталога85 = Неопределено;
Занято85 = Ложь;
Статус85 = "Own temp-directory подготовка/начало не подтверждены";
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура СвойTempКаталог85(Каталог, К) Экспорт
Попытка
ПроверитьСвоегоКлиента85();
Если Не Занято85 Или КонтекстКаталога85 = Неопределено Или К.Завершено
Или К.Запуск <> КонтекстКаталога85.Запуск Тогда
ВызватьИсключение "Нет собственного active temp-directory контекста";
КонецЕсли;
CallbackБаза = ПроверитьСвоюБазуКаталога85(Каталог);
NativeБаза = ПроверитьСвоюБазуКаталога85(КаталогВременныхФайлов());
Если НРег(CallbackБаза) <> НРег(NativeБаза) Тогда
ВызватьИсключение "Callback должен дать actual native каталог, не произвольную входную папку";
КонецЕсли;
ФайловыйОпыт = СоздатьСвойКорень85(CallbackБаза);
ПутьОпыта85 = ФайловыйОпыт.Корень;
СохранитьПрочитатьСвойФайл85(ФайловыйОпыт);
Статус85 = "OwnUUID " + ФайловыйОпыт.UUID + ": actual temp callback2args → verified local directory → fresh UUID root → native structured file/snapshot/nonformat-check. Own файлы оставлены";
Исключение
Статус85 = "Own temp-directory callback/serialization/readback не подтверждены";
КонецПопытки;
К.Завершено = Истина;
КонтекстКаталога85 = Неопределено;
Занято85 = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ОшибкаСвоегоКаталога85(ИнформацияОбОшибке, СтандартнаяОбработка, К) Экспорт
СтандартнаяОбработка = Ложь;
Если ТипЗнч(ИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда
Статус85 = "Own каталог не получен, диагностический объект не выводится";
Иначе
Статус85 = "Native error callback имеет неподтвержденный тип";
КонецЕсли;
К.Завершено = Истина;
КонтекстКаталога85 = Неопределено;
Занято85 = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьПрочитатьСвойФайл85(К)
Путь = К.Корень + "own-value.bin";
ПроверитьОтсутствиеСвоегоФайла85(Путь);
Исходная = СоздатьСвоюЗапись85(К.UUID, 3);
Если Не ЗначениеВФайл(Путь, Исходная) Тогда
ВызватьИсключение "Native ЗначениеВФайл вернул Ложь, сериализация не подтверждена";
КонецЕсли;
Файл = Новый Файл(Путь);
Если Не Файл.Существует() Или Не Файл.ЭтоФайл() Или Файл.Размер() <= 0 Тогда
ВызватьИсключение "Нужен actual собственный непустой native value-file";
КонецЕсли;
ИзФайла = ЗначениеИзФайла(Путь);
ПроверитьСвоюЗапись85(ИзФайла, К.UUID, 3);
Исходная.Количество = 4;
Исходная.Сумма = 1000;
Повторно = ЗначениеИзФайла(Путь);
ПроверитьСвоюЗапись85(Повторно, К.UUID, 3);
Если Повторно.Количество = Исходная.Количество Тогда
ВызватьИсключение "File snapshot не должен измениться вслед за исходным memory object";
КонецЕсли;
НеФормат = К.Корень + "not-a-value.txt";
ПроверитьОтсутствиеСвоегоФайла85(НеФормат);
НеДанные = ПолучитьДвоичныеДанныеИзСтроки("Own not a native value:" + К.UUID, КодировкаТекста.UTF8, Ложь);
НеДанные.Записать(НеФормат);
ОтказФормата = Ложь;
Попытка
ЧужойФормат = ЗначениеИзФайла(НеФормат);
ПроверитьСвоюЗапись85(ЧужойФормат, К.UUID, 3);
Исключение
ОтказФормата = Истина;
КонецПопытки;
Если Не ОтказФормата Тогда
ВызватьИсключение "Собственный plain text не должен пройти как наша native structured record";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция СоздатьСвоюЗапись85(UUID, Количество)
Если Количество <> 3 И Количество <> 4 Тогда
ВызватьИсключение "Разрешены только две конкретные own учебные версии";
КонецЕсли;
Возврат Новый Структура("Версия,UUID,Номенклатура,Количество,Цена,Сумма", 1, UUID, "Книга", Количество, 250, Количество * 250);
КонецФункции
&НаКлиенте
Процедура ПроверитьСвоюЗапись85(Запись, UUID, Количество)
Если ТипЗнч(Запись) <> Тип("Структура") Или Запись.Количество() <> 6 Тогда
ВызватьИсключение "Нужна реальная own Структура с шестью точными полями";
КонецЕсли;
Для Каждого Имя Из СтрРазделить("Версия,UUID,Номенклатура,Количество,Цена,Сумма", ",") Цикл
Если Не Запись.Свойство(Имя) Тогда
ВызватьИсключение "Отсутствует own поле " + Имя;
КонецЕсли;
КонецЦикла;
Если ТипЗнч(Запись.Версия) <> Тип("Число") Или Запись.Версия <> 1
Или ТипЗнч(Запись.UUID) <> Тип("Строка") Или Запись.UUID <> UUID
Или ТипЗнч(Запись.Номенклатура) <> Тип("Строка") Или Запись.Номенклатура <> "Книга"
Или ТипЗнч(Запись.Количество) <> Тип("Число") Или Запись.Количество <> Количество
Или ТипЗнч(Запись.Цена) <> Тип("Число") Или Запись.Цена <> 250
Или ТипЗнч(Запись.Сумма) <> Тип("Число") Или Запись.Сумма <> Количество * 250 Тогда
ВызватьИсключение "Нарушены actual типы, ownUUID или расчет собственной записи";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПроверитьСвоюБазуКаталога85(База)
Если ТипЗнч(База) <> Тип("Строка") Или СтрДлина(База) < 4 Или Сред(База, 2, 2) <> ":\" Тогда
ВызватьИсключение "Для этого Windows опыта нужна actual абсолютная локальная папка, не относительный или UNC путь";
КонецЕсли;
Каталог = Новый Файл(База);
Если Не Каталог.Существует() Или Не Каталог.ЭтоКаталог() Тогда
ВызватьИсключение "Native value-file API не должен переходить в каталог программы из-за отсутствующего каталога";
КонецЕсли;
Полный = Каталог.ПолноеИмя;
Если Прав(Полный, 1) <> "\" Тогда
Полный = Полный + "\";
КонецЕсли;
Программа = КаталогПрограммы();
Если Прав(Программа, 1) <> "\" Тогда
Программа = Программа + "\";
КонецЕсли;
Если НРег(Полный) = НРег(Программа) Тогда
ВызватьИсключение "Нельзя писать учебные данные в каталог исполняемой программы";
КонецЕсли;
Возврат Полный;
КонецФункции
&НаКлиенте
Функция СоздатьСвойКорень85(База)
ПроверитьСвоегоКлиента85();
ПолнаяБаза = ПроверитьСвоюБазуКаталога85(База);
UUID = Строка(Новый УникальныйИдентификатор);
Если UUID = "00000000-0000-0000-0000-000000000000" Тогда
ВызватьИсключение "Нужен fresh ненулевой own UUID";
КонецЕсли;
Путь = ПолнаяБаза + "OwnGlobalIO85-" + UUID + "\";
Папка = Новый Файл(Путь);
Если Папка.Существует() Тогда
ВызватьИсключение "Нельзя занять или перезаписать существующий UUID-каталог";
КонецЕсли;
СоздатьКаталог(Путь);
Если Не Папка.Существует() Или Не Папка.ЭтоКаталог() Тогда
ВызватьИсключение "Own абсолютная папка не создана";
КонецЕсли;
Если НайтиФайлы(Путь, "*", Ложь).Количество() <> 0 Тогда
ВызватьИсключение "Новая собственная UUID-папка обязана быть пустой";
КонецЕсли;
Возврат Новый Структура("UUID,Корень", UUID, Путь);
КонецФункции
&НаКлиенте
Процедура ПроверитьОтсутствиеСвоегоФайла85(Путь)
Файл = Новый Файл(Путь);
Если Файл.Существует() Тогда
ВызватьИсключение "Own файл должен быть новым; overwrite запрещен";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Перем Занято85;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Занято85 = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьСвоегоКлиента85()
ПроверитьСеанс85();
#Если ТолстыйКлиентУправляемоеПриложение Тогда
Система = Новый СистемнаяИнформация;
Если (Система.ТипПлатформы <> ТипПлатформы.Windows_x86 И Система.ТипПлатформы <> ТипПлатформы.Windows_x86_64) Или Не ПодтверждаюСвойОпыт85 Тогда
ВызватьИсключение "Нужна своя новая пустая файловая ИБ и толстый Windows-клиент8.5.1.1343";
КонецЕсли;
#Иначе
ВызватьИсключение "Полный урок поддерживает только толстый управляемый Windows-клиент";
#КонецЕсли
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСеанс85()
ПроверитьСвойПустойСтенд();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедурыРазбор по шагам
Команда запускает own контекст соfreshUUID запуска после проверки emptyИБ/Windows/thickclient, а не принимает готовый неизвестный объект.
НачатьПолучениеКаталогаВременныхФайлов получает один native ОписаниеОповещения с реальными exported success/error процедурами.
СвойTempКаталог85 получает КаталогСтрока иК. Active flag/UUID/завершенность перепроверяются; fakeResult/ИмяФайла параметр не добавляется.
Callback path должен быть existing абсолютным локальным каталогом и не каталогомexe; сверяется с нормализованным actual КаталогВременныхФайлов()
Лишь после этого создаем fresh own UUID подкаталог, отсутствующий/пустой. Получение каталога само по себе ничего не записывает.
Запускаем full native serialization/readback6fields, stable snapshot и plain-text negative. Это полезная цепочка использования каталога, не getter-wrapper.
Ошибка native callback принимает ИнформацияОбОшибке,СтандартнаяОбработка,К, не печатает диагностический объект и не превращается в успех.
После actual readback или неуспеха Занято85 снято, контекст очищен. Files остаются только в ownUUID root; закрытие клиента не гарантирует callback.
Как проверить результат
Пройдены собственные positive данные/actualтип/schema/UUID, не только непустые объекты или отсутствие исключений.
Native аргументы/returns/context совпадают со справкой8.5.1.1343; неоднозначный result не угадывается.
Own absolute root/namespace проверяется до writes; unknown/overwrite/fallback-success не допускается.
Все изменения только при будущем ВАШЕМ ручном опыте в новом стенде. Actualfiles/settings/1C/network0, ничего автоматически не удаляем.
Ожидаемый результат
Native temp callback2args → verified own absolute root → real native structured file/snapshot/negative check. Не является обещанием файлового результата без completion/readback.
На что обратить внимание
ЗначениеВФайл/ИзФайла — внутренний native формат, не человекочитаемыйJSON. Здесь сохранение и schema readback выполняются только для own записи.
РазделитьФайл работает сбайтами; ОбъединитьФайлы не проверяет смысл порядка. СохранитьЗначение хранит значение по пареИБ-пользователь, а не по произвольному глобальномуключу всей системы.
Прямой actual запуск здесь не выполнялся. Ложь/Undefined/неверная schema не маскируются успехом или новым default-object.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.