8.х Номер пп

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

  1. TopicStarter Overlay
    Timm83
    Offline

    Timm83 Опытный в 1С

    Регистрация:
    3 июн 2007
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    не бейте, учуся я!!...

    ЗАДАЧА: отсортировать в печатном макете товар скажем по коду.

    Короче, беру любой документ, допустим перемещение...

    в модуле делаю перед циклом
    Код:
    	    ЗапросТовары.Сортировать("код");
    
    в итоге получаю что и номера строк все в разнобой... т.е. во всем виновата строка:
    Код:
    |	ДокТара.НомерСтроки                                   КАК НомерСтроки,
    
    что мне написать вместо доктара??

    ут. 10.3.6.8
  2. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Ничего там менять не нужно. Можно даже номер строки из запроса исключить. В параметр, содержащий номер строки, выводите индекс строки +1.
  3. TopicStarter Overlay
    Timm83
    Offline

    Timm83 Опытный в 1С

    Регистрация:
    3 июн 2007
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Из запроса удалил,
    далее делаю что номерстроки = 1, а в цикле номерстроки = номерстроки +1...
    нет ниче ((
  4. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    а не пробовал изначально в самом запросе задать сортировку по нужной колонке?
  5. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Ну так нужно теперь этот номерстроки передать в параметр печатной формы
    Покажите код вывода табличной части в форму, можно будет конкретное что-то сказать

    Хоть в запросе сортировать, хоть после - номера строк табличной части перемешаются.
  6. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    ну если сортировать по коду, то да, ноиера строк перемешаются, а вот если сортировать именно по номерам строк, то всё норм будет
  7. TopicStarter Overlay
    Timm83
    Offline

    Timm83 Опытный в 1С

    Регистрация:
    3 июн 2007
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Отсортировал не по коду а сначала по родителю потом по краткому наименованию и характеристике

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

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Нужно посмотреть как называется параметр в макете, в который выводится порядковый номер. Обычно он так и называется - "Номер". В него нужно передать рассчитанный номер строки. По Вашему коду можно использовать переменную "Ном".
    В код, перед строкой
    Код:
    ТабДокумент.Вывести(ОбластьМакета);
    
    
    
    нужно вставить
    Код:
    ОбластьМакета.Параметры.Номер = Ном;
    
    
    Но более универсально использовать индексы. Я бы написал так:
    Код:
    ОбластьМакета.Параметры.Номер = ЗапросТовары.Индекс(ВыборкаСтрок) + 1;
    
    
  9. TopicStarter Overlay
    Timm83
    Offline

    Timm83 Опытный в 1С

    Регистрация:
    3 июн 2007
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    ТО ЧТО НАДО!! сенкс!

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