| 
    
            
         
         | 
    
  | 
Вывод картинки номенклатуры в подбор товара УТ 11.1 | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        drey1912    
     22.06.15 
            ✎
    17:42 
 | 
         
        Здравствуйте, делаю внешнюю обработку подбора товара, понадобилось вывести картинки в подбор, но никак не получается. Пробовал смотреть как это сделано в карточке номенклатуры из присоединенных файлов но не прокатило.
 
        Подскажите как это лучше реализовать?  | 
|||
| 
    1
    
        D_E_S_131    
     22.06.15 
            ✎
    17:44 
 | 
         
        Ищи "как вывести картинку на управляемую форму".     
         | 
|||
| 
    2
    
        Aceforg    
     22.06.15 
            ✎
    17:48 
 | 
         
        Как раз не давно делал
 
        АдресКартинки = НавигационнаяСсылкаКартинки(Номенклатура.ФайлКартинки, УникальныйИдентификатор);  | 
|||
| 
    3
    
        Aceforg    
     22.06.15 
            ✎
    17:49 
 | 
         
        АдресКартинки = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки, ИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла;     
         | 
|||
| 
    4
    
        Fragster    
     гуру 
    22.06.15 
            ✎
    17:54 
 | 
         
        (2) а в динамический список как?     
         | 
|||
| 
    5
    
        Aceforg    
     22.06.15 
            ✎
    17:56 
 | 
         
        (4) Делал при активации строки через обработчик ожидания, чтоб не тормозило     
         | 
|||
| 
    6
    
        Лодырь    
     22.06.15 
            ✎
    18:11 
 | 
         
        (5) Аналогично, у меня сделано через обработчик ожидания.     
         | 
|||
| 
    7
    
        Fragster    
     гуру 
    22.06.15 
            ✎
    18:14 
 | 
         
        (5)(6) не РЯДОМ с динамическим списком, а в сам список     
         | 
|||
| 
    8
    
        D_E_S_131    
     22.06.15 
            ✎
    18:21 
 | 
         
        (7) "Ловите наркомана!" ©     
         | 
|||
| 
    9
    
        Aceforg    
     22.06.15 
            ✎
    18:22 
 | 
         
        (7) Задачи делать галерею картинок не было. Даже при 5 картинок время ответа неприемлемое. А так все довольны.     
         | 
|||
| 
    10
    
        Лодырь    
     22.06.15 
            ✎
    18:41 
 | 
||||
| 
    11
    
        Maniac    
     22.06.15 
            ✎
    18:55 
 | 
         
        В точности также как оно реализовано в карточке товара - там весь готовый код.
 
        Создаешь реквизит на форме для вывода картинки. См форму элемента. И процедурку для ее показа. Только в списке ты будешь обращаться к ТекущимДанным строки для того чтобы передать ссылку.  | 
|||
| 
    12
    
        Fragster    
     гуру 
    22.06.15 
            ✎
    19:15 
 | 
         
        (10) интересно, надо попробовать.
 
        (11) не угадал  | 
|||
| 
    13
    
        Лодырь    
     22.06.15 
            ✎
    19:52 
 | 
         
        (12) там проблема именно в одинаковом размере картинок, иначе получается бардак полнейший. надо какой то ресайзер автоматический прикручивать. как вариант, для галереи использовал программное создание элементов формы и табличный документ на форме. но это конечно не динамический список.     
         | 
|||
| 
    14
    
        PRO100 NigGaZ    
     22.06.15 
            ✎
    20:11 
 | 
         
        (5) Почему по активации строки не ОбработчикОжидания?     
         | 
|||
| 
    15
    
        drey1912    
     23.06.15 
            ✎
    09:33 
 | 
         
        Подскажите еще, как подключить обработку чтобы кнопка ее вызова находилась рядом с кнопкой типового подбора. У меня она пишет, что обработка должна вызываться только из документа.     
         | 
|||
| 
    16
    
        drey1912    
     23.06.15 
            ✎
    10:55 
 | 
         
        Ошибку нашел в этой процедуре, "Параметры.Документ" недоступны из внешней обработки т.е. мне надо получить форму и передать ее вместо ПараметрыДокумент!? Или сам документ?
 
        &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; Если Параметры.Документ = Неопределено Тогда ВызватьИсключение НСтр("ru='Предусмотрено открытие обработки только из документов.'"); КонецЕсли; КодФормы = "Обработка_ПодборТоваровВДокументПродажи_Форма"; ЭтоБазовая = ПолучитьФункциональнуюОпцию("БазоваяВерсия"); ПодборТоваровСервер.ПриСозданииФормыПодбораНаСервере(ЭтаФорма); Если Параметры.Свойство("ОтборПоТипуНоменклатуры") И ЗначениеЗаполнено(Параметры.ОтборПоТипуНоменклатуры) Тогда Если ТипЗнч(Параметры.ОтборПоТипуНоменклатуры) = Тип("ФиксированныйМассив") Тогда ОтборПоТипуНоменклатуры.ЗагрузитьЗначения(Новый Массив(Параметры.ОтборПоТипуНоменклатуры)); ИначеЕсли ТипЗнч(Параметры.ОтборПоТипуНоменклатуры) = Тип("ПеречислениеСсылка.ТипыНоменклатуры") Тогда ОтборПоТипуНоменклатуры.Добавить(Параметры.ОтборПоТипуНоменклатуры); Иначе ОтборПоТипуНоменклатуры.ЗагрузитьЗначения(Параметры.ОтборПоТипуНоменклатуры); КонецЕсли; КонецЕсли; ЗапретРедактированияСоставаНабора = Параметры.ЗапретРедактированияСоставаНабора; ЗапретРедактированияЦеныНабора = Параметры.ЗапретРедактированияЦеныНабора; Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовНоменклатуры") Тогда Элементы.ВариантНавигации.СписокВыбора.Удалить(Элементы.ВариантНавигации.СписокВыбора.НайтиПоЗначению("ПоСвойствам")); КонецЕсли; КонецПроцедуры  | 
|||
| 
    17
    
        drey1912    
     23.06.15 
            ✎
    14:31 
 | 
         
        Так будет выглядеть вывод картинки? &НаСервереБезКонтекста
 
        Функция НавигационнаяСсылкаКартинки(ФайлКартинки, УникальныйИдентификатор) УстановитьПривилегированныйРежим(Истина); Попытка АдресКартинки = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки, УникальныйИдентификатор).СсылкаНаДвоичныеДанныеФайла; Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); АдресКартинки = ""; КонецПопытки; Возврат АдресКартинки; КонецФункции  | 
|||
| 
    18
    
        Aceforg    
     23.06.15 
            ✎
    14:44 
 | 
         
        (17)Да, у меня точно так же     
         | 
|||
| 
    19
    
        drey1912    
     23.06.15 
            ✎
    14:58 
 | 
         
        (18) Но ничего не выводит. Обработка внешняя, у вас тоже?     
         | 
|||
| 
    20
    
        drey1912    
     23.06.15 
            ✎
    15:00 
 | 
         
        Вот более полный код, с вызовом.
 
        &НаКлиенте Процедура ПодборТаблицаХарактеристикиПриАктивизацииСтроки(Элемент) ПодборТоваровКлиент.ПриАктивизацииСтрокиТаблицыХарактеристик(ЭтаФорма, Элемент); НавигационнаяСсылкаКартинки(ФайлКартинки, ИдентификаторФормы); КонецПроцедуры &НаСервереБезКонтекста Функция НавигационнаяСсылкаКартинки(ФайлКартинки, ИдентификаторФормы) УстановитьПривилегированныйРежим(Истина); Попытка АдресКартинки = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки, ИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла; Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); АдресКартинки = ""; КонецПопытки; Возврат АдресКартинки; КонецФункции  | 
|||
| 
    21
    
        drey1912    
     23.06.15 
            ✎
    15:01 
 | 
         
        Если использовать ИдентификаторФормы как в спр. Номенклатура в типовом коде, то ругается на "переменная не определена"     
         | 
|||
| 
    22
    
        Aceforg    
     23.06.15 
            ✎
    15:43 
 | 
         
        (21) Смотри (2)
 
        АдресКартинки = НавигационнаяСсылкаКартинки(Номенклатура.ФайлКартинки, УникальныйИдентификатор);  | 
|||
| 
    23
    
        drey1912    
     23.06.15 
            ✎
    15:52 
 | 
         
        (22) Номенклатура.ФайлКартинк так нельзя обратиться, пишет Номенклатура не определена     
         | 
|||
| 
    24
    
        Aceforg    
     23.06.15 
            ✎
    15:54 
 | 
         
        (22)Так ты на клиенте. 
 
        У меня вызывается в обработчике ожидания на СЕРВЕРЕ  | 
|||
| 
    25
    
        Aceforg    
     23.06.15 
            ✎
    16:01 
 | 
         
        (23) Если не понятно, то держи весь код, надеюсь разберешься
 
        &НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) СтрокаТаблицыНоменклатуры = Элемент.ТекущиеДанные; Если СтрокаТаблицыНоменклатуры = Неопределено Тогда ЭтаФорма.ТекущаяСтрокаНоменклатуры = ПодборТоваровКлиентСервер.СтруктураСтрокиНоменклатуры(); Иначе Если ЭтаФорма.ТекущаяСтрокаНоменклатуры <> Неопределено Тогда Если (ЭтаФорма.ТекущаяСтрокаНоменклатуры.Номенклатура = СтрокаТаблицыНоменклатуры.Ссылка) Тогда Возврат; КонецЕсли; КонецЕсли; ЭтаФорма.ТекущаяСтрокаНоменклатуры = ПодборТоваровКлиентСервер.СтруктураСтрокиНоменклатуры(); ЗаполнитьЗначенияСвойств(ЭтаФорма.ТекущаяСтрокаНоменклатуры, СтрокаТаблицыНоменклатуры); ЭтаФорма.ТекущаяСтрокаНоменклатуры.Номенклатура = СтрокаТаблицыНоменклатуры.Ссылка; КонецЕсли; ПодборТоваровКлиент.ПриАктивизацииСтрокиСпискаНоменклатуры(ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура СписокПриАктивизацииСтрокиОбработчикОжидания() ПодборТоваровКлиент.УстановитьТекущуюСтрокуИерархииНоменклатуры(ЭтаФорма); ОтобразитьКартинку(); ПоказатьОстатки(); КонецПроцедуры &НаКлиенте Процедура ОтобразитьКартинку() ЭтоФормаПодбора = ПодборТоваровКлиентСервер.ЭтоФормаПодбора(ЭтаФорма); ИмяСпискаНоменклатуры = ПодборТоваровКлиентСервер.ИмяСпискаНоменклатурыПоВариантуПоиска(ЭтаФорма); ТекущаяСтрока = ЭтаФорма.Элементы[ИмяСпискаНоменклатуры].ТекущаяСтрока; Если ТекущаяСтрока = Неопределено Тогда Возврат; КонецЕсли; Если ТипЗнч(ТекущаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда Возврат; КонецЕсли; Если ЭтоФормаПодбора И ЭтаФорма.НавигацияПоХарактеристикам Тогда Возврат; КонецЕсли; ТекущиеДанные = ЭтаФорма.Элементы[ИмяСпискаНоменклатуры].ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; ОтобразитьКартинкуНаСервере(ТекущиеДанные.Ссылка); КонецПроцедуры Процедура ПриАктивизацииСтрокиСпискаНоменклатуры(Форма) Экспорт Форма.ПодключитьОбработчикОжидания("СписокПриАктивизацииСтрокиОбработчикОжидания", 0.1, Истина); КонецПроцедуры &НаСервереБезКонтекста Процедура ОтобразитьКартинкуНаСервере(Номенклатура); Если Не Номенклатура.ФайлКартинки.Пустая() Тогда АдресКартинки = НавигационнаяСсылкаКартинки(Номенклатура.ФайлКартинки, УникальныйИдентификатор); Иначе АдресКартинки = ""; Конецесли; КонецПроцедуры &НаСервереБезКонтекста Функция НавигационнаяСсылкаКартинки(ФайлКартинки, ИдентификаторФормы) УстановитьПривилегированныйРежим(Истина); Попытка АдресКартинки = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки, ИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла; Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); АдресКартинки = ""; КонецПопытки; Возврат АдресКартинки; КонецФункции  | 
|||
| 
    26
    
        drey1912    
     23.06.15 
            ✎
    16:24 
 | 
         
        (25) ты изменял общие модули?     
         | 
|||
| 
    27
    
        drey1912    
     23.06.15 
            ✎
    16:55 
 | 
         
        (25) Вроде бы сделал все аналогично, но ругается что {Форма.Форма.Форма(769,80)}: Переменная не определена (УникальныйИдентификатор)
 
        АдресКартинки = НавигационнаяСсылкаКартинки(Номенклатура.ФайлКартинки, <<?>>УникальныйИдентификатор); (Проверка: Сервер)  | 
|||
| 
    28
    
        drey1912    
     24.06.15 
            ✎
    09:11 
 | 
         
        (25) Ну от ошибок избавился, но картинка в подборе не отображается...     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |