Ошибка при добавлении варианта отчета.

1. Nigelist 02.03.19 07:09 Сейчас в теме
1С:Розница 2.2. Отчет "Ведомость по товарам на складах". Хотел переделать отчет, чтобы выводил номенклатуру с картинками. Вроде сделал. Но потом решил добавить вариант отчета. И отчет перестал работать. Просто немного изменил запрос (добавил ШК и картинку номенклатуры) в СКД. И добавил настройку ширины колонки в СКД.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ФайлКартинки КАК Изображение,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	Штрихкоды.Штрихкод,
	ТоварыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика,
	ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
	ТоварыНаСкладахОстаткиИОбороты.Склад.Магазин КАК Магазин,
	ВЫБОР
		КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
			ТОГДА NULL
		ИНАЧЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор
	КОНЕЦ КАК Регистратор,
	ТоварыНаСкладахОстаткиИОбороты.ПериодСекунда КАК ПериодСекунда,
	ТоварыНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень,
	ТоварыНаСкладахОстаткиИОбороты.ПериодНеделя КАК ПериодНеделя,
	ТоварыНаСкладахОстаткиИОбороты.ПериодДекада КАК ПериодДекада,
	ТоварыНаСкладахОстаткиИОбороты.ПериодМесяц КАК ПериодМесяц,
	ТоварыНаСкладахОстаткиИОбороты.ПериодКвартал КАК ПериодКвартал,
	ТоварыНаСкладахОстаткиИОбороты.ПериодГод КАК ПериодГод,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК Расход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот КАК Оборот
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = Штрихкоды.Владелец
Показать


Настройки СКД:


Вариант отчета:


В модуль отчета добавлен код:
//#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

//Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Истина, Модификатор = "")
//	НоваяКоманда = ТаблицаКоманд.Добавить();
//	НоваяКоманда.Представление = Представление;
//	НоваяКоманда.Идентификатор = Идентификатор;
//	НоваяКоманда.Использование = Использование;
//	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
//	НоваяКоманда.Модификатор = Модификатор;
//КонецПроцедуры

Функция ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область)
	Изображение = ТД.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
	Изображение.РазмерКартинки = РазмерКартинки.АвтоРазмер;
	Индекс = ТД.Рисунки.Индекс(Изображение);
	ТД.Рисунки[Индекс].Картинка = Новый Картинка(ДанныеКартинки, Истина);
	ТД.Рисунки[Индекс].Расположить(Область);
	Возврат ТД.Рисунки[Индекс]; 
КонецФункции

Процедура ВывестиИзображениеЭлементаНоменклатуры(ТД, ЭлементСправочника, Область, ШиринаКолонкиИзображения)
	УстановитьПривилегированныйРежим(Истина);
	Если ЭлементСправочника.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
		СтуктураРег = РегистрыСведений.ПрисоединенныеФайлы.Получить(Новый Структура("ПрисоединенныйФайл", ЭлементСправочника));
		ДанныеКартинки = СтуктураРег.ХранимыйФайл.Получить();
	Иначе
		ДанныеКартинки = ?(ЗначениеЗаполнено(ЭлементСправочника.Том.ПолныйПутьWindows), ЭлементСправочника.Том.ПолныйПутьWindows, ЭлементСправочника.Том.ПолныйПутьLinux)
			+ ЭлементСправочника.ПутьКФайлу;
	КонецЕсли;
	УстановитьПривилегированныйРежим(Ложь);	
	Рисунок = ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область);
	Область.АвтоВысотаСтроки = Ложь;
	Область.ВысотаСтроки = ШиринаКолонкиИзображения * 1.31 / 0.3759;// Среднее значение пункта 1 пункт = 0.3759 мм (по Wiki)
	Область.Расшифровка = ЭлементСправочника;
	Рисунок.ЦветЛинии = Область.ЦветРамки;
КонецПроцедуры

Функция ВернутьКоличествоКолонки(КоллекцияЭлементовВыбора)
	КоличествоКолонок = 0;
	Для Индекс = 0 По КоллекцияЭлементовВыбора.Количество() - 1 Цикл
		Если КоллекцияЭлементовВыбора[Индекс].Использование Тогда
			КоличествоКолонок = КоличествоКолонок + 1;
		КонецЕсли;
	КонецЦикла;
	Возврат КоличествоКолонок;
КонецФункции

Функция ВернутьЗначениеПараметраНастройкиСКД(КоллекцияЭлементовНастройки, ИмяНастройки, ЗначениеПоУмолчанию = Неопределено)
	Настройка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяНастройки);
	Если Настройка = Неопределено Тогда Возврат ЗначениеПоУмолчанию; КонецЕсли;
	НастрокаПоИД = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Настройка.ИдентификаторПользовательскойНастройки);
	Если Не ЗначениеЗаполнено(НастрокаПоИД.Значение) Тогда 
		Если Не ЗначениеПоУмолчанию = Неопределено Тогда
			НастрокаПоИД.Значение = ЗначениеПоУмолчанию;
		КонецЕсли;
	КонецЕсли;
	Возврат ?(НастрокаПоИД.Использование, НастрокаПоИД.Значение, ЗначениеПоУмолчанию); 
КонецФункции

#Область ОбработчикиСобытий

////////////////////////////////////////////////////////////­////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	//§
	СтандартнаяОбработка = Ложь;
	ИмяКолонкиИзображения = "Изображение";
	ДокументРезультат.Очистить();
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	//Получаем параметры отчета
	ШиринаКолонкиИзображения = ВернутьЗначениеПараметраНастройкиСКД(КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, "ШиринаКолонкиИзображения", 20); //В средних символах
	
	ПолеИзображения = СхемаКомпоновкиДанных.НаборыДанных.ТоварыНаСкладах.Поля.Найти(ИмяКолонкиИзображения);
	
	Если Не ПолеИзображения = Неопределено Тогда
		ОформлениеМинимальнойШириныКолонки = СхемаКомпоновкиДанных.НаборыДанных.ТоварыНаСкладах.Поля.Найти(ИмяКолонкиИзображения).Оформление.Элементы.Найти("МинимальнаяШирина");
		ОформлениеМинимальнойШириныКолонки.Использование = Истина;
		ОформлениеМинимальнойШириныКолонки.Значение = ШиринаКолонкиИзображения;
	КонецЕсли;
	
	Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.НачатьВывод();
	Пока Истина Цикл
		ЭлементРезультата = ПроцессорКомпоновки.Следующий();
		Если ЭлементРезультата = Неопределено Тогда Прервать;КонецЕсли; 
		ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
		Если ЭлементРезультата.ЗначенияПараметров.Количество() = 0 Тогда Продолжить; КонецЕсли;
		
		Для Каждого ЭлементПараметра Из ЭлементРезультата.ЗначенияПараметров Цикл
			Если ТипЗнч(ЭлементПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
				Поля = ДанныеРасшифровки.Элементы[ЭлементПараметра.Значение].ПолучитьПоля();
				Для Каждого Поле Из Поля Цикл
					Если ТипЗнч(Поле.Значение) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") Тогда
						Если Поле.Значение.Пустая() Тогда Продолжить; КонецЕсли;
						//Поиск номера колонки, с нужным именем ИмяКолонкиИзображения, для таки вывода изображения
						Для НомерКолонки = 1 По ДокументРезультат.ШиринаТаблицы Цикл
							Расшифровка = ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, НомерКолонки, ДокументРезультат.ВысотаТаблицы, НомерКолонки).Расшифровка;
							Если Расшифровка = Неопределено Тогда Продолжить; КонецЕсли;
							Поля = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
							Если Поля.Найти(ИмяКолонкиИзображения) = Неопределено Тогда Продолжить; КонецЕсли;
							ОбластьИзображения = ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, НомерКолонки);
							ВывестиИзображениеЭлементаНоменклатуры(ДокументРезультат, Поле.Значение, ОбластьИзображения, ШиринаКолонкиИзображения);
						КонецЦикла;
					КонецЕсли;
				КонецЦикла;
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
	
	ОбщегоНазначенияРТ.ВывестиДатуФормированияОтчета(ДокументРезультат);
	
	ПроцессорВывода.ЗакончитьВывод();
	
КонецПроцедуры

#КонецОбласти

//#КонецЕсли
Показать

При простой модификации варианта отчета, все работало. При добавлении варианта отчета, работать перестало. Подскажите где ошибка?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. Nigelist 11.03.19 07:33 Сейчас в теме +0.7 $m
Проблема решена. Решение здесь.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Martinian 10 02.03.19 19:19 Сейчас в теме
Что значит "перестал работать"? Если выдаётся какая-то ошибка, то скрин не помешал бы здесь...
3. Nigelist 03.03.19 09:09 Сейчас в теме
4. N0t_F0und 10 05.03.19 15:14 Сейчас в теме
Из настроек схему открыть можете? По ней легко можно заметить, где косячит
5. Nigelist 08.03.19 18:28 Сейчас в теме
6. Nigelist 11.03.19 07:33 Сейчас в теме +0.7 $m
Проблема решена. Решение здесь.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот