8.х Отсортировать номенклатуру по Возр

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

  1. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

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

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Попробуйте так:
    Код:
    "УПОРЯДОЧИТЬ ПО
    |Номенклатура.Наименование"
    
    
    Или, наверное, правильнее:
    Код:
    "УПОРЯДОЧИТЬ ПО
    |РегТоварыВРознице.Номенклатура.Наименование"
    
    
    В общем как-то так.

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