Как прикрепить к товару не одну картинку а несколько ? Можно и без отображения просто штоб в номенклатуре были прикреплены к одному товару ? Вот есть код но он прикрепляет только одну картинку. как из него зделать так штоб можно было прикрепить не одну а хотябы 5 или 10 ?
&НаКлиенте Процедура ПрикрепитьФайл(Команда) // ОбъектТекущий = РеквизитФормыВЗначение(“Объект”); Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = “”; ДиалогОткрытияФайла.Расширение = “”; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; // ДиалогОткрытияФайла.ВыбранныеФайлы = “”; ДиалогОткрытияФайла.Заголовок = “Выберите файлы”; Если ДиалогОткрытияФайла.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла; // Получение двоичные данные файла //ПутьКФайлу = ДиалогОткрытияФайла.Расширение; ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу); // Имя = Новый ДвоичныеДанные(ПутьКФайлу); //Разширение = Новый ДвоичныеДанные(ПутьКФайлу); // Передача двоичных данные на сервер ПрикрепитьФайлНаСервере(ДвоичныеДанные); Иначе Текст = “ru = “”Файл(ы) не выбран!””; en = “”File(s) not selected!”””; Предупреждение(НСтр(Текст)); КонецЕсли; КонецПроцедуры
&НаСервере Процедура ПрикрепитьФайлНаСервере(ДвоичныеДанные) // Трансформируем объект формы в справочник-объект ОбъектТекущий = РеквизитФормыВЗначение(“Объект”); // Присваиваем новое значение реквизиту “Данные” //РегистрыСведений.СопоставлениеДанных. = Новый ХранилищеЗначения(ДвоичныеДанные); ОбъектТекущий.Картинка = Новый ХранилищеЗначения(ДвоичныеДанные); //ОбъектТекущий.КартинкаИмя = Новый ХранилищеЗначения(Имя); //ОбъектТекущий.КартинкаРазширение = Новый ХранилищеЗначения(Разширение); //ОбъектТекущий.Данные = Новый ХранилищеЗначения(ДвоичныеДанные); //ОбъектТекущий.РегистрыСведений.СопоставлениеДанных.Данные = Новый ХранилищеЗначения(ДвоичныеДанные); // Сохраняем изменения ОбъектТекущий.Записать(); // Данные = РегистрыСведений.СопоставлениеДанных.Данные; КонецПроцедуры
Внешный модуль который отправляет еты картинки работает с ДвоичныеДанные. Вот пример роботы. Данные = РегистрыСведений.СопоставлениеДанных.ПолучитьДанныеПоСсылке(Перечисления.Сущности.Image, Ссылка); Если Данные = Неопределено ИЛИ НЕ ЗначениеЗаполнено(Данные) Тогда Данные = ОтправитьКартинку(Ссылка); КонецЕсли; СтруктураДанных = Новый Структура; СтруктураДанных.Вставить(“src”,Данные); МассивКартинок = Новый Массив; МассивКартинок.Добавить(СтруктураДанных); Возврат МассивКартинок; КонецФункции Функция ОтправитьКартинку(Ссылка) Экспорт //ДвоичныеДанные = Новый ДвоичныеДанные(“R:\BMW.jpg”); //SDK_WC_API.ОтправитьКартинку(ДвоичныеДанные); ДвоичныеДанные = Ссылка.Картинка.Получить(); Результат = SDK_WC_API.ОтправитьКартинку(ДвоичныеДанные, Ссылка.КартинкаИмя,Ссылка.КартинкаРазширение); Если Результат = Неопределено Тогда Возврат Неопределено; КонецЕсли; РегистрыСведений.СопоставлениеДанных.СопоставитьДанные(Перечисления.Сущности.Image, Ссылка, Результат[“id”],Результат[“source_url”]); //РегистрыСведений.СопоставлениеДанных.СопоставитьДанные(Перечисления.Сущности.Image, Ссылка, Результат[“id”]); Возврат Результат[“source_url”]; КонецФункции
Этот код работает с тем што я выше скидывал а как теперь сюда всунуть этот регист сведений с этими картинками ? Вот как добавляю в регистр сведенней картинки и в базе как бы данные есть в номенклатуре я могу посмтореть етот регистр и файлы што есть у каждой номенклатуре но как их отравить через етот не получаетса.
&НаКлиенте Процедура СсылкаНаКартинкуНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.ПолноеИмяФайла = “”; Фильтр = “Файл Jpg (*.jpg)|*.jpg”; ДиалогОткрытия.Фильтр = Фильтр; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = “Выберете файл для загрузки”; ОписаниеОповещения = Новый ОписаниеОповещения(“ПослеЗагрузкиФайла”,ЭтаФорма); ДиалогОткрытия.Показать(ОписаниеОповещения); КонецПроцедуры &НаКлиенте Процедура ПослеЗагрузкиФайла(ВыбранныйФайл,ДопПараметр) Экспорт Если ВыбранныйФайл = Неопределено Тогда Возврат; КонецЕсли; ОписаниеОповещения = Новый ОписаниеОповещения(“ПослеПомещенияФайла”, ЭтаФорма); НачатьПомещениеФайла(ОписаниеОповещения,, ВыбранныйФайл[0], Ложь, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла,ДопПараметры) Экспорт Если Не Результат Тогда Возврат; КонецЕсли; СсылкаНаКартинку = Адрес; Модифицированность = Истина; КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Ссылка,ДвоичныеДанные) //Объект = РеквизитФормыВЗначение(“Объект”); Если ЭтоАдресВременногоХранилища(СсылкаНаКартинку) Тогда ФайлКартинки = ПолучитьИзВременногоХранилища(СсылкаНаКартинку); ТекущийОбъект.Картинка = Новый ХранилищеЗначения(ФайлКартинки); УдалитьИзВременногоХранилища(СсылкаНаКартинку); СсылкаНаКартинку = РегистрыСведений.СопоставлениеДанных.ПолучитьДанныеПоСсылке(Перечисления.Сущности.Image, Ссылка); ОбъектТекущий = РеквизитФормыВЗначение(“Объект”); ОбъектТекущий.Данные = Новый ХранилищеЗначения(ДвоичныеДанные); ОбъектТекущий.Записать(); КонецЕсли; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка,Ссылка,ДвоичныеДанные) СсылкаНаКартинку = РегистрыСведений.СопоставлениеДанных.ПолучитьДанныеПоСсылке(Перечисления.Сущности.Image, Ссылка); ОбъектТекущий = РеквизитФормыВЗначение(“Объект”); ОбъектТекущий.Данные = Новый ХранилищеЗначения(ДвоичныеДанные); ОбъектТекущий.Записать(); КонецПроцедуры