1С 8.3 Загрузка картинки с json - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Загрузка картинки с json

Перейти в раздел примеры кода 1С 8.3:
Используются методы БСП:
Пример загрузки картинки номенклатуры в json в 1С 8.3:
&НаКлиенте
Процедура ФайлЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

   СтрФильтр                 = "Файлы json (*.json)     |*.json";
   ЭтаФорма.ФайлЗагрузки     = ВыбратьФайл(СтрФильтр, "Выберите *.json файл");

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

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

   ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   ДиалогВыбора.Фильтр = СтрФильтр;
   ДиалогВыбора.Каталог = стрКаталог;
   ДиалогВыбора.Заголовок = стрЗаголовок;
   ДиалогВыбора.МножественныйВыбор = булМножественныйВыбор;
   ДиалогВыбора.ПредварительныйПросмотр = булПредварительныйПросмотр;
   ДиалогВыбора.ПроверятьСуществованиеФайла = булПроверятьСуществованиеФайла;

   Если ДиалогВыбора.Выбрать() Тогда
       Если булМножественныйВыбор Тогда
           Возврат ДиалогВыбора.ВыбранныеФайлы;
       Иначе
           Возврат ДиалогВыбора.ПолноеИмяФайла;
       КонецЕсли;
   Иначе
       Возврат Ложь;
   КонецЕсли;
КонецФункции

&НаКлиенте
Процедура ЗагрузитьДанные(Команда)

   СтрокиДвоичныхДанных           = Новый ДвоичныеДанные(ЭтаФорма.ФайлЗагрузки);
   ФайлДанных = Новый Файл(ЭтаФорма.ФайлЗагрузки);
   АдресСтрокиДвоичныхДанных     = ПоместитьВоВременноеХранилище(СтрокиДвоичныхДанных, УникальныйИдентификатор);
   ПринятьНаСервереДокументы(АдресСтрокиДвоичныхДанных, ФайлДанных.Расширение);

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

&НаСервере
Процедура ПринятьНаСервереДокументы(АдресСтрокиДвоичныхДанных, РасширениеФайлаЭксель)

   СерверныеОстатки = ПолучитьИзВременногоХранилища(АдресСтрокиДвоичныхДанных);

   Если РасширениеФайлаЭксель = ".json" Тогда
       ВременныйФайлОстатков = ПолучитьИмяВременногоФайла("json");
   Иначе
       Возврат;
   КонецЕсли;

   СерверныеОстатки.Записать(ВременныйФайлОстатков);

   ЧтениеJSON = Новый ЧтениеJSON();

   Попытка
       ЧтениеJSON.ОткрытьФайл(ВременныйФайлОстатков);
   Исключение
       Сообщить("Невозможно открыть json-файл");
       Возврат;
   КонецПопытки;

   Массив = ПрочитатьJSON(ЧтениеJSON);
   ЧтениеJSON.Закрыть();

   Для Каждого ЭлементМассива Из Массив Цикл
       СформироватьЗаписьПоСтруктура(ЭлементМассива);
       //Для Каждого Элемент Из ЭлементМассива Цикл
       //   Сообщить(СокрЛП(Элемент.Ключ));
       //   Сообщить(СокрЛП(Элемент.Значение));
       //КонецЦикла;
   КонецЦикла;

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

&НаСервере
Процедура СформироватьЗаписьПоСтруктура(ЭлементМассива)

   НовСсылка = ЭтаФорма.НоменклатураЗагрузки.ПолучитьОбъект();
   ВременнаяКартинкаПеренос         = ПолучитьИмяВременногоФайла("jpeg");
   ОсновноеИзображение             = Base64Значение(ЭлементМассива.ОсновноеИзображение);
   АдресВременногоХранилищаФайла     = ПоместитьВоВременноеХранилище(ОсновноеИзображение);
   ОбработатьПрикрепленныйФайлНоменклатуры(НовСсылка.Ссылка, АдресВременногоХранилищаФайла, "mainpix", "jpeg");

   ОсновноеИзображение.Записать(ВременнаяКартинкаПеренос);

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

&НаСервереБезКонтекста
Процедура ОбработатьПрикрепленныйФайлНоменклатуры(НовНоменкл, АдресФайлаВоВременномХранилище, ИмяБезРасширения, Расширение)

   ОбъектНоменклатура = НовНоменкл.ПолучитьОбъект();

   ФайлВбазе = НайтиПрисоединенныйФайлВБазе(НовНоменкл, ИмяБезРасширения, Расширение);

   Если ЗначениеЗаполнено(ФайлВбазе) Тогда

       ИнформацияОФайле = Новый Структура("АдресФайлаВоВременномХранилище, ДатаМодификацииУниверсальная, АдресВременногоХранилищаТекста", АдресФайлаВоВременномХранилище, ТекущаяУниверсальнаяДата(), Неопределено);
       РаботаСФайлами.ОбновитьФайл(ФайлВбазе, ИнформацияОФайле);
       ОбъектНоменклатура.ФайлКартинки = ФайлВбазе;

   Иначе

       ПараметрыФайла = Новый Структура;
       ПараметрыФайла.Вставить("Автор",                       ПараметрыСеанса.ТекущийПользователь);
       ПараметрыФайла.Вставить("ВладелецФайлов",              НовНоменкл);
       ПараметрыФайла.Вставить("ИмяБезРасширения",            ИмяБезРасширения);
       ПараметрыФайла.Вставить("РасширениеБезТочки",          Расширение);
       ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное", ТекущаяУниверсальнаяДата());

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

   КонецЕсли;

   ОбъектНоменклатура.Записать();

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

&НаСервереБезКонтекста
Функция НайтиПрисоединенныйФайлВБазе(Номенклатура, ИмяБезРасширения, Расширение)

   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
    |    НоменклатураПрисоединенныеФайлы.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
    |ГДЕ
    |    НоменклатураПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
    |    И НоменклатураПрисоединенныеФайлы.Наименование ПОДОБНО &Наименование
    |    И НоменклатураПрисоединенныеФайлы.Расширение ПОДОБНО &Расширение
    |    И НЕ НоменклатураПрисоединенныеФайлы.ПометкаУдаления";

   Запрос.УстановитьПараметр("ВладелецФайла", Номенклатура);
   Запрос.УстановитьПараметр("Наименование", СокрЛП(ИмяБезРасширения));
   Запрос.УстановитьПараметр("Расширение", СокрЛП(Расширение));


   Результат = Запрос.Выполнить();

   Если Результат.Пустой() Тогда
       Возврат (Неопределено);
   Иначе
       Таб = Результат.Выгрузить();
       Возврат (Таб[0].Ссылка);
   КонецЕсли;

КонецФункции
0
Комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 09.12.2022
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому