![]() |
|
Перебор записей табличной части элемента справочника для просмотра картинок | ☑ | ||
---|---|---|---|---|
0
alpha78
21.09.15
✎
09:29
|
Добрый день, коллеги. Хорошей новой недели.
Задача в чем. Это модуль формы для записи картинок в табличную часть элемента справочника при помощи ХранилищаЗначений Для каждого элемента справочника Номенклатура есть табличная часть, в строках которой указаны имя, расширение файла картинок - фото товаров и Хранилище Значений, где хранится файл картинки. Все вроде работает, но проблема вот в чем Нужно при открытии формы элемента для элемента справочника в табличной части перебирать картинки при кликании на них мышкой, чтоб они отображались в ПолеКартинки - реквизит формы. Я знаю есть для этого Обработка события "При Активизации строки". Помогите в решении этого вопроса. Заранее благодарен. &НаКлиенте Процедура ВыбратьФайлКартинки(Команда) //Создаем оповещение, именно процедура "ОбработатьВыборФайла" будет вызвана при закрытии окна выбора файла Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтаФорма); //Открываем интерактивно окно для выбора файла НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт Если Не Результат Тогда Возврат; КонецЕсли; СсылкаНаКартинку = Адрес; ЗаписьХранилища(Адрес,ВыбранноеИмяФайла); КонецПроцедуры &НаСервере Процедура ЗаписьХранилища(Адрес,ВыбранноеИмяФайла) ЭлементСправочника = РеквизитФормыВЗначение("Объект"); Строка=ЭлементСправочника.ПрикрепленныеФайлы.Добавить(); Строка.НаименованиеФайла=ВыбранноеИмяФайла; Строка.РасширениеФайла=Прав(ВыбранноеИмяФайла,4); //Добавляем саму картинку ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес); Строка.СодержимоеФайла = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных()); Если ЭлементСправочника.ПрикрепленныеФайлы.Количество() = 1 Тогда Строка.ОсновнаяКартинка = Истина; КонецЕсли; ЭлементСправочника.Записать(); ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); А=0; //Чистим временное хранилище //УдалитьИзВременногоХранилища(Адрес); КонецПРоцедуры // при окрытии формы элемента справочника &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Для каждого ТекСтрока Из Объект.ПрикрепленныеФайлы Цикл // выводится только основная картинка Если ТекСтрока.ОсновнаяКартинка Тогда Индекс = Объект.ПрикрепленныеФайлы.Индекс(ТекСтрока); СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ПрикрепленныеФайлы.СодержимоеФайла", Индекс); Прервать; КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПрикрепленныеФайлыОсновнаяКартинкаПриИзменении(Элемент) Строка=Элементы.ПрикрепленныеФайлы.ТекущиеДанные; ПроверкаНаличияОсновной(); Строка.ОсновнаяКартинка=Истина; КонецПроцедуры // проверка наличия основных картинок &НаСервере Процедура ПроверкаНаличияОсновной(); Для Каждого Строка Из Объект.ПрикрепленныеФайлы Цикл Строка.ОсновнаяКартинка=Ложь; КонецЦикла; КонецПроцедуры // если у нас услуга, то кнопка выбора картинок не работает &НаКлиенте Процедура УслугаПриИзменении(Элемент) Если ОБъект.Услуга=Ложь Тогда Элементы.ФормаВыбратьФайлКартинки.Доступность=Истина; Иначе Элементы.ФормаВыбратьФайлКартинки.Доступность=Ложь; КонецЕсли; КонецПроцедуры // если у нас услуга, то кнопка выбора картинок не работает &НаКлиенте Процедура ПриОткрытии(Отказ) Если Объект.Услуга=Истина Тогда Элементы.ФормаВыбратьФайлКартинки.Доступность=Ложь; КонецЕсли; КонецПроцедуры //с активизацией табличной части не получилось //&НаКлиенте //Процедура ПрикрепленныеФайлыПриАктивизацииСтроки(Элемент) // ТабСтрока = Элементы.ПрикрепленныеФайлы.ТекущиеДанные; // // СсылкаНаКартинку=ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ПрикрепленныеФайлы.СодержимоеФайла"); // //ПрикрепленныеФайлыПриАктивизацииСтрокиНаСервере(ТабСтрока.НаименованиеФайла); //КонецПроцедуры //&НаСервере //Процедура ПрикрепленныеФайлыПриАктивизацииСтрокиНаСервере(Файл) // ЭлементСправочника = РеквизитФормыВЗначение("Объект"); // Строка = ЭлементСправочника.Найти(Файл); // Картинка = Строка.СодержимоеФайла; // ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); //КонецПроцедуры &НаКлиенте Процедура ВыбратьФайлКартинки(Команда) //Создаем оповещение, именно процедура "ОбработатьВыборФайла" будет вызвана при закрытии окна выбора файла Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтаФорма); //Открываем интерактивно окно для выбора файла НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт Если Не Результат Тогда Возврат; КонецЕсли; СсылкаНаКартинку = Адрес; ЗаписьХранилища(Адрес,ВыбранноеИмяФайла); КонецПроцедуры &НаСервере Процедура ЗаписьХранилища(Адрес,ВыбранноеИмяФайла) ЭлементСправочника = РеквизитФормыВЗначение("Объект"); Строка=ЭлементСправочника.ПрикрепленныеФайлы.Добавить(); Строка.НаименованиеФайла=ВыбранноеИмяФайла; Строка.РасширениеФайла=Прав(ВыбранноеИмяФайла,4); //Добавляем саму картинку ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес); Строка.СодержимоеФайла = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных()); Если ЭлементСправочника.ПрикрепленныеФайлы.Количество() = 1 Тогда Строка.ОсновнаяКартинка = Истина; КонецЕсли; ЭлементСправочника.Записать(); ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); А=0; //Чистим временное хранилище //УдалитьИзВременногоХранилища(Адрес); КонецПРоцедуры // при окрытии формы элемента справочника &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Для каждого ТекСтрока Из Объект.ПрикрепленныеФайлы Цикл // выводится только основная картинка Если ТекСтрока.ОсновнаяКартинка Тогда Индекс = Объект.ПрикрепленныеФайлы.Индекс(ТекСтрока); СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ПрикрепленныеФайлы.СодержимоеФайла", Индекс); Прервать; КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПрикрепленныеФайлыОсновнаяКартинкаПриИзменении(Элемент) Строка=Элементы.ПрикрепленныеФайлы.ТекущиеДанные; ПроверкаНаличияОсновной(); Строка.ОсновнаяКартинка=Истина; КонецПроцедуры // проверка наличия основных картинок &НаСервере Процедура ПроверкаНаличияОсновной(); Для Каждого Строка Из Объект.ПрикрепленныеФайлы Цикл Строка.ОсновнаяКартинка=Ложь; КонецЦикла; КонецПроцедуры // если у нас услуга, то кнопка выбора картинок не работает &НаКлиенте Процедура УслугаПриИзменении(Элемент) Если ОБъект.Услуга=Ложь Тогда Элементы.ФормаВыбратьФайлКартинки.Доступность=Истина; Иначе Элементы.ФормаВыбратьФайлКартинки.Доступность=Ложь; КонецЕсли; КонецПроцедуры // если у нас услуга, то кнопка выбора картинок не работает &НаКлиенте Процедура ПриОткрытии(Отказ) Если Объект.Услуга=Истина Тогда Элементы.ФормаВыбратьФайлКартинки.Доступность=Ложь; КонецЕсли; КонецПроцедуры //с активизацией табличной части не получилось //&НаКлиенте //Процедура ПрикрепленныеФайлыПриАктивизацииСтроки(Элемент) // ТабСтрока = Элементы.ПрикрепленныеФайлы.ТекущиеДанные; // // СсылкаНаКартинку=ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ПрикрепленныеФайлы.СодержимоеФайла"); // //ПрикрепленныеФайлыПриАктивизацииСтрокиНаСервере(ТабСтрока.НаименованиеФайла); //КонецПроцедуры //&НаСервере //Процедура ПрикрепленныеФайлыПриАктивизацииСтрокиНаСервере(Файл) // ЭлементСправочника = РеквизитФормыВЗначение("Объект"); // Строка = ЭлементСправочника.Найти(Файл); // Картинка = Строка.СодержимоеФайла; // ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); //КонецПроцедуры |
|||
1
alpha78
21.09.15
✎
09:35
|
извините небольшая опечатка дублировал код
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |