Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Не получается добавить индекс (число прочтений - 18656 )
OnePrg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 66
Зарегистрирован: 07. Октября 2019
Не получается добавить индекс
10. Июня 2020 :: 11:58
Печать  
Вот такая рекурсивная функция

Код
Выбрать все
Процедура ВывестиСтроку2(тб,ТекущийУровень,ВсегоУровней, тбТовары)
	Перем СуммыПериодов[2], стр;

	Если ТекущийУровень > 1 Тогда
		Возврат;
	Конецесли;

	//тб.ВыбратьСтроки();
	Для НомерПериода = 1 по Периоды.РазмерСписка() Цикл

		СуммыПериодов[НомерПериода] = 0;

		Период = Периоды.ПолучитьЗначение(НомерПериода,стр);

		Отбор = СоздатьОбъект("СписокЗначений");
		Отбор.ДобавитьЗначение(тбТовары.Товар,	"Товар");
		Отбор.ДобавитьЗначение(Период,			"Период");
		тбСклады.ВыбратьСтроки();
		Пока тбСклады.ПолучитьСтроку() = 1 Цикл

			Отбор.ВставитьЗначение(3,тбСклады.Склад,"Склад");
			Если ТекущийУровень = 0 Тогда
				НомерНайденнойСтроки = тб.НайтиСтроку("Товар",Отбор,0,1);
				Если НомерНайденнойСтроки <> 0 Тогда
					СуммыПериодов[НомерПериода] = СуммыПериодов[НомерПериода] + тб.Сумма;
				КонецЕсли;
			Иначе
				Если тб.тзПотомки.КоличествоИндексов() = 0 Тогда
					тб.тзПотомки.ДобавитьИндекс("Товар2","Товар,Период,Склад");
				КонецЕсли;
				НомерНайденнойСтроки = тб.тзПотомки.НайтиСтроку("Товар2",Отбор,0,1);
				Если НомерНайденнойСтроки <> 0 Тогда
					СуммыПериодов[НомерПериода] = СуммыПериодов[НомерПериода] + тб.тзПотомки.Сумма;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;

	КонецЦикла;

	Сообщить(Формат(ТекущийУровень,"Ч(0)"+Строка(ТекущийУровень))+ " | " + Строка(тбТовары.Товар) + " | " + Строка(СуммыПериодов[1]) + " | " + Строка(СуммыПериодов[2]));

	Если ТипЗначенияСтр(тбТовары.тзПотомки) = "ИндексированнаяТаблица" Тогда
		тбТовары.тзПотомки.ВыбратьСтроки();
		Пока тбТовары.тзПотомки.ПолучитьСтроку() = 1 Цикл
			ВывестиСтроку2(тб, ТекущийУровень+1,ВсегоУровней, тбТовары.тзПотомки)
		КонецЦикла;
	КонецЕсли;

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



Ругается НомерНайденнойСтроки = тб.тзПотомки.НайтиСтроку("Товар2",Отбор,0,1);
- Индекс с именем Товар2 не найден !
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Не получается добавить индекс
Ответ #1 - 10. Июня 2020 :: 12:32
Печать  
А все потому что у ИТ количество индексов никогда не равно 0!!!
Проверять наличие индекса нужно через ит.НомерИндекса("ИмяИндекса")

И как я писал в теме http://www.1cpp.ru/forum/YaBB.pl?num=1591625839/4#4 ставь в индексах всегда звездочки - группировка по внутреннему представлению.
Не ставить их нужно только если действительно что-то не работает (не помню чтобы такой случай был, может забыл уже).
  
Наверх
www  
IP записан
 
OnePrg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 66
Зарегистрирован: 07. Октября 2019
Re: Не получается добавить индекс
Ответ #2 - 10. Июня 2020 :: 13:31
Печать  
Спасибо - помогло.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать