Задача № 2.3 Прайс-лист с картинками

1. В схеме компонокви добавляем вывод поля ЦеныНоменклатурыСрезПоследних.Номенклатура.ФайлКартинки КАК Изображение  в итоговый запрос/
2. Добавляем условие в отчет пакет "Цены" В таблицу "ЦеныСрезПоследних"
 ВидЦены В (&ВидыЦен)
И Номенклатура В (&СписокТоваров)
3. Создаем форму отчета
4. На форму добавляем реквизит список значений  "СписокТоваров", размещаем его на форму отчета. Делаем этот реквизит только для просмотра и убираем все команда кроме удалить.
5. Создаем команду формы "ПодборТоваров", размещаем ее для списка товаров.
6. Добавляем код в форму и привязываем его к контролам

&НаКлиенте
Процедура ПодборТоваров(Команда)

ФормаВыбораТоваров = ПолучитьФорму("Справочник.Номенклатура.ФормаВыбора", , ЭтаФорма);
ЭлементОтбора = ФормаВыбораТоваров.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("ФайлКартинки");
    ЭлементОтбора.ВидСравнения     = ВидСравненияКомпоновкиДанных.НеРавно;
    ЭлементОтбора.Использование    = Истина;
    ЭлементОтбора.ПравоеЗначение   = ПредопределенноеЗначение("Справочник.НоменклатураПрисоединенныеФайлы.ПустаяСсылка");
ФормаВыбораТоваров.ЗакрыватьПриВыборе = Ложь;
ФормаВыбораТоваров.Открыть();

КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

Если ТаблицаТоваров.Количество() > 14 Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Нельзя выбрать больше 15 элементов одновременно.");
Возврат;
КонецЕсли;

Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.Номенклатура") Тогда
ЗначениеВСписке = СписокТоваров.НайтиПоЗначению(ВыбранноеЗначение);
Если ЗначениеВСписке = Неопределено Тогда
СписокТоваров.Добавить(ВыбранноеЗначение, ВыбранноеЗначение.Наименование);
УстановитьСписокТоваров();
КонецЕсли;
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура УстановитьСписокТоваров()

НастройкаСпискаТоваров = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(Отчет.КомпоновщикНастроек.Настройки, "СписокНоменклатуры");
Если НастройкаСпискаТоваров <> Неопределено Тогда
НастройкаСпискаТоваров.Использование = Истина;
НастройкаСпискаТоваров.Значение = СписокТоваров;
КонецЕсли;

КонецПроцедуры

7. Добавляем в модуль отчета в конец функции "ПриКомпоновкеРезультата" код

// Решение задачи
СтандартнаяОбработка = Ложь;

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

//Корректировка документа результата
КолКолонок = ДокументРезультат.ШиринаТаблицы;
КолСтрок =   ДокументРезультат.ВысотаТаблицы;

Для строка = 1 по КолСтрок Цикл

Для колонка = 1 по КолКолонок Цикл

ТекЯчейка = ДокументРезультат.Область(строка, Колонка);
Если ТекЯчейка.Расшифровка <> Неопределено Тогда

ПоляРасшифровки = ДанныеРасшифровки.Элементы[ТекЯчейка.Расшифровка].ПолучитьПоля();

Если ПоляРасшифровки.Количество() > 0 Тогда

ТекПолеРасшифровки = ПоляРасшифровки[0].Значение;

Если ТипЗнч(ТекПолеРасшифровки) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы")
и ЗначениеЗаполнено(ТекПолеРасшифровки)  Тогда

Рисунок = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(ТекПолеРасшифровки);
Если Рисунок <> Неопределено Тогда

ТекЯчейка.ВысотаСтроки = 100;
   ТекЯчейка.ШиринаКолонки = 20;

Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рис.РазмерКартинки = РазмерКартинки.Пропорционально;
Рис.Картинка = Новый картинка(Рисунок);
Рис.Расположить(ТекЯчейка);

Прервать;

КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЦикла;

8. Добавляем отчет в конфигурацию и ставим в техже подсистемах, что и родной отчет
9. Запускаем конфигурацию со строкой "/С ЗапуститьОбновлениеИнформационнойБазы" "Сервис-Параметры-Запуск 1С- Параметры запуска".

Комментариев нет:

Отправить комментарий