Имя: Пароль:
1C
1С v8
Внешний отчет УТ
0 KENT2007
 
18.10.12
09:43
как добавить группировку по папкам номенклатуры?
1 KENT2007
 
18.10.12
09:44
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
       ТоварКод = "Артикул";
   Иначе
       ТоварКод = "Код";    
   КонецЕсли;

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

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

   Запрос.УстановитьПараметр("ТекущийДокумент",      СсылкаНаОбъект);
   Запрос.УстановитьПараметр("Курс",                 Параметры.Курс);
   Запрос.УстановитьПараметр("Кратность",            Параметры.Кратность);
   Запрос.УстановитьПараметр("ВидСкладаНТТ",         Перечисления.ВидыСкладов.НТТ);
   Запрос.УстановитьПараметр("ТипЦен",              ТипЦен);
   Запрос.УстановитьПараметр("ДатаДок",              СсылкаНаОбъект.Дата);
   
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Номер КАК НомерДокумента,
   |    Дата  КАК ДатаДокумента,
   |    Дата  КАК ДатаСнятияОстатков,
   |    Организация,
   |    Склад.Представление КАК ПредставлениеСклада
   |ИЗ
   |    Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
   |
   |ГДЕ
   |    ИнвентаризацияТоваровНаСкладе.Ссылка = &ТекущийДокумент";
   
   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
                       
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ИнвентаризацияТоваровНаСкладеТовары.НомерСтроки КАК Номер,
   |    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура,
   |    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
   |    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура." + ТоварКод + " КАК ТоварКод,
   |    ИнвентаризацияТоваровНаСкладеТовары.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияНаименование,
   |    ИнвентаризацияТоваровНаСкладеТовары.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК ЕдиницаИзмеренияКодПоОКЕИ,
   |    ИнвентаризацияТоваровНаСкладеТовары.Количество КАК ФактКоличество,
   |    ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет КАК БухКоличество,
   |    ИнвентаризацияТоваровНаСкладеТовары.ХарактеристикаНоменклатуры КАК Характеристика,
   |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
   |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * ЕСТЬNULL(ИнвентаризацияТоваровНаСкладеТовары.Количество, 0) КАК ФактСумма,
   |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * ЕСТЬNULL(ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет, 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;
   ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

   Возврат ТабДокумент;
2 KENT2007
 
18.10.12
09:45
подскажите плиз.
нужно запрос править или обход в цикле установить?
3 Shurjk
 
18.10.12
09:54
Используйте СКД или Универсальный отчет, это 8-ка а не 7-ка
4 KENT2007
 
18.10.12
10:12
Пока ВыборкаСтрокТовары.Следующий() Цикл

вот тут вставляю
ПараметрыПозиции = Новый Структура;
       ПараметрыПозиции.Вставить("Группа", ВыборкаСтрокТовары.НоменклатураРодитель);
5 KENT2007
 
18.10.12
10:44
блин что тема у всех вызывает ступор? или слишком простой вопрос
6 KENT2007
 
18.10.12
13:03
почему не выводит группу
Пока ВыборкаСтрокТовары.Следующий() Цикл
         ПараметрыПозиции = Новый Структура;
       ПараметрыПозиции.Вставить("Группа", ВыборкаСтрокТовары.НоменклатураРодитель);
       
       Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда    
               Если ВыборкаСтрокТовары.НоменклатураРодитель.Уровень() = 0 Тогда
                   ОбластьГруппы.Параметры.Заполнить(ПараметрыПозиции);
                                   
       
            ТабДокумент.Вывести(ОбластьГруппы);    
         КонецЕсли;
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой