Имя: Пароль:
1C
1С v8
ТОРГ12 для УПП
, , ,
0 den17
 
05.12.11
08:24
Здравствуйте, участники форума!! Помогите пожалуйста с созданием ВПФ ТОРГ12 для УПП. Создаю внешнюю обработку с реквизитом ссылка на объект (ДокументОбъект.РеализацияТоваровУслуг), из общих макетов беру макет ТОРГ12, открываю модуль менеджера д-нта "РТУ" и копирую себе в модуль объекта:

Процедура Печать(МассивОбъектов, ПараметрыПечати,  КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ12", "ТОРГ-12 (Товарная накладная с услугами)", ПечатьТОРГ12(МассивОбъектов, ОбъектыПечати, Ложь));
КонецПроцедуры
и всю функцию:
Функция ПечатьТОРГ12(МассивОбъектов, ОбъектыПечати, БезУслуг = Ложь)

Подключаю ВПФ и при печати возникает ошибка "Обращение к процедуре объекта как к функции". А чего не так мож. посмотрите)) Заранее спасибо!!
1 PuhUfa
 
05.12.11
08:27
2 den17
 
05.12.11
08:47
А если сделать так:
Функция Печать(МассивОбъектов, ОбъектыПечати, БезУслуг = Ложь) Экспорт
   
   мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
   ЕдиницаИзмеренияВеса = Константы.ЕдиницаИзмеренияВеса.Получить();
   
   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
       ТоварКод = "Артикул";
   Иначе
       ТоварКод = "Код";
   КонецЕсли;
   
   ТекстЗапросаШапка = "ВЫБРАТЬ
   |    Номер,
   |    Дата КАК ДатаДокумента,
   |    РеализацияТоваровУслуг.Организация,
   |    РеализацияТоваровУслуг.Организация КАК ЮрФизЛицо,
   |    РеализацияТоваровУслуг.Организация КАК Поставщик,
   |    РеализацияТоваровУслуг.Организация КАК Контрагент,
   |    РеализацияТоваровУслуг.Организация КАК Руководители,
   |    АдресДоставки КАК АдресДоставки,
   |    ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент
   |          ТОГДА Контрагент
   |          ИНАЧЕ Грузополучатель КОНЕЦ КАК Грузополучатель,
   |    ВЫБОР КОГДА Грузоотправитель = &ПустойКонтрагент
   |          ТОГДА РеализацияТоваровУслуг.Организация
   |          ИНАЧЕ Грузоотправитель КОНЕЦ КАК Грузоотправитель,
   |    БанковскийСчетОрганизации КАК БанковскийСчет,
   |    Контрагент КАК Покупатель,
   |    Контрагент КАК Плательщик,
   |    Сделка,
   |    ДоговорКонтрагента.Представление  КАК Основание,
   |    ДоговорКонтрагента.ВедениеВзаиморасчетов КАК ВедениеВзаиморасчетов,
   |    ОтветственныеЛица.ФизическоеЛицо КАК ОтветственноеЛицо,
   |    ПРЕДСТАВЛЕНИЕ(
   |    ВЫБОР    КОГДА РеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете
   |            ТОГДА ЕСТЬNULL(ТаблицаСоответствиеОрганизации.ПодразделениеОрганизации, """")
   |            ИНАЧЕ РеализацияТоваровУслуг.Подразделение
   |    КОНЕЦ) КАК ПредставлениеПодразделения,
   |    ВЫБОР    КОГДА РеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете
   |            ТОГДА ЕСТЬNULL(ТаблицаСоответствиеОрганизации.ПодразделениеОрганизации, """")
   |            ИНАЧЕ РеализацияТоваровУслуг.Подразделение
   |    КОНЕЦ КАК Подразделение,
   |    ВалютаДокумента,
   |    КурсВзаиморасчетов      КАК Курс,
   |    КратностьВзаиморасчетов КАК Кратность,
   |    УчитыватьНДС,
   |    СуммаВключаетНДС,
   |    ОтпускРазрешил,
   |    ОтпускПроизвел,
   |    ДоверенностьНомер,
   |    ДоверенностьДата,
   |    ДоверенностьВыдана,
   |    ДоверенностьЧерезКого
   |ИЗ
   |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
   |
   |ЛЕВОЕ СОЕДИНЕНИЕ
   |    РегистрСведений.ОтветственныеЛица.СрезПоследних(&ДатаСреза, СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК ОтветственныеЛица
   |ПО
   |    ОтветственныеЛица.СтруктурнаяЕдиница = РеализацияТоваровУслуг.Склад
   |ЛЕВОЕ СОЕДИНЕНИЕ
   |(
   |    ВЫБРАТЬ
   |        СоответсвиеПодразделений.Подразделение,
   |        СоответсвиеПодразделений.Организация,
   |        МИНИМУМ(СоответсвиеПодразделений.ПодразделениеОрганизации) КАК ПодразделениеОрганизации,
   |        МАКСИМУМ(СоответсвиеПодразделений.ПодразделениеОрганизации) КАК ПодразделениеОрг
   |    ИЗ
   |        РегистрСведений.СоответствиеПодразделенийИПодразделенийОрганизаций КАК СоответсвиеПодразделений
   |    ГДЕ
   |        Подразделение = &Подразделение
   |        И Организация = &Организация
   |        И Организация <> ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
   |        И Подразделение <> ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)
   |    СГРУППИРОВАТЬ ПО
   |        Подразделение,
   |        Организация
   |    ИМЕЮЩИЕ
   |        КОЛИЧЕСТВО(*) = 1
   |) ТаблицаСоответствиеОрганизации
   |ПО
   |    ТаблицаСоответствиеОрганизации.Подразделение = РеализацияТоваровУслуг.Подразделение
   |    И ТаблицаСоответствиеОрганизации.Организация = РеализацияТоваровУслуг.Организация
   |ГДЕ
   |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
   |";

   ТекстЗапросаТовары =    "ВЫБРАТЬ
   |    ВложенныйЗапрос.Номенклатура                                  КАК Номенклатура,
   |    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК ТоварНаименование,
   |    ВложенныйЗапрос.Номенклатура." + ТоварКод + "                 КАК ТоварКод,
   |    ВложенныйЗапрос.ЕдиницаИзмерения.Представление                КАК БазоваяЕдиницаНаименование,
   |    ВложенныйЗапрос.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код  КАК БазоваяЕдиницаКодПоОКЕИ,
   |    ВложенныйЗапрос.ЕдиницаИзмерения     КАК ЕдиницаИзмерения,
   |    ВложенныйЗапрос.ЕдиницаИзмеренияМест.Представление            КАК ВидУпаковки,
   |    ВложенныйЗапрос.КоэффициентМест / ВложенныйЗапрос.Коэффициент КАК КоличествоВОдномМесте,
   |    ВЫБОР
   |        КОГДА ВложенныйЗапрос.КоличествоМест > 0 ТОГДА ВложенныйЗапрос.КоличествоМест * ВложенныйЗапрос.ЕдиницаИзмеренияМест.Вес
   |        ИНАЧЕ ВложенныйЗапрос.Количество * ВложенныйЗапрос.ЕдиницаИзмерения.Вес
   |    КОНЕЦ КАК МассаБрутто,
   |    ВложенныйЗапрос.Характеристика       КАК Характеристика,
   |    ВложенныйЗапрос.Серия                КАК Серия,
   |    ВложенныйЗапрос.СтавкаНДС            КАК СтавкаНДС,
   |    ВложенныйЗапрос.Цена                 КАК Цена,
   |    ВЫБОР
   |        КОГДА((ВложенныйЗапрос.ПроцентСкидкиНаценки = 0) И
   |              (ВложенныйЗапрос.ПроцентАвтоматическихСкидок = 0))
   |    ТОГДА ЛОЖЬ
   |    ИНАЧЕ Истина
   |    КОНЕЦ                                КАК ЕстьСкидкиПоСтроке,
   |    ВложенныйЗапрос.Количество           КАК Количество,
   |    ВложенныйЗапрос.КоличествоМест       КАК КоличествоМест,
   |    ВложенныйЗапрос.Сумма                КАК Сумма,
   |    ВложенныйЗапрос.СуммаНДС             КАК СуммаНДС,
   |    ВложенныйЗапрос.НомерСтроки          КАК НомерСтроки,
   |    ВложенныйЗапрос.Метка                КАК Метка
   |ИЗ
   |
   |    (
   |    ВЫБРАТЬ
   |        РеализацияТоваровУслуг.Номенклатура,
   |        РеализацияТоваровУслуг.Коэффициент,
   |        РеализацияТоваровУслуг.ЕдиницаИзмерения,
   |        РеализацияТоваровУслуг.ЕдиницаИзмеренияМест,
   |        РеализацияТоваровУслуг.ЕдиницаИзмеренияМест.Коэффициент     КАК КоэффициентМест,
   |        РеализацияТоваровУслуг.ХарактеристикаНоменклатуры           КАК Характеристика,
   |        РеализацияТоваровУслуг.СерияНоменклатуры                    КАК Серия,
   |        РеализацияТоваровУслуг.СтавкаНДС,
   |        РеализацияТоваровУслуг.Цена * &Курс / &Кратность            КАК Цена,
   |        РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
   |        РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок,
   |        СУММА(РеализацияТоваровУслуг.Количество)                    КАК Количество,
   |        СУММА(РеализацияТоваровУслуг.КоличествоМест)                КАК КоличествоМест,
   |        СУММА(РеализацияТоваровУслуг.Сумма    * &Курс / &Кратность) КАК Сумма,
   |        СУММА(РеализацияТоваровУслуг.СуммаНДС * &Курс / &Кратность) КАК СуммаНДС,
   |        МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки)                 КАК НомерСтроки,
   |        0                                                           КАК Метка
   |    ИЗ
   |        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
   |    ГДЕ
   |        РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
   |
   |СГРУППИРОВАТЬ ПО
   |        РеализацияТоваровУслуг.Номенклатура,
   |        РеализацияТоваровУслуг.Коэффициент,
   |        РеализацияТоваровУслуг.ЕдиницаИзмерения,
   |        РеализацияТоваровУслуг.ЕдиницаИзмеренияМест,
   |        РеализацияТоваровУслуг.ХарактеристикаНоменклатуры,
   |        РеализацияТоваровУслуг.СерияНоменклатуры,
   |        РеализацияТоваровУслуг.СтавкаНДС,
   |        РеализацияТоваровУслуг.Цена,
   |        РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
   |        РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок
   |    ) КАК ВложенныйЗапрос
   |";
   СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("РеализацияТоваровУслуг");
   Если НЕ БезУслуг Тогда
       
       
       ТекстЗапросаТовары = ТекстЗапросаТовары + "
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    РеализацияТоваровУслуг.Номенклатура                  КАК Номенклатура,
       |    " + СтрокаВыборкиПоляСодержания + "                  КАК ТоварНаименование,
       |    РеализацияТоваровУслуг.Номенклатура." + ТоварКод + " КАК ТоварКод,
       |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК БазоваяЕдиницаНаименование,
       |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
       |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
       |    NULL                                                 КАК ВидУпаковки,
       |    NULL                                                 КАК КоличествоВОдномМесте,
       |    0                                                    КАК МассаБрутто,
       |    NULL                                                 КАК Характеристика,
       |    NULL                                                 КАК Серия,
       |    РеализацияТоваровУслуг.СтавкаНДС                     КАК СтавкаНДС,
       |    РеализацияТоваровУслуг.Цена * &Курс / &Кратность     КАК Цена,
       |    ВЫБОР
       |        КОГДА(РеализацияТоваровУслуг.ПроцентСкидкиНаценки = 0)
       |    ТОГДА ЛОЖЬ
       |    ИНАЧЕ Истина
       |    КОНЕЦ                                                КАК ЕстьСкидкиПоСтроке,
       |    РеализацияТоваровУслуг.Количество                    КАК Количество,
       |    NULL                                                 КАК КоличествоМест,
       |    РеализацияТоваровУслуг.Сумма    * &Курс / &Кратность КАК Сумма,
       |    РеализацияТоваровУслуг.СуммаНДС * &Курс / &Кратность КАК СуммаНДС,
       |    РеализацияТоваровУслуг.НомерСтроки                   КАК НомерСтроки,
       |    1                                                    КАК Метка
       |ИЗ
       |    Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
       |
       |ГДЕ
       |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
       |";
   КонецЕсли;
   
   ТекстЗапросаТовары = ТекстЗапросаТовары + "
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |    РеализацияТоваровУслуг.Номенклатура                    КАК Номенклатура,
   |    ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК ТоварНаименование,
   |    РеализацияТоваровУслуг.Номенклатура." + ТоварКод + "   КАК ТоварКод,
   |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление               КАК БазоваяЕдиницаНаименование,
   |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
   |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков                             КАК ЕдиницаИзмерения,
   |    NULL                                                  КАК ВидУпаковки,
   |    NULL                                                  КАК КоличествоВОдномМесте,
   |    РеализацияТоваровУслуг.Количество * РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Вес КАК МассаБрутто,
   |    NULL                                                  КАК Характеристика,
   |    NULL                                                  КАК Серия,
   |    ""Без НДС""                                           КАК СтавкаНДС,
   |    РеализацияТоваровУслуг.Цена * &Курс / &Кратность      КАК Цена,
   |    Ложь                                                  КАК ЕстьСкидкиПоСтроке,
   |    РеализацияТоваровУслуг.Количество                     КАК Количество,
   |    NULL                                                  КАК КоличествоМест,
   |    РеализацияТоваровУслуг.Сумма * &Курс / &Кратность     КАК Сумма,
   |    0                                                     КАК СуммаНДС,
   |    РеализацияТоваровУслуг.НомерСтроки                    КАК НомерСтроки,
   |    2                                                     КАК Метка
   |ИЗ
   |    Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
   |
   |ГДЕ
   |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
   |
   |
   |УПОРЯДОЧИТЬ ПО Метка ВОЗР, НомерСтроки ВОЗР
   |
   |";
   
   ТабДокумент  = Новый ТабличныйДокумент;
   
   // Зададим параметры печатной формы по умолчанию
   ТабДокумент.ПолеСверху              = 0;
   ТабДокумент.ПолеСлева               = 0;
   ТабДокумент.ПолеСнизу               = 0;
   ТабДокумент.ПолеСправа              = 0;
   ТабДокумент.РазмерКолонтитулаСверху = 0;
   ТабДокумент.РазмерКолонтитулаСнизу  = 0;
   ТабДокумент.АвтоМасштаб             = Истина;
   ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;
   
   // Восстановим установленные пользователем параметры печатной формы
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_ТОРГ12";
   
   Макет = ПолучитьОбщийМакет("ТОРГ12");
   
   ПервыйДокумент = Истина;
   
   Для каждого Ссылка Из МассивОбъектов Цикл
       
       Если Не ПервыйДокумент Тогда
           ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
       КонецЕсли;
       ПервыйДокумент = Ложь;
       
       НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;

       Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("ДатаСреза",          Ссылка.Дата);
       Запрос.УстановитьПараметр("СтруктурнаяЕдиница", Ссылка.Склад);
       Запрос.УстановитьПараметр("ТекущийДокумент",    Ссылка);
       Запрос.УстановитьПараметр("ПустойКонтрагент",   Справочники.Контрагенты.ПустаяСсылка());
       Запрос.УстановитьПараметр("Организация",        Ссылка.Организация);
       Запрос.УстановитьПараметр("Подразделение",      Ссылка.Подразделение);

       Запрос.Текст = ТекстЗапросаШапка;
       
       Шапка = Запрос.Выполнить().Выбрать();
       Шапка.Следующий();
       
       Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
   
       // Вычислим курс документа для печати
       Если Ссылка.ВалютаДокумента <> мВалютаРегламентированногоУчета
          И Ссылка.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах
          И Ссылка.ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом Тогда
           
           ЗапросКурсАванса = Новый Запрос;
           ЗапросКурсАванса.УстановитьПараметр("ДокументСсылка", Ссылка);
           ЗапросКурсАванса.Текст =
           "ВЫБРАТЬ
           |    Док.СуммаВзаиморасчетов,
           |    Док.СуммаРегл
           |ИЗ
           |    Документ.РеализацияТоваровУслуг.ДокументыРасчетовСКонтрагентом КАК Док
           |ГДЕ Док.Ссылка = &ДокументСсылка
           |ИТОГИ СУММА(СуммаВзаиморасчетов), СУММА(СуммаРегл) ПО ОБЩИЕ";
           
           Выборка = ЗапросКурсАванса.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
           Если Выборка.Следующий() Тогда
               КурсОплаты                 = ?(Выборка.СуммаВзаиморасчетов = 0, 0, Выборка.СуммаРегл/Выборка.СуммаВзаиморасчетов);
               ВыборкаСуммаВзаиморасчетов = Выборка.СуммаВзаиморасчетов;
               ВыборкаСуммаРегл           = Выборка.СуммаРегл;
           Иначе
               КурсОплаты                 = 0;
               ВыборкаСуммаВзаиморасчетов = 0;
               ВыборкаСуммаРегл           = 0;
           КонецЕсли;
           
           СуммаВзаиморасчетов = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(УчетНДС.ПолучитьСуммуДокументаСНДС(Ссылка),
           Ссылка.ВалютаДокумента, Ссылка.ДоговорКонтрагента.ВалютаВзаиморасчетов,
           ЗаполнениеДокументов.КурсДокумента(Ссылка, мВалютаРегламентированногоУчета), Ссылка.КурсВзаиморасчетов,
           ЗаполнениеДокументов.КратностьДокумента(Ссылка, мВалютаРегламентированногоУчета), Ссылка.КратностьВзаиморасчетов);
           НеоплаченнаяСумма = СуммаВзаиморасчетов - ВыборкаСуммаВзаиморасчетов;
           Если НеоплаченнаяСумма > 0 Тогда
               КурсДляПечати = (НеоплаченнаяСумма * Ссылка.КурсВзаиморасчетов + ВыборкаСуммаРегл)/(НеоплаченнаяСумма + ВыборкаСуммаВзаиморасчетов);
           Иначе
               КурсДляПечати = КурсОплаты;
           КонецЕсли;
           
           Если КурсДляПечати = 0 Тогда
               Запрос.УстановитьПараметр("Курс",      Ссылка.КурсВзаиморасчетов);
               Запрос.УстановитьПараметр("Кратность", ?(Ссылка.КратностьВзаиморасчетов=0,1,Ссылка.КратностьВзаиморасчетов));
           Иначе
               Запрос.УстановитьПараметр("Курс",      КурсДляПечати);
               Запрос.УстановитьПараметр("Кратность", 1);
           КонецЕсли;
           
       ИначеЕсли Ссылка.ВалютаДокумента = Ссылка.ДоговорКонтрагента.ВалютаВзаиморасчетов Тогда
           
           // Документ оформлен в валюте взаиморасчетов
           Запрос.УстановитьПараметр("Курс", Ссылка.КурсВзаиморасчетов);
           Запрос.УстановитьПараметр("Кратность", ?(Ссылка.КратностьВзаиморасчетов=0,1,Ссылка.КратностьВзаиморасчетов));
           
       Иначе
           
           // Документ оформлен в валюте регламентированного учета
           Запрос.УстановитьПараметр("Курс",      1);
           Запрос.УстановитьПараметр("Кратность", 1);
           
       КонецЕсли;
   
       Запрос.Текст = ТекстЗапросаТовары;
   
       ЗапросТовары = Запрос.Выполнить().Выгрузить();
       
       // Выводим общие реквизиты шапки
       СведенияОПоставщике       = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо,        Шапка.ДатаДокумента,, Шапка.БанковскийСчет);
       СведенияОПокупателе       = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель,       Шапка.ДатаДокумента);
       СведенияОГрузополучателе  = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузополучатель,  Шапка.ДатаДокумента);
       СведенияОГрузоотправитель = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента);
       
       ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
       ОбластьМакета.Параметры.Заполнить(Шапка);
       ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);
       ОбластьМакета.Параметры.ДатаДокумента  = Шапка.ДатаДокумента;
       
       Если Шапка.ЮрФизЛицо = Шапка.Грузоотправитель Тогда
           ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике);
       Иначе
           ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузоотправитель, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет");
       КонецЕсли;
       
       ОбластьМакета.Параметры.ПредставлениеПодразделения = Шапка.Подразделение;
       
       ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет");
       
       Если СокрЛП(Шапка.АдресДоставки) <> "" Тогда
           ОбластьМакета.Параметры.АдресДоставки = УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдресаПоСтрока(Шапка.АдресДоставки);
       Иначе
           ОбластьМакета.Параметры.АдресДоставки = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, "ФактическийАдрес");
       КонецЕсли;
       
       ОбластьМакета.Параметры.ПредставлениеПоставщика  = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике);
       ОбластьМакета.Параметры.ПредставлениеПлательщика = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПокупателе);
       
       Если Шапка.ВедениеВзаиморасчетов <> Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам
           И Шапка.ВедениеВзаиморасчетов <> Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоСчетам Тогда
           ОбластьМакета.Параметры.Основание = Шапка.Основание;
       Иначе
           Если ЗначениеЗаполнено(Шапка.Сделка) Тогда
               ОбластьМакета.Параметры.Основание = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка.Сделка, Строка(Шапка.Сделка.Метаданные().Синоним));
           КонецЕсли;
       КонецЕсли;
       
       // Выводим всевозможные коды
       ОбластьМакета.Параметры.ОрганизацияПоОКПО     = СведенияОГрузоотправитель.КодПоОКПО;
       ОбластьМакета.Параметры.ВидДеятельностиПоОКДП = "";
       ОбластьМакета.Параметры.ГрузополучательПоОКПО = СведенияОГрузополучателе.КодПоОКПО;
       ОбластьМакета.Параметры.ПоставщикПоОКПО       = СведенияОПоставщике.КодПоОКПО;
       ОбластьМакета.Параметры.ПлательщикПоОКПО      = СведенияОПокупателе.КодПоОКПО;
       ОбластьМакета.Параметры.ОснованиеНомер        = "";
       ОбластьМакета.Параметры.ОснованиеДата         = "";
       ОбластьМакета.Параметры.ТранспортнаяНакладнаяНомер = "";
       ОбластьМакета.Параметры.ТранспортнаяНакладнаяДата  = "";
       
       ТабДокумент.Вывести(ОбластьМакета);
       
       НомерСтраницы   = 1;
       
       КоличествоСтрок = ЗапросТовары.Количество();
       
       // инициализация итогов по странице
       ИтогоМассаБруттоНаСтранице = 0;
       ИтогоМестНаСтранице        = 0;
       ИтогоКоличествоНаСтранице  = 0;
       ИтогоСуммаНаСтранице       = 0;
       ИтогоНДСНаСтранице         = 0;
       ИтогоСуммаСНДСНаСтранице   = 0;
       
       // инициализация итогов по документу
       ИтогоМассаБрутто = 0;
       ИтогоМест        = 0;
       ИтогоКоличество  = 0;
       ИтогоСуммаСНДС   = 0;
       ИтогоСумма       = 0;
       ИтогоНДС         = 0;
       НомерСтроки      = 0;
       
       // Создаем массив для проверки вывода
       МассивВыводимыхОбластей = Новый Массив;
       
       // Выводим многострочную часть докмента
       ЗаголовокТаблицы        = Макет.ПолучитьОбласть("ЗаголовокТаб");
       ОбластьМакета           = Макет.ПолучитьОбласть("Строка");
       ОбластьИтоговПоСтранице = Макет.ПолучитьОбласть("ИтогоПоСтранице");
       ОбластьПодвала          = Макет.ПолучитьОбласть("Подвал");
       ОбластьМакетаВсего      = Макет.ПолучитьОбласть("Всего");
       Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
           
           Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
               Продолжить;
           КонецЕсли;
           
           НомерСтроки = НомерСтроки + 1;
           
           ОбластьМакета.Параметры.Заполнить(ВыборкаСтрок);
           ОбластьМакета.Параметры.Номер             = ЗапросТовары.Индекс(ВыборкаСтрок) + 1;
           ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование)
           + ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаСтрок)
           + ?(ВыборкаСтрок.Метка = 2, " (возвратная тара)", "");
           
           Если НЕ ЗначениеЗаполнено(ЕдиницаИзмеренияВеса) Тогда
               МассаБрутто = 0;
           Иначе
               МассаБрутто = ВыборкаСтрок.МассаБрутто;
               МассаБрутто = ?(МассаБрутто <> Неопределено И МассаБрутто <> NULL, МассаБрутто, 0);
           КонецЕсли;
           
           Мест        = ВыборкаСтрок.КоличествоМест;
           Мест        = ?(Мест <> Неопределено И Мест <> NULL, Мест, 0);
           
           Количество  = ВыборкаСтрок.Количество;
           СуммаСНДС   = Окр((ВыборкаСтрок.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)), 2);
           СуммаНДС    = Окр(ВыборкаСтрок.СуммаНДС, 2);
           СуммаБезНДС = СуммаСНДС  - СуммаНДС;
           
           ОбластьМакета.Параметры.МассаБрутто = МассаБрутто;
           ОбластьМакета.Параметры.СуммаСНДС   = СуммаСНДС;
           ОбластьМакета.Параметры.СуммаНДС    = СуммаНДС;
           ОбластьМакета.Параметры.СтавкаНДС   = ВыборкаСтрок.СтавкаНДС;
           ОбластьМакета.Параметры.СуммаБезНДС = СуммаБезНДС;
           
           Если Шапка.СуммаВключаетНДС
               Или ВыборкаСтрок.ЕстьСкидкиПоСтроке Тогда
               ОбластьМакета.Параметры.Цена = ?(Количество = 0, 0, СуммаБезНДС / Количество);
           Иначе
               ОбластьМакета.Параметры.Цена = ВыборкаСтрок.Цена;
           КонецЕсли;
           
           Если НомерСтроки = 1 Тогда // первая срока
               
               ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
               ТабДокумент.Вывести(ЗаголовокТаблицы);
               
           Иначе
               
               МассивВыводимыхОбластей.Очистить();
               МассивВыводимыхОбластей.Добавить(ОбластьМакета);
               МассивВыводимыхОбластей.Добавить(ОбластьИтоговПоСтранице);
               Если НомерСтроки = КоличествоСтрок Тогда
                   МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
                   МассивВыводимыхОбластей.Добавить(ОбластьМакетаВсего);
               КонецЕсли;        
               
               Если НомерСтроки <> 1 И НЕ ФормированиеПечатныхФормСервер.ПроверитьВыводТабличногоДокумента(ТабДокумент, МассивВыводимыхОбластей) Тогда
                   
                   ОбластьИтоговПоСтранице.Параметры.ИтогМассаБруттоПоСтранице = ИтогоМассаБруттоНаСтранице;
                   ОбластьИтоговПоСтранице.Параметры.ИтогМестПоСтранице        = ИтогоМестНаСтранице;
                   ОбластьИтоговПоСтранице.Параметры.ИтогКоличествоПоСтранице  = ИтогоКоличествоНаСтранице;
                   ОбластьИтоговПоСтранице.Параметры.ИтогСуммыПоСтранице       = ИтогоСуммаНаСтранице;
                   ОбластьИтоговПоСтранице.Параметры.ИтогНДСПоСтранице         = ИтогоНДСНаСтранице;
                   ОбластьИтоговПоСтранице.Параметры.ИтогСуммыСНДСПоСтранице   = ИтогоСуммаСНДСНаСтранице;
                   
                   ТабДокумент.Вывести(ОбластьИтоговПоСтранице);
                   
                   // очистим итоги по странице
                   ИтогоМассаБруттоНаСтранице = 0;
                   ИтогоМестНаСтранице        = 0;
                   ИтогоКоличествоНаСтранице  = 0;
                   ИтогоСуммаНаСтранице       = 0;
                   ИтогоНДСНаСтранице         = 0;
                   ИтогоСуммаСНДСНаСтранице   = 0;
                   
                   НомерСтраницы = НомерСтраницы + 1;
                   ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                   ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
                   ТабДокумент.Вывести(ЗаголовокТаблицы);
                   
               КонецЕсли;
               
           КонецЕсли;
           
           ТабДокумент.Вывести(ОбластьМакета);
           
           // увеличим итоги по странице
           ИтогоМассаБруттоНаСтранице = ИтогоМассаБруттоНаСтранице + МассаБрутто;
           ИтогоМестНаСтранице        = ИтогоМестНаСтранице        + Мест;
           ИтогоКоличествоНаСтранице  = ИтогоКоличествоНаСтранице  + Количество;
           ИтогоСуммаНаСтранице       = ИтогоСуммаНаСтранице       + СуммаБезНДС;
           ИтогоНДСНаСтранице         = ИтогоНДСНаСтранице         + СуммаНДС;
           ИтогоСуммаСНДСНаСтранице   = ИтогоСуммаСНДСНаСтранице   + СуммаСНДС;
           
           // увеличим итоги по дукументу
           ИтогоМассаБрутто = ИтогоМассаБрутто + МассаБрут
3 den17
 
05.12.11
08:47
Недостаточно фактических параметров
4 John83
 
05.12.11
09:02
значит недостаточно фактических параметров
попробуй при добавлении в самом справочнике прописать эти параметры
5 PuhUfa
 
05.12.11
09:05
В модуле объекта

Функция ПечатьТОРГ12(БезУслуг = Ложь)
//тут код из оригинала
КонецФункции

Функция Печать() Экспорт
   Накладная = ПечатьТОРГ12();
   Возврат Накладная;
КонецФункции // Печать

В модуле формы:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Таб = Печать();
   Таб.ОтображатьСетку = Ложь;
     Таб.Защита = Ложь;
     Таб.ТолькоПросмотр = Ложь;
     Таб.ОтображатьЗаголовки = Ложь;
   Таб.Показать();
КонецПроцедуры
6 den17
 
05.12.11
09:20
Функция ПечатьТОРГ12(МассивОбъектов, ОбъектыПечати, БезУслуг = Ложь)
//тут код из оригинала

КонецФункции

Функция Печать() Экспорт
   Накладная = ПечатьТОРГ12();
   Возврат Накладная;
КонецФункции // Печать

При Ctrl+F7 пишет {ВнешняяОбработка.МК_ТОРГ12.МодульОбъекта(1071,17)}: Недостаточно фактических параметров (ПечатьТОРГ12)
7 den17
 
05.12.11
09:21
Ну всё это конец.. Сейчас начнут разбивать молотком мой значёк 1С-Проф))
8 PuhUfa
 
05.12.11
09:22
(6) займись лучше кройкой и шитьем...
9 John83
 
05.12.11
09:23
(6) ээ... так параметры кто за тебя передавать будет? о_О
10 den17
 
05.12.11
09:25
А где? Ну. в смысле какие?
11 John83
 
05.12.11
09:25
(8) он же так покалечиться может :)
12 John83
 
05.12.11
09:26
вот тут
Накладная = ПечатьТОРГ12(Массив, Объекты);
13 PuhUfa
 
05.12.11
09:28
(12) не надо там ничего передавать -)
14 den17
 
05.12.11
09:29
Так если я их туда добавлю, то про каждый из них программа пишет, что "переменная не определена", а если ничего не добавлять, то недостаточно фактических параметров..
15 PuhUfa
 
05.12.11
09:30
(14) по чем "значёк 1С-Проф" купил?
16 den17
 
05.12.11
09:32
Снял с пьяного 1с-ника