|
Сортировка строк в печатной форме документа по выбору пользователя | ☑ | ||
---|---|---|---|---|
0
10vital08
17.02.17
✎
14:54
|
Добрый день!
Ситуация такая: я хочу организовать сортировку строк в печатной форме документа по выбору пользователя, а именно по: наименованию номенклатуры, длине наименования номенклатуры. Подскажите пожалуйста, что для этого нужно сделать? Вот исходный модуль печати: Процедура Печать(ТабДок, Ссылка) Экспорт //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать) Макет = Документы.Реализация_товаров.ПолучитьМакет("Печать"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Реализация_товаров.Дата, | Реализация_товаров.Контрагент, | Реализация_товаров.Номер, | Реализация_товаров.Товары.( | НомерСтроки, | Номенклатура, | Количество, | Цена, | Сумма | ) |ИЗ | Документ.Реализация_товаров КАК Реализация_товаров |ГДЕ | Реализация_товаров.Ссылка В (&Ссылка)"; Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка"); ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка"); ОбластьТовары = Макет.ПолучитьОбласть("Товары"); ТабДок.Очистить(); ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДок.Вывести(ОбластьЗаголовок); Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьТоварыШапка); ВыборкаТовары = Выборка.Товары.Выбрать(); Пока ВыборкаТовары.Следующий() Цикл ОбластьТовары.Параметры.Заполнить(ВыборкаТовары); ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень()); КонецЦикла; ВставлятьРазделительСтраниц = Истина; КонецЦикла; //}} КонецПроцедуры |
|||
1
Любопытная
17.02.17
✎
14:58
|
А как пользователь будет указывать, какую он хочет сортировку?
|
|||
2
HardBall
17.02.17
✎
14:59
|
Пятничный слет студентов.
|
|||
3
10vital08
17.02.17
✎
15:00
|
(1) В задании четко не прописано. Поэтому, буду рад предложению решения от вас)
|
|||
4
Любопытная
17.02.17
✎
15:04
|
(3) Предполагаю, что ему надо какую-то форму показать, чтобы он выбрал. Ну хотя бы вопрос задать. Типа "Будем сортировать по длине наименования?" Если нет, то сортируем по наименованию.
Следующий квест - как вы будете сортировать по длине? Это надо всю таблицу прошерстить, длину каждого наименования посчитать, а потом уже сортировать... фигня какая |
|||
5
HardBall
17.02.17
✎
15:05
|
Выгружать запрос в ТЗ.
Если сортировка по наименованию то сортировать ТЗ Если сортировка по длине то добавить колонку в ТЗ с длиной перебирать ТЗ считать длину наименования, сортировать. |
|||
6
10vital08
17.02.17
✎
20:25
|
Сделал по наименованию:
Сортировка = Документы.Реализация_товаров.НайтиПоРеквизиту("СортировкаПоНаименованиюНоменклатуры", 1); Макет = Документы.Реализация_товаров.ПолучитьМакет("Печать"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Реализация_товаров.Дата, | Реализация_товаров.Контрагент, | Реализация_товаров.Номер, | Реализация_товаров.Товары.( | НомерСтроки, | Номенклатура КАК Номенклатура, | Количество, | Цена, | Сумма | ) |ИЗ | Документ.Реализация_товаров КАК Реализация_товаров |ГДЕ | Реализация_товаров.Ссылка В(&Ссылка) |УПОРЯДОЧИТЬ ПО | Номенклатура УБЫВ"; Если ЗначениеЗаполнено(Сортировка) тогда Запрос.Текст = СтрЗаменить(Запрос.Текст,"УБЫВ","ВОЗР"); КонецЕсли; А с длиной наименования как быть? |
|||
7
h-sp
17.02.17
✎
21:57
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура.ДлинаНаименования УБЫВ"; |
|||
8
10vital08
17.02.17
✎
22:05
|
(7) Не работает так, ошибка
|
|||
9
10vital08
17.02.17
✎
22:09
|
(7) Пробовал так:
Если ЗначениеЗаполнено(СортировкаПоДлине) тогда Запрос.Текст = СтрЗаменить(Запрос.Текст,"Номенклатура УБЫВ","Номенклатура.ДлинаНаименования УБЫВ"); КонецЕсли; Ошибка на ДлинаНаименования |
|||
10
olegves
17.02.17
✎
22:54
|
(0) сделай разные варианты, каждый со своей туалетовкой, тьфу, СОРТИРовкой
|
|||
11
10vital08
18.02.17
✎
14:23
|
(5) Что то типа такого?
НовыйЗапрос = Новый Запрос; НовыйЗапрос.Текст = "ВЫБРАТЬ | Реализация_товаров.Дата, | Реализация_товаров.Контрагент, | Реализация_товаров.Номер, | Реализация_товаров.Товары.( | НомерСтроки, | Номенклатура КАК Номенклатура, | Количество, | Цена, | Сумма | ) |ИЗ | Документ.Реализация_товаров КАК Реализация_товаров"; ТЗ = НовыйЗапрос.Выполнить().Выгрузить(); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("КоличествоСимволов"); ТЗ.Колонки.Добавить("Номенклатура"); ВыборкаТовары = Справочники.Номенклатура.Выбрать(); ОбластьТовары = Документы.Реализация_товаров.Выбрать(); Пока ВыборкаТовары.Следующий() Цикл НоваяСтрока = ТЗ.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока,ВыборкаТовары); КолСимволов = СтрДлина(ВыборкаТовары.Наименование); НоваяСтрока.КоличествоСимволов = КолСимволов; КонецЦикла; ТЗ.Сортировать("КоличествоСимволов Возр"); для каждого СтрокаТаб из ТЗ Цикл КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |