Имя: Пароль:
1C
1С v8
Проблема с двоичными данными в 1С 8.3
,
0 9451523
 
27.08.18
13:15
Привет всем
в версии 1С 8.3 при попытке сохранить файл вылетела ошибка Файл не обнаружен заходишь в подробно там пишет: Ошибка при вызове конструктора (ДвоичныеДанные)
вот код:

&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    диалог.МножественныйВыбор = Ложь;
    диалог.Заголовок = "Выберите прикрепляемый файл";
    Если диалог.Выбрать() Тогда
        файл = Новый Файл(диалог.ПолноеИмяФайла);
        Запись.ИмяФайла = файл.Имя;
        ЗагрузитьФайл(ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(файл.Имя)));
        Элементы.ОткрытьФайл.Видимость = Истина;
        Если Не РольДоступнаПолныеПрава() Тогда
            Попытка
                ЭтаФорма.ВладелецФормы.Родитель.Элементы.Список.Обновить();
            Исключение
                
            КонецПопытки;
            ЭтаФорма.Закрыть();
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

тот же код свободно и без ошибок отрабатывает в 1С 8.2, не подскажите где копать? вроде все правильно
С уважением Дамир
3 Cyberhawk
 
27.08.18
13:18
Ну а так-то не то свойство объекта "Файл" берешь. Полное имя надо
6 9451523
 
27.08.18
13:21
Файл.ПолноеИмя?
7 lubitelxml
 
27.08.18
13:22
(6) ну если такое поле есть, то да, если нет - то тот же диалог.ПолноеИмяФайла
8 9451523
 
27.08.18
13:22
а в 8.2 так же отработает?
9 Малыш Джон
 
27.08.18
13:23
База поди в другом месте лежит? Файлик лежит рядом с одной базой - она его по одному имени находит, а другая база лежит в другом месте и этот файл не находит
10 9451523
 
27.08.18
13:25
Файл.ПолноеИмя правильный вариант, спасибо всем
11 Cyberhawk
 
27.08.18
13:26
(9) Все на клиенте
12 spiller26
 
27.08.18
13:30
(0) Вот примерно что у тебя должно быть

&НаКлиенте
Процедура СохранитьДеревоВФайл(Команда)
    
    ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    ДиалогСохраненияФайла.Фильтр                      = "Файлы Дерева (*.tab) |*.tab";
    ДиалогСохраненияФайла.Заголовок                   = "Укажите имя файла для сохранения!";
    ДиалогСохраненияФайла.ПредварительныйПросмотр     = Ложь;
    ДиалогСохраненияФайла.МножественныйВыбор          = Ложь;
    ДиалогСохраненияФайла.Расширение                  = "tab";
    Если ДиалогСохраненияФайла.Выбрать() Тогда
        ФайлДанные = ИспользоватьВременныйФайл();
        ФайлДанные.Записать(ДиалогСохраненияФайла.ПолноеИмяФайла);
    КонецЕсли;    
    
КонецПроцедуры

&НаСервере
Функция ИспользоватьВременныйФайл()
    
    тДерево = РеквизитФормыВЗначение("ДеревоОстатков");
    
    Попытка
        ИмяВремФайл = ПолучитьИмяВременногоФайла();
        ВремФайл = Новый Файл(ИмяВремФайл);
        ЗначениеВФайл(ИмяВремФайл, тДерево);
        Если ВремФайл.Существует() Тогда
            ФайлДанные = Новый ДвоичныеДанные(ИмяВремФайл);
            Хранилище = Новый ХранилищеЗначения(ФайлДанные);
        КонецЕсли;
        УдалитьФайлы(КаталогВременныхФайлов(), ИмяВремФайл);
    Исключение
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки()); //сообщение пользователю        
    КонецПопытки;
    
    Возврат Хранилище.Получить();
    
КонецФункции
13 spiller26
 
27.08.18
13:32
(0) Вот тебе открытие

&НаКлиенте
Процедура ЗагрузитьДеревоИзФайла(Команда)
    
    ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтаФорма);
    
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытияФайла.Фильтр                      = "Файлы Дерева (*.tab) |*.tab";
    ДиалогОткрытияФайла.Заголовок                   = "Укажите имя файла для открытия!";
    ДиалогОткрытияФайла.ПредварительныйПросмотр     = Ложь;
    ДиалогОткрытияФайла.МножественныйВыбор          = Ложь;
    ДиалогОткрытияФайла.Расширение                  = "tab";
    
    НачатьПомещениеФайлов(ОписаниеОповещения, , ДиалогОткрытияФайла, Истина, УникальныйИдентификатор);
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьВыборФайла(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт

    Если ПомещенныеФайлы = Неопределено Тогда
        Возврат;
    КонецЕсли;

    Для каждого ПереданныйФайл Из ПомещенныеФайлы Цикл
        ВосстановитьДеревоНаФорме(ПереданныйФайл.Хранение);
    КонецЦикла;
    
КонецПроцедуры // ()

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

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

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