8.х Сохранение фоторгафии контрагента

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Adminspb, 9 апр 2017.

  1. TopicStarter Overlay
    Adminspb
    Offline

    Adminspb Опытный в 1С

    Регистрация:
    18 дек 2006
    Сообщения:
    146
    Симпатии:
    1
    Баллы:
    29
    Добрый день!
    Есть конфигурация (Платформа 8.3), и надо сохранить фотографию контрагента, имея ссылку на элемент справочника в котором она находиться.
    Прикрепляю скриншоты из конфигуратора

    Справочкик Файлы
    2017-04-09_205336.jpg
    Справочник Контрагенты(частично)
    2017-04-09_205541.jpg
    регистр сведений
    2017-04-09_205738.jpg


    Подскажите пожалуйста, как сохранить картинку в заданную папку на диск?

    Пробую начать так

    Если ЗначениеЗаполнено(Контрагент.ФайлКартинки) Тогда

    ДанныеФайла = РаботаСФайламиВызовСервера.ПолучитьДанныеФайлаДляСохранения(Контрагент.ФайлКартинки, Неопределено,Неопределено);

    ............................

    КонецЕсли;
    И вот дальше я не знаю как быть....
  2. TopicStarter Overlay
    Adminspb
    Offline

    Adminspb Опытный в 1С

    Регистрация:
    18 дек 2006
    Сообщения:
    146
    Симпатии:
    1
    Баллы:
    29
    Может кто сталкивался с подобной задачей?
  3. TopicStarter Overlay
    Adminspb
    Offline

    Adminspb Опытный в 1С

    Регистрация:
    18 дек 2006
    Сообщения:
    146
    Симпатии:
    1
    Баллы:
    29
    Если посмотреть Справочкики.Контрагенты.ФормуЭлемента, там есть такой код


    &НаСервере
    //Процедура, обработчик события "ПослеЗаписиНаСервере"
    //
    Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

    НаборЗаписей = РегистрыСведений.СтатусыКонтрагентов.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Контрагент.Установить(Объект.Ссылка);
    НаборЗаписей.Отбор.СтруктурнаяЕдиница.Установить(ПараметрыСеанса.ТекущаяСтруктурнаяЕдиница);

    НаборЗаписей.Прочитать();

    Если НаборЗаписей.Количество() = 0 Тогда

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

    КонецЕсли;

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

    &НаКлиенте
    //Процедура, обработчик команды "Сфотографировать"
    //
    Процедура Сфотографировать(Команда)

    # Если НЕ ВебКлиент Тогда

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

    Если ПовторноеОткрытие Тогда
    ПараметрыОткрытия = Новый Структура("ПовторноеОткрытие", Истина);
    Иначе
    ПараметрыОткрытия = Новый Структура("ПовторноеОткрытие", Ложь);
    КонецЕсли;

    ПараметрыСнимка = ОпределитьРежимИПараметрыПолученияСнимка();

    //Режим работы через COM-объект перехвата видио
    Если НЕ ПараметрыСнимка.ВнешнееПриложение Тогда

    Путь = КаталогВременныхФайлов();

    ПараметрыОткрытия.Вставить("Путь" , Путь);
    ПараметрыОткрытия.Вставить("Клиент", Объект.Ссылка);

    ФормаФото = ПолучитьФорму("Справочник.Контрагенты.Форма.ФормаФото", ПараметрыОткрытия);

    Если ФормаФото = Неопределено Тогда
    Предупреждение("Веб-камера не настроена!");
    Возврат;
    КонецЕсли;

    Сохранять = ФормаФото.ОткрытьМодально();

    Если Не Сохранять = Неопределено и Сохранять Тогда

    Попытка
    РаботаСФайламиКлиент.ЗаписатьФотоКлиентаВСправочник(Путь+"Picture.png", Объект);
    Исключение
    КонецПопытки;
    ФайлКартинкиПриИзменении(Неопределено);
    Модифицированность = Истина;
    КонецЕсли;

    //ПовторноеОткрытие = Истина;

    УправлениеЭлементамиФормы();

    Иначе//Режим работы через внешне приложение

    ЗапуститьПриложение(СокрЛП(ПараметрыСнимка.ПутьКПрограмме), СокрЛП(ПараметрыСнимка.КаталогФотографий),Истина);
    КаталогФотографий = ПараметрыСнимка.КаталогФотографий;
    ВставитьИзФайла(Неопределено);

    КонецЕсли;
    #КонецЕсли

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

    &НаСервере
    //Функция определяет режим получения снимка и
    //возвращает параметры режима
    Функция ОпределитьРежимИПараметрыПолученияСнимка()

    СтрокаПараметров = Константы.НастройкиВебКамеры.Получить();

    ВозвратПараметров = Новый Структура;

    Если СтрЧислоВхождений(СтрокаПараметров,"<ВНЕШНЕЕ_ПРИЛОЖЕНИЕ>") > 0 Тогда

    ВозвратПараметров.Вставить("ВнешнееПриложение",Истина);

    СписокПодстрок = ОбщегоНазначения.СтрокаВСписок(СтрокаПараметров,",");

    ВозвратПараметров.Вставить("ПутьКПрограмме" ,СписокПодстрок[1].Значение);
    ВозвратПараметров.Вставить("КаталогФотографий",СписокПодстрок[2].Значение);

    Иначе
    ВозвратПараметров.Вставить("ВнешнееПриложение",ЛОжь);
    КонецЕсли;

    Возврат ВозвратПараметров;

    КонецФункции

    &НаСервереБезКонтекста
    //Функция возвращает навигационную ссылку картинки
    //
    Функция ПолучитьНавигационнуюСсылкуКартинки(ФайлКартинки, ИдентификаторФормы)

    УстановитьПривилегированныйРежим(Истина);

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

    КонецФункции

    &НаКлиенте
    Процедура ФайлКартинкиПриИзменении(Элемент)

    УправлениеЭлементамиФормы();

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

    &НаКлиенте
    //Процедура, обработчик команды "Просмотреть"
    //
    Процедура Просмотреть(Команда)

    ДанныеФайла = РаботаСФайламиВызовСервера.ПолучитьДанныеФайлаДляОткрытия(Объект.ФайлКартинки, Неопределено,
    Неопределено);


    КомандыРаботыСФайламиКлиент.Открыть(ДанныеФайла);

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

    &НаКлиенте
    //Процедура, обработчик команды "Удалить"
    //
    Процедура Удалить(Команда)

    Объект.ФайлКартинки = Неопределено;

    Модифицированность = Истина;

    УправлениеЭлементамиФормы();

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

    &НаКлиенте
    //Процедура, обработчик команды "СохранитьКак"
    //
    Процедура СохранитьКак(Команда)

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

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

    Есть методы

    01.jpg 02.jpg

    03.jpg 04.jpg

    05.jpg 06.jpg

    07.jpg 08.jpg

    09.jpg 10.jpg

    11.jpg 12.jpg

    13.jpg 14.jpg

    15.jpg 01.jpg

    02.jpg 03.jpg

    04.jpg 05.jpg

    06.jpg 07.jpg

    08.jpg 09.jpg
    --- Объединение сообщений, 11 апр 2017 ---
    Уже мозг себе свернул как из внешней обработки имея ссылку на элемент справочника сохранить фотку в папку на диске(((((
    Может кто сталкивался?
  4. Profaner
    Offline

    Profaner

    Регистрация:
    8 авг 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Что передается в ДанныеФайла для начала? Отлаживали? Там по идее строка с бинарными данными, может я ошибаюсь.

Поделиться этой страницей