8.х Печатная форма: не выводятся результаты

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 29 июл 2013.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. СОздал внешнюю печатную форму не могу понять почему у меня не выводятся результаты(воводится только поля, форма пустая). В чем может быть проблема?
    Код:
    Функция Печать() Экспорт
    
    Запрос = Новый Запрос;
    //Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("ТекущийДокумент",СсылкаНаОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПоступлениеТоваровУслуг.Номер КАК Номер,
    |    ПоступлениеТоваровУслуг.Дата КАК ДатаСоставления,
    |    ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерСопроводительногоДокумента,
    |    ПоступлениеТоваровУслуг.Организация,
    |    ПоступлениеТоваровУслуг.Организация КАК ЮрФизЛицо,
    |    ПоступлениеТоваровУслуг.Склад КАК МестоПриемки,
    |    ПоступлениеТоваровУслуг.Склад.Представление КАК СкладНаименование,
    |    ПоступлениеТоваровУслуг.Контрагент.Код КАК ПоставщикКод,
    |    ПоступлениеТоваровУслуг.Контрагент КАК Поставщик,
    |    ЕСТЬNULL(ПоступлениеТоваровУслуг.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах, ЛОЖЬ) КАК РасчетыВУсловныхЕдиницах,
    |    ПоступлениеТоваровУслуг.ВалютаДокумента,
    |    ПоступлениеТоваровУслуг.КурсВзаиморасчетов КАК Курс,
    |    ПоступлениеТоваровУслуг.КратностьВзаиморасчетов КАК Кратность,
    |    ПоступлениеТоваровУслуг.УчитыватьНДС,
    |    ПоступлениеТоваровУслуг.СуммаВключаетНДС,
    |    ПоступлениеТоваровУслуг.СчетУчетаРасчетовСКонтрагентом КАК СубСчет
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |    ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент";
    
    мВалютаРегламентированногоУчета = СсылкаНаОбъект.мВалютаРегламентированногоУчета;
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    ЗапросПоТоварам = Новый Запрос();
    //ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    //ЗапросПоТоварам.УстановитьПараметр("Курс",		    ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета));
    ЗапросПоТоварам.УстановитьПараметр("Курс",		    ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
    //ЗапросПоТоварам.УстановитьПараметр("Кратность",	   ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета));
    ЗапросПоТоварам.УстановитьПараметр("Кратность",	   ЗаполнениеДокументов.КратностьДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
    ЗапросПоТоварам.Текст = "ВЫБРАТЬ
    |    ПоступлениеТоваровУслуг.Номенклатура КАК Номенклатура,
    |    ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование,
    |    ПоступлениеТоваровУслуг.Номенклатура.Код КАК ТоварКод,
    |    ПоступлениеТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
    |    ПоступлениеТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
    |    ПоступлениеТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
    |    СУММА(ПоступлениеТоваровУслуг.Количество) КАК КоличествоПринято,
    |    СУММА(ПоступлениеТоваровУслуг.Сумма * &Курс / &Кратность) КАК Стоимость,
    |    СУММА(ПоступлениеТоваровУслуг.СуммаНДС * &Курс / &Кратность) КАК СуммаНДС,
    |    МИНИМУМ(ПоступлениеТоваровУслуг.НомерСтроки) КАК НомерСтроки
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |    ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент
    |
    |СГРУППИРОВАТЬ ПО
    |    ПоступлениеТоваровУслуг.Номенклатура,
    |    ПоступлениеТоваровУслуг.ЕдиницаИзмерения,
    |    ПоступлениеТоваровУслуг.Цена,
    |    ПоступлениеТоваровУслуг.СтавкаНДС
    |
    |УПОРЯДОЧИТЬ ПО
    |    НомерСтроки";
    
    
    Если Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить() = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ЗапросПоТоварам.Текст = СтрЗаменить(ЗапросПоТоварам.Текст, "Номенклатура.Код","Номенклатура.Артикул");
    КонецЕсли;
    
    ЗапросТовары = ЗапросПоТоварам.Выполнить().Выгрузить();
    
    Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах
    ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И СсылкаНаОбъект.Дата >= '20090101000000')) Тогда
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект.Ссылка);
    Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект.СчетУчетаРасчетовСКонтрагентом);
    Текст =
    "ВЫБРАТЬ
    |    СУММА(Хозрасчетный.Сумма) КАК Сумма
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |    Хозрасчетный.Регистратор = &Ссылка
    |    И Хозрасчетный.СчетКт = &СчетУчетаРасчетовСКонтрагентом
    |    И Хозрасчетный.СчетДт В
    |            (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                ПоступлениеТоваровУслуг.СчетУчета
    |            ИЗ
    |                Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |            ГДЕ
    |                ПоступлениеТоваровУслуг.Ссылка = &Ссылка
    |
    |		   ОБЪЕДИНИТЬ
    |
    |            ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                ПоступлениеТоваровУслуг.СчетУчетаНДС
    |            ИЗ
    |                Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |            ГДЕ
    |                ПоступлениеТоваровУслуг.Ссылка = &Ссылка)";
    
    Запрос.Текст = Текст;
    СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузить()[0].Сумма;
    
    РасчетСуммыНДСПоСтавке =  УчетНДС.РасчетНДСвРубляхПоСтавкеДокумента(Шапка.ДатаСоставления);
    
    Если НЕ СуммаВзаиморасчетов = NULL Тогда
    
    ЗапросТовары.Колонки.Добавить("СуммаБезНДС");
    
    МассивРаспределения = Новый Массив;
    
    Для Каждого СтрокаТовар Из ЗапросТовары Цикл
    
    СуммаСНДС = СтрокаТовар.Стоимость + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС);
    СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;
    
    МассивРаспределения.Добавить(СуммаСНДС);
    СтрокаТовар.СуммаБезНДС = СуммаБезНДС;
    
    КонецЦикла;
    
    ЗапросТовары.Колонки.Добавить("СуммаРублевая");
    УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ЗапросТовары, "СуммаРублевая");
    
    Для Каждого СтрокаТовар Из ЗапросТовары Цикл
    
    Если РасчетСуммыНДСПоСтавке Тогда
    //Выделение суммы НДС, Расчет суммы без НДС
    ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС(СтрокаТовар.СтавкаНДС);
    
    СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРублевая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2));
    СтрокаТовар.Стоимость = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;
    
    Иначе
    МассивРаспределения.Очистить();
    МассивРаспределения.Добавить(СтрокаТовар.СуммаБезНДС);
    МассивРаспределения.Добавить(СтрокаТовар.СуммаНДС);
    МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения);
    Если МассивРаспределенныхСумм <> Неопределено Тогда
    СтрокаТовар.Стоимость = МассивРаспределенныхСумм[0];
    СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1];
    КонецЕсли;
    КонецЕсли;
    
    Если Шапка.СуммаВключаетНДС Тогда
    СтрокаТовар.Стоимость = СтрокаТовар.Стоимость+СтрокаТовар.СуммаНДС;
    КонецЕсли;
    
    КонецЦикла;
    
    КонецЕсли;
    
    КонецЕсли;
    
    ТабДокумент = Новый ТабличныйДокумент;
    
    // Зададим параметры макета
    ТабДокумент.ПолеСверху		 = 0;
    ТабДокумент.ПолеСлева		  = 0;
    ТабДокумент.ПолеСнизу		  = 0;
    ТабДокумент.ПолеСправа		 = 0;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеТоваровУслуг_М4";
    
    Макет = ПолучитьОбщийМакет("М4");
    
    ОбластьМакетаШапка			  = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакетаЗаголовокДокумента = Макет.ПолучитьОбласть("ЗаголовокДокумента");
    ОбластьМакетаЗаголовокТаблицы   = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ОбластьМакетаСтрока			 = Макет.ПолучитьОбласть("Строка");
    ОбластьМакетаПодвалСтрок	    = Макет.ПолучитьОбласть("ПодвалСтрок");
    ОбластьМакетаИтого			  = Макет.ПолучитьОбласть("Итого");
    ОбластьМакетаПодвал			 = Макет.ПолучитьОбласть("Подвал");
    
    // Выводим общие реквизиты шапки
    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаСоставления);
    
    ОбластьМакетаШапка.Параметры.Заполнить(Шапка);
    ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе);
    ОбластьМакетаШапка.Параметры.ОрганизацияПоОКПО	    = СведенияОПокупателе.КодПоОКПО;
    ОбластьМакетаШапка.Параметры.НомерДокумента		   = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);
    
    ТабДокумент.Вывести(ОбластьМакетаШапка);
    
    // Выводим заголовок документа
    ОбластьМакетаЗаголовокДокумента.Параметры.Заполнить(Шапка);
    ОбластьМакетаЗаголовокДокумента.Параметры.ДатаСоставления = Шапка.ДатаСоставления;
    ПредставлениеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(
    УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.ДатаСоставления), "НаименованиеДляПечатныхФорм,");
    ОбластьМакетаЗаголовокДокумента.Параметры.ПоставщикНаименование = ПредставлениеКонтрагента;
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокДокумента);
    
    // Выводим заголовок таблицы
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
    
    // Инициализация итогов в документе
    ИтогоКоличествоПринято = 0;
    ИтогоСуммаБезНДС	   = 0;
    ИтогоСуммаНДС		  = 0;
    ИтогоВсегоСНДС		 = 0;
    Ном				    = 0;
    
    // Инициализация счетчиков страниц и строк
    НомерСтраницы   = 1;
    НомерСтроки	 = 0;
    КоличествоСтрок = ЗапросТовары.Количество();
    
    // Выводим многострочную часть документа
    Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
    
    НомерСтроки = НомерСтроки + 1;
    
    ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок);
    
    Кратность = ?(Шапка.Кратность = 0, 1, Шапка.Кратность);
    ВсегоСНДС = (ВыборкаСтрок.Стоимость
    + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС));
    
    КоличествоПринято = ВыборкаСтрок.КоличествоПринято;
    СуммаНДС		  = ВыборкаСтрок.СуммаНДС;
    Цена			  = (ВсегоСНДС - СуммаНДС) / ?(КоличествоПринято = 0, 1, КоличествоПринято);
    
    ОбластьМакетаСтрока.Параметры.КоличествоПринято = КоличествоПринято;
    ОбластьМакетаСтрока.Параметры.ВсегоСНДС		 = ВсегоСНДС;
    ОбластьМакетаСтрока.Параметры.СуммаБезНДС	   = ВсегоСНДС - СуммаНДС;
    ОбластьМакетаСтрока.Параметры.СуммаНДС		  = СуммаНДС;
    ОбластьМакетаСтрока.Параметры.Цена			  = Цена;
    ОбластьМакетаСтрока.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование);
    
    // Проверим вывод
    СтрокаСПодвалом = Новый Массив;
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
    Если НомерСтроки = КоличествоСтрок Тогда		   // если последняя строка, должен
    СтрокаСПодвалом.Добавить(ОбластьМакетаИтого);  // помещаться и подвал документа
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
    Иначе											  // иначе - только подвал строк
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвалСтрок);
    КонецЕсли;
    
    Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда
    
    ТабДокумент.Вывести(ОбластьМакетаПодвалСтрок);
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    
    
    НомерСтраницы = НомерСтраницы + 1;
    ОбластьМакетаЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
    
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
    
    КонецЕсли;
    
    ТабДокумент.Вывести(ОбластьМакетаСтрока);
    
    ИтогоКоличествоПринято = ИтогоКоличествоПринято + КоличествоПринято;
    ИтогоСуммаБезНДС	   = ИтогоСуммаБезНДС	   + ВсегоСНДС - СуммаНДС;
    ИтогоСуммаНДС		  = ИтогоСуммаНДС		  + СуммаНДС;
    ИтогоВсегоСНДС		 = ИтогоВсегоСНДС		 + ВсегоСНДС;
    
    КонецЦикла;
    
    // Выводим итоги по документу
    ОбластьМакетаИтого.Параметры.ИтогоКоличествоПринято = ИтогоКоличествоПринято;
    ОбластьМакетаИтого.Параметры.ИтогоСуммаБезНДС	   = ИтогоСуммаБезНДС;
    ОбластьМакетаИтого.Параметры.ИтогоСуммаНДС		  = ИтогоСуммаНДС;
    ОбластьМакетаИтого.Параметры.ИтогоВсегоСНДС		 = ИтогоВсегоСНДС;
    ТабДокумент.Вывести(ОбластьМакетаИтого);
    
    // Выводим итоги по документу
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакетаПодвал.Параметры.Заполнить(Шапка);
    ТабДокумент.Вывести(ОбластьМакетаПодвал);
    
    Возврат ТабДокумент;
    
    КонецФункции // ПечатьМ4()
    
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    посмотрите отладчиком где валиться. Ошибки никакие не выдает?
  3. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Может из-за того что я этот код выкинул:
    Код:
    Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) Экспорт
    
    // Получить экземпляр документа на печать
    Если ИмяМакета = "Накладная" тогда
    
    // Управленческая печатная форма документа
    ТабДокумент = ПечатьПоступлениеТоваров();
    ИначеЕсли ИмяМакета = "ТОРГ12" тогда
    
    // Унифицированная форма ТОРГ-12 (за поставщика)
    ТабДокумент = ПечатьТОРГ12ЗаПоставщика();
    ИначеЕсли ИмяМакета = "ТОРГ12_БезУслуг" тогда
    
    // Унифицированная форма ТОРГ-12 (за поставщика)
    ТабДокумент = ПечатьТОРГ12ЗаПоставщика(Истина);
    ИначеЕсли ИмяМакета = "ТОРГ4" тогда
    
    // Унифицированная форма ТОРГ-4 (акт приемки товара без счета поставщика)
    ТабДокумент = ПечатьТОРГ4();
    ИначеЕсли ИмяМакета = "М4" тогда
    
    // Унифицированная форма М-4 (приходный ордер)
    ТабДокумент = ПечатьМ4();
    ИначеЕсли ИмяМакета = "ОС14" тогда
    
    // Унифицированная форма М-4 (Акт о приеме оборудования)
    ТабДокумент = ПечатьОС14();
    ИначеЕсли ИмяМакета = "СправкаРасчетВал" Тогда
    
    // Справка-расчет формирования рублевой суммы документа в валюте
    БухгалтерскийУчетРасчетовСКонтрагентами.НапечататьСправкуРасчетРублеваяСуммаДокументаВВалюте(Ссылка);
    Возврат;
    
    КонецЕсли;
    
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, Строка(ВидОперации)), НепосредственнаяПечать);
    
    КонецПроцедуры // Печать
    
    
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    смотря какую процедуру вы вызываете.... по идее если бы вы пытались вызвать процедуру, которой нет в модуле, то наверное программа ругнулась бы

    поставьте в вашу процедуру точку остановки и посмотрите пошагово, где конкретно валится код
  5. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Нужно все-таки добавить эту функцию еще:
    Код:
    Функция Печать() Экспорт
    
    ТабДокумент = ПечатьМ4();
    
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, Строка(СсылкаНаОбъект.ВидОперации)), НепосредственнаяПечать);
    //УниверсальныеМеханизмы.НапечататьДокумент();
    
    КонецФункции // Печать
    Выскакивают ошибки не могу понять как их решить
    {ВнешняяОбработка.М4_Бух.МодульОбъекта(7,57)}: Переменная не определена (КоличествоЭкземпляров)
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, <<?>>КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, Строка(СсылкаНаОбъект.ВидОперации)), НепосредственнаяПечать); (Проверка: Толстый клиент (обычное приложение))
    {ВнешняяОбработка.М4_Бух.МодульОбъекта(7,80)}: Переменная не определена (НаПринтер)
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, <<?>>НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, Строка(СсылкаНаОбъект.ВидОперации)), НепосредственнаяПечать); (Проверка: Толстый клиент (обычное приложение))
    {ВнешняяОбработка.М4_Бух.МодульОбъекта(7,188)}: Переменная не определена (НепосредственнаяПечать)
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, Строка(СсылкаНаОбъект.ВидОперации)), <<?>>НепосредственнаяПечать); (Проверка: Толстый клиент (обычное приложение))
  6. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вы не задали значения переменных, скорее всего и не обозначили их, но передаете их в процедуру. Вот и ругается

    Код:
    
    Функция Печать() Экспорт
    
    ТабДокумент = ПечатьМ4();
    ПечатьКоличествоЭкземпляров = 1;
    НаПринтер = Ложь;
    НепосредственнаяПечать = Ложь;
    
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, Строка(СсылкаНаОбъект.ВидОперации)), НепосредственнаяПечать);
    КонецФункции ////УниверсальныеМеханизмы.НапечататьДокумент();
    
    
  7. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Это я понял вопрос в том нужно последнюю функцию добавлять или нет?
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ваша функция называется Печать() если вы добавите код как есть, то вашу фукнцию он не затронет. Как выводить на печать - ваше решение. Можете просто пользователю показать отчет, можете сразу на принтер кинуть. Универсальные механизмы на то и универсальные. А уж использовать их или нет - это ваше дело
  9. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    А подскажите как пользоваться отладчиком, в смысле где поставить точку останова?
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    можно и в начале функции поставить, потом пошагово идти и смотреть изменения переменных или в любом другом "проблемном" месте
  11. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Все-таки должно быть вот так но почему выводит пустую форму не понимаю
    Код:
    
    Функция Печать() Экспорт
    
    
    Запрос = Новый Запрос;
    //Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("ТекущийДокумент",СсылкаНаОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПоступлениеТоваровУслуг.Номер КАК Номер,
    |    ПоступлениеТоваровУслуг.Дата КАК ДатаСоставления,
    |    ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерСопроводительногоДокумента,
    |    ПоступлениеТоваровУслуг.Организация,
    |    ПоступлениеТоваровУслуг.Организация КАК ЮрФизЛицо,
    |    ПоступлениеТоваровУслуг.Склад КАК МестоПриемки,
    |    ПоступлениеТоваровУслуг.Склад.Представление КАК СкладНаименование,
    |    ПоступлениеТоваровУслуг.Контрагент.Код КАК ПоставщикКод,
    |    ПоступлениеТоваровУслуг.Контрагент КАК Поставщик,
    |    ЕСТЬNULL(ПоступлениеТоваровУслуг.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах, ЛОЖЬ) КАК РасчетыВУсловныхЕдиницах,
    |    ПоступлениеТоваровУслуг.ВалютаДокумента,
    |    ПоступлениеТоваровУслуг.КурсВзаиморасчетов КАК Курс,
    |    ПоступлениеТоваровУслуг.КратностьВзаиморасчетов КАК Кратность,
    |    ПоступлениеТоваровУслуг.УчитыватьНДС,
    |    ПоступлениеТоваровУслуг.СуммаВключаетНДС,
    |    ПоступлениеТоваровУслуг.СчетУчетаРасчетовСКонтрагентом КАК СубСчет
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |    ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент";
    
    мВалютаРегламентированногоУчета = СсылкаНаОбъект.мВалютаРегламентированногоУчета;
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    ЗапросПоТоварам = Новый Запрос();
    //ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    //ЗапросПоТоварам.УстановитьПараметр("Курс",		    ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета));
    ЗапросПоТоварам.УстановитьПараметр("Курс",		    ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
    //ЗапросПоТоварам.УстановитьПараметр("Кратность",	   ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета));
    ЗапросПоТоварам.УстановитьПараметр("Кратность",	   ЗаполнениеДокументов.КратностьДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
    ЗапросПоТоварам.Текст = "ВЫБРАТЬ
    |    ПоступлениеТоваровУслуг.Номенклатура КАК Номенклатура,
    |    ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование,
    |    ПоступлениеТоваровУслуг.Номенклатура.Код КАК ТоварКод,
    |    ПоступлениеТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
    |    ПоступлениеТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
    |    ПоступлениеТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
    |    СУММА(ПоступлениеТоваровУслуг.Количество) КАК КоличествоПринято,
    |    СУММА(ПоступлениеТоваровУслуг.Сумма * &Курс / &Кратность) КАК Стоимость,
    |    СУММА(ПоступлениеТоваровУслуг.СуммаНДС * &Курс / &Кратность) КАК СуммаНДС,
    |    МИНИМУМ(ПоступлениеТоваровУслуг.НомерСтроки) КАК НомерСтроки
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |    ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент
    |
    |СГРУППИРОВАТЬ ПО
    |    ПоступлениеТоваровУслуг.Номенклатура,
    |    ПоступлениеТоваровУслуг.ЕдиницаИзмерения,
    |    ПоступлениеТоваровУслуг.Цена,
    |    ПоступлениеТоваровУслуг.СтавкаНДС
    |
    |УПОРЯДОЧИТЬ ПО
    |    НомерСтроки";
    
    
    Если Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить() = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ЗапросПоТоварам.Текст = СтрЗаменить(ЗапросПоТоварам.Текст, "Номенклатура.Код","Номенклатура.Артикул");
    КонецЕсли;
    
    ЗапросТовары = ЗапросПоТоварам.Выполнить().Выгрузить();
    
    Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах
    ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И СсылкаНаОбъект.Дата >= '20090101000000')) Тогда
    
    Запрос = Новый Запрос;
    //Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект.Ссылка);
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
    Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект.СчетУчетаРасчетовСКонтрагентом);
    Текст =
    "ВЫБРАТЬ
    |    СУММА(Хозрасчетный.Сумма) КАК Сумма
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |    Хозрасчетный.Регистратор = &Ссылка
    |    И Хозрасчетный.СчетКт = &СчетУчетаРасчетовСКонтрагентом
    |    И Хозрасчетный.СчетДт В
    |            (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                ПоступлениеТоваровУслуг.СчетУчета
    |            ИЗ
    |                Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |            ГДЕ
    |                ПоступлениеТоваровУслуг.Ссылка = &Ссылка
    |
    |		   ОБЪЕДИНИТЬ
    |
    |            ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                ПоступлениеТоваровУслуг.СчетУчетаНДС
    |            ИЗ
    |                Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |            ГДЕ
    |                ПоступлениеТоваровУслуг.Ссылка = &Ссылка)";
    
    Запрос.Текст = Текст;
    СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузить()[0].Сумма;
    
    РасчетСуммыНДСПоСтавке =  УчетНДС.РасчетНДСвРубляхПоСтавкеДокумента(Шапка.ДатаСоставления);
    
    Если НЕ СуммаВзаиморасчетов = NULL Тогда
    
    ЗапросТовары.Колонки.Добавить("СуммаБезНДС");
    
    МассивРаспределения = Новый Массив;
    
    Для Каждого СтрокаТовар Из ЗапросТовары Цикл
    
    СуммаСНДС = СтрокаТовар.Стоимость + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС);
    СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;
    
    МассивРаспределения.Добавить(СуммаСНДС);
    СтрокаТовар.СуммаБезНДС = СуммаБезНДС;
    
    КонецЦикла;
    
    ЗапросТовары.Колонки.Добавить("СуммаРублевая");
    УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ЗапросТовары, "СуммаРублевая");
    
    Для Каждого СтрокаТовар Из ЗапросТовары Цикл
    
    Если РасчетСуммыНДСПоСтавке Тогда
    //Выделение суммы НДС, Расчет суммы без НДС
    ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС(СтрокаТовар.СтавкаНДС);
    
    СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРублевая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2));
    СтрокаТовар.Стоимость = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;
    
    Иначе
    МассивРаспределения.Очистить();
    МассивРаспределения.Добавить(СтрокаТовар.СуммаБезНДС);
    МассивРаспределения.Добавить(СтрокаТовар.СуммаНДС);
    МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения);
    Если МассивРаспределенныхСумм <> Неопределено Тогда
    СтрокаТовар.Стоимость = МассивРаспределенныхСумм[0];
    СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1];
    КонецЕсли;
    КонецЕсли;
    
    Если Шапка.СуммаВключаетНДС Тогда
    СтрокаТовар.Стоимость = СтрокаТовар.Стоимость+СтрокаТовар.СуммаНДС;
    КонецЕсли;
    
    КонецЦикла;
    
    КонецЕсли;
    
    КонецЕсли;
    
    ТабДокумент = Новый ТабличныйДокумент;
    
    // Зададим параметры макета
    ТабДокумент.ПолеСверху		 = 0;
    ТабДокумент.ПолеСлева		  = 0;
    ТабДокумент.ПолеСнизу		  = 0;
    ТабДокумент.ПолеСправа		 = 0;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеТоваровУслуг_М4";
    
    Макет = ПолучитьОбщийМакет("М4");
    
    ОбластьМакетаШапка			  = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакетаЗаголовокДокумента = Макет.ПолучитьОбласть("ЗаголовокДокумента");
    ОбластьМакетаЗаголовокТаблицы   = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ОбластьМакетаСтрока			 = Макет.ПолучитьОбласть("Строка");
    ОбластьМакетаПодвалСтрок	    = Макет.ПолучитьОбласть("ПодвалСтрок");
    ОбластьМакетаИтого			  = Макет.ПолучитьОбласть("Итого");
    ОбластьМакетаПодвал			 = Макет.ПолучитьОбласть("Подвал");
    
    // Выводим общие реквизиты шапки
    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаСоставления);
    
    ОбластьМакетаШапка.Параметры.Заполнить(Шапка);
    ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе);
    ОбластьМакетаШапка.Параметры.ОрганизацияПоОКПО	    = СведенияОПокупателе.КодПоОКПО;
    ОбластьМакетаШапка.Параметры.НомерДокумента		   = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);
    
    ТабДокумент.Вывести(ОбластьМакетаШапка);
    
    // Выводим заголовок документа
    ОбластьМакетаЗаголовокДокумента.Параметры.Заполнить(Шапка);
    ОбластьМакетаЗаголовокДокумента.Параметры.ДатаСоставления = Шапка.ДатаСоставления;
    ПредставлениеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(
    УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.ДатаСоставления), "НаименованиеДляПечатныхФорм,");
    ОбластьМакетаЗаголовокДокумента.Параметры.ПоставщикНаименование = ПредставлениеКонтрагента;
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокДокумента);
    
    // Выводим заголовок таблицы
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
    
    // Инициализация итогов в документе
    ИтогоКоличествоПринято = 0;
    ИтогоСуммаБезНДС	   = 0;
    ИтогоСуммаНДС		  = 0;
    ИтогоВсегоСНДС		 = 0;
    Ном				    = 0;
    
    // Инициализация счетчиков страниц и строк
    НомерСтраницы   = 1;
    НомерСтроки	 = 0;
    КоличествоСтрок = ЗапросТовары.Количество();
    
    // Выводим многострочную часть документа
    Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
    
    НомерСтроки = НомерСтроки + 1;
    
    ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок);
    
    Кратность = ?(Шапка.Кратность = 0, 1, Шапка.Кратность);
    ВсегоСНДС = (ВыборкаСтрок.Стоимость
    + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС));
    
    КоличествоПринято = ВыборкаСтрок.КоличествоПринято;
    СуммаНДС		  = ВыборкаСтрок.СуммаНДС;
    Цена			  = (ВсегоСНДС - СуммаНДС) / ?(КоличествоПринято = 0, 1, КоличествоПринято);
    
    ОбластьМакетаСтрока.Параметры.КоличествоПринято = КоличествоПринято;
    ОбластьМакетаСтрока.Параметры.ВсегоСНДС		 = ВсегоСНДС;
    ОбластьМакетаСтрока.Параметры.СуммаБезНДС	   = ВсегоСНДС - СуммаНДС;
    ОбластьМакетаСтрока.Параметры.СуммаНДС		  = СуммаНДС;
    ОбластьМакетаСтрока.Параметры.Цена			  = Цена;
    ОбластьМакетаСтрока.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование);
    
    // Проверим вывод
    СтрокаСПодвалом = Новый Массив;
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
    Если НомерСтроки = КоличествоСтрок Тогда		   // если последняя строка, должен
    СтрокаСПодвалом.Добавить(ОбластьМакетаИтого);  // помещаться и подвал документа
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
    Иначе											  // иначе - только подвал строк
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвалСтрок);
    КонецЕсли;
    
    Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда
    
    ТабДокумент.Вывести(ОбластьМакетаПодвалСтрок);
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    
    
    НомерСтраницы = НомерСтраницы + 1;
    ОбластьМакетаЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
    
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
    
    КонецЕсли;
    
    ТабДокумент.Вывести(ОбластьМакетаСтрока);
    
    ИтогоКоличествоПринято = ИтогоКоличествоПринято + КоличествоПринято;
    ИтогоСуммаБезНДС	   = ИтогоСуммаБезНДС	   + ВсегоСНДС - СуммаНДС;
    ИтогоСуммаНДС		  = ИтогоСуммаНДС		  + СуммаНДС;
    ИтогоВсегоСНДС		 = ИтогоВсегоСНДС		 + ВсегоСНДС;
    
    КонецЦикла;
    
    // Выводим итоги по документу
    ОбластьМакетаИтого.Параметры.ИтогоКоличествоПринято = ИтогоКоличествоПринято;
    ОбластьМакетаИтого.Параметры.ИтогоСуммаБезНДС	   = ИтогоСуммаБезНДС;
    ОбластьМакетаИтого.Параметры.ИтогоСуммаНДС		  = ИтогоСуммаНДС;
    ОбластьМакетаИтого.Параметры.ИтогоВсегоСНДС		 = ИтогоВсегоСНДС;
    ТабДокумент.Вывести(ОбластьМакетаИтого);
    
    // Выводим итоги по документу
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакетаПодвал.Параметры.Заполнить(Шапка);
    ТабДокумент.Вывести(ОбластьМакетаПодвал);
    
    Возврат ТабДокумент;
    
    КонецФункции // ПечатьМ4()
    
    
    Я думал что
    Код:
    Запрос.УстановитьПараметр("ТекущийДокумент",СсылкаНаОбъект.Ссылка);
    
    нужно поменять на
    Код:
    Запрос.УстановитьПараметр("ТекущийДокумент",СсылкаНаОбъект);
    
    но так не работает говорит нельзя сравнивые несравнивые объекты.
  12. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Ругается на:
    Код:
    мВалютаРегламентированногоУчета = СсылкаНаОбъект.мВалютаРегламентированногоУчета;
    
    
    Поле объекта не обнаружено (мВалютаРегламентированногоУчета)
  13. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    что передается в переменную СсылкаНаОбЪект? есть ли у этого обЪекта реквизит мВалютаРегламентированного учета? можно определить отладчиком
  14. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    громадное спасибо, разобрался, отладчик помог!!!
  15. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Опять не понимаю, как внешняя обработка работает
    а как отчет добавляю не выводит информацию
  16. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Отличается только
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Печать().Показать();
    КонецПроцедуры
    
    а я добавил в тот код
    ТабДокумент.Показать();
  17. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    попробуйте так

    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    ТабДок = Печать();
    ТабДок.Показать();
    КонецПроцедуры
  18. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    В этом коде у меня работает(как внешняя обработка, проблема именно при подключении как печатная форма)
    Там код:
    Код:
    //код
    ТабДокумент.Вывести(ОбластьМакетаПодвал);
    ТабДокумент.Показать();
    
    Там одна функция печать
  19. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Печать() это та функция, которую вы в листинге вы привели? если это функция и она возващает результат, то явно надо использовать приведенную мной конструкцию. Если же вы в код функции включили ТабДокумент.Показать();, то сделайте Печать() не функцией, а процедурой и уберите конструкцию "Возврат..."
  20. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Код:
    Перем мВалютаРегламентированногоУчета Экспорт;
    
    Функция Печать() Экспорт
    Запрос = Новый Запрос;
    //Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПоступлениеТоваровУслуг.Номер КАК Номер,
    |    ПоступлениеТоваровУслуг.Дата КАК ДатаСоставления,
    |    ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерСопроводительногоДокумента,
    |    ПоступлениеТоваровУслуг.Организация,
    |    ПоступлениеТоваровУслуг.Организация КАК ЮрФизЛицо,
    |    ПоступлениеТоваровУслуг.Склад КАК МестоПриемки,
    |    ПоступлениеТоваровУслуг.Склад.Представление КАК СкладНаименование,
    |    ПоступлениеТоваровУслуг.Контрагент.Код КАК ПоставщикКод,
    |    ПоступлениеТоваровУслуг.Контрагент КАК Поставщик,
    |    ЕСТЬNULL(ПоступлениеТоваровУслуг.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах, ЛОЖЬ) КАК РасчетыВУсловныхЕдиницах,
    |    ПоступлениеТоваровУслуг.ВалютаДокумента,
    |    ПоступлениеТоваровУслуг.КурсВзаиморасчетов КАК Курс,
    |    ПоступлениеТоваровУслуг.КратностьВзаиморасчетов КАК Кратность,
    |    ПоступлениеТоваровУслуг.УчитыватьНДС,
    |    ПоступлениеТоваровУслуг.СуммаВключаетНДС,
    |    ПоступлениеТоваровУслуг.СчетУчетаРасчетовСКонтрагентом КАК СубСчет
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |    ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент";
    
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    ЗапросПоТоварам = Новый Запрос();
    //ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    ЗапросПоТоварам.УстановитьПараметр("Курс",		    ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
    ЗапросПоТоварам.УстановитьПараметр("Кратность",	   ЗаполнениеДокументов.КратностьДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
    ЗапросПоТоварам.Текст = "ВЫБРАТЬ
    |    ПоступлениеТоваровУслуг.Номенклатура КАК Номенклатура,
    |    ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование,
    |    ПоступлениеТоваровУслуг.Номенклатура.Код КАК ТоварКод,
    |    ПоступлениеТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
    |    ПоступлениеТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
    |    ПоступлениеТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
    |    СУММА(ПоступлениеТоваровУслуг.Количество) КАК КоличествоПринято,
    |    СУММА(ПоступлениеТоваровУслуг.Сумма * &Курс / &Кратность) КАК Стоимость,
    |    СУММА(ПоступлениеТоваровУслуг.СуммаНДС * &Курс / &Кратность) КАК СуммаНДС,
    |    МИНИМУМ(ПоступлениеТоваровУслуг.НомерСтроки) КАК НомерСтроки
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |    ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент
    |
    |СГРУППИРОВАТЬ ПО
    |    ПоступлениеТоваровУслуг.Номенклатура,
    |    ПоступлениеТоваровУслуг.ЕдиницаИзмерения,
    |    ПоступлениеТоваровУслуг.Цена,
    |    ПоступлениеТоваровУслуг.СтавкаНДС
    |
    |УПОРЯДОЧИТЬ ПО
    |    НомерСтроки";
    
    
    Если Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить() = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ЗапросПоТоварам.Текст = СтрЗаменить(ЗапросПоТоварам.Текст, "Номенклатура.Код","Номенклатура.Артикул");
    КонецЕсли;
    
    ЗапросТовары = ЗапросПоТоварам.Выполнить().Выгрузить();
    
    Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах
    ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И СсылкаНаОбъект.Дата >= '20090101000000')) Тогда
    
    Запрос = Новый Запрос;
    //Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект.Ссылка);
    Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект.СчетУчетаРасчетовСКонтрагентом);
    Текст =
    "ВЫБРАТЬ
    |    СУММА(Хозрасчетный.Сумма) КАК Сумма
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |    Хозрасчетный.Регистратор = &Ссылка
    |    И Хозрасчетный.СчетКт = &СчетУчетаРасчетовСКонтрагентом
    |    И Хозрасчетный.СчетДт В
    |            (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                ПоступлениеТоваровУслуг.СчетУчета
    |            ИЗ
    |                Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |            ГДЕ
    |                ПоступлениеТоваровУслуг.Ссылка = &Ссылка
    |
    |		   ОБЪЕДИНИТЬ
    |
    |            ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                ПоступлениеТоваровУслуг.СчетУчетаНДС
    |            ИЗ
    |                Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    |            ГДЕ
    |                ПоступлениеТоваровУслуг.Ссылка = &Ссылка)";
    
    Запрос.Текст = Текст;
    СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузить()[0].Сумма;
    
    РасчетСуммыНДСПоСтавке =  УчетНДС.РасчетНДСвРубляхПоСтавкеДокумента(Шапка.ДатаСоставления);
    
    Если НЕ СуммаВзаиморасчетов = NULL Тогда
    
    ЗапросТовары.Колонки.Добавить("СуммаБезНДС");
    
    МассивРаспределения = Новый Массив;
    
    Для Каждого СтрокаТовар Из ЗапросТовары Цикл
    
    СуммаСНДС = СтрокаТовар.Стоимость + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС);
    СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;
    
    МассивРаспределения.Добавить(СуммаСНДС);
    СтрокаТовар.СуммаБезНДС = СуммаБезНДС;
    
    КонецЦикла;
    
    ЗапросТовары.Колонки.Добавить("СуммаРублевая");
    УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ЗапросТовары, "СуммаРублевая");
    
    Для Каждого СтрокаТовар Из ЗапросТовары Цикл
    
    Если РасчетСуммыНДСПоСтавке Тогда
    //Выделение суммы НДС, Расчет суммы без НДС
    ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС(СтрокаТовар.СтавкаНДС);
    
    СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРублевая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2));
    СтрокаТовар.Стоимость = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;
    
    Иначе
    МассивРаспределения.Очистить();
    МассивРаспределения.Добавить(СтрокаТовар.СуммаБезНДС);
    МассивРаспределения.Добавить(СтрокаТовар.СуммаНДС);
    МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения);
    Если МассивРаспределенныхСумм <> Неопределено Тогда
    СтрокаТовар.Стоимость = МассивРаспределенныхСумм[0];
    СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1];
    КонецЕсли;
    КонецЕсли;
    
    Если Шапка.СуммаВключаетНДС Тогда
    СтрокаТовар.Стоимость = СтрокаТовар.Стоимость+СтрокаТовар.СуммаНДС;
    КонецЕсли;
    
    КонецЦикла;
    
    КонецЕсли;
    
    КонецЕсли;
    
    ТабДокумент = Новый ТабличныйДокумент;
    
    // Зададим параметры макета
    ТабДокумент.ПолеСверху		 = 0;
    ТабДокумент.ПолеСлева		  = 0;
    ТабДокумент.ПолеСнизу		  = 0;
    ТабДокумент.ПолеСправа		 = 0;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеТоваровУслуг_М4";
    
    Макет = ПолучитьОбщийМакет("М4");
    
    ОбластьМакетаШапка			  = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакетаЗаголовокДокумента = Макет.ПолучитьОбласть("ЗаголовокДокумента");
    ОбластьМакетаЗаголовокТаблицы   = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ОбластьМакетаСтрока			 = Макет.ПолучитьОбласть("Строка");
    ОбластьМакетаПодвалСтрок	    = Макет.ПолучитьОбласть("ПодвалСтрок");
    ОбластьМакетаИтого			  = Макет.ПолучитьОбласть("Итого");
    ОбластьМакетаПодвал			 = Макет.ПолучитьОбласть("Подвал");
    
    // Выводим общие реквизиты шапки
    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаСоставления);
    
    ОбластьМакетаШапка.Параметры.Заполнить(Шапка);
    ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе);
    ОбластьМакетаШапка.Параметры.ОрганизацияПоОКПО	    = СведенияОПокупателе.КодПоОКПО;
    ОбластьМакетаШапка.Параметры.НомерДокумента		   = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);
    
    ТабДокумент.Вывести(ОбластьМакетаШапка);
    
    // Выводим заголовок документа
    ОбластьМакетаЗаголовокДокумента.Параметры.Заполнить(Шапка);
    ОбластьМакетаЗаголовокДокумента.Параметры.ДатаСоставления = Шапка.ДатаСоставления;
    ПредставлениеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(
    УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.ДатаСоставления), "НаименованиеДляПечатныхФорм,");
    ОбластьМакетаЗаголовокДокумента.Параметры.ПоставщикНаименование = ПредставлениеКонтрагента;
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокДокумента);
    
    // Выводим заголовок таблицы
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
    
    // Инициализация итогов в документе
    ИтогоКоличествоПринято = 0;
    ИтогоСуммаБезНДС	   = 0;
    ИтогоСуммаНДС		  = 0;
    ИтогоВсегоСНДС		 = 0;
    Ном				    = 0;
    
    // Инициализация счетчиков страниц и строк
    НомерСтраницы   = 1;
    НомерСтроки	 = 0;
    КоличествоСтрок = ЗапросТовары.Количество();
    
    // Выводим многострочную часть документа
    Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
    
    НомерСтроки = НомерСтроки + 1;
    
    ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок);
    
    Кратность = ?(Шапка.Кратность = 0, 1, Шапка.Кратность);
    ВсегоСНДС = (ВыборкаСтрок.Стоимость
    + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС));
    
    КоличествоПринято = ВыборкаСтрок.КоличествоПринято;
    СуммаНДС		  = ВыборкаСтрок.СуммаНДС;
    Цена			  = (ВсегоСНДС - СуммаНДС) / ?(КоличествоПринято = 0, 1, КоличествоПринято);
    
    ОбластьМакетаСтрока.Параметры.КоличествоПринято = КоличествоПринято;
    ОбластьМакетаСтрока.Параметры.ВсегоСНДС		 = ВсегоСНДС;
    ОбластьМакетаСтрока.Параметры.СуммаБезНДС	   = ВсегоСНДС - СуммаНДС;
    ОбластьМакетаСтрока.Параметры.СуммаНДС		  = СуммаНДС;
    ОбластьМакетаСтрока.Параметры.Цена			  = Цена;
    ОбластьМакетаСтрока.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование);
    
    // Проверим вывод
    СтрокаСПодвалом = Новый Массив;
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
    Если НомерСтроки = КоличествоСтрок Тогда		   // если последняя строка, должен
    СтрокаСПодвалом.Добавить(ОбластьМакетаИтого);  // помещаться и подвал документа
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
    Иначе											  // иначе - только подвал строк
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвалСтрок);
    КонецЕсли;
    
    Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда
    
    ТабДокумент.Вывести(ОбластьМакетаПодвалСтрок);
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    
    
    НомерСтраницы = НомерСтраницы + 1;
    ОбластьМакетаЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
    
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
    
    КонецЕсли;
    
    ТабДокумент.Вывести(ОбластьМакетаСтрока);
    
    ИтогоКоличествоПринято = ИтогоКоличествоПринято + КоличествоПринято;
    ИтогоСуммаБезНДС	   = ИтогоСуммаБезНДС	   + ВсегоСНДС - СуммаНДС;
    ИтогоСуммаНДС		  = ИтогоСуммаНДС		  + СуммаНДС;
    ИтогоВсегоСНДС		 = ИтогоВсегоСНДС		 + ВсегоСНДС;
    
    КонецЦикла;
    
    // Выводим итоги по документу
    ОбластьМакетаИтого.Параметры.ИтогоКоличествоПринято = ИтогоКоличествоПринято;
    ОбластьМакетаИтого.Параметры.ИтогоСуммаБезНДС	   = ИтогоСуммаБезНДС;
    ОбластьМакетаИтого.Параметры.ИтогоСуммаНДС		  = ИтогоСуммаНДС;
    ОбластьМакетаИтого.Параметры.ИтогоВсегоСНДС		 = ИтогоВсегоСНДС;
    ТабДокумент.Вывести(ОбластьМакетаИтого);
    
    // Выводим итоги по документу
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакетаПодвал.Параметры.Заполнить(Шапка);
    ТабДокумент.Вывести(ОбластьМакетаПодвал);
    
    
    Возврат ТабДокумент.Показать();
    КонецФункции // ПечатьМ4()
    
    Слово Функция на Процедура не могу заменить так как Процедура привязывает нас к кнопке Выполнить, а мне нужна печатная форма

    Вот так ругается на:
    Не удалось сформировать внешнюю печатную форму!
    Обращение к процедуре объекта как к функции (Показать)

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