[РЕШЕНО] Изменить порядок номенклатуры в печатной форме

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Vanichckin, 4 апр 2014.

  1. TopicStarter Overlay
    Vanichckin
    Offline

    Vanichckin

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

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Уберите упорядочивание.
  3. TopicStarter Overlay
    Vanichckin
    Offline

    Vanichckin

    Регистрация:
    4 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Пробовал,но он все равно выводит строки не так,как в документе.И не по алфавиту их сортирует,а как-то иначе.
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    пффф, так вы данные из регистра тянете. Если будете тянуть из табличной части - будет нормально (без упорядочивания)
  5. TopicStarter Overlay
    Vanichckin
    Offline

    Vanichckin

    Регистрация:
    4 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Вот я и хотел у вас поинтересоваться,как составить запрос?Потому что две переменные "ТекстЗапросаКоличество" и "ТекстЗапросаСуммаПродажная" берут данные из регистра,и они должны и дальше тянуть их оттуда.Никак не соображу как правильно составить запрос.Не могли бы вы помочь?
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    ну тогда еще номер строки тяните, по идее он может совпадать со строкой в ТЧ, но не всегда. Странное у вас желание....
  7. TopicStarter Overlay
    Vanichckin
    Offline

    Vanichckin

    Регистрация:
    4 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Желание не у меня,а у клиента.Предлагал просто по алфавиту упорядочивать строки,но необходимо именно так.А как можно тянуть номер строки?Просто никогда этим не занимался,недавно только знаком с разработкой 1С.
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Если не знаете - либо читайте книги, либо найдите спеца, за деньги вам быстро сделают. Номер строки берется так же как, например, склад или номенклатура.
  9. TopicStarter Overlay
    Vanichckin
    Offline

    Vanichckin

    Регистрация:
    4 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое за подсказку по поводу номера строки.Все получилось.

Поделиться этой страницей