Имя: Пароль:
1C
1С v8
При открытии справочника не отображается картинка и её имя файла с расширением.
0 Reraru
 
05.02.20
14:33
Имеется справочник Благотворительные организации с реквизитами Картинка - Хранилище значений и Логотип типа строка. У справочника есть форма элемента элементом Логотип типа Поле Картинки, который применяется для связи Хранилище значений, а также реквизит СсылкаНаКартинку, в которой после загрузки картинки хранится её имя с расширением.
Сама загрузка картинки и сохранение её в реквизите проходит успешно.
https://sun9-71.userapi.com/c854128/v854128104/1e4646/_QODZEF1fNo.jpg
https://sun9-39.userapi.com/c854128/v854128104/1e465a/XA0Pbi2aIb8.jpg


<code>

&НаКлиенте
Процедура Просмотр(Команда, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.ПолноеИмяФайла = "";
    Фильтр =  "Все картинки (*.bmp;*.jpg;*.jpeg;*.png;)|*.bmp;*.jpg;*.jpeg;*.png;*|"
+ "Формат bmp (*.bmp)|*.bmp|"
+ "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
+ "Формат PNG (*.png)|*.png|";// картинки

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

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Логотип = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Картинка");
    
КонецПроцедуры

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


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


</code>
1 Reraru
 
05.02.20
15:40
Если я использую в коде команды

СсылкаНаКартинку = Новый Картинка (ДиалогОткрытия.ПолноеИмяФайла,Истина);

то мне выходит ошибка что каталог не обнаружен
2 unbred
 
05.02.20
15:51
(1) в каком месте используешь?)
исходя из >: ДиалогОткрытия.ПолноеИмяФайла = "";<
там и нет нихрена))
3 Reraru
 
05.02.20
15:57
Переделал, но тогда поле объекта СсылкаНаКартинку недоступно для записи:

&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла,ДопПараметры) Экспорт
    Если Не Результат Тогда
        Возврат;
    КонецЕсли;
    
        Если Результат Тогда
        Файл = Новый Файл (ВыбранноеИмяФайла);
        ЭтаФорма.Элементы.СсылкаНаКартинку = файл.Имя
        КонецЕсли;
    
    //СсылкаНаКартинку = Адрес; //присвоим реквизиту формы «СсылкаНаКартинку» адрес временного хранилища.
    Логотип = Адрес;
    Модифицированность = Истина;
КонецПроцедуры (2)
4 unbred
 
05.02.20
16:09
5 Reraru
 
05.02.20
16:43
Задача решена и имя файла записывается правильно с учётом его расширения.
Мне не понятно почему не могла проходить запись в элемент СсылкаНаКартинку
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла,ДопПараметры) Экспорт
    Если Не Результат Тогда
        Возврат;
    КонецЕсли;
    
        Если Результат Тогда
        Файл = Новый Файл (ВыбранноеИмяФайла);
        ЭтаФорма.Объект.СсылкаНаКартинку = Файл.Имя + Символы.ПС
        КонецЕсли;
    
    //СсылкаНаКартинку = Адрес; //присвоим реквизиту формы «СсылкаНаКартинку» адрес временного хранилища.
    Логотип = Адрес;
    Модифицированность = Истина;
КонецПроцедуры
6 Reraru
 
05.02.20
16:45
(4) https://sun9-64.userapi.com/c854128/v854128349/1eb856/cn8xvhhoC6A.jpg
Как мне сделать отображение картинки в реквизите Логотип ?
7 Reraru
 
05.02.20
21:43
Помощь! Туплю блин.
Как вывести картинку в реквизит справочника?
На форму картинка выводится.
&НаКлиенте
Процедура ПослеЗагрузкиФайла(ВыбранныйФайл,ДопПараметр) Экспорт
    //если пользователь выбрал файл, мы будем помещать его во временное
    //хранилище при помощи метода НачатьПомещениеФайла.
    Если ВыбранныйФайл = Неопределено Тогда
        Возврат;
    КонецЕсли;
    ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтаФорма);
    НачатьПомещениеФайла(ОписаниеОповещения,, ВыбранныйФайл[0], Ложь, УникальныйИдентификатор);
  
  
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла,ДопПараметры) Экспорт
    Если Не Результат Тогда
        Возврат;
    КонецЕсли;
  
  
    //Так как реквизит СсылкаНаКартинку имеет тип строка неограниченной длины
        Если Результат Тогда //то из выбранного ранее файла будет формироваться его
        Файл = Новый Файл (ВыбранноеИмяФайла); //имя и расширение
        ЭтаФорма.Объект.СсылкаНаКартинку = Файл.Имя; //затем оно отобразится в данном реквизите.
    КонецЕсли;  
      
       Объект.Логотип = ВыбранноеИмяФайла;
    //СсылкаНаКартинку = Адрес; //присвоим реквизиту формы «СсылкаНаКартинку» адрес временного хранилища.
    Логотип = Адрес;
    Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    //СсылкаНаКартинку заменена на Логотип
    Если ЭтоАдресВременногоХранилища(Логотип)  Тогда
        ФайлКартинки = ПолучитьИзВременногоХранилища(Логотип);
        ТекущийОбъект.Картинка = Новый ХранилищеЗначения(ФайлКартинки);
        УдалитьИзВременногоХранилища(Логотип);
        Логотип = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Картинка");  
        //СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Картинка");
      
    КонецЕсли;
  
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, ТекущийОбъект)
    Логотип = ПолучитьНавигационнуюСсылку(Объект.ссылка,"Картинка");
  
    //СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Картинка");
КонецПроцедуры
&НаКлиенте
Процедура Просмотр(Команда, СтандартнаяОбработка, Адрес)
  
    СтандартнаяОбработка = Ложь;
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.ПолноеИмяФайла = "";
    Фильтр =  "Все картинки (*.bmp;*.jpg;*.jpeg;*.png;)|*.bmp;*.jpg;*.jpeg;*.png;*|"
+ "Формат bmp (*.bmp)|*.bmp|"
+ "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
+ "Формат PNG (*.png)|*.png|";// картинки
    ДиалогОткрытия.Фильтр = Фильтр;
    ДиалогОткрытия.МножественныйВыбор = Ложь;
    ДиалогОткрытия.Заголовок = "Выберите файл для загрузки";
    ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗагрузкиФайла",ЭтаФорма);
    ДиалогОткрытия.Показать(ОписаниеОповещения);
  
  
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    Логотип = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Картинка");
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    Логотип = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Картинка");
КонецПроцедуры

[IMG]https://sun9-10.userapi.com/c854128/v854128759/1ebdd8/7IcOUekv5uk.jpg[/IMG] [IMG]https://sun9-71.userapi.com/c854128/v854128104/1e4646/_QODZEF1fNo.jpg[/IMG]
8 Reraru
 
05.02.20
21:44