Имя: Пароль:
1C
 
выгрузить картинку из 1с
0 andrewrocker
 
08.07.25
19:58
Добрый день, всем!

Не могу выгрузить картинку из 1с через метод ПолучитьИзВременногоХранилища, хотя туда скармливаю навигационную ссылку.

1с выдает крайне странную ошибку "неправильный путь к файлу" на операции ПолучитьИзВременногоХранилища.

В чем может быть причина ? Как это устранить ?
1 andrewrocker
 
08.07.25
19:58
&НаКлиенте
Процедура ВыгрузитьОбразецПодписи(Команда)
    
    АдресРезультата = ПодготовитьКартинку();
    
    Если Не ЗначениеЗаполнено(АдресРезультата) Тогда
        Возврат;
    КонецЕсли;
    
    ПараметрыПолученияФайла = Новый ПараметрыДиалогаПолученияФайлов;
    ПолучитьФайлССервераАсинх(АдресРезультата,Объект.СканПечатиИмяФайла);
    
КонецПроцедуры          

&НаСервере
Функция ПодготовитьКартинку()
    
    АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "СканПечати");
    ДвоичныеДанныеИзображения = ПолучитьИзВременногоХранилища(АдресКартинки);
    
    Если ДвоичныеДанныеИзображения = Неопределено Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Картинка номенклатуры не загружена";
        Сообщение.Сообщить();
        Возврат Неопределено;
    КонецЕсли;
    
    Картинка = Новый Картинка(ДвоичныеДанныеИзображения);                              
    ОбрабатываемаяКартинка = Новый ОбрабатываемаяКартинка(Картинка);
    Картинка = ОбрабатываемаяКартинка.ПолучитьКартинку();
    ДвоичныеДанныеИзображения = Картинка.ПолучитьДвоичныеДанные();
    Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанныеИзображения, УникальныйИдентификатор);
    
КонецФункции
2 Волшебник
 
08.07.25
20:02
На сервере другие пути к файлам, другой пользователь, другие права.
Навигационная ссылка не является путём к файлу.
3 andrewrocker
 
08.07.25
20:14
(2) да, по этой части я тут несколько иду в роли четвероногого друга - я понимаю этот момент, я ошибку у себя исправить не могу
4 Волшебник
 
08.07.25
20:18
(3) Переходите на обычные формы.
5 andrewrocker
 
08.07.25
20:23
(4) вы знаете, тут столько всего уже в этой нетленке написано, что хочется этих несколько фич добить до приличного юзабилити.

мы пишем свою срм-ку-торговую программу, дальше она будет всё грузить в бухгалтерию без проблем, внутри торговой программы нужно настроить всё и тогда можно будет дальше расширять, так сказать, бизнес

у меня всё совсем не решаемо, да?
6 Волшебник
 
08.07.25
20:29
(5) Я ж пошутил. У Вас всё решаемо.
7 Волшебник
 
08.07.25
20:30
Щас спецы по УФ подтянутся и всё решат. Я просто держу ветку в топе.
8 andrewrocker
 
08.07.25
20:33
(7) вы великолепны!
9 DiMel_77
 
08.07.25
22:42
(1) Че за бред у вас в функции ПодготовитьКартинку?
Если я правильно понимаю суть ваших стараний, то должно быть что-то типа:
&НаСервере
Функция ПодготовитьКартинку()
    
    СканПечати = Объект.СканПечати.Получить();

    Если СканПечати = Неопределено Тогда
        
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Картинка номенклатуры не загружена";
        Сообщение.Сообщить();
        Возврат Неопределено;

    КонецЕсли;
    
    Возврат ПоместитьВоВременноеХранилище(СканПечати, УникальныйИдентификатор);
    
КонецФункции 
10 andrewrocker
 
09.07.25
19:54
(9) вы помогли, дальше я тоже проявил сообразительность

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

&НаСервере
Функция ПодготовитьКартинку()
	
	СканПечати = Объект.Ссылка.СканПечати.Получить();
	
	Если СканПечати = Неопределено Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Картинка номенклатуры не загружена";
		Сообщение.Сообщить();
		Возврат Неопределено;
	КонецЕсли;
	
	Возврат ПоместитьВоВременноеХранилище(СканПечати, УникальныйИдентификатор);
	
КонецФункции
11 andrewrocker
 
09.07.25
20:22
Отдельная просьба, помогите пожалуйста господа, чтобы до конца весь функционал доделать. Я хочу добавить кнопку "удалить скан подписи".

Пытаюсь почистить реквизит через Объект.СканПечати, система выдает "поле не найдено". Если работать как с ссылкой, то поле объекта не доступно для записи. Гугление не помогает найти решение проблемы.

&НаСервере
Процедура ОчиститьОбразецПодписиНаСервере()

	Объект.Ссылка.СканПечати = Новый ХранилищеЗначения(Неопределено);
	Объект.СканПечатиИмяФайла = "";

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

&НаКлиенте
Процедура ОчиститьОбразецПодписи(Команда)
	
	ОчиститьОбразецПодписиНаСервере();
	СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "СканПечати");
	
КонецПроцедуры
12 DiMel_77
 
09.07.25
21:35
(11) Забавные боты пошли...
&НаСервере
Процедура ОчиститьОбразецПодписиНаСервере()
        
        ТекущийОбъект = РеквизитФормыВЗначение("Объект");
	ТекущийОбъект.СканПечати         = Новый ХранилищеЗначения(Неопределено);
	ТекущийОбъект.СканПечатиИмяФайла = "";
        
        ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект")

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