По теме из базы знаний
- Расчет итогов по группам справочника в прямом запросе.
- Еще один вариант свёртки справочников
- Сортировка табличной части строк документа в соответствии с иерархией справочника Номенклатура
- Поиск ссылок на документы из любого текста с возможностью групповой обработки найденных документов
- Пользовательская сортировка справочников 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) кстати, да
Сегодня применял ТЗ, только не для сортировки а для свертки запроса по наименованию
Вот кусок кода. Не ругайтесь, это был "чужой" отчет и нужно было сделать еще вчера
Сегодня применял ТЗ, только не для сортировки а для свертки запроса по наименованию
Вот кусок кода. Не ругайтесь, это был "чужой" отчет и нужно было сделать еще вчера
тзСырье=СоздатьОбъект("ТаблицаЗначений");
тзСырье.НоваяКолонка("Сырье","Справочник.СырьеБумажное");
тзСырье.НоваяКолонка("Наименование","Строка",25);
тзСырье.НоваяКолонка("Формат","Число",10,0);
тзСырье.НоваяКолонка("СН","Число",10,0);
тзСырье.НоваяКолонка("СН_К","Число",10,0);
тзСырье.НоваяКолонка("КО","Число",10,0);
тзСырье.НоваяКолонка("КО_К","Число",10,0);
тзСырье.НоваяКолонка("ДО","Число",10,0);
тзСырье.НоваяКолонка("ДО_К","Число",10,0);
тзСырье.НоваяКолонка("СК","Число",10,0);
тзСырье.НоваяКолонка("СК_К","Число",10,0);
Пока Запрос.Группировка("Сырье") = 1 Цикл
Если Запрос.Сырье.ЭтоГруппа() = 1 Тогда
тзСырье.Свернуть("Наименование,Формат","СН,СН_К,КО,КО_К,ДО,ДО_К,СК,СК_К");
тзСырье.Сортировать("Наименование,Формат");
тзСырье.ВыбратьСтроки();
Пока тзСырье.ПолучитьСтроку()=1 Цикл
ПечФормат = тзСырье.Формат;
Таб.ВывестиСекцию("СырьеТЗ");
КонецЦикла;
тзСырье.УдалитьСтроки();
тзСырье.НоваяКолонка("Сырье","Справочник.СырьеБумажное");
Таб.ВывестиСекцию("Группа");
Продолжить;
КонецЕсли;
Если грПоФорматам = 1 Тогда
Пока Запрос.Группировка("Формат") = 1 Цикл
тзСырье.НоваяСтрока();
тзСырье.Сырье = Запрос.Сырье;
тзСырье.Наименование = Запрос.Сырье.Наименование;
тзСырье.Формат = Запрос.Формат;
тзСырье.СН = Запрос.СН;
тзСырье.СН_К = Запрос.СН_К;
тзСырье.КО = Запрос.КО;
тзСырье.КО_К = Запрос.КО_К;
тзСырье.ДО = Запрос.ДО;
тзСырье.ДО_К = Запрос.ДО_К;
тзСырье.СК = Запрос.СК;
тзСырье.СК_К = Запрос.СК_К;
КонецЦикла;
Иначе
тзСырье.НоваяСтрока();
тзСырье.Сырье = Запрос.Сырье;
тзСырье.Наименование = Запрос.Сырье.Наименование;
тзСырье.СН = Запрос.СН;
тзСырье.СН_К = Запрос.СН_К;
тзСырье.КО = Запрос.КО;
тзСырье.КО_К = Запрос.КО_К;
тзСырье.ДО = Запрос.ДО;
тзСырье.ДО_К = Запрос.ДО_К;
тзСырье.СК = Запрос.СК;
тзСырье.СК_К = Запрос.СК_К;
КонецЕсли;
КонецЦикла;
тзСырье.Свернуть("Наименование,Формат","СН,СН_К,КО,КО_К,ДО,ДО_К,СК,СК_К");
тзСырье.Сортировать("Наименование,Формат");
тзСырье.ВыбратьСтроки();
Пока тзСырье.ПолучитьСтроку()=1 Цикл
ПечФормат = тзСырье.Формат;
Таб.ВывестиСекцию("СырьеТЗ");
КонецЦикла;
Показать
(11) Что-то не догоняю. В приведенном коде если я правильно считал, сначала Выводится группа, затем элементы группы собираются в тз, затем сворачиваются по наименованию или формату и перед след-й группой выводятся на печать. Но, во первых, почему в запросе нельзя было указать переменную НаименованиеСырья = Справочник.Сырье.Наименование, а затем Группировка НаименованиеСырья, а во вторых это не решает проблему сортировки групп внутри своего родителя.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот