Перестала строиться иерархия. УТ 10.3
Строил таблицу иерархии в УТ 10.3, внезапно перестал работать отчет из-за запроса, имеющего вид:
Проблема была в иерархии, отчет тестировался на 6 уровнях, а возникло уже 9.
1с отводит на каждый уровень по 150 символов, в итоге 150*9 = 1350 это больше чем максимум 1024. Явно указал ограничивать до 1024 длину, заработало:
Функция ПолучитьНоменклатуруДляОтчета() Экспорт З = Новый Запрос( "ВЫБРАТЬ | Т.Ссылка, | Т.Наименование, | Т.Наименование КАК Порядок, | 0 КАК Уровень, | Т.ЭтоГруппа |ПОМЕСТИТЬ Т0 |ИЗ | Справочник.Номенклатура КАК Т |ГДЕ | Т.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | И &УсловиеЭлементов |"); //Осипов - для 12 уровней отчета ВсегоУровней = 10; //от 0 до 11 - 12 уровней Для Инд = 1 По ВсегоУровней Цикл //2023-12-27 - важно тут ограничиваю строку до 1024, тогда нормально считает ТекТекст = "ВЫБРАТЬ | Т.Ссылка, | Т.Наименование, | ВЫРАЗИТЬ(ЕСТЬNULL(Т0.Порядок, """") + ""."" + Т.Наименование КАК Строка(1024)) КАК Порядок, | &Уровень1 КАК Уровень, | Т.ЭтоГруппа |ПОМЕСТИТЬ Т1 |ИЗ | Справочник.Номенклатура КАК Т | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т0 КАК Т0 | ПО (Т0.Ссылка = Т.Родитель) |ГДЕ | &УсловиеЭлементов"; ИндСтрокой = XMLСтрока(Инд); ПредИндСтрокой = XMLСтрока(Инд-1); ТекТекст = СтрЗаменить(ТекТекст, "&Уровень1", ИндСтрокой); ТекТекст = СтрЗаменить(ТекТекст, "Т1", "Т" + ИндСтрокой); ТекТекст = СтрЗаменить(ТекТекст, "Т0", "Т" + ПредИндСтрокой); З.Текст = З.Текст + ";" + Символы.ПС + ТекТекст; КонецЦикла; //Осипов - для 12 уровней отчета Для Инд = 0 По ВсегоУровней Цикл ТекТекст = "ВЫБРАТЬ | Т.Ссылка КАК Номенклатура, | Т.Наименование, | ЕСТЬNULL(Т.Порядок, """") КАК Порядок, | Т.Уровень, | Т.ЭтоГруппа, | ЛОЖЬ КАК ЭтоИтого |ИЗ | Т0 КАК Т |ГДЕ | &УсловиеГруппы1"; ИндСтрокой = XMLСтрока(Инд); ПредИндСтрокой = XMLСтрока(Инд-1); ТекТекст = СтрЗаменить(ТекТекст, "&УсловиеГруппы1", "ИСТИНА"); ТекТекст = СтрЗаменить(ТекТекст, "Т0", "Т" + ИндСтрокой); З.Текст = З.Текст + ?(Инд = 0, ";", " ОБЪЕДИНИТЬ ВСЕ ") + Символы.ПС + ТекТекст; КонецЦикла; З.Текст = З.Текст + " ОБЪЕДИНИТЬ ВСЕ " + " |ВЫБРАТЬ | ""ИТОГО"", | ""ИТОГО"", | """", | 1, | ИСТИНА, | ИСТИНА |"; З.Текст = СтрЗаменить(З.Текст, "&УсловиеЭлементов", "НЕ Т.Ссылка В ИЕРАРХИИ(&ИсключаемаяГруппа) И НЕ ЕСТЬNULL(Т.Услуга, ложь)"); //Исключаем старую иерархию ИсключаемаяГруппа = Новый Массив(); //ИсключаемаяГруппа.Добавить(Справочники.Номенклатура.НайтиПоКоду("ДДД98524")); //Удаленные //ИсключаемаяГруппа.Добавить(Справочники.Номенклатура.НайтиПоКоду("98536909")); //Услуги З.УстановитьПараметр("ИсключаемаяГруппа", ИсключаемаяГруппа); ТЗ = З.Выполнить().Выгрузить(); ТЗ.Колонки.Добавить("ПорядокНовый", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(1024))); М = ТЗ.ВыгрузитьКолонку("Порядок"); ТЗ.ЗагрузитьКолонку(М, "ПорядокНовый"); ТЗ.Колонки.Удалить("Порядок"); ТЗ.Колонки.ПорядокНовый.Имя = "Порядок"; ТЗ.Сортировать("ЭтоГруппа, Порядок"); Возврат ТЗ; КонецФункции
Среда: 10.3.66.3 Объем: 0.5 час.
Свежие комментарии