|
Вывод картинки номенклатуры в подбор товара УТ 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) Ну от ошибок избавился, но картинка в подборе не отображается...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |