8.х Как переделать ВПФ под Управляемые Формы?

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем INEI86, 6 фев 2014.

  1. TopicStarter Overlay
    INEI86
    Offline

    INEI86

    Регистрация:
    6 фев 2014
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Перем мВалютаРегламентированногоУчета Экспорт;

    // Функция формирует табличный документ с печатной формой накладной
    // по форме ТОРГ-12 (без услуг).
    //
    // Возвращаемое значение:
    // Табличный документ - печатная форма накладной
    //
    Функция Печать() Экспорт

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

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);

    //ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("РеализацияТоваровУслуг");

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

    ЗапросТовары = Запрос.Выполнить().Выгрузить();

    ТабДокумент = Новый ТабличныйДокумент;

    // Зададим параметры макета
    ТабДокумент.ПолеСверху = 0;
    ТабДокумент.ПолеСлева = 0;
    ТабДокумент.ПолеСнизу = 0;
    ТабДокумент.ПолеСправа = 0;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_М16";

    Макет = ПолучитьМакет("М16");

    ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");

    // Выводим общие реквизиты шапки
    СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаДокумента);
    СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента);
    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.ДатаДокумента);
    СведенияОГрузополучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.ДатаДокумента);

    ОбластьМакетаШапка.Параметры.Заполнить(Шапка);
    ОбластьМакетаШапка.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);
    ОбластьМакетаШапка.Параметры.ДатаДокумента = Формат(Шапка.ДатаДокумента, "ДЛФ=D");

    //Если Шапка.ЮрФизЛицо = Шапка.Грузоотправитель Тогда
    // ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике);
    //Иначе
    ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование");
    //КонецЕсли;

    Если СокрЛП(Шапка.АдресДоставки) <> "" Тогда
    ПредставлениеГрузополучателяДоАдреса = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ИНН,");
    //ПредставлениеГрузополучателяПослеАдреса = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "Телефоны,НомерСчета,Банк,БИК,КоррСчет,");
    ПредставлениеГрузополучателяПослеАдреса = "";
    ОбластьМакетаШапка.Параметры.ПредставлениеГрузополучателя = ?(СокрЛП(ПредставлениеГрузополучателяДоАдреса) = "", "", ПредставлениеГрузополучателяДоАдреса+", ") + Шапка.АдресДоставки+?(СокрЛП(ПредставлениеГрузополучателяПослеАдреса)="", "", ", "+ПредставлениеГрузополучателяПослеАдреса);
    Иначе
    ОбластьМакетаШапка.Параметры.ПредставлениеГрузополучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе,"ПолноеНаименование,ИНН,ФактическийАдрес");
    КонецЕсли;

    ТабДокумент.Вывести(ОбластьМакетаШапка);

    // Инициализация счетчика страниц
    НомерСтраницы = 1;

    // Инициализация счетчика строк
    НомерСтроки = 0;
    КоличествоСтрок = ЗапросТовары.Количество();

    // Выводим многострочную часть докмента
    Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл

    НомерСтроки = НомерСтроки + 1;

    ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок);

    ОбластьМакетаСтрока.Параметры.Номер = НомерСтроки;

    ОбластьМакетаСтрока.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование);

    Количество = ВыборкаСтрок.Количество;
    КоличествоМест = ВыборкаСтрок.КоличествоМест;

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

    ОбластьМакетаСтрока.Параметры.Комментарий = ВыборкаСтрок.Номенклатура.Комментарий;

    СрокТранспортировки = "8 месяцев при темп. -1 +4";

    Если к>0 тогда
    ОбластьМакетаСтрока.Параметры.Комментарий = Лев(ВыборкаСтрок.Номенклатура.Комментарий,к-1);
    СрокТранспортировки = Прав(ВыборкаСтрок.Номенклатура.Комментарий,СтрДлина(ВыборкаСтрок.Номенклатура.Комментарий)-к);
    КонецЕсли;

    ОбластьМакетаСтрока.Параметры.СрокТранспортировки = СрокТранспортировки;

    // Проверим вывод
    СтрокаСПодвалом = Новый Массив;

    // помещаться заголовок
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
    Если НомерСтроки = КоличествоСтрок Тогда // если последняя строка, должен
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
    КонецЕсли;

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

    КонецЦикла;

    Руководители = ОбщегоНазначения.ОтветственныеЛица(Шапка.Руководители, Шапка.ДатаДокумента);

    ОбластьМакетаПодвал.Параметры.ФИОРуководителя = Руководители.РуководительПредставление;

    ТабДокумент.Вывести(ОбластьМакетаПодвал);


    Возврат ТабДокумент;

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

    мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();

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

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104

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