Отбор строк с одинаковыми реквизитами в запросе
По теме из базы знаний
- Быстрый поиск дублей с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах 8.1-8.3 (УТ 10.3, БП 2, ЗУП 2.5, КА 1.1, УТ 11, БП 3, УНФ 1.6/3.0, КА 2, ЗУП 3 и т.д.)
- Как сделать запрос на изменение данных
- Об общих реквизитах
- Строковые отборы в 1С
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(5) Ну в лоб тогда:
ТабДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Данные.Модель КАК Модель,
| Данные.Ширина КАК Ширина,
| Данные.Длина КАК Длина
|ИЗ
| ВтДанные КАК Данные
|
|ИТОГИ ПО
| Длина, Ширина";
Результат = Запрос.Выполнить();
// Подсчет количества колонок в таблице без учета показателей длины и ширины.
МаксКоличествоМоделейВСтроке = 0;
ВыборкаПоДлине = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоДлине.Следующий() Цикл
ВыборкаПоШирине = ВыборкаПоДлине.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоШирине.Следующий() Цикл
ВыборкаМоделей = ВыборкаПоШирине.Выбрать();
КоличествоМоделейВСтроке = ВыборкаМоделей.Количество();
Если МаксКоличествоМоделейВСтроке < КоличествоМоделейВСтроке Тогда
МаксКоличествоМоделейВСтроке = КоличествоМоделейВСтроке;
КонецЕсли;
КонецЦикла;
КонецЦикла;
// Вывод шапки таблицы.
НомерСтроки = 1;
НомерКолонки = 0;
Пока НомерКолонки < МаксКоличествоМоделейВСтроке Цикл
НомерКолонки = НомерКолонки + 1;
ОбластьШапки = ТабДокумент.Область(НомерСтроки, НомерКолонки);
ОбластьШапки.Текст = СтрШаблон(НСтр("ru = 'Модель %1'"), НомерКолонки);
КонецЦикла;
ОбластьШапки = ТабДокумент.Область(НомерСтроки, НомерКолонки + 1);
ОбластьШапки.Текст = НСтр("ru = 'Длина'");
ОбластьШапки = ТабДокумент.Область(НомерСтроки, НомерКолонки + 2);
ОбластьШапки.Текст = НСтр("ru = 'Ширина'");
// Вывод строк таблицы.
ВыборкаПоДлине.Сбросить();
Пока ВыборкаПоДлине.Следующий() Цикл
ВыборкаПоШирине = ВыборкаПоДлине.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоШирине.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
НомерКолонки = 0;
ВыборкаМоделей = ВыборкаПоШирине.Выбрать();
Пока ВыборкаМоделей.Следующий() Цикл
НомерКолонки = НомерКолонки + 1;
ОбластьСтроки = ТабДокумент.Область(НомерСтроки, НомерКолонки);
ОбластьСтроки.Текст = ВыборкаМоделей.Модель;
КонецЦикла;
НомерКолонки = МаксКоличествоМоделейВСтроке;
ОбластьСтроки = ТабДокумент.Область(НомерСтроки, НомерКолонки + 1);
ОбластьСтроки.Текст = ВыборкаПоДлине.Длина;
ОбластьСтроки = ТабДокумент.Область(НомерСтроки, НомерКолонки + 2);
ОбластьСтроки.Текст = ВыборкаПоШирине.Ширина;
КонецЦикла;
КонецЦикла;
Возврат ТабДокумент;
Показать
(6) Спасибо, но задание полностью нужно было выполнить в запросе. Задачу я решил, но в данных задачи моделей с одинаковыми длиной и шириной не более двух. Какой будет алгоритм если моделей будет больше решение не искал. Хотя решение было бы интересно посмотреть.
(7)
моделей с одинаковыми длиной и шириной не более двух
Это же ключевое условие, не находите? :-) Надо было обязательно написать его в посте, форумчане решение подсказали бы моментально.
Какой будет алгоритм если моделей будет больше решение не искал. Хотя решение было бы интересно посмотреть.
Полагаю, его нет.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)