Здравствуйте. Задача стоит вывести всю номен с ее фото в отчет. У меня ошибка где-то . Когда вывожу один товар всё ок, а когда все то картинка растягиваеться на всю номен а не отдельно на каждую строку.Что не так подскажите?
Запрос
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.ФайлКартинки КАК ФайлКартинки
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.КатегорияНоменклатуры.Родитель.Наименование = &Наименование
И сам модуль
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; // отключаем стандартный вывод отчета - будем выводить программно
Настройки = КомпоновщикНастроек.Настройки;// Получаем настройки отчета
//ketr
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
ПараметрПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаОстатка"));
Если ПараметрПериод <> Неопределено
И ПараметрПериод.Использование
И ЗначениеЗаполнено(ПараметрПериод.Значение) Тогда
ПараметрПериод.Значение = КонецДня(ПараметрПериод.Значение);
КонецЕсли;
ПараметрыОтчета = ПодготовитьПараметрыОтчета(НастройкиОтчета);
//ketr
// Устанавливаем настройки отбора в соответствии с пользовательскими настройками
ТаблицаОтборов = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
Для Каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
НайденнаяПользовательскаяНастройка =
ТаблицаОтборов.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
Если НайденнаяПользовательскаяНастройка <> Неопределено Тогда
ЭлементОтбора.ВидСравнения = НайденнаяПользовательскаяНастройка.ВидСравнения;
ЭлементОтбора.Использование = НайденнаяПользовательскаяНастройка.Использование;
ЭлементОтбора.ПравоеЗначение = НайденнаяПользовательскаяНастройка.ПравоеЗначение;
КонецЕсли;
КонецЦикла;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
// Инициализируем макет компоновки используя схему компоновки данных
// и созданные ранее настройки и данные расшифровки
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
// Скомпонуем результат
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ДокументРезультат.Очистить();
// Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
//....
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Заполняем рисунки для полей, в данных расшифровки которых находятся элементы справочника
// "НоменклатураПрисоединенныеФайлы"
КоличествоКолонокТаблицы = ДокументРезультат.ШиринаТаблицы; // Количество колонок в отчете
КоличествоСтрокТаблицы = ДокументРезультат.ВысотаТаблицы; // Количество строк в отчете
Рис1 = 0;
стПерв = 0;
Номен = "";
// Обходим все ячейки отчета
Для Кл = 1 По КоличествоКолонокТаблицы Цикл
Для Ст = 1 По КоличествоСтрокТаблицы Цикл
ТекОбласть = ДокументРезультат.Область(Ст, Кл);
// Если имеется расшифровка ячейки, то проверям наличие полей расшифровки
Если ТекОбласть.Расшифровка <> Неопределено Тогда
ПоляРасшифровки = ДанныеРасшифровки.Элементы[ТекОбласть.Расшифровка].ПолучитьПоля();
Если ПоляРасшифровки.Количество() > 0 Тогда
// Если тип значения поля расшифровки соответствует справочнику прикрепленных файлов, то
// выводим связанную картинку
Рисунок = ПолучитьИзображение(ПоляРасшифровки.Получить(0).Значение);
Если Рисунок <> Неопределено Тогда
Если ДокументРезультат.Область(ст, 4, Ст, 4).Текст <> Номен и стПерв <> 0 Тогда
ТекОбласть = ДокументРезультат.Область(стПерв, Кл, Ст-1,Кл);
Если Ст - стПерв = 1 Тогда
ТекОбласть.ВысотаСтроки = 20.5*9;
Иначе
ТекОбласть.ВысотаСтроки = 20.5*9/ (Ст - стПерв);
КонецЕсли;
Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рис.РазмерКартинки = РазмерКартинки.Пропорционально;
Рис.Картинка = Рис1;
Рис.Расположить(ТекОбласть);
Рис1 = Рисунок;
стПерв = ст;
Номен = ДокументРезультат.Область(ст, 4, Ст, 4).Текст;
ИначеЕсли стПерв = 0 Тогда
стПерв = ст;
Рис1 = Рисунок;
Номен = ДокументРезультат.Область(ст, 4, Ст, 4).Текст;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Рисунок <> Неопределено Тогда
ТекОбласть = ДокументРезультат.Область(стПерв, Кл, Ст-1,Кл);
Если Ст - стПерв = 1 Тогда
ТекОбласть.ВысотаСтроки = 20.5*9;
Иначе
ТекОбласть.ВысотаСтроки = 20.5*9/ (Ст - стПерв);
КонецЕсли;
Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рис.РазмерКартинки = РазмерКартинки.Пропорционально;
Рис.Картинка = Рис1;
Рис.Расположить(ТекОбласть);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ПолучитьИзображение(ПрисоединенныйФайл)
КартинкаПоумолчанию = Неопределено;
Если ТипЗнч(ПрисоединенныйФайл) =
Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураПрисоединенныеФайлы.Ссылка КАК ХранимыйФайл
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
|ГДЕ
| НоменклатураПрисоединенныеФайлы.Наименование = &ПрисоединенныйФайл";
Запрос.УстановитьПараметр("ПрисоединенныйФайл", ПрисоединенныйФайл.Наименование);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий(); // Получаем двоичные данные катинки
Если НЕ ЗначениеЗаполнено(Выборка.ХранимыйФайл) Тогда
Возврат Новый Картинка(ПолучитьМакет("НетКартинки"));
Иначе
ДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.ХранимыйФайл, Неопределено);
Возврат Новый Картинка(ДанныеФайла);
КонецЕсли;
Иначе //// Если данные отсутствуют, получаем стандартное изображение из
// дополнительного макета внешнего отчета
Возврат Новый Картинка(ПолучитьМакет("НетКартинки"));
КонецЕсли;
КонецЕсли;
Возврат КартинкаПоумолчанию;
КонецФункции
burza @ Сегодня, 10:01
,
сам отчет [необходимо зарегистрироваться для просмотра ссылки]