Файл с новым UUID сначала создаётся эксклюзивно, чтобы не перезаписать чужой. Только после этого Записать и Прочитать используют имя своего файла, а не потоки.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.
Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.
Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.
Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.
Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.
В этой отдельной пустой конфигурации Учебная85 добавьте Задачи → УчебнаяЗадача: длина номера 9, тип Строка, автонумерация; наименование длиной 100. Добавьте реквизит Комментарий (Строка, 100), без проверки заполнения.
Добавьте Бизнес-процессы → УчебныйПроцесс: длина номера 9, тип Строка, автонумерация, реквизит Комментарий (Строка, 100), без проверки заполнения. В свойстве Задача выберите УчебнаяЗадача.
Карта маршрута: одна точка старта Старт → одна одиночная точка действия ПодготовитьКнигу → одна точка завершения Финиш. Соедините их стрелками; в представлении точки действия укажите Подготовить учебную книгу.
Адресацию задач, групповые/условные/вложенные точки и обработчики маршрута для этой задачи не добавляйте. Модули задачи и процесса, подписки и внешние действия должны быть пустыми. Обновите конфигурацию базы данных.
Все имена здесь относятся к новым учебным объектам, не к рабочей КА2/УНФ/УТ/БП. Каждый фрагмент запускайте отдельно на сервере в ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.
В этих упражнениях процесс не записывается и не запускается. Исследуется копия карты маршрута в памяти; печать на физический принтер не вызывается.
Если Метаданные.БизнесПроцессы.Найти("УчебныйПроцесс") = Неопределено
Или Метаданные.Задачи.Найти("УчебнаяЗадача") = Неопределено Тогда
ВызватьИсключение "Сначала создайте учебные процесс, задачу и карту маршрута";
КонецЕсли;
Процесс = БизнесПроцессы.УчебныйПроцесс.СоздатьБизнесПроцесс();
Схема = Процесс.ПолучитьКартуМаршрута();
Если ТипЗнч(Схема) <> Тип("ГрафическаяСхема") Тогда
ВызватьИсключение "Учебный процесс не вернул графическую схему";
КонецЕсли;
ИмяСхемы = ПолучитьИмяВременногоФайла("grs");
СозданСвойФайл = Ложь;
ПотокФайла = Неопределено;
Попытка
ПотокФайла = Новый ФайловыйПоток(ИмяСхемы, РежимОткрытияФайла.СоздатьНовый);
СозданСвойФайл = Истина;
ПотокФайла.Закрыть();
ПотокФайла = Неопределено;
Схема.ПолеСлева = 15;
Схема.Записать(ИмяСхемы);
Копия = Новый ГрафическаяСхема;
Копия.Прочитать(ИмяСхемы);
Сообщить(Копия.ЭлементыГрафическойСхемы.Количество() = Схема.ЭлементыГрафическойСхемы.Количество());
Сообщить(Копия.ПолеСлева = 15);
Исключение
Если ПотокФайла <> Неопределено Тогда
ПотокФайла.Закрыть();
КонецЕсли;
Если СозданСвойФайл Тогда
УдалитьФайлы(ИмяСхемы);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
Если СозданСвойФайл Тогда
УдалитьФайлы(ИмяСхемы);
КонецЕсли;
ПроверкаФайла = Новый Файл(ИмяСхемы);
Сообщить(Не ПроверкаФайла.Существует());Разбор по шагам
Получаем своё временное имя. ФайловыйПоток.СоздатьНовый должен завершиться успешно до установки флага владения.
Закрываем резервирующий поток прежде чем Записать получает имя файла; одновременно два писателя не открываются.
ГрафическаяСхема.Записать/Прочитать имеют варианты с именем файла и с потоком. Здесь показан именно строковый вариант.
Проверяем число элементов и поле страницы на новой схеме. Это roundtrip собственного формата, не PNG.
На обеих ветках удаляется только точное собственное имя при флаге владения. В конце дополнительно проверяется отсутствие файла.
Как проверить результат
Три сообщения Истина.
Нет нового записанного процесса и не осталось собственного временного файла. Чужие файлы и каталоги не удаляются.
Ожидаемый результат
Разобраны файловые перегрузки схемы с эксклюзивным созданием и точной очисткой.
На что обратить внимание
Операции выполняются на сервере, и временный каталог принадлежит серверному процессу.
Не заменяйте собственное имя путём пользовательского существующего GRS: запись перезаписывает содержимое.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.