Имя: Пароль:
1C
1С v8
Сортировка по полю наименование
0 lezhek
 
02.10.14
10:50
Подскажите пожалуйста где надо дописать сортировку по полю наименование
Функция ПечатьИНВ3(БезФактическихДанных = Ложь)

    ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
        ТоварКод = "Артикул";
    Иначе
        ТоварКод = "Код";
    КонецЕсли;

    Если СсылкаНаОбъект.Склад.ВидСклада = Перечисления.ВидыСкладов.НТТ Тогда
        ВалютаПересчета = мВалютаРегламентированногоУчета;
    Иначе
        ВалютаПересчета = Константы.ВалютаУправленческогоУчета.Получить();
    КонецЕсли;

    ВалютаПечати = мВалютаРегламентированногоУчета;
    Параметры    = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаПересчета, СсылкаНаОбъект.Дата);
    Запрос       = Новый Запрос;

    Запрос.УстановитьПараметр("ТекущийДокумент",      СсылкаНаОбъект.Ссылка);
    Запрос.УстановитьПараметр("Курс",                 1);
    Запрос.УстановитьПараметр("Кратность",            1);
    Запрос.УстановитьПараметр("ВидСкладаНТТ",         Перечисления.ВидыСкладов.НТТ);
    Запрос.УстановитьПараметр("БезФактическихДанных", БезФактическихДанных);

    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номер КАК НомерДокумента,
    |    Дата  КАК ДатаДокумента,
    |    Дата  КАК ДатаСнятияОстатков,
    |    Организация,
    |    Склад.Представление КАК ПредставлениеСклада,
    |    Товары.(
    |        НомерСтроки                     КАК Номер,
    |        Номенклатура,
    |        Номенклатура.НаименованиеПолное КАК ТоварНаименование,
    |        Номенклатура." + ТоварКод + "   КАК ТоварКод,
    |        ЕдиницаИзмерения.Представление  КАК ЕдиницаИзмеренияНаименование,
    |        ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК ЕдиницаИзмеренияКодПоОКЕИ,
    |        ВЫБОР
    |            КОГДА &БезФактическихДанных ТОГДА 0
    |            ИНАЧЕ Количество
    |        КОНЕЦ КАК ФактКоличество,
    |        КоличествоУчет КАК БухКоличество,
    |        ВЫБОР
    |            КОГДА Склад.ВидСклада = &ВидСкладаНТТ ТОГДА ЦенаВРознице
    |            ИНАЧЕ Цена * &Курс / &Кратность
    |        КОНЕЦ КАК Цена,
    |        ВЫБОР
    |            КОГДА &БезФактическихДанных ТОГДА 0
    |            ИНАЧЕ ВЫБОР КОГДА Склад.ВидСклада = &ВидСкладаНТТ ТОГДА Количество * ЦенаВРознице ИНАЧЕ Сумма * &Курс / &Кратность КОНЕЦ
    |        КОНЕЦ КАК ФактСумма,
    |        ВЫБОР
    |            КОГДА Склад.ВидСклада = &ВидСкладаНТТ ТОГДА КоличествоУчет *ЦенаВРознице
    |            ИНАЧЕ СуммаУчет * &Курс / &Кратность
    |        КОНЕЦ КАК БухСумма,
    |        ХарактеристикаНоменклатуры КАК Характеристика,
    |        СерияНоменклатуры КАК Серия
    |    )
    |ИЗ
    |    Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
    |
    |ГДЕ
    |    ИнвентаризацияТоваровНаСкладе.Ссылка = &ТекущийДокумент";

    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    ВыборкаСтрокТовары = Шапка.Товары.Выбрать();

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИнвентаризацияТоваровНаСкладе_ИНВ3";
    Макет       = ПолучитьМакет("ИНВ3");

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

    СтрокНаСтранице = 19;
    СтрокШапки      = 5;
    СтрокПодвала    = 5;
    НомерСтраницы   = 2;
    Ном             = 0;

    ИтогФактКоличество = 0;
    ИтогФактСумма      = 0;
    ИтогБухКоличество  = 0;
    ИтогБухСумма       = 0;

    КолвоСтрокПоСтранице = 0;
    КолвоПостранице      = 0;
    СуммаЛиста           = 0;
    ИтогоКолво           = 0;
    ИтогоСумма           = 0;

    // Выводим заголовок таблицы
    ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
    ТабДокумент.Вывести(ЗаголовокТаблицы);

    КоличествоСтрок = ВыборкаСтрокТовары.Количество();

    Если КоличествоСтрок = 1 Тогда
        ПереноситьПоследнююСтроку = 0;
    Иначе
        ЦелыхСтраницСПодвалом     = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице);
        ЦелыхСтраницБезПодвала    = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице);
        ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
    КонецЕсли;

    // Выводим многострочную часть докмента
    ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
    ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    Пока ВыборкаСтрокТовары.Следующий() Цикл

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

        Ном = Ном + 1;
        //Начинаем новую страницу, если предыдущая строка была последней на странице
        //или пора переносить последнюю строку на последнюю страницу с подвалом.
        ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице;

        Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
         или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок)) Тогда

            ОбластьИтоговПоСтранице                               = Макет.ПолучитьОбласть("ПодвалСтраницы");
            ОбластьИтоговПоСтранице.Параметры.ИтогоФактКоличество = ИтогФактКоличество;
            ОбластьИтоговПоСтранице.Параметры.ИтогоФактСумма      = ИтогФактСумма;
            ОбластьИтоговПоСтранице.Параметры.ИтогоБухКоличество  = ИтогБухКоличество;
            ОбластьИтоговПоСтранице.Параметры.ИтогоБухСумма       = ИтогБухСумма;

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

            ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
            ТабДокумент.Вывести(ЗаголовокТаблицы);

            ИтогФактКоличество = 0;
            ИтогФактСумма      = 0;
            ИтогБухКоличество  = 0;
            ИтогБухСумма       = 0;

            КолвоСтрокПоСтранице = 0;
            КолвоПостранице      = 0;
            СуммаЛиста           = 0;

        КонецЕсли;

        ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
        
        ОбластьМакета.Параметры.цена = УправлениеРозничнойТорговлей.ПолучитьПродажнуюЦену(СсылкаНаОбъект.Дата,ВыборкаСтрокТовары.Номенклатура,ВыборкаСтрокТовары.Характеристика,СсылкаНаОбъект.Склад,Неопределено);
        
        ФактСумма=   ОбластьМакета.Параметры.цена * ВыборкаСтрокТовары.ФактКоличество;
        
        
        //Функция ПолучитьПродажнуюЦену(ДатаЦен, Номенклатура, ХарактеристикаНоменклатуры, Склад,
        //                      УсловиеПродаж = Неопределено) Экспорт

        
        
        ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары);
        ОбластьМакета.Параметры.Номер             = Ном;

        
        ИтогФактКоличество = ИтогФактКоличество + ВыборкаСтрокТовары.ФактКоличество;
    //    ИтогФактСумма      = ИтогФактСумма      + ВыборкаСтрокТовары.ФактСумма;
        ИтогФактСумма      = ИтогФактСумма      + ФактСумма;
        ОбластьМакета.Параметры.ФактСумма = ФактСумма;

        
        ИтогБухКоличество  = ИтогБухКоличество  + ВыборкаСтрокТовары.БухКоличество;
    //    ИтогБухСумма       = ИтогБухСумма       + ВыборкаСтрокТовары.БухСумма;
    
        БухСумма           = ОбластьМакета.Параметры.цена * ВыборкаСтрокТовары.БухКоличество;
        ОбластьМакета.Параметры.БухСумма = БухСумма;
        
        
        ИтогБухСумма       = ИтогБухСумма       + БухСумма;

    
        ИтогоКолво         = ИтогоКолво         + ВыборкаСтрокТовары.ФактКоличество;
        //огоСумма         = ИтогоСумма         + ВыборкаСтрокТовары.ФактСумма;
        ИтогоСумма         = ИтогоСумма         + ФактСумма;
        

        КолвоСтрокПоСтранице = КолвоСтрокПоСтранице + 1;
        КолвоПостранице      = КолвоПостранице      + ВыборкаСтрокТовары.ФактКоличество;
        СуммаЛиста           = СуммаЛиста           + ФактСумма;

        
        ТабДокумент.Вывести(ОбластьМакета);

    КонецЦикла;

    // Выводим итоги по последней странице
    ОбластьИтоговПоСтранице = Макет.ПолучитьОбласть("ПодвалСтраницы");
    ОбластьИтоговПоСтранице.Параметры.ИтогоФактКоличество  = ИтогФактКоличество;
    ОбластьИтоговПоСтранице.Параметры.ИтогоФактСумма       = ИтогФактСумма;
    ОбластьИтоговПоСтранице.Параметры.ИтогоБухКоличество   = ИтогБухКоличество;
    ОбластьИтоговПоСтранице.Параметры.ИтогоБухСумма        = ИтогБухСумма;
    ОбластьИтоговПоСтранице.Параметры.КоличествоПорядковыхНомеровНаСтраницеПрописью = ЧислоПрописью(КолвоСтрокПоСтранице, ,",,,,,,,,0");
    Если НЕ БезФактическихДанных Тогда
        ОбластьИтоговПоСтранице.Параметры.ОбщееКоличествоЕдиницФактическиНаСтраницеПрописью = ФормированиеПечатныхФорм.КоличествоПрописью(КолвоПостранице);
        ОбластьИтоговПоСтранице.Параметры.СуммаФактическиНаСтраницеПрописью                 = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаЛиста, ВалютаПечати);
    КонецЕсли;
    ТабДокумент.Вывести(ОбластьИтоговПоСтранице);

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

    // Зададим параметры макета
    ТабДокумент.ПолеСверху = 0;
    ТабДокумент.ПолеСлева  = 0;
    ТабДокумент.ПолеСнизу  = 0;
    ТабДокумент.ПолеСправа = 0;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

    Возврат ТабДокумент;

КонецФункции
1 Wobland
 
02.10.14
10:52
чего это сразу надо?
2 Escander
 
02.10.14
10:56
в запросе не пробовали?
3 salvator
 
02.10.14
10:57
Запрос перепиши. Выбирай данные из табличной части. Там же и сортировку свою сделаешь заодно.
4 lezhek
 
02.10.14
11:41
Я бы с радостью дописал, но я не умею. вот и обратился к вам.
5 salvator
 
02.10.14
11:46
(4)
Замени свой запрос на такой (остальные поля по аналогии выбирай)

ВЫБРАТЬ
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Номер КАК НомерДокумента,
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата  КАК ДатаДокумента,
    ИнвентаризацияТоваровНаСкладеТовары.НомерСтроки КАК Номер,
    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура КАК Номенклатура
ИЗ
    Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары
ГДЕ
    ИнвентаризацияТоваровНаСкладеТовары= &ТекущийДокумент

затем в конструкторе запросов на закладке "Порядок" указывай сортировку.
6 lezhek
 
02.10.14
11:48
Спасибо большое! буду пробовать.
7 salvator
 
02.10.14
11:57
тьфу,
замени на
ГДЕ
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка = &ТекущийДокумент
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс