PDA

Просмотр полной версии : Сортировка строк в печатной форме документа по выбору пользователя



10vital08
17.02.2017, 15:11
Добрый день!
Ситуация такая:
я хочу организовать сортировку строк в печатной форме документа по выбору пользователя, а именно по: наименованию номенклатуры, длине наименования номенклатуры.
Подскажите пожалуйста, что для этого нужно сделать?

Вот исходный модуль печати:
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печат� �)

Макет = Документы.Реализация_товар ов.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Реализация_товаров.Дата,
| Реализация_товаров.Контраг ент,
| Реализация_товаров.Номер,
| Реализация_товаров.Товары.(
| НомерСтроки,
| Номенклатура,
| Количество,
| Цена,
| Сумма
| )
|ИЗ
| Документ.Реализация_товаро в КАК Реализация_товаров
|ГДЕ
| Реализация_товаров.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать() ;

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
ТабДок.Очистить();

ВставлятьРазделительСтран иц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтран иц Тогда
ТабДок.ВывестиГоризонталь� �ыйРазделительСтраниц();
КонецЕсли;

ТабДок.Вывести(ОбластьЗаго ловок);

Шапка.Параметры.Заполнить(� �ыборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());

ТабДок.Вывести(ОбластьТова рыШапка);
ВыборкаТовары = Выборка.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОбластьТовары.Параметры.За полнить(ВыборкаТовары);
ТабДок.Вывести(ОбластьТова ры, ВыборкаТовары.Уровень());
КонецЦикла;

ВставлятьРазделительСтран иц = Истина;
КонецЦикла;
//}}

КонецПроцедуры

avm3110
17.02.2017, 15:22
Добрый день!
Ситуация такая:
я хочу организовать сортировку строк в печатной форме документа по выбору пользователя, а именно по: наименованию номенклатуры, длине наименования номенклатуры.

(задумчиво) а по "длине наименования номенклатуры" - это что за изврат? Никогда не встречал такого :confused:

Ну а так - переходи на СКД и там для пользователя будет уйму плюшек и бантиков, которые тот сам сможет прикручивать без привлечения программистов.


А тут, для "нормальных сортировок", хорошо бы вначале сделать нормальный запрос. Затем в зависимости от "хотелок пользователя" (установленных опций) просто модифицируется программно текст запроса (вставляется секция "Сортировать ПО" с указанием по каким полям сортировать.

10vital08
17.02.2017, 15:59
(задумчиво) а по "длине наименования номенклатуры" - это что за изврат? Никогда не встречал такого :confused:.
у меня задание такое, нужно сделать такую сортировку

alexandr_ll
18.02.2017, 07:57
у меня задание такое, нужно сделать такую сортировку

ВыборкаТовары - есть таблица значений, сортируй ее как хочешь. При желании добавить колонки, например длина.

10vital08
18.02.2017, 14:19
ВыборкаТовары - есть таблица значений, сортируй ее как хочешь. При желании добавить колонки, например длина.

Что то типа такого?

НовыйЗапрос = Новый Запрос;
НовыйЗапрос.Текст =
"ВЫБРАТЬ
| Реализация_товаров.Дата,
| Реализация_товаров.Контраг ент,
| Реализация_товаров.Номер,
| Реализация_товаров.Товары.(
| НомерСтроки,
| Номенклатура КАК Номенклатура,
| Количество,
| Цена,
| Сумма
| )
|ИЗ
| Документ.Реализация_товаро в КАК Реализация_товаров";
ТЗ = НовыйЗапрос.Выполнить().Выг рузить();

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("КоличествоСимволов");
ТЗ.Колонки.Добавить("Номенклатура");
ВыборкаТовары = Справочники.Номенклатура.В ыбрать();
ОбластьТовары = Документы.Реализация_товар ов.Выбрать();

Пока ВыборкаТовары.Следующий() Цикл
НоваяСтрока = ТЗ.Добавить();
ЗаполнитьЗначенияСвойств(� �оваяСтрока,ВыборкаТовары);
КолСимволов = СтрДлина(ВыборкаТовары.Наи менование);
НоваяСтрока.КоличествоСим� �олов = КолСимволов;
КонецЦикла;
ТЗ.Сортировать("КоличествоСимволов Возр");
для каждого СтрокаТаб из ТЗ Цикл

КонецЦикла;

avm3110
18.02.2017, 14:34
Что то типа такого?

(задумчиво) а смысл в изврате до такой степени? вначале делать запрос "без сортировки", затем результат запроса перегонять в цикле в ТЗ и затем сортировать ТЗИИ

10vital08
18.02.2017, 14:47
Я пока не особо шарю в этом(новичок). Подскажите, как правильно, пожалуйста

avm3110
18.02.2017, 15:38
Правильно - перейти на СКД (систему компоновки данных), но не похоже, чтобы вы это смогли сделать сами. А отдать эту задачу более-менее нормальному 1С-нику - нельзя?

Тут нужно менять как макет, так и модуль печатной формы документа. В двух словах не опишешь

10vital08
18.02.2017, 17:16
Мне дали это задание на ваканаксию стажера

10vital08
18.02.2017, 17:17
Вакансию

avm3110
18.02.2017, 18:13
Ясно, но либо у конторы завышенные ожидания к стажеру, либо у тебя явный ноль пока в 1ске.


организовать сортировку строк в печатной форме документа по выбору пользователя, а именно по: наименованию номенклатуры, длине наименования номенклатуры.
----------------------------------------------
1.Нужно организовать диалог с пользователем, чтобы он указал тип сортировки
2. нужно переработать запрос, чтобы его можно было бы менять по данным пользователя

Собственно говоря - все, если в теме, работы на 10 минут с перекуром в конфигураторе (через форум много траха и не полная информация).