Имя: Пароль:
1C
1С v8
Сортировка в печатной форме
0 ToyoCor
 
25.05.23
12:36
Добрый день! Есть печатная форма https://ibb.co/QF54p8c
Подскажите, пожалуйста, как сделать сортировку описания по возрастанию.

СформироватьПечатнуюФормуСчетНаОплату
Функция СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, МассивОбъектов, ПараметрыПечати) Экспорт
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СЧЕТНАОПЛАТУ";
    
    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
    
    КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
    ИспользованиеУпаковок = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
    
    Запрос = Новый Запрос(
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ЗаказКлиента.Ссылка КАК Ссылка,
        |    ЗаказКлиента.ГИГ_ЮрЛицо КАК Организация,
        |    ЗаказКлиента.Контрагент КАК Контрагент,
        |    ЗаказКлиента.Номер КАК Номер,
        |    ЗаказКлиента.Дата КАК Дата,
        |    ЗаказКлиента.БанковскийСчет КАК БанковскийСчет
        |ИЗ
        |    Документ.ЗаказКлиента КАК ЗаказКлиента
        |ГДЕ
        |    ЗаказКлиента.Ссылка В(&МассивОбъектов)
        |
        |УПОРЯДОЧИТЬ ПО
        |    Ссылка
        |АВТОУПОРЯДОЧИВАНИЕ
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
        |    НоменклатураДополнительныеРеквизиты.Значение КАК МодельТовара
        |ПОМЕСТИТЬ ВТ_ДопРеквизитУпорядочивания
        |ИЗ
        |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
        |        ПО ЗаказКлиентаТовары.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка
        |ГДЕ
        |    НоменклатураДополнительныеРеквизиты.Свойство.Наименование = ""ТДТ_Модель товара""
        |    И ЗаказКлиентаТовары.Ссылка В(&МассивОбъектов)
        |
        |СГРУППИРОВАТЬ ПО
        |    ЗаказКлиентаТовары.Номенклатура,
        |    НоменклатураДополнительныеРеквизиты.Значение
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Товары.Ссылка КАК Ссылка,
        |    &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ПредставлениеЕдининицыИзмеренияУпаковки,
        |    ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
        |    Товары.КоличествоУпаковок КАК КоличествоУпаковок,
        |    Товары.Количество КАК Количество,
        |    Товары.Номенклатура.Код КАК Код,
        |    Товары.Номенклатура.Артикул КАК Артикул,
        |    Товары.Номенклатура.НаименованиеПолное КАК Номенклатура,
        |    Товары.Характеристика.НаименованиеПолное КАК Характеристика,
        |    ВЫБОР
        |        КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
        |            ТОГДА НЕОПРЕДЕЛЕНО
        |        ИНАЧЕ Товары.Упаковка.Наименование
        |    КОНЕЦ КАК Упаковка,
        |    Товары.Ссылка.Партнер КАК Партнер,
        |    Товары.Номенклатура.ГИГ_МодельОсновногоУстройства КАК МодельОсновногоУстройства,
        |    ВТ_ДопРеквизитУпорядочивания.МодельТовара КАК МодельТовара,
        |    Товары.Номенклатура КАК НоменклатураСсылка,
        |    Товары.Сумма КАК Сумма,
        |    Товары.Номенклатура.Родитель КАК ГруппаСписка,
        |    Товары.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
        |    ВЫБОР
        |        КОГДА &ОтображатьСкидки
        |            ТОГДА Товары.Цена
        |        ИНАЧЕ Товары.Сумма / Товары.КоличествоУпаковок
        |    КОНЕЦ КАК Цена
        |ИЗ
        |    Документ.ЗаказКлиента.Товары КАК Товары
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДопРеквизитУпорядочивания КАК ВТ_ДопРеквизитУпорядочивания
        |        ПО Товары.Номенклатура = ВТ_ДопРеквизитУпорядочивания.Номенклатура
        |ГДЕ
        |    Товары.Ссылка В(&МассивОбъектов)
        |    И Товары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
        |    И Товары.Отменено = ЛОЖЬ
        |
        |УПОРЯДОЧИТЬ ПО
        |    Ссылка,
        |    МодельОсновногоУстройства,
        |    МодельТовара,
        |    Номенклатура
        |ИТОГИ ПО
        |    Ссылка,
        |    МодельОсновногоУстройства");
    
        
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
            "Товары.Упаковка",
            "Товары.Номенклатура"));
            
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
            "Наименование",
            "Товары.Упаковка",
            "Товары.Номенклатура"));
    
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Запрос.УстановитьПараметр("ОтображатьСкидки", Ложь);
    
    ПакетЗапросов = Запрос.ВыполнитьПакет();
    ДанныеПечати = ПакетЗапросов[0].Выбрать();
    ВыборкаПоДокументам = ПакетЗапросов[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_ГИГ_Счет_пример");
    
    Пока ДанныеПечати.Следующий() Цикл
        
        Если НЕ ВыборкаПоДокументам.НайтиСледующий(Новый Структура("Ссылка", ДанныеПечати.Ссылка)) Тогда
            Продолжить;
        КонецЕсли;
        
        ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШапка");
        ОбластьМакетаШапкаТовары = Макет.ПолучитьОбласть("ОбластьШапкаТовары");
        ОбластьМакетаПовторятьПриПечати = Макет.ПолучитьОбласть("ОбластьШапкаТовары");
        ОбластьИтогиМакета = Макет.ПолучитьОбласть("ОбластьИтоги");
        
        ОбластьМакета.Параметры.ПредставлениеДаты = ДанныеПечати.Дата;
        ОбластьМакета.Параметры.ЗаголовокДокумента = "Предложение по стоимости профессионального оборудования";
        
        СведенияОПоставщике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата);
        
        Если ЗначениеЗаполнено(ДанныеПечати.БанковскийСчет) Тогда
            СтруктураСчета = Справочники.БанковскиеСчетаОрганизаций.ПолучитьРеквизитыБанковскогоСчетаОрганизации(ДанныеПечати.БанковскийСчет);
        Иначе
            СтруктураСчета = Справочники.БанковскиеСчетаОрганизаций.ПолучитьРеквизитыБанковскогоСчетаОрганизации(ДанныеПечати.Организация.ОсновнойБанковскийСчет);
        КонецЕсли;    
            
        ДанныеПродавца = "Продавец: "+СведенияОПоставщике.НаименованиеДляПечатныхФорм+
                                Символы.ПС  +
                                "Адрес: "   +СведенияОПоставщике.ЮридическийАдрес+
                                Символы.ПС  +
                                "ИНН"       +СведенияОПоставщике.ИНН+
                                Символы.ПС  +
                                "КПП"       +СведенияОПоставщике.КПП+
                                Символы.ПС  +
                                "Расчетный счет: " + СтруктураСчета.НомерСчета+
                                Символы.ПС         +
                                "Кор. счет: "      + СтруктураСчета.КоррСчет+
                                Символы.ПС         +
                                "Банк: "           + Строка(СтруктураСчета.Банк);
                                
            ОбластьМакета.Параметры.ДанныеПродавца = ДанныеПродавца;

            ТабличныйДокумент.Вывести(ОбластьМакета);
            ТабличныйДокумент.Вывести(ОбластьМакетаШапкаТовары);
            
            СтруктураДанныхИтогов = Новый Структура("Количество,Сумма", 0, 0);        
            СчетСтрок = 1;
            ВыборкаПоМодели = ВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаПоМодели.Следующий() Цикл
                ВыборкаПоТоварам = ВыборкаПоМодели.Выбрать();
                НомерСтроки = 1;
                Пока ВыборкаПоТоварам.Следующий() Цикл
                    
                     Область = Макет.ПолучитьОбласть("ОбластьСтрока");
                    Область.Параметры.Заполнить(ВыборкаПоТоварам);
                    
                    Попытка
                        УстановитьПривилегированныйРежим(Истина);
                        Изображение = РаботаСФайлами.ДвоичныеДанныеФайла(ВыборкаПоТоварам.НоменклатураСсылка.ФайлКартинки);
                        УстановитьПривилегированныйРежим(Ложь);
                    Исключение
                        Изображение = Неопределено;
                    КонецПопытки;
                    
                    
                    Если Изображение = Неопределено Тогда
                    Иначе
                        ОбластьКартинка = Область.Области.АдресКартинки;
                        ОбластьКартинка.Картинка = Новый Картинка(Изображение);
                    КонецЕсли;
                    
                    МассивВыводимыхОбластей = Новый Массив;
                    МассивВыводимыхОбластей.Добавить(Область);
                    МассивВыводимыхОбластей.Добавить(ОбластьИтогиМакета);
                    
                    Если НЕ ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, МассивВыводимыхОбластей) Тогда
                        ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                        ТабличныйДокумент.Вывести(ОбластьМакетаПовторятьПриПечати);
                    КонецЕсли;
                    
                    ТабличныйДокумент.Вывести(Область);

                    СтруктураДанныхИтогов.Количество = СтруктураДанныхИтогов.Количество +
                                                            ВыборкаПоТоварам.Количество;
                    СтруктураДанныхИтогов.Сумма      = СтруктураДанныхИтогов.Сумма +
                                                                ВыборкаПоТоварам.Сумма;
                    НомерСтроки = НомерСтроки + 1;
                КонецЦикла;
            КонецЦикла;
            
        ОбластьИтогиМакета.Параметры.Заполнить(СтруктураДанныхИтогов);
        ТабличныйДокумент.Вывести(ОбластьИтогиМакета);
        
        СписокОбъектов = Новый СписокЗначений;
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, СписокОбъектов, ДанныеПечати.Ссылка);
1 ToyoCor
 
25.05.23
12:33
Параметр в макете называется наименование полное
2 Волшебник
 
25.05.23
12:36
Не надо сортировать по описанию.
3 ToyoCor
 
25.05.23
12:38
(2) А как?) Попросили отсортировать по алфавитному порядку. Именно поле наименование полное. В нем находится описание.
4 Волшебник
 
25.05.23
12:40
(3) Сопротивляйтесь таким заданиям.
В крайнем случае, добавьте поле ПОДСТРОКА(поле, 1, 1000) и сортируйте по нему
AdBlock убивает бесплатный контент. 1Сергей