Версия для печати темы (https://pro1c.org.ua/index.php?s=2e3f7d51660819159406d2a0dda96aec&showtopic=66903)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Сохранение внешнего отчета в хранилище

Автор: Constantus 31.01.22, 13:20

Приветствую, Форумчане!
УПП, полный перепис, адаптация под УФ

Имеется справочник "НастройкиВыгрузки".
В справочнике есть реквизиты:
"ПутьКФайлу" (строка)
"ВнешнийОтчет" (тип: ХранилищеЗначения)

На форме справочника есть кнопка выбора внешнего отчета "Выбрать отчет": открывает диалог выбора файла, выбирает внешний отчет. Код нажатия кнопки:

&НаКлиенте
Процедура ВыбратьОтчет(Команда)
ЗначениеВозврата = ВыбратьФайл ();
ИмяФайлаЗнешнейОбработки = ЗначениеВозврата.ПолноеИмяФайлаОбработки;
Объект.ПутьКФайлу = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайлаВнешнейОбработки));
ВыбратьОтчетНаСервере();
КонецПроцедуры


Зачем-то используется процедура

Процедура ВыбратьОтчетНаСервере()

ОтчетДвоичныеДанные = ПолучитьИзВременногоХранилища(Объект.ПутьКФайлу);
ПутьКЗнешнемуФайлу = ПолучитьИмяЗременногоФайла (" . erf ");

Попытка
ОтчетДвоичныеДанные.Записать(ПутьКВнешнемуФайлу);
ВнешняяОбработка = ВнешниеОтчеты.Создать(ПутьКВнешнемуФайлу);
Исключение
СообщениеОшибки = "....."
КонецПопытки;
Объект.ПутьКФайлу = ПоместитьВоВременнсеХранилище(Новый ХранилищеЗначения(ОтчетДвоичныеДанные));

КонецПроцедуры


перед записью справочника:

&НаСервере
Процедура ПередЗалисью (Отказ)

Если НЕ ПустаяСтрока(ПутьКФайлу) Тогда
ВнешнийОтчет = ПолучитьИзВременногоХранилища(ПутьКФайлу);
УдалитьИзВременногоХранилища(ПутьКФайлу);
ПутьКФайлу = "";
КонецЕсли;

КонецПроцедуры


Проблема заключается в том, что реквизит "ВнешнийОтчет" сохраняется только после 3-х кратного выбора файла внешней обработки. Т.е. нужно 3-жды выбрать обработку и сохранить, и тогда "ВнешнийОтчет" принимает какое-то значение (показывает отладчик как двоичные данные FF 00 DD...)

Никак не могу понять почему нужно выбрать и сохранить 3-и раза. Подскажите, что может быть?

Автор: andr_andrey 31.01.22, 13:59

Constantus @ Сегодня, 13:20 * ,
ПоместитьВоВременнсеХранилище - это опечатка?

Автор: Constantus 31.01.22, 14:32

andr_andrey @ Сегодня, 17:59 * ,
Да. Опечатка.

Автор: Vofka 31.01.22, 17:10

Constantus, в ПоместитьВоВременноеХранилище кажется вторым параметром можно передать идентификатор формы. Если этого не делать, то после того, как закончится серверный вызов, нету гарантий, что во временном хранилище будет то, что вы туда ложили чуть ранее.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua