Ребят плис создаю таблицу значений колонки меняются из запроса ок я их создаю в цикле как к ним патом обратиться также в цикле и записать туда информацию

1. santa56 6 15.06.17 09:51 Сейчас в теме
Ребят плис создаю таблицу значений колонки меняются из запроса ок я их создаю в цикле
Для каждого СтрТаблицаТипЦен Из ТаблицаТипЦен Цикл
		ТабЗнач.Колонки.Добавить(СтрТаблицаТипЦен.ТипЦен,Новый ОписаниеТипов ("СправочникСсылка.ТипыЦенНоменклатуры"));	
		ТабЗнач.Колонки.Добавить(Строка(СтрТаблицаТипЦен.ТипЦен) + "ЕдИзм");
	    КонецЦикла;

как потом к нним обратиться уже при записи строки сделал так же в цикле так он ругается
Для каждого СтрТаблицаТипЦен Из ТаблицаТипЦен Цикл
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
            |    ЦеныНоменклатурыСрезПоследних.Цена,
            |    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
            |    ТипыЦенНоменклатуры.ПорядокОкругления,
            |    ТипыЦенНоменклатуры.ОкруглятьВБольшуюСторону,
            |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
            |    ЦеныНоменклатурыСрезПоследних.Валюта
            |ИЗ
            |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
            |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры
            |        ПО ЦеныНоменклатурыСрезПоследних.ТипЦен = ТипыЦенНоменклатуры.Ссылка
            |ГДЕ
            |    ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура
            |    И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен";
            Запрос.УстановитьПараметр("Дата",КонецДня(ДатаПрайса));
            Запрос.УстановитьПараметр("Номенклатура",Выборка.Номенклатура);
            Запрос.УстановитьПараметр("ТипЦен",СтрТаблицаТипЦен.ТипЦен);
            ВыборкаТипЦен = Запрос.Выполнить().Выбрать();
            Если ВыборкаТипЦен.Следующий() Тогда
                СтрВалюта = ?(мЕстьВалюта, " " + ВыборкаТипЦен.Валюта, "");
                СтрокаТаб[СтрТаблицаТипЦен.ТипЦен] = ОбщегоНазначения.ФорматСумм(Ценообразование.ОкруглитьЦену(ВыборкаТипЦен.Цена, ВыборкаТипЦен.ПорядокОкругления, ВыборкаТипЦен.ОкруглятьВБольшуюСторону)) + СтрВалюта;
            Иначе
                СтрокаТаб[СтрТаблицаТипЦен.ТипЦен] = "";
            КонецЕсли;
            Если мЕстьЕдиница Тогда
                СтрокаТаб[СтрТаблицаТипЦен.ТипЦен + "ЕдИзм"] = ВыборкаТипЦен.ЕдиницаИзмерения;
            КонецЕсли;
            КонецЦикла;
Показать

Ругается на
СтрокаТаб[СтрТаблицаТипЦен.ТипЦен]
Получение элемента по индексу для значения не определено

а это весь код таблицы значения
ТабЗнач = Новый ТаблицаЗначений;
		ТабЗнач.Колонки.Добавить("АртикулКартинки");
		ТабЗнач.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
		ТабЗнач.Колонки.Добавить("НоменклатураПредставление");
		ТабЗнач.Колонки.Добавить("НаименованиеТовар");
		ТабЗнач.Колонки.Добавить("Ткань");
		ТабЗнач.Колонки.Добавить("Цвет");
		ТабЗнач.Колонки.Добавить("Уровень");
		ТабЗнач.Колонки.Добавить("Группировка");
		ТабЗнач.Колонки.Добавить("ТипЗаписи",Новый ОписаниеТипов("ТипЗаписиЗапроса"));
		ТабЗнач.Колонки.Добавить("Родитель");
		ТабЗнач.Колонки.Добавить("ЭтоГруппа");
		ТабЗнач.Колонки.Добавить("ГруппироватьПО");
		ТабЗнач.Колонки.Добавить("НетХарактеристик",Новый ОписаниеТипов("Булево"));
		ТабЗнач.Колонки.Добавить("ЦеноваяГруппа",Новый ОписаниеТипов("СправочникСсылка.ЦеновыеГруппы"));
		
		Для каждого СтрТаблицаТипЦен Из ТаблицаТипЦен Цикл
		ТабЗнач.Колонки.Добавить(СтрТаблицаТипЦен.ТипЦен,Новый ОписаниеТипов ("СправочникСсылка.ТипыЦенНоменклатуры"));	
		ТабЗнач.Колонки.Добавить(Строка(СтрТаблицаТипЦен.ТипЦен) + "ЕдИзм");
	    КонецЦикла;
		Сч = 1;
		Пока ВыборкаТЗ.Следующий() Цикл
			СтрокаТаб = ТабЗнач.Добавить();
			СтрокаТаб.Родитель = ВыборкаТЗ.Номенклатура.Родитель;
			СтрокаТаб.ЭтоГруппа = ВыборкаТЗ.Номенклатура.ЭтоГруппа;
			СтрокаТаб.Номенклатура = ВыборкаТЗ.Номенклатура;
			СтрокаТаб.НоменклатураПредставление = ВыборкаТЗ.НоменклатураПредставление;
			СтрокаТаб.НетХарактеристик = ВыборкаТЗ.НетХарактеристик;
			СтрокаТаб.ЦеноваяГруппа = ВыборкаТЗ.ЦеноваяГруппа;
			Если НЕ ВыборкаТЗ.Номенклатура.ЭтоГруппа Тогда
				Наименование = ВыборкаТЗ.Номенклатура.Наименование;	
				ДлинаДоСимвола = Найти(Наименование," р ")+ 2;
				СтрДлина = СтрДлина(Наименование);
				СтрокаТаб.НаименованиеТовар = ?(ДлинаДоСимвола<>0,Лев(Наименование,ДлинаДоСимвола),Наименование); 
				СТрокаТаб.ГруппироватьПО = Строка(ВыборкаТЗ.Номенклатура.КаталогИнтернетМагазина) + Строка(ВыборкаТЗ.Номенклатура.Родитель);
				СтрокаТаб.АртикулКартинки = ВыборкаТЗ.Номенклатура.КаталогИнтернетМагазина.Артикул;
				Запрос = Новый Запрос;
				Запрос.Текст = "ВЫБРАТЬ
				|	ЗначенияСвойствОбъектов.Объект,
				|	ЗначенияСвойствОбъектов.Свойство,
				|	ЗначенияСвойствОбъектов.Значение
				|ИЗ
				|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
				|ГДЕ
				|	ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.Номенклатура).Ссылка = &Номенклатура";
				Запрос.УстановитьПараметр("Номенклатура",ВыборкаТЗ.Номенклатура);
				Выборка = Запрос.Выполнить().Выбрать();
				Пока Выборка.Следующий() Цикл
					Если Выборка.Свойство.Код = "УТ0000005" Тогда
						СтрокаТаб.Ткань = Выборка.Значение;
					ИначеЕсли Выборка.Свойство.Код = "УТ0000006" Тогда    
						СтрокаТаб.Цвет = Выборка.Значение;  
					КонецЕсли; 
				КонецЦикла; 
			КонецЕсли;
			СтрокаТаб.Уровень = Число(ВыборкаТЗ.Уровень());
			Если ВыборкаТЗ.Номенклатура.ЭтоГруппа Тогда
				СтрокаТаб.Группировка = "ЦеноваяГруппа";
			Иначе
				СтрокаТаб.Группировка = ВыборкаТЗ.Группировка();
			КонецЕсли; 
			СтрокаТаб.ТипЗаписи = ВыборкаТЗ.ТипЗаписи();
			
			Для каждого СтрТаблицаТипЦен Из ТаблицаТипЦен Цикл
			Запрос = Новый Запрос;
			Запрос.Текст = "ВЫБРАТЬ
			|	ЦеныНоменклатурыСрезПоследних.Цена,
			|	ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
			|	ТипыЦенНоменклатуры.ПорядокОкругления,
			|	ТипыЦенНоменклатуры.ОкруглятьВБольшуюСторону,
			|	ЦеныНоменклатурыСрезПоследних.ТипЦен,
			|	ЦеныНоменклатурыСрезПоследних.Валюта
			|ИЗ
			|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
			|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры
			|		ПО ЦеныНоменклатурыСрезПоследних.ТипЦен = ТипыЦенНоменклатуры.Ссылка
			|ГДЕ
			|	ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура
			|	И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен";
			Запрос.УстановитьПараметр("Дата",КонецДня(ДатаПрайса));
			Запрос.УстановитьПараметр("Номенклатура",Выборка.Номенклатура);
			Запрос.УстановитьПараметр("ТипЦен",СтрТаблицаТипЦен.ТипЦен);
			ВыборкаТипЦен = Запрос.Выполнить().Выбрать();
			Если ВыборкаТипЦен.Следующий() Тогда
				СтрВалюта = ?(мЕстьВалюта, " " + ВыборкаТипЦен.Валюта, "");
				СтрокаТаб[СтрТаблицаТипЦен.ТипЦен] = ОбщегоНазначения.ФорматСумм(Ценообразование.ОкруглитьЦену(ВыборкаТипЦен.Цена, ВыборкаТипЦен.ПорядокОкругления, ВыборкаТипЦен.ОкруглятьВБольшуюСторону)) + СтрВалюта;
			Иначе
				СтрокаТаб[СтрТаблицаТипЦен.ТипЦен] = "";
			КонецЕсли;
			Если мЕстьЕдиница Тогда
				СтрокаТаб[СтрТаблицаТипЦен.ТипЦен + "ЕдИзм"] = ВыборкаТипЦен.ЕдиницаИзмерения;
			КонецЕсли;
			КонецЦикла;

Показать


КАК ПРАВИЛЬНО СДЕЛАТЬ
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DimDiemon 79 15.06.17 09:58 Сейчас в теме
Для начала взять учебники русского языка средней школы и все их хорошенько проштудировать.
По теме ошибки: когда создаешь колонку табличной части с ценой, то в первом параметре указывается идентификатор колонки, а ты туда передаешь справочник тип цен. Это компилятор самостоятельно преобразует в строку в виде представления справочника, но лучше сделай так:
ТабЗнач.Колонки.Добавить(СтрТаблицаТипЦен.ТипЦен.Код,Новый ОписаниеТипов ("СправочникСсылка.ТипыЦенНоменклатуры"));  

Та же ошибка когда обращаешься к этим колонкам, вот тут уже надо явным образом указывать:
СтрокаТаб[СтрТаблицаТипЦен.ТипЦен.Код] = 
3. santa56 6 15.06.17 10:07 Сейчас в теме
Сделал так
Для каждого СтрТаблицаТипЦен Из ТаблицаТипЦен Цикл
		ТабЗнач.Колонки.Добавить(СтрТаблицаТипЦен.ТипЦен.Код,Новый ОписаниеТипов ("СправочникСсылка.ТипыЦенНоменклатуры"));	
		ТабЗнач.Колонки.Добавить(Строка(СтрТаблицаТипЦен.ТипЦен) + "ЕдИзм");
	    КонецЦикла;

ругается
{ВнешняяОбработка.ПечатьПрайсЛиста.МодульОбъекта(1056)}: Ошибка при вызове метода контекста (Добавить)
ТабЗнач.Колонки.Добавить(СтрТаблицаТипЦен.ТипЦен.Код,Новый ОписаниеТипов ("СправочникСсылка.ТипыЦенНоменклатуры"));
по причине:
Неверное имя колонки
4. PhoenixAOD 62 15.06.17 10:11 Сейчас в теме
(3)Ну вообще ТЗ создается вне цикла с нужными колонками, потом в цикле запиливаешь в ТЗ данные, и уже потом с этой ТЗ работаешь. А у тебя получается для каждой строки в ТЗ колонка добавиться.
12. DimDiemon 79 15.06.17 10:32 Сейчас в теме
(3)
СтрТаблицаТипЦен.ТипЦен.Код

Сделай СокрЛП(СтрТаблицаТипЦен.ТипЦен.Код), или вместо кода - наименование как уже предложили, если уверен, что наименования типов цен у тебя уникальные
5. KazanKokos 11 15.06.17 10:12 Сейчас в теме
Корованы идут....

Почему
ТабЗнач.Колонки.Добавить(СтрТаблицаТипЦен.ТипЦен,Новый ОписаниеТипов ("СправочникСсылка.ТипыЦенНоменклатуры"));

а не
ТабЗнач.Колонки.Добавить(СтрТаблицаТипЦен.ТипЦен.Наименование,Новый ОписаниеТипов ("СправочникСсылка.ТипыЦенНоменклатуры");


?
6. KazanKokos 11 15.06.17 10:14 Сейчас в теме
Почему
                СтрокаТаб[СтрТаблицаТипЦен.ТипЦен] = ОбщегоНазначения.ФорматСумм(Ценообразование.ОкруглитьЦену(ВыборкаТипЦен.Цена, ВыборкаТипЦен.ПорядокОкругления, ВыборкаТипЦен.ОкруглятьВБольшуюСторону)) + СтрВалюта;

а не

СтрТаблицаТипЦен[блаблабла ?
7. santa56 6 15.06.17 10:14 Сейчас в теме
потом обратиться к строке и добавить колонки?
СтрокаТаб[СтрТаблицаТипЦен.ТипЦен.Наименование]

он поймет?
8. KazanKokos 11 15.06.17 10:15 Сейчас в теме
и вообще откуда в коде СтрокаТаб? не вижу его объявления
9. santa56 6 15.06.17 10:16 Сейчас в теме
1. выше весь код выложил

 СтрокаТаб = ТабЗнач.Добавить();
11. KazanKokos 11 15.06.17 10:21 Сейчас в теме
(9) Вы используете значение(в данном случае ссылка) в качестве индекса. в то время как наименования колонок всегда должны быть строковые
10. santa56 6 15.06.17 10:21 Сейчас в теме
сначала создаем таблицу затем создаем колонки не которые мы создаем в цикле, затем нам нужно для каждой строки уже добавить данные по этим колонкам которые создаются в цикле я просто не знаю как к ним обратиться уже при создании строки так как эти колонки меняются
13. santa56 6 15.06.17 10:44 Сейчас в теме
Оставьте свое сообщение

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