Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 20:38

Перебор записей табличной части элемента справочника для просмотра картинок

Автор ktu78, 21 сен 2015, 09:36

0 Пользователей и 1 гость просматривают эту тему.

ktu78

Добрый день, коллеги. Хорошей новой недели.
Задача в чем. Это модуль формы для записи картинок в табличную часть элемента справочника при помощи ХранилищаЗначений
Для каждого элемента справочника Номенклатура есть табличная часть, в строках которой указаны имя, расширение файла картинок - фото товаров и Хранилище Значений, где хранится файл картинки.
Все вроде работает, но проблема вот в чем
Нужно при открытии формы элемента для элемента справочника в табличной части перебирать картинки при кликании на них мышкой, чтоб они отображались в ПолеКартинки - реквизит формы.
Я знаю есть для этого Обработка события "При Активизации строки".
Помогите в решении этого вопроса. Заранее благодарен.



&НаКлиенте
Процедура ВыбратьФайлКартинки(Команда)
//Создаем оповещение,   именно  процедура  "ОбработатьВыборФайла"  будет вызвана при закрытии окна выбора файла
Оповещение  =  Новый ОписаниеОповещения("ОбработатьВыборФайла",   ЭтаФорма);
//Открываем интерактивно  окно для выбора файла
НачатьПомещениеФайла(Оповещение,   ,   ,   Истина,   УникальныйИдентификатор);
КонецПроцедуры

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

Если Не Результат Тогда
Возврат;
КонецЕсли;

СсылкаНаКартинку = Адрес;
ЗаписьХранилища(Адрес,ВыбранноеИмяФайла);
КонецПроцедуры 

&НаСервере
Процедура ЗаписьХранилища(Адрес,ВыбранноеИмяФайла)
   
   ЭлементСправочника = РеквизитФормыВЗначение("Объект");
   
   Строка=ЭлементСправочника.ПрикрепленныеФайлы.Добавить();
   Строка.НаименованиеФайла=ВыбранноеИмяФайла;
   Строка.РасширениеФайла=Прав(ВыбранноеИмяФайла,4);
      
   //Добавляем саму картинку
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
    Строка.СодержимоеФайла = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
   
   Если ЭлементСправочника.ПрикрепленныеФайлы.Количество() = 1 Тогда
        Строка.ОсновнаяКартинка = Истина;
    КонецЕсли;

   
   ЭлементСправочника.Записать();
    ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект");
   
      
   А=0;
   //Чистим временное хранилище
    //УдалитьИзВременногоХранилища(Адрес);
   
КонецПРоцедуры


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

&НаКлиенте
Процедура ПрикрепленныеФайлыОсновнаяКартинкаПриИзменении(Элемент)
       Строка=Элементы.ПрикрепленныеФайлы.ТекущиеДанные;
      ПроверкаНаличияОсновной();
      Строка.ОсновнаяКартинка=Истина;
КонецПроцедуры

// проверка наличия основных картинок
&НаСервере
Процедура ПроверкаНаличияОсновной();
   Для Каждого Строка Из Объект.ПрикрепленныеФайлы Цикл
      Строка.ОсновнаяКартинка=Ложь;   
   КонецЦикла;   
КонецПроцедуры

// если у нас услуга, то кнопка выбора картинок не работает
&НаКлиенте
Процедура УслугаПриИзменении(Элемент)
   Если ОБъект.Услуга=Ложь Тогда
   Элементы.ФормаВыбратьФайлКартинки.Доступность=Истина;
   Иначе
   Элементы.ФормаВыбратьФайлКартинки.Доступность=Ложь;
   КонецЕсли;
КонецПроцедуры

// если у нас услуга, то кнопка выбора картинок не работает
&НаКлиенте
Процедура ПриОткрытии(Отказ)
   Если Объект.Услуга=Истина Тогда
      Элементы.ФормаВыбратьФайлКартинки.Доступность=Ложь;   
   КонецЕсли;   
КонецПроцедуры





//с активизацией табличной части не получилось

//&НаКлиенте
//Процедура ПрикрепленныеФайлыПриАктивизацииСтроки(Элемент)
//   ТабСтрока = Элементы.ПрикрепленныеФайлы.ТекущиеДанные;
//   
//   СсылкаНаКартинку=ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ПрикрепленныеФайлы.СодержимоеФайла");

//   //ПрикрепленныеФайлыПриАктивизацииСтрокиНаСервере(ТабСтрока.НаименованиеФайла);
//КонецПроцедуры


//&НаСервере
//Процедура ПрикрепленныеФайлыПриАктивизацииСтрокиНаСервере(Файл)
//   ЭлементСправочника = РеквизитФормыВЗначение("Объект");
//   Строка = ЭлементСправочника.Найти(Файл);
//   Картинка = Строка.СодержимоеФайла;
//   ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект");
//КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск