Отсортировать номенклатуру в первой таблице значений по второй

1. wallpaperredd 10.02.23 09:46 Сейчас в теме
Здравствуйте, подскажите пожалуйста, у меня есть две таблицы значений с разным количеством строк (еще есть массив). В 1 таблице значений есть много разных номенклатур с указанием характеристики и прочее, во второй таблице значений (и массиве) так же есть номенклатура. Можно ли как-то сделать сортировку чтобы в 1 таблице первым шли номенклатуры указанные во второй табличной части (или массиве).
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. wallpaperredd 10.02.23 09:52 Сейчас в теме
Чтобы после сортировки например было вот так. Можно ли так сделать обычной сортировкой например
Прикрепленные файлы:
8. DBV 10.02.23 12:36 Сейчас в теме
(2)
Выбрать
	Т1.*
Из
	Таблица1 Как Т1
		Левое Соединение Таблица2 Как Т2 // возможно надо предварительно сгруппировать
		По Т1.Номенклатура = Т2.Номенклатура
Упорядочить по
	Т2.Номенклатура,	// по ссылке
	Т1.Номенклатура
Показать
9. user1863362 10.02.23 12:44 Сейчас в теме
(8) И получится прямо противоположное исходному ТЗ, так как NULL при сортировке в начало вылезет. В mssql и файловой 100%, в postgresql - наоборот, сработает как надо.
10. DBV 10.02.23 12:49 Сейчас в теме
(9) Точно, не учел, тогда использовать ЕСТЬNULL(Т2.Номенклатура, пустаяссылка)...
хотя пустаяссылка скорей всего тоже вверх уйдет
11. user1863362 10.02.23 13:27 Сейчас в теме
(10)
использовать ЕСТЬNULL(Т2.Номенклатура, пустаяссылка)
Извращенцы... =)
По "Т2.Номенклатура ЕСТЬ NULL" сортировать надо. А второй колонкой потом - по чему хочешь.
15. spacecraft 10.02.23 14:53 Сейчас в теме
(2) можно так:
ТЗ1.Колонки.Добавить("Уровень",Новый ОписаниеТипов("Число"));

Уровень = ТЗ2.Количество();
Для Каждого СтрТЗ2 Из ТЗ2 Цикл
	НайденныеЗначения = ТЗ1.НайтиСтроки(Новый Структура("Номенклатура",СтрТЗ2.Номенклатура));
	Для Каждого СтрТЗ1 Из НайденныеЗначения Цикл
		СтрТЗ1.Уровень = Уровень;
		Уровень = Уровень - 1;
	КонецЦикла;
КонецЦикла;
ТЗ1.Сортировать("Уровень Убыв, Номенклатура");
ТЗ1.Колонки.Удалить("Уровень");
Показать
us; independ; +2 Ответить
16. spacecraft 10.02.23 15:33 Сейчас в теме
(15) дополнение.
Уровень = Уровень - 1; нужно вынести из вложенного цикла во внешний цикл.
3. user5300 1058 10.02.23 10:11 Сейчас в теме
Можно отсортировать обе таблицы сразу
4. wallpaperredd 10.02.23 11:19 Сейчас в теме
(3) что для этого нужно использовать? Свернуть, цикл или что-то еще
6. lmnlmn 69 10.02.23 11:26 Сейчас в теме
(4) Есть, как минимум, три варианта решения вашей задачи. Можно объединить таблицы с подсчетом числа вхождений и свернуть. Можно добавить признак вхождения номенклатуры в таблицу и без свертки отсортировать, можно написать свою программную сортировку. Выбирайте.
karamazoff; +1 Ответить
5. user5300 1058 10.02.23 11:21 Сейчас в теме
Таблица1.Сортировать("Номенклатура");

Таблица2.Сортировать("Номенклатура");
7. wallpaperredd 10.02.23 11:28 Сейчас в теме
(5) но вы сортируете просто как колонку же. А мне нужно чтобы в 1 таблице среди всех остальных первой шла номенклатура из второй таблицы
12. karamazoff 118 10.02.23 14:03 Сейчас в теме
(7)у вас 2 тз и массив, это уже три, можно сделать как угодно, прогоните их в цикле, сделайте четвертую тз в том формате, какой вам нужен, ок?
13. wallpaperredd 10.02.23 14:05 Сейчас в теме
(12) У меня есть одна, которую нужно сгруппировать. А порядок как нужно чтобы было есть и в ТЗ, и в массиве
14. karamazoff 118 10.02.23 14:08 Сейчас в теме
(13)ну дык, я же написал - переформируйте вашу таблицу по результату других, как вам надо
Оставьте свое сообщение

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