Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 дек 2024, 00:42

унифицированная форма ИНВ8а

Автор dadids, 28 янв 2014, 08:23

0 Пользователей и 1 гость просматривают эту тему.

dadids

Помогите, пожалуйста, переделать форму ИНВ-3 под форму ИНВ-8а. Макет для формы сделан на основе макета для формы ИНВ-3, осталось лишь переделать функцию для печати созданного макета...в чем собственно для меня большая сложность((((
Функция для печати макета ИНВ-3:

Функция ПечатьИНВ3()

    ВалютаПечати = мВалютаРегламентированногоУчета;

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

    Шапка.Следующий();
   
    ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
   
    ЗапросКомиссия = Новый Запрос;
    ЗапросКомиссия.УстановитьПараметр("ТекущийДокумент", Ссылка);   
    ЗапросКомиссия.Текст =
    "ВЫБРАТЬ
    |   ИнвентаризацияТоваровНаСкладеИнвентаризационнаяКомиссия.ФизЛицо КАК ФизЛицо,
    |   ИнвентаризацияТоваровНаСкладеИнвентаризационнаяКомиссия.Председатель КАК Председатель
    |ИЗ
    |   Документ.ИнвентаризацияТоваровНаСкладе.ИнвентаризационнаяКомиссия КАК ИнвентаризацияТоваровНаСкладеИнвентаризационнаяКомиссия
    |ГДЕ
    |   ИнвентаризацияТоваровНаСкладеИнвентаризационнаяКомиссия.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |   Председатель УБЫВ,
    |   ИнвентаризацияТоваровНаСкладеИнвентаризационнаяКомиссия.НомерСтроки";
   
    ТаблицаИнвентаризационнаяКомиссия = ЗапросКомиссия.Выполнить().Выгрузить();

    ТабДокумент = Новый ТабличныйДокумент;
   
    // Зададим параметры макета по умолчанию
    ТабДокумент.ПолеСверху              = 10;
    ТабДокумент.ПолеСлева               = 0;
    ТабДокумент.ПолеСнизу               = 0;
    ТабДокумент.ПолеСправа              = 0;
    ТабДокумент.РазмерКолонтитулаСверху = 10;
    ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;
   
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИнвентаризацияТоваровНаСкладе_ИНВ3";
    Макет       = ПолучитьМакет("ИНВ3");

    //////////////////////////////////////////////////////////////////////
    // 1-я страница формы

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

    //////////////////////////////////////////////////////////////////////
    // 2-я страница формы

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

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

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

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

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

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

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

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

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

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

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

        КонецЕсли;

        СтрокаТаблицы.Параметры.Номер = Ном;
        СтрокаТаблицы.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование;

        ТабДокумент.Вывести(СтрокаТаблицы);

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

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

    КонецЦикла;

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

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

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

КонецФункции // ПечатьИНВ3()





Как мне добавить к имеющемуся запрос данных из регистра сведений "СведенияОДрагметаллах" и отобразить их в созданном макете в разделе,где отображаются данные о драгметаллах??????

Foliage

Ваш запрос получает данные из табличной части Товары документа.
Вам нужно в запросе получить Драгметаллы вашей номенклатуры, например, левым соединеннием с регистром Драгметаллы по номенклатуре.


Добавлено: 30 янв 2014, 07:20


А отобразить в печатной форме проще простого, нужной области макета назначаете именованный параметр и используете для вывода
ОбластьМакета.Параметры, как в исходном макете.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск