A
A
Alex2019-03-07 00:07:11
1C
Alex, 2019-03-07 00:07:11

How to arrange the lines in the printed form according to the user's choice?

Dear experienced 1s-nicknames, please help. I just started to master 1s and the query language. I'm trying to solve the following problem: the lines in the printed form of the document should be ordered according to the user's choice:
a) by the length of the product name,
b) by the product name,
c) by price.
Manager module listing

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

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

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

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

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

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

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

Answer the question

In order to leave comments, you need to log in

2 answer(s)
D
Dmitry Kinash, 2019-03-07
Gutter

1) On the form, place the "Switch Field" with your sorting options
2) In your query text, instead of "Invoice.Nomenclature.Number of DESC" write something like "#SortMode"
3) Do a little lower, depending on the sorting mode selected by the user , replacing your label in the text with a real field with sort direction. Type:

Если ВариантСортировки = 0 Тогда
  СтрЗаменить(Запрос.Текст, "#РежимСортировки", "РасходнаяНакладная.Номенклатура.Количество УБЫВ");
ИначеЕсли ВариантСортировки = 1 Тогда
  СтрЗаменить(Запрос.Текст, "#РежимСортировки", "РасходнаяНакладная.Номенклатура.Количество ВОЗР");
КонецЕсли;

A
Alexey Bespalov, 2019-03-07
@FreeArcher

It is necessary to implement the choice of the sorting method itself. This is to execute a command and, before starting the formation of a printed form, show a dialog with a choice of sorting option. Well, or somewhere on the form, place the props with the sorting option and pass it to the print function. Well, then change the request depending on the selected option.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question