Имя: Пароль:
1C
1С v8
Не отображается фотография на форме документа
0 DenchikDev
 
21.11.25
08:23
Доброе утро, может, кто-нибудь сталкивался с тем, что не отображается картинка на форме документа после успешного фотографирования. Камера открывается, делаю фото, после этого ничего не происходит и никаких ошибок нет. Фотография - строковый реквизит с видом Поле картинки. ДанныеФотографии - реквизит с типом Хранилище значения. Вот мой код:
&НаКлиенте
Процедура СделатьФотоКлиент()
    АдресФото = СделатьИПоместитьФото();
    
    Если АдресФото = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Объект.Фотография = АдресФото;
    ЭтотОбъект.Модифицированность = Истина;

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

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

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

&НаКлиенте
Функция КачествоФотографииПоУмолчанию()
    Возврат 70;
КонецФункции

&НаКлиенте
Функция РазрешениеФотографииПоУмолчанию()
    
    #Если МобильноеПриложениеКлиент Или МобильныйКлиент Тогда
        ПоддерживаемыеРазрешения = СредстваМультимедиа.ПолучитьПоддерживаемыеРазрешенияКамеры();
        
        Если ПоддерживаемыеРазрешения.Количество() > 0 Тогда
            Возврат ПоддерживаемыеРазрешения[0];
        КонецЕсли;
        
        Возврат Новый РазрешениеКамерыУстройства(1024, 768);
    #Иначе
        Возврат Неопределено;
    #КонецЕсли
    
КонецФункции

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

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

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

&НаКлиенте
Процедура СделатьФото(Команда)
    СделатьФотоКлиент();
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    ЗаписатьФотографиюСервер(ТекущийОбъект);
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЗагрузитьФотоСервер();
КонецПроцедуры

Заранее спасибо, буду очень благодарен.
1 Ёпрст
 
гуру
21.11.25
10:57
(0) в свойствах моб клиента разрешения на камеру и т.п даны хоть ?
2 Ёпрст
 
гуру
21.11.25
10:58
ну и в отладке то хоть что ? Двоичные данные хоть во временное хранилище помещаются, навигационная ссылка получена ?
3 DenchikDev
 
21.11.25
10:58
Да, даны, камера открывается
4 Ёпрст
 
гуру
21.11.25
10:59
И.. версия моб клиента/приложения и версия платформы, хоть совпадают ? А то если версия моб клиента/приложения старше, чем версия платформы.. там есть подарки
5 DenchikDev
 
21.11.25
11:01
Данные во временное хранилище помещаются
6 Ёпрст
 
гуру
21.11.25
11:03
Ну и вот тут, метод можно сделать фото.. не ложь ли возвращает ?

&НаКлиенте
Процедура СделатьФотоКлиент()
    АдресФото = СделатьИПоместитьФото();
    
    Если АдресФото = Неопределено Тогда
        Возврат;
    КонецЕсли;
7 DenchikDev
 
21.11.25
11:05
Версия платформы 8.3.24.17.61, версия мобильной платформы 8.3.24.1761
8 DenchikDev
 
21.11.25
11:05
Версия платформы 8.3.24.1761
9 Ёпрст
 
гуру
21.11.25
11:07
(7) ну, тогда хз, Можешь и полеHTML для проверки кинуть и там   примитивный код для картинки
10 Ёпрст
 
гуру
21.11.25
11:09
И ..разрешение какое , при фотографировании ?
11 DenchikDev
 
21.11.25
11:33
Сделал реквизит Фотография реквизитом формы, а не документа, всё заработало. Всем спасибо, кто помогал.