Имя: Пароль:
1C
 
Не удалось сформировать внешнюю печатную форму!
0 tip22
 
07.07.11
21:29
8.1  УТ после обновления перестала печататься внешняя печатная форма ..
ошибка такая

Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (Ссылка) , печатную форму переподключал после обновления , код посмотрел вроде все нормально , что могло поменяться ?

Функция Печать()Экспорт
   
   
   Тип = "Счет";
   
   ПараметрыПечати =ПолучитьПараметрыПечатиСчетаЗаказа(Тип);
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";

   Макет = ПолучитьОбщийМакет("СчетЗаказ1");

   // Выводим шапку накладной

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

   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

   ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезКодов");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезСкидок");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезКодовИСкидок");
   КонецЕсли;

   ТабДокумент.Вывести(ОбластьНомера);
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;
       ТабДокумент.Присоединить(ОбластьКодов);
   КонецЕсли;
   ОбластьТовар.Параметры.Товар = "Товары (работы, услуги)";
   ТабДокумент.Присоединить(ОбластьТовар);
   ТабДокумент.Присоединить(ОбластьДанных);
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ТабДокумент.Присоединить(ОбластьСкидок);
   КонецЕсли;
   ТабДокумент.Присоединить(ОбластьСуммы);

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

   ОбластьТовар = Макет.ПолучитьОбласть("Строка|Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезКодов");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезСкидок");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезКодовИСкидок");
   КонецЕсли;

   Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл

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

       ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Вывести(ОбластьНомера);

       Если ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;

       ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьТовар);
       ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьДанных);

       Если ПараметрыПечати.ЕстьСкидки Тогда
           ОбластьСкидок.Параметры.Заполнить(ПараметрыПозиции);
           ТабДокумент.Присоединить(ОбластьСкидок);
       КонецЕсли;

       ОбластьСуммы.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьСуммы);
       
   КонецЦикла;

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

   ОбластьТовар = Макет.ПолучитьОбласть("Итого|Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезКодов");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезСкидок");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезКодовИСкидок");
   КонецЕсли;

   ТабДокумент.Вывести(ОбластьНомера);
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ТабДокумент.Присоединить(ОбластьКодов);
   КонецЕсли;
   ТабДокумент.Присоединить(ОбластьТовар);
   ТабДокумент.Присоединить(ОбластьДанных);
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьСкидок.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьСкидок);
   КонецЕсли;
   ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Присоединить(ОбластьСуммы);

   // Вывести ИтогоНДС
   Если ПараметрыПечати.УчитыватьНДС Тогда
       ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
       ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
       ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
       ОбластьСкидок = Макет.ПолучитьОбласть("ИтогоНДС|Скидка");
       ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

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

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

       ОбластьТовар = Макет.ПолучитьОбласть("ВсегоКОплате|Товар");
       Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ВсегоКОплате|ТоварБезКодов");
       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ВсегоКОплате|ТоварБезСкидок");
       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ВсегоКОплате|ТоварБезКодовИСкидок");
       КонецЕсли;

       ТабДокумент.Вывести(ОбластьНомера);
       Если ПараметрыПечати.ВыводитьКоды Тогда
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;
       ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьТовар);
       ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьДанных);
       Если ПараметрыПечати.ЕстьСкидки Тогда
           ТабДокумент.Присоединить(ОбластьСкидок);
       КонецЕсли;
       ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьСуммы);
       
   КонецЕсли;

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

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

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

КонецФункции // ПечатьАктаОбОказанииУслуг()

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

   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();

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

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

   // Выводим шапку накладной

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

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

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

   ПараметрыПечати.Вставить("ЕстьСкидки", Ложь);
   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда
           ПараметрыПечати.ЕстьСкидки = Истина;
           Прервать;
       КонецЕсли;
   КонецЦикла;

   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   ПараметрыПечати.Вставить("ВыводитьКоды", Ложь);
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
       ПараметрыПечати.ВыводитьКоды = Истина;
       Колонка = "Артикул";
   ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
       ПараметрыПечати.ВыводитьКоды = Истина;
       Колонка = "Код";
   КонецЕсли;
   
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ПараметрыПечати.Вставить("ИмяКолонкиКодов", Колонка);
   КонецЕсли;

   Сумма    = 0;
   СуммаНДС = 0;
   ВсегоСкидок    = 0;
   ВсегоБезСкидок = 0;

   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
       
       ПараметрыПозиции = Новый Структура;

       ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);
       ПараметрыПозиции.Вставить("НомерСтроки", ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1);

       Если ПараметрыПечати.ВыводитьКоды Тогда
           Если Колонка = "Артикул" Тогда
               ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Артикул);
           Иначе
               ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Код);
           КонецЕсли;
       КонецЕсли;

       ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТовары.Количество);
       ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТовары.ЕдиницаИзмерения);
       ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТовары.Цена);
       ПараметрыПозиции.Вставить("Товар", СокрП(ВыборкаСтрокТовары.НаименованиеПолное)
                                                   + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары));

       Скидка = Ценообразование.ПолучитьСуммуСкидки(ВыборкаСтрокТовары.Сумма, ВыборкаСтрокТовары.Скидка);

       Если ПараметрыПечати.ЕстьСкидки Тогда
           ПараметрыПозиции.Вставить("Скидка", Скидка);
           ПараметрыПозиции.Вставить("СуммаБезСкидки", ВыборкаСтрокТовары.Сумма + Скидка);
       КонецЕсли;

       ПараметрыПозиции.Вставить("Сумма", ВыборкаСтрокТовары.Сумма);
       
       Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
       СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
       ВсегоСкидок    = ВсегоСкидок + Скидка;
       ВсегоБезСкидок = Сумма       + ВсегоСкидок;
       #Если ВнешнееСоединение Тогда
       WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
       #КонецЕсли

       Позиции.Добавить(ПараметрыПозиции);

   КонецЦикла;
   
   ПараметрыПечати.Вставить("Позиции", Позиции);

   // Вывести Итого
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ПараметрыПечати.Вставить("ВсегоСкидок", ВсегоСкидок);
       ПараметрыПечати.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
   КонецЕсли;
   ПараметрыПечати.Вставить("Всего", ОбщегоНазначения.ФорматСумм(Сумма));

   // Вывести ИтогоНДС
   Если ПараметрыПечати.УчитыватьНДС Тогда
       ПараметрыПечати.Вставить("НДС", ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:"));
       ПараметрыПечати.Вставить("ВсегоНДС", ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС")));
       ПараметрыПечати.Вставить("ВсегоКОплате", ОбщегоНазначения.ФорматСумм(Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС)));
   КонецЕсли;

   // Вывести Сумму прописью
   СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
   ПараметрыПечати.Вставить("ИтоговаяСтрока", "Всего наименований " + ЗапросТовары.Количество()
   + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента));
   ПараметрыПечати.Вставить("СуммаПрописью", ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента));

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

   КонецЕсли;
   #Если ВнешнееСоединение Тогда
   WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПечати);
   #КонецЕсли

   Возврат ПараметрыПечати;

КонецФункции //ПолучитьПараметрыПечатиСчетаЗаказа()
1 Лефмихалыч
 
07.07.11
21:31
номер строки в этой омерзительной простыне который смотреть?
2 PR
 
07.07.11
21:31
Спасибо Асмодею за то, что избавил нас от портянок :))

(0) Может все-таки СсылкаНаОбъект, а не ЭтотОбъект.Ссылка?
3 mehfk
 
07.07.11
21:34
(2) опередил. Курить реквизиты.
4 tip22
 
07.07.11
21:45
поправил , дальше  это вылетело

Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (ПолучитьОбщийМакет): Недопустимое значение параметра (параметр номер '1')
5 PR
 
07.07.11
21:47
(4) Так может почитать правила создания подключаемых внешних печатных форм?
6 Лефмихалыч
 
07.07.11
21:47
(4) ты снес обновлением этот общий макет
7 Лефмихалыч
 
07.07.11
21:48
вообще, гениальный креатив - для того, чтобы работала внешняя печатная форма чуток творчески переработать механизм внешних печ.форм, чтобы СсылкаНаОбъект стала просто ссылкой и еще добавить общий макет.
Это как голову под фуражку подгонять...
8 tip22
 
07.07.11
21:51
спасибо , скачал обработку проверку внешних печатных форм всё поправил , туплю , всем спасибо !!!
9 Поручик
 
08.07.11
00:38
(0) 22 в нике что означают?
10 Лефмихалыч
 
08.07.11
00:43
(9) либо 21 ник уже занят, либо пока подобрал почтовый сервис, на который таки пришло письмо с паролем... :)
AdBlock убивает бесплатный контент. 1Сергей