8.х Не работает внешняя форма после обновления

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

  1. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    [ver1c]Добрый день, после обновления 1С:Предприятие 8.2 (8.2.18.61)
    Бухгалтерия предприятия, редакция 3.0 (3.0.27.7)

    внешняя форма выдает ошибку

    " {ВнешняяОбработка.АКТд.МодульОбъекта(330)}: Метод объекта не обнаружен (ПолучитьДанныеДляПечатнойФормыАктОбОказанииУслуг)
    Возврат Документы.РеализацияТоваровУслуг.ПолучитьДанныеДляПечатнойФормыАктОбОказанииУслуг(ПараметрыПечати, МассивОбъектов);"

    Прошу оказать посильную помощь в устранении данной проблемы или хотя бы указать направление, где искать проблему (внешнюю форму писал не сам, найдена в интернете)



    Код:
    //{ ОПИСАНИЕ ИНТЕРФЕЙСОВ
    // Возвращает сведения о внешней обработке.
    Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.1.4.32");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Версия = "2.3.1";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Акт об оказании услуг(внешняя форма)'");
    НоваяКоманда.Идентификатор = "АКТип";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    НоваяКоманда.ПоказыватьОповещение = Истина;
    НоваяКоманда.Модификатор = "ПечатьMXL";
    
    Возврат ПараметрыРегистрации;
    
    КонецФункции
    
    // Интерфейс для запуска логики обработки
    //
    // Параметры
    // МассивОбъектов - Массив - массив ссылок на объекты печати
    // КоллекцияПечатныхФорм - ТаблицаЗначений - таблица содержащая информацию по печатным формам
    // ОбъектыПечати - СписокЗначений - ссылки на объекты печати
    // ПараметрыВывода - Структура - дополнительные параметры вывода (печать покомплектно и др.)
    //
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
    
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АКТип") Тогда
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
    КоллекцияПечатныхФорм,
    "АКТип", "Акт об оказании услуг (д)",
    ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати));
    
    КонецЕсли;
    
    КонецПроцедуры
    //}
    /////////////////////////////////////////////////////////////////////////////
    //{ ПЕЧАТЬ
    // Функция формирует табличный документ с печатной формой акта об оказании услуг
    //
    // Возвращаемое значение:
    //  Табличный документ - печатная форма акта
    //
    Функция ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати, ДополнительныеПараметрыПечатнойФормы=Неопределено)  Экспорт
    ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
    ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
    КонецЕсли;
    ВыводитьКоды = ДополнительнаяКолонкаПечатныхФормДокументов <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
    
    ВалютаРегламентированногоУчета   = Константы.ВалютаРегламентированногоУчета.Получить();
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб   = Истина;
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт";
    //{  MaxS  2013-02-06
    //Макет = УправлениеПечатью.ПолучитьМакет("Документ.РеализацияТоваровУслуг.ПФ_MXL_Акт");
    Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_Актип");
    //}
    
    ПараметрыПечати = Новый Структура();
    ДанныеАктаОбОказанииУслуг = ПолучитьДанныеДляПечатнойФормыАктОбОказанииУслуг(ПараметрыПечати, МассивОбъектов);
    
    Шапка	   = ДанныеАктаОбОказанииУслуг.ДанныеШапки;
    ТаблицаУслуги	 = ДанныеАктаОбОказанииУслуг.ТаблицаДокумента;
    
    ПервыйДокумент	= Истина;
    
    Шапка.Сбросить();
    Пока Шапка.СледующийПоЗначениюПоля("Ссылка") Цикл
    
    СведенияОбОрганизации	= БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);
    // { MaxS
    СведенияОКонтрагенте	 = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.ДатаДокумента);
    ПредставлениеПоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
    ПредставлениеПоставщикаРасширенное = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,ЮридическийАдрес,Телефоны,");
    ПредставлениеПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
    ПредставлениеПолучателяРасширенное = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,ИНН,ЮридическийАдрес,Телефоны,");
    ПредставлениеДоговора = "";
    ДоговорКонтрагентаНомер = Шапка.ДоговорКонтрагента.Номер;
    Если ЗначениеЗаполнено(ДоговорКонтрагентаНомер) Тогда
    ПредставлениеДоговора = ПредставлениеДоговора + " №"+Символы.НПП+ДоговорКонтрагентаНомер;
    КонецЕсли;
    ДоговорКонтрагентаДата = Шапка.ДоговорКонтрагента.Дата;
    Если ЗначениеЗаполнено(ДоговорКонтрагентаДата) Тогда
    ПредставлениеДоговора = ПредставлениеДоговора +Символы.НПП+"от"+Символы.НПП+Формат(ДоговорКонтрагентаДата,"ДФ=dd.MM.yyyy");
    КонецЕсли;
    //ПредставлениеПоставщикаРасширенное = ПредставлениеПоставщикаРасширенное + "; по договору" + ПредставлениеДоговора;
    
    ОбработатьДополнительныеПараметрыПечатнойФормы(Шапка,ДополнительныеПараметрыПечатнойФормы);
    
    ВыводитьДоговор = НЕ ПустаяСтрока(ПредставлениеДоговора) И
    ?(ДополнительныеПараметрыПечатнойФормы.Свойство("НастройкиПечатнойФормы")
    И ДополнительныеПараметрыПечатнойФормы.НастройкиПечатнойФормы.Свойство("ВыводитьДоговор")
    ,ДополнительныеПараметрыПечатнойФормы.НастройкиПечатнойФормы.ВыводитьДоговор, Истина);
    
    ВыводитьДанныеИсполнителя = ?(ДополнительныеПараметрыПечатнойФормы.Свойство("НастройкиПечатнойФормы")
    И ДополнительныеПараметрыПечатнойФормы.НастройкиПечатнойФормы.Свойство("ВыводитьДанныеИсполнителя")
    ,ДополнительныеПараметрыПечатнойФормы.НастройкиПечатнойФормы.ВыводитьДанныеИсполнителя, Истина);
    
    ОтветственныеЛицаОрганизации = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Организация, Шапка.ДатаДокумента, Шапка.ПодразделениеОрганизации);
    //ДолжностьИНазваниеОрганизации = ?(ЗначениеЗаполнено(ОтветственныеЛицаОрганизации.РуководительДолжность) И ВыводитьДанныеИсполнителя,
    //ОтветственныеЛицаОрганизации.РуководительДолжность.Наименование + " ","") + ПредставлениеПоставщика;
    
    ДолжностьИНазваниеОрганизации = ?(ЗначениеЗаполнено(ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление) И ВыводитьДанныеИсполнителя,
    ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление + " ","") +
    ПредставлениеПоставщика + Символы.ПС +
    ?(ВыводитьДанныеИсполнителя,ОтветственныеЛицаОрганизации.РуководительФИО.Фамилия + " " + ОтветственныеЛицаОрганизации.РуководительФИО.Имя + " " + ОтветственныеЛицаОрганизации.РуководительФИО.Отчество, "");
    
    // }
    
    Если ЗначениеЗаполнено(Шапка.Руководитель) Тогда
    Если Шапка.Руководитель = ОтветственныеЛицаОрганизации.Руководитель Тогда
    ЗаместительПоПриказу = ОтветственныеЛицаОрганизации.РуководительПредставление;
    Иначе
    ЗаместительПоПриказу = "(" + Шапка.ЗаРуководителяПоПриказу + " " +
    ФизическиеЛица.ФамилияИнициалыФизЛица(Шапка.Руководитель) + ")";
    КонецЕсли;
    Иначе
    ЗаместительПоПриказу = ОтветственныеЛицаОрганизации.РуководительПредставление;
    КонецЕсли;
    Если НЕ ПервыйДокумент Тогда
    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    
    ПервыйДокумент = Ложь;
    // Запомним номер строки, с которой начали выводить текущий документ.
    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
    
    ТаблицаУслуги = ПодготовитьТаблицуДокументаДляПечати(Шапка, ТаблицаУслуги, Ложь, Истина);
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияБПВызовСервера.СформироватьЗаголовокДокумента(Шапка, "Акт");
    // { MaxS
    //ПредставлениеПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
    Если ВыводитьДоговор Тогда
    ОбластьМакета.Параметры.ПредставлениеДоговора = " в соответствии с договором " + ПредставлениеДоговора;
    КонецЕсли;
    ОбластьМакета.Параметры.Поставщик = ПредставлениеПоставщика;
    ОбластьМакета.Параметры.Получатель = ПредставлениеПолучателя;
    // }
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщикаРасширенное;
    ОбластьМакета.Параметры.Поставщик	 = Шапка.Поставщик;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    // { MaxS
    Если ВыводитьДоговор Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Договор");
    ОбластьМакета.Параметры.ПредставлениеДоговора = ПредставлениеДоговора;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    КонецЕсли;
    
    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    //СведенияОКонтрагенте	 = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.ДатаДокумента);
    //ПредставлениеПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
    // }
    ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателяРасширенное;
    ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Комментарий");
    ОбластьМакета.Параметры.Комментарий = Шапка.Ссылка.Комментарий;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ЕстьСкидки = Ложь;
    // Вывести табличную часть
    ОбластьШапки = ?(ВыводитьКоды, "ШапкаСКодом", "ШапкаТаблицы");
    ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
    ОбластьМакета.Параметры.Заполнить(Шапка);
    Если ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ОбластьМакета.Параметры.ИмяКодАртикул = "Артикул";
    ИначеЕсли ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
    ОбластьМакета.Параметры.ИмяКодАртикул = "Код";
    КонецЕсли;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    ОбластьСтроки = ?(ВыводитьКоды, "СтрокаСКодом", "Строка");
    ОбластьСтроки = Макет.ПолучитьОбласть(ОбластьСтроки);
    НомерСтроки = 0;
    Для каждого СтрокаТабличнойЧасти Из ТаблицаУслуги Цикл
    НомерСтроки = НомерСтроки + 1;
    ОбластьСтроки.Параметры.Заполнить(СтрокаТабличнойЧасти);
    ОбластьСтроки.Параметры.НомерСтроки = НомерСтроки;
    ОбластьСтроки.Параметры.Товар = СокрЛП(СтрокаТабличнойЧасти.Товар);
    Если Шапка.ВалютаДокумента <> ВалютаРегламентированногоУчета Тогда
    
    Числ = ?(ЗначениеЗаполнено(СтрокаТабличнойЧасти.Сумма), СтрокаТабличнойЧасти.Сумма, 0);
    Знам = ?(ЗначениеЗаполнено(СтрокаТабличнойЧасти.Количество), СтрокаТабличнойЧасти.Количество, 1);
    ОбластьСтроки.Параметры.Цена = Числ/Знам;
    КонецЕсли;
    ТабличныйДокумент.Вывести(ОбластьСтроки);
    КонецЦикла;
    Если ТаблицаУслуги <> Неопределено Тогда
    Сумма	= ТаблицаУслуги.Итог("Сумма");
    СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС");
    Иначе
    Сумма	= 0;
    СуммаНДС = 0;
    КонецЕсли;
    ОбластьМакета = Макет.ПолучитьОбласть("Итого");
    ОбластьМакета.Параметры.Всего = ОбщегоНазначенияБПВызовСервера.ФорматСумм(Сумма);
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
    
    Если СуммаНДС <> 0 Тогда
    ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
    ОбластьМакета.Параметры.НДС	  = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
    Иначе
    ОбластьМакета.Параметры.ВсегоНДС = "-";
    ОбластьМакета.Параметры.НДС	  = "Без налога (НДС)";
    КонецЕсли;
    
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего оказано услуг " + НомерСтроки
    + ", на сумму " + ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКПрописи, ВалютаРегламентированногоУчета);
    ОбластьМакета.Параметры.СуммаПрописью  = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаКПрописи, ВалютаРегламентированногоУчета);
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    //{  MaxS nhps@mail.ru , благодарит за часть кода  http://infostart.ru/public/177097/
    ВыводитьПодписьЗаказчика = ?(ДополнительныеПараметрыПечатнойФормы.Свойство("НастройкиПечатнойФормы") И ДополнительныеПараметрыПечатнойФормы.НастройкиПечатнойФормы.Свойство("ВыводитьПодписьЗаказчика")
    ,ДополнительныеПараметрыПечатнойФормы.НастройкиПечатнойФормы.ВыводитьПодписьЗаказчика, Истина);
    Если ВыводитьПодписьЗаказчика Тогда
    
    ПредставлениеПолучателяВПодвале = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "СокращенноеНаименование,");
    ОсновноеКонтактноеЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Шапка.Получатель, "ОсновноеКонтактноеЛицо");
    РеквизитыКонтактногоЛица = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОсновноеКонтактноеЛицо, "Наименование,Фамилия,Имя,Отчество,Должность");
    
    ОтветственноеЛицоКонтрагента = ФизическиеЛица.ФамилияИнициалыФизЛица(Неопределено,РеквизитыКонтактногоЛица.Фамилия, РеквизитыКонтактногоЛица.Имя, РеквизитыКонтактногоЛица.Отчество);
    // MaxS если должности нет, то ничего не выводим
    ДолжностьИНазваниеКонтрагента = ?(ЗначениеЗаполнено(РеквизитыКонтактногоЛица.Должность),РеквизитыКонтактногоЛица.Должность + " " + ПредставлениеПолучателяВПодвале + Символы.ПС + РеквизитыКонтактногоЛица.Наименование ,"");
    
    ОбластьМакета.Параметры.ДолжностьИНазваниеКонтрагента = ДолжностьИНазваниеКонтрагента;
    ОбластьМакета.Параметры.ОтветственноеЛицоКонтрагента = ОтветственноеЛицоКонтрагента;
    КонецЕсли;
    //}
    
    Если ЗначениеЗаполнено(Шапка.Руководитель) Тогда
    Если Шапка.Руководитель = ОтветственныеЛицаОрганизации.Руководитель Тогда
    ЗаместительПоПриказу = ОтветственныеЛицаОрганизации.РуководительПредставление;
    Если ЗначениеЗаполнено(ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление) И ЗначениеЗаполнено(ПредставлениеПоставщика) Тогда
    ДолжностьИНазваниеОрганизации = "" + ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление + ", " + ПредставлениеПоставщика;
    ИначеЕсли ЗначениеЗаполнено(ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление) Тогда
    ДолжностьИНазваниеОрганизации = "" + ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление;
    Иначе
    ДолжностьИНазваниеОрганизации = "" + ПредставлениеПоставщика;
    КонецЕсли;
    Иначе
    ЗаместительПоПриказу = ФизическиеЛица.ФамилияИнициалыФизЛица(Шапка.Руководитель);
    Если ЗначениеЗаполнено(Шапка.ЗаРуководителяПоПриказу) Тогда
    ЗаместительПоПриказу = ЗаместительПоПриказу + ", " + Шапка.ЗаРуководителяПоПриказу;
    КонецЕсли;
    ДанныеОтветственногоЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(Шапка.Организация, Шапка.Руководитель, Шапка.ДатаДокумента);
    Если ЗначениеЗаполнено(ДанныеОтветственногоЛица.Должность) И ЗначениеЗаполнено(ПредставлениеПоставщика) Тогда
    ДолжностьИНазваниеОрганизации = "" + ДанныеОтветственногоЛица.Должность + ", " + ПредставлениеПоставщика;
    ИначеЕсли ЗначениеЗаполнено(ДанныеОтветственногоЛица.Должность) Тогда
    ДолжностьИНазваниеОрганизации = "" + ДанныеОтветственногоЛица.Должность;
    Иначе
    ДолжностьИНазваниеОрганизации = ПредставлениеПоставщика;
    КонецЕсли;
    КонецЕсли;
    Иначе
    ЗаместительПоПриказу = ОтветственныеЛицаОрганизации.РуководительПредставление;
    Если ЗначениеЗаполнено(ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление) И ЗначениеЗаполнено(ПредставлениеПоставщика) Тогда
    ДолжностьИНазваниеОрганизации = "" + ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление + ", " + ПредставлениеПоставщика;
    ИначеЕсли ЗначениеЗаполнено(ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление) Тогда
    ДолжностьИНазваниеОрганизации = "" + ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление;
    Иначе
    ДолжностьИНазваниеОрганизации = "" + ПредставлениеПоставщика;
    КонецЕсли;
    КонецЕсли;
    ОбластьМакета.Параметры.ДолжностьИНазваниеОрганизации = ДолжностьИНазваниеОрганизации;
    ОбластьМакета.Параметры.ЗаместительПоПриказу = ЗаместительПоПриказу;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    // В табличном документе зададим имя области, в которую был
    // выведен объект. Нужно для возможности печати покомплектно.
    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
    НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
    КонецЦикла;
    Возврат ТабличныйДокумент;
    КонецФункции
    Функция ПолучитьДанныеДляПечатнойФормыАктОбОказанииУслуг(ПараметрыПечати, МассивОбъектов)
    
    Возврат Документы.РеализацияТоваровУслуг.ПолучитьДанныеДляПечатнойФормыАктОбОказанииУслуг(ПараметрыПечати, МассивОбъектов);
    
    КонецФункции
    // Функция выполняет расчет рублевых сумм для вывода таблиц документа на печать
    //
    Функция ПодготовитьТаблицуДокументаДляПечати(ВыборкаСтрок, ТаблицаПоТоварам, ПечататьТовары, ПечататьУслуги)
    ТаблицаПоТоварам.Очистить();
    ВалютаРегламентированногоУчета   = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
    МассивРаспределения = Новый Массив;
    СуммаВзаиморасчетов  = 0;
    СуммаВзаиморасчетовНДС  = 0;
    ПерваяСтрокаДокумента  = Истина;
    СуммаВключаетНДС   = Неопределено;
    РасчетыВУсловныхЕдиницах= Неопределено;
    ДатаДокумента   = Неопределено;
    Пока ВыборкаСтрок.Следующий() Цикл
    
    СтрокаТаблицы = ТаблицаПоТоварам.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТаблицы, ВыборкаСтрок);
    
    Если ПерваяСтрокаДокумента Тогда
    СуммаВключаетНДС	= ВыборкаСтрок.СуммаВключаетНДС;
    РасчетыВУсловныхЕдиницах  = ВыборкаСтрок.РасчетыВУсловныхЕдиницах;
    ДатаДокумента	= ВыборкаСтрок.ДатаДокумента;
    
    НуженПересчетВРубли = Ложь;
    
    Если ВыборкаСтрок.Проведен
    И (ВыборкаСтрок.РасчетыВУсловныхЕдиницах
    ИЛИ (ВыборкаСтрок.ВалютаДокумента <> ВалютаРегламентированногоУчета И ВыборкаСтрок.ДатаДокумента >= '20090101000000')) Тогда
    НуженПересчетВРубли = Истина;
    КонецЕсли;
    
    ПерваяСтрокаДокумента = Ложь;
    
    КонецЕсли;
    
    Если НуженПересчетВРубли Тогда
    
    Если  СтрокаТаблицы.ВсегоРуб = 0 Тогда
    
    СтрокаТаблицы.Сумма = СтрокаТаблицы.Сумма;
    СтрокаТаблицы.СуммаНДС = СтрокаТаблицы.СуммаНДС;
    
    Иначе
    
    СтрокаТаблицы.Сумма = СтрокаТаблицы.ВсегоРуб - ?(СуммаВключаетНДС, 0, СтрокаТаблицы.НДСРуб);
    СтрокаТаблицы.СуммаНДС = СтрокаТаблицы.НДСРуб;
    
    КонецЕсли;
    
    СтрокаТаблицы.СуммаБезНДС = СтрокаТаблицы.Сумма - СтрокаТаблицы.СуммаНДС;
    
    СтрокаТаблицы.Цена = ?(СтрокаТаблицы.Количество = 0, 0, Окр(СтрокаТаблицы.Сумма/СтрокаТаблицы.Количество,2));
    
    КонецЕсли;
    
    
    КонецЦикла;
    
    Если НЕ ПечататьТовары ИЛИ НЕ ПечататьУслуги Тогда
    // Исключим строки из табличный частей, которые не удовлетворяют условиям печати. При выборке запросом их необходимо получать,
    // чтобы распределять сумма взаиморасчетов в рублях на все строки документа.
    Инд = ТаблицаПоТоварам.Количество() - 1;
    Пока Инд >= 0 Цикл
    СтрокаТовар = ТаблицаПоТоварам[Инд];
    
    Если СтрокаТовар.ID = 1 ИЛИ СтрокаТовар.ID = 2 Тогда // Товары или ВозвратнаяТара
    Если НЕ ПечататьТовары Тогда
    ТаблицаПоТоварам.Удалить(Инд);
    КонецЕсли;  
    ИначеЕсли СтрокаТовар.ID = 3 ИЛИ СтрокаТовар.ID = 4 Тогда // Услуги или АгентскиеУслуги
    Если НЕ ПечататьУслуги Тогда
    ТаблицаПоТоварам.Удалить(Инд);
    КонецЕсли;
    КонецЕсли;
    
    Инд = Инд - 1;
    КонецЦикла;
    КонецЕсли;
    Возврат ТаблицаПоТоварам;
    КонецФункции
    //}
    
    /////////////////////////////////////////////////////////////////////////////
    //{ Для ВнешняяОбработка.ФайлыДокументов (с) http://infostart.ru/public/180651/
    Процедура ЗаполнитьПараметрыСозданияТекущегоФайла(Шапка,ПараметрыСозданияФайла)
    
    Если ПараметрыСозданияФайла=Неопределено Тогда
    Возврат;
    КонецЕсли;
    
    ДатаДокумента = Шапка.Дата;
    
    Если КонецДня(ДатаДокумента)=КонецМесяца(ДатаДокумента) Тогда
    ШапкаДата = Формат(ДатаДокумента,"ДФ=yyyy-MM");
    Иначе
    ШапкаДата = Формат(ДатаДокумента,"ДФ=yyyy-MM-dd");
    КонецЕсли;
    
    ИмяФайла = ШапкаДата+"_АКТ ("+СокрЛП(Шапка.Поставщик.Наименование)+" - "+СокрЛП(Шапка.Получатель.Наименование)+")";
    ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла,"_");
    
    ПараметрыСозданияФайла.Вставить("ТекущийФайлИмя",ИмяФайла);
    
    
    КонецПроцедуры
    Процедура ОбработатьДополнительныеПараметрыПечатнойФормы(Шапка, ДополнительныеПараметрыПечатнойФормы)
    
    ЗаполнитьПараметрыСозданияТекущегоФайла(Шапка,ДополнительныеПараметрыПечатнойФормы);
    
    Если ТипЗнч(ДополнительныеПараметрыПечатнойФормы)<>Тип("Структура") Тогда
    ДополнительныеПараметрыПечатнойФормы = Новый Структура;
    КонецЕсли;
    
    НастройкиПечатнойФормы = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НастройкиПечатныхФорм",ЭтотОбъект.Метаданные().Имя);
    Если НЕ ЗначениеЗаполнено(НастройкиПечатнойФормы) Тогда
    Возврат;
    КонецЕсли;
    
    ДополнительныеПараметрыПечатнойФормы.Вставить("НастройкиПечатнойФормы",НастройкиПечатнойФормы);
    
    КонецПроцедуры
    //}
  2. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Нужно переделывать внешнюю обработку...
  3. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Подправить в определенных местах или же полностью переписывать обработку?
  4. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Думаю достаточно подправить... Посмотрите обращения к процедурам и функциям конфигурации, они скорее всего изменились...
    + нужно учесть, что теперь управляемое приложение...
  5. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Код:
    Функция ПолучитьДанныеДляПечатнойФормыАктОбОказанииУслуг(ПараметрыПечати, МассивОбъектов)
    
    Возврат Документы.РеализацияТоваровУслуг.ПолучитьДанныеДляПечатнойФормыАктОбОказанииУслуг(ПараметрыПечати, МассивОбъектов);
    
    КонецФункции
    Это и есть, как я понимая место ошибки в коде?
  6. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Посмотрите у документа Модуль менеджера --> Функция ПечатьДокумента(МассивОбъектов, ОбъектыПечати)
  7. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    У этой внешней формы есть только Модуль объекта
  8. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    rshakiro вам говорит в документе посмотреть, а не в вашей обработке.
  9. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Код:
    Функция ПечатьДокумента(МассивОбъектов, ОбъектыПечати)
    УстановитьПривилегированныйРежим(Истина);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб   = Истина;
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Накладная";
    
    ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
    ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
    КонецЕсли;
    ВыводитьКоды = ДополнительнаяКолонкаПечатныхФормДокументов <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Запрос.УстановитьПараметр("ДополнительнаяКолонкаПечатныхФормДокументов", ДополнительнаяКолонкаПечатныхФормДокументов);
    Запрос.Текст =
    "ВЫБРАТЬ
    | ДокументРеализацияТоваровУслуг.Ссылка КАК Ссылка,
    | ДокументРеализацияТоваровУслуг.Номер КАК Номер,
    | ДокументРеализацияТоваровУслуг.Дата КАК Дата,
    | ДокументРеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента,
    | ДокументРеализацияТоваровУслуг.Контрагент КАК Получатель,
    | ДокументРеализацияТоваровУслуг.Организация КАК Организация,
    | ДокументРеализацияТоваровУслуг.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    | ДокументРеализацияТоваровУслуг.Организация КАК Поставщик,
    | ДокументРеализацияТоваровУслуг.Ссылка.Склад КАК Склад,
    | ДокументРеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
    | ДокументРеализацияТоваровУслуг.ВалютаДокумента КАК ВалютаДокумента,
    | ДокументРеализацияТоваровУслуг.СуммаВключаетНДС КАК СуммаВключаетНДС,
    | РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
    | РеализацияТоваровУслуг.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | РеализацияТоваровУслуг.Цена КАК Цена,
    | РеализацияТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
    | РеализацияТоваровУслуг.СтранаПроисхождения КАК СтранаПроисхождения,
    | РеализацияТоваровУслуг.НомерГТД КАК НомерГТД,
    | СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
    | СУММА(РеализацияТоваровУслуг.КоличествоМест) КАК КоличествоМест,
    | СУММА(РеализацияТоваровУслуг.Сумма) КАК Сумма,
    | СУММА(РеализацияТоваровУслуг.СуммаНДС) КАК СуммаНДС,
    | МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки
    |ПОМЕСТИТЬ ВТ_ВложенныйЗапросПоТоварам
    |ИЗ
    | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    | ПРАВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
    | ПО РеализацияТоваровУслуг.Ссылка = ДокументРеализацияТоваровУслуг.Ссылка
    |ГДЕ
    | ДокументРеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |
    |СГРУППИРОВАТЬ ПО
    | РеализацияТоваровУслуг.Номенклатура,
    | РеализацияТоваровУслуг.ЕдиницаИзмерения,
    | РеализацияТоваровУслуг.Цена,
    | РеализацияТоваровУслуг.СтавкаНДС,
    | РеализацияТоваровУслуг.СтранаПроисхождения,
    | РеализацияТоваровУслуг.НомерГТД,
    | ДокументРеализацияТоваровУслуг.Ссылка,
    | ДокументРеализацияТоваровУслуг.Номер,
    | ДокументРеализацияТоваровУслуг.Дата,
    | ДокументРеализацияТоваровУслуг.ДоговорКонтрагента,
    | ДокументРеализацияТоваровУслуг.Контрагент,
    | ДокументРеализацияТоваровУслуг.Организация,
    | ДокументРеализацияТоваровУслуг.Склад,
    | ДокументРеализацияТоваровУслуг.ПодразделениеОрганизации,
    | ДокументРеализацияТоваровУслуг.СуммаДокумента,
    | ДокументРеализацияТоваровУслуг.ВалютаДокумента,
    | ДокументРеализацияТоваровУслуг.СуммаВключаетНДС,
    | ДокументРеализацияТоваровУслуг.Организация
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    | ВложенныйЗапросПоТоварам.Ссылка КАК Ссылка,
    | ВложенныйЗапросПоТоварам.Номер КАК Номер,
    | ВложенныйЗапросПоТоварам.Дата КАК Дата,
    | ВложенныйЗапросПоТоварам.ДоговорКонтрагента КАК ДоговорКонтрагента,
    | ВложенныйЗапросПоТоварам.Получатель КАК Получатель,
    | ВложенныйЗапросПоТоварам.Организация КАК Организация,
    | ВложенныйЗапросПоТоварам.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    | ВложенныйЗапросПоТоварам.Организация КАК Поставщик,
    | ВложенныйЗапросПоТоварам.Ссылка.Склад КАК Склад,
    | ВложенныйЗапросПоТоварам.СуммаДокумента КАК СуммаДокумента,
    | ВложенныйЗапросПоТоварам.ВалютаДокумента КАК ВалютаДокумента,
    | ВложенныйЗапросПоТоварам.СуммаВключаетНДС КАК СуммаВключаетНДС,
    | ВложенныйЗапросПоТоварам.Номенклатура,
    | ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК Товар,
    | ВЫБОР
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
    |   ТОГДА ВложенныйЗапросПоТоварам.Номенклатура.Артикул
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
    |   ТОГДА ВложенныйЗапросПоТоварам.Номенклатура.Код
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
    |   ТОГДА """"
    | КОНЕЦ КАК Артикул,
    | ВложенныйЗапросПоТоварам.Количество,
    | ВложенныйЗапросПоТоварам.КоличествоМест,
    | ВложенныйЗапросПоТоварам.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | ВложенныйЗапросПоТоварам.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаХранения,
    | ВложенныйЗапросПоТоварам.Цена,
    | ВложенныйЗапросПоТоварам.Сумма,
    | ВложенныйЗапросПоТоварам.СуммаНДС,
    | ВложенныйЗапросПоТоварам.СтранаПроисхождения КАК СтранаПроисхождения,
    | ВложенныйЗапросПоТоварам.НомерГТД КАК НомерГТД,
    | ВложенныйЗапросПоТоварам.НомерСтроки,
    | 1 КАК ID
    |ИЗ
    | ВТ_ВложенныйЗапросПоТоварам КАК ВложенныйЗапросПоТоварам
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | РеализацияТоваровУслуг.Ссылка,
    | РеализацияТоваровУслуг.Ссылка.Номер,
    | РеализацияТоваровУслуг.Ссылка.Дата,
    | РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента,
    | РеализацияТоваровУслуг.Ссылка.Контрагент,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.ПодразделениеОрганизации,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.Склад,
    | РеализацияТоваровУслуг.Ссылка.СуммаДокумента,
    | РеализацияТоваровУслуг.Ссылка.ВалютаДокумента,
    | РеализацияТоваровУслуг.Ссылка.СуммаВключаетНДС,
    | РеализацияТоваровУслуг.Номенклатура,
    | РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное,
    | ВЫБОР
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
    |   ТОГДА """"
    | КОНЕЦ,
    | РеализацияТоваровУслуг.Количество,
    | NULL,
    | NULL,
    | NULL,
    | РеализацияТоваровУслуг.Цена,
    | РеализацияТоваровУслуг.Сумма,
    | 0,
    | NULL,
    | NULL,
    | РеализацияТоваровУслуг.НомерСтроки,
    | 2
    |ИЗ
    | Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | РеализацияТоваровУслуг.Ссылка,
    | РеализацияТоваровУслуг.Ссылка.Номер,
    | РеализацияТоваровУслуг.Ссылка.Дата,
    | РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента,
    | РеализацияТоваровУслуг.Ссылка.Контрагент,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.ПодразделениеОрганизации,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.Склад,
    | РеализацияТоваровУслуг.Ссылка.СуммаДокумента,
    | РеализацияТоваровУслуг.Ссылка.ВалютаДокумента,
    | РеализацияТоваровУслуг.Ссылка.СуммаВключаетНДС,
    | ВЫБОР
    |  КОГДА (НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """")
    |   ТОГДА РеализацияТоваровУслуг.Содержание
    |  КОГДА (НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """")
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
    |  ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА (НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """")
    |   ТОГДА РеализацияТоваровУслуг.Содержание
    |  КОГДА (НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """")
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
    |  ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
    |   ТОГДА """"
    | КОНЕЦ,
    | РеализацияТоваровУслуг.Количество,
    | NULL,
    | NULL,
    | РеализацияТоваровУслуг.Номенклатура.ЕдиницаИзмерения,
    | РеализацияТоваровУслуг.Цена,
    | РеализацияТоваровУслуг.Сумма,
    | РеализацияТоваровУслуг.СуммаНДС,
    | NULL,
    | NULL,
    | РеализацияТоваровУслуг.НомерСтроки,
    | 3
    |ИЗ
    | Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | РеализацияТоваровУслуг.Ссылка,
    | РеализацияТоваровУслуг.Ссылка.Номер,
    | РеализацияТоваровУслуг.Ссылка.Дата,
    | РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента,
    | РеализацияТоваровУслуг.Ссылка.Контрагент,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.ПодразделениеОрганизации,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.Склад,
    | РеализацияТоваровУслуг.Ссылка.СуммаДокумента,
    | РеализацияТоваровУслуг.Ссылка.ВалютаДокумента,
    | РеализацияТоваровУслуг.Ссылка.СуммаВключаетНДС,
    | ВЫБОР
    |  КОГДА (НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """")
    |   ТОГДА РеализацияТоваровУслуг.Содержание
    |  КОГДА (НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """")
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
    |  ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА (НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """")
    |   ТОГДА РеализацияТоваровУслуг.Содержание
    |  КОГДА (НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """")
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
    |  ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
    |   ТОГДА """"
    | КОНЕЦ,
    | РеализацияТоваровУслуг.Количество,
    | NULL,
    | NULL,
    | РеализацияТоваровУслуг.Номенклатура.ЕдиницаИзмерения,
    | РеализацияТоваровУслуг.Цена,
    | РеализацияТоваровУслуг.Сумма,
    | РеализацияТоваровУслуг.СуммаНДС,
    | NULL,
    | NULL,
    | РеализацияТоваровУслуг.НомерСтроки,
    | 4
    |ИЗ
    | Документ.РеализацияТоваровУслуг.АгентскиеУслуги КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |
    |УПОРЯДОЧИТЬ ПО
    | Дата,
    | Ссылка,
    | ID,
    | ВложенныйЗапросПоТоварам.НомерСтроки";
    
    Шапка = Запрос.Выполнить().Выбрать();
    
    ПервыйДокумент = Истина;
    
    Пока Шапка.СледующийПоЗначениюПоля("Ссылка") Цикл
    
    Макет = УправлениеПечатью.ПолучитьМакет("Документ.РеализацияТоваровУслуг.ПФ_MXL_Накладная");
    Если НЕ ПервыйДокумент Тогда
    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    
    ПервыйДокумент = Ложь;
    // Запомним номер строки, с которой начали выводить текущий документ.
    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
    
    // Выводим шапку накладной
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияБПВызовСервера.СформироватьЗаголовокДокумента(Шапка.Ссылка, "Расходная накладная");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    СведенияОбОрганизации   = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
    ПредставлениеПоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
    ОбластьМакета.Параметры.Поставщик	 = Шапка.Поставщик;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    СведенияОКонтрагенте    = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
    ПредставлениеПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
    ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
    ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ЕстьСкидки = Ложь;
    ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
    ТабличныйДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
    Если ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ОбластьКодов.Параметры.ИмяКолонкиКодов = "Артикул";
    ИначеЕсли ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
    ОбластьКодов.Параметры.ИмяКолонкиКодов = "Код";
    КонецЕсли;
    ТабличныйДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабличныйДокумент.Присоединить(ОбластьДанных);
    ТабличныйДокумент.Присоединить(ОбластьСуммы);
    ОбластьКолонкаТовар = Макет.Область("Товар");
    Если НЕ ВыводитьКоды Тогда
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
    Макет.Область("КолонкаКодов").ШиринаКолонки;
    КонецЕсли;
    
    Если НЕ ЕстьСкидки Тогда
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
    Макет.Область("СуммаБезСкидки").ШиринаКолонки +
    Макет.Область("СуммаСкидки").ШиринаКолонки;
    КонецЕсли;
    ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");
    Сумма    = 0;
    СуммаНДС = 0;
    ВсегоСкидок    = 0;
    ВсегоБезСкидок = 0;
    КоличествоСтрок = 0;
    НомерСтроки = 0;
    Пока Шапка.Следующий() Цикл
    
    Если Шапка.Номенклатура = Null Тогда
    Продолжить;
    КонецЕсли;
    
    НомерСтроки = НомерСтроки + 1;
    ОбластьНомера.Параметры.НомерСтроки = НомерСтроки;
    ТабличныйДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
    ОбластьКодов.Параметры.Заполнить(Шапка);
    ТабличныйДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    
    ОбластьДанных.Параметры.Заполнить(Шапка);
    ОбластьДанных.Параметры.Товар = СокрЛП(Шапка.Товар);
    ТабличныйДокумент.Присоединить(ОбластьДанных);
    Скидка = 0;
    
    ОбластьСуммы.Параметры.Заполнить(Шапка);
    ТабличныйДокумент.Присоединить(ОбластьСуммы);
    Сумма		  = Сумма	   + ?(ЗначениеЗаполнено(Шапка.Сумма), Шапка.Сумма, 0);
    СуммаНДС	   = СуммаНДС    + ?(ЗначениеЗаполнено(Шапка.СуммаНДС), Шапка.СуммаНДС, 0);
    ВсегоСкидок    = ВсегоСкидок + Скидка;
    ВсегоБезСкидок = Сумма	   + ВсегоСкидок;
    
    КоличествоСтрок = КоличествоСтрок + 1;
    КонецЦикла;
    // Вывести Итого
    ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");
    ТабличныйДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
    ТабличныйДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабличныйДокумент.Присоединить(ОбластьДанных);
    ОбластьСуммы.Параметры.Всего = ОбщегоНазначенияБПВызовСервера.ФорматСумм(Сумма);
    ТабличныйДокумент.Присоединить(ОбластьСуммы);
    
    // Вывести ИтогоНДС
    ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
    
    ТабличныйДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
    ТабличныйДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    
    Если СуммаНДС <> 0 Тогда
    ОбластьСуммы.Параметры.ВсегоНДС  = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
    ОбластьДанных.Параметры.НДС	  = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
    Иначе
    ОбластьСуммы.Параметры.ВсегоНДС  = "-";
    ОбластьДанных.Параметры.НДС	  = "Без налога (НДС)";
    КонецЕсли;
    
    ТабличныйДокумент.Присоединить(ОбластьДанных);
    ТабличныйДокумент.Присоединить(ОбластьСуммы);
    
    // Вывести Сумму прописью
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + КоличествоСтрок
    + ", на сумму " + ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
    ТабличныйДокумент.Вывести(ОбластьМакета);
    // Вывести подписи
    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    
    Если Шапка.Склад <> Справочники.Склады.ПустаяСсылка() Тогда
    МОЛ = ОтветственныеЛицаБП.ОтветственноеЛицоНаСкладе(Шапка.Склад, Шапка.Дата);
    ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(Шапка.Организация, МОЛ, Шапка.Дата);
    Представление = ?(ЗначениеЗаполнено(ДанныеФизЛица.Должность), Строка(ДанныеФизЛица.Должность) + " ", "");
    Представление = Представление + ?(ЗначениеЗаполнено(ДанныеФизЛица.Представление), Строка(ДанныеФизЛица.Представление), "");
    ОбластьМакета.Параметры.ОтветственныйПредставление = Представление;
    КонецЕсли;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    // В табличном документе зададим имя области, в которую был
    // выведен объект. Нужно для возможности печати покомплектно.
    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
    НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
    КонецЦикла;
    Возврат ТабличныйДокумент;
    КонецФункции
    
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    И что дальше ??? Смысл выкладывать портянку ?
  11. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    К сожалению, я даже не понимаю, что тут необходимо смотреть.
  12. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Может в спец раздел обратитесь к специалистам ? Они за деньги вам быстренько поправят.
  13. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    посмотрите http://www.1c-pro.ru/topic26882.html
  14. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    просьба оказать помощь, вроде переделал, но выдает ошибку

    {ВнешняяОбработка.АКТвнешний.МодульОбъекта(277)}: Ошибка при вызове метода контекста (СледующийПоЗначениюПоля)
    Пока Шапка.СледующийПоЗначениюПоля("Ссылка") Цикл
    по причине:
    Неверное значение аргумента

    Вложения:

  15. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    А что у Вас Ссылка?? Вы ее не определяли нигде...
  16. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Это я взял из модуля менеджера встроенного акта
    p.s. посмотрите личку
  17. TopicStarter Overlay
    Irbison
    Offline

    Irbison

    Регистрация:
    24 сен 2013
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Добрый день, прошу оказать посильную помощь в создании ВПФ Акта выполненных работ для 1с Предприятие 8.2 (8.2.18.61.), редакция БП 3.0 (3.0.27.7)
    Есть переделанная внешняя форма (во вложении), но она показывает ошибку

    {ВнешняяОбработка.АктОбОказанииУслуг.МодульОбъекта(513)}: Поле объекта не обнаружено (Товар)
    ОбластьСтроки.Параметры.Товар = СокрЛП(СтрокаТабличнойЧасти.ТоварНоменклатура);
    Вот модуль объекта:
    Код:
    // Функция выполняет расчет рублевых сумм для вывода таблиц документа на печать
    //
    Функция ПодготовитьТаблицуДокументаДляПечати(ВыборкаСтрок, ТаблицаПоТоварам, ВыборкаСуммВзаиморасчетов, ПечататьТовары, ПечататьУслуги)
    ТаблицаПоТоварам.Очистить();ВалютаРегламентированногоУчета   = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
    МассивРаспределения = Новый Массив;
    СуммаВзаиморасчетов  = 0;
    СуммаВзаиморасчетовНДС  = 0;
    ПерваяСтрокаДокумента  = Истина;
    СуммаВключаетНДС   = Неопределено;
    РасчетыВУсловныхЕдиницах= Неопределено;
    ДатаДокумента   = Неопределено;Пока ВыборкаСтрок.Следующий() Цикл
    
    СтрокаТаблицы = ТаблицаПоТоварам.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТаблицы, ВыборкаСтрок);
    
    Если ПерваяСтрокаДокумента Тогда
    СуммаВключаетНДС	= ВыборкаСтрок.СуммаВключаетНДС;
    РасчетыВУсловныхЕдиницах  = ВыборкаСтрок.РасчетыВУсловныхЕдиницах;
    ДатаДокумента	= ВыборкаСтрок.ДатаДокумента;
    
    Если ВыборкаСтрок.Проведен
    И (ВыборкаСтрок.РасчетыВУсловныхЕдиницах
    ИЛИ (ВыборкаСтрок.ВалютаДокумента <> ВалютаРегламентированногоУчета И ВыборкаСтрок.ДатаДокумента >= '20090101000000')) Тогда	СтруктураПоиска = Новый Структура;
    СтруктураПоиска.Вставить("Регистратор", ВыборкаСтрок.Ссылка);
    
    ВыборкаСуммВзаиморасчетов.Сбросить();
    Пока ВыборкаСуммВзаиморасчетов.НайтиСледующий(СтруктураПоиска) Цикл	
    Если ВыборкаСуммВзаиморасчетов.СчетДт = ВыборкаСтрок.СчетУчетаРасчетовСКонтрагентом // Дт 62.х - Кт 90,91
    И ВыборкаСуммВзаиморасчетов.СчетДт <> ВыборкаСуммВзаиморасчетов.СчетКт Тогда	// Не зачет аванса для 76.06 - 76.06
    СуммаВзаиморасчетов = СуммаВзаиморасчетов + ВыборкаСуммВзаиморасчетов.Сумма;
    КонецЕсли;
    
    Если ВыборкаСуммВзаиморасчетов.СчетКт = ПланыСчетов.Хозрасчетный.НДС Тогда // Дт 90,91 - Кт 68.02
    СуммаВзаиморасчетовНДС = СуммаВзаиморасчетовНДС + ВыборкаСуммВзаиморасчетов.Сумма;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    ПерваяСтрокаДокумента = Ложь;
    КонецЕсли;
    
    КонецЦикла;
    
    Если НЕ СуммаВзаиморасчетов = 0 Тогда
    
    Если ТаблицаПоТоварам.Колонки.Найти("СуммаНДСКомиссии") <> Неопределено Тогда
    ТаблицаПоТоварам.ЗаполнитьЗначения(0, "СуммаНДСКомиссии");
    Иначе
    ТаблицаПоТоварам.Колонки.Добавить("СуммаНДСКомиссии", ОбщегоНазначенияБПКлиентСервер.ПолучитьОписаниеТиповЧисла(15, 2));
    КонецЕсли;
    
    Для Каждого СтрокаТаблицы Из ТаблицаПоТоварам Цикл
    
    Если (СтрокаТаблицы.ID = 2) Тогда // Возвратная тара
    Продолжить;
    КонецЕсли;
    
    СуммаСНДС = ?(ЗначениеЗаполнено(СтрокаТаблицы.Сумма), СтрокаТаблицы.Сумма, 0) + ?(СуммаВключаетНДС, 0, ?(ЗначениеЗаполнено(СтрокаТаблицы.СуммаНДС), СтрокаТаблицы.СуммаНДС, 0));
    СуммаБезНДС = СуммаСНДС - ?(ЗначениеЗаполнено(СтрокаТаблицы.СуммаНДС), СтрокаТаблицы.СуммаНДС, 0);
    
    СтрокаТаблицы.СуммаРублевая = СуммаСНДС;
    СтрокаТаблицы.СуммаБезНДС  = СуммаБезНДС;
    
    КонецЦикла;
    
    ОбщегоНазначенияБПВызовСервера.РаспределитьСуммуПоКолонкеТаблицы(СуммаВзаиморасчетов, ТаблицаПоТоварам, "СуммаРублевая");
    
    Для каждого СтрокаТовар Из ТаблицаПоТоварам Цикл
    
    Если (СтрокаТовар.ID = 2) Тогда // Возвратная тара
    Продолжить;
    КонецЕсли;
    
    Если НЕ РасчетыВУсловныхЕдиницах Тогда
    
    // НДС при расчетах в валюте рассчитывается по курсу на дату реализации - уже рассчитано в СуммаНДС,
    // а в БУ авансы зачитываются по курсу оплаты.
    СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;
    
    Иначе
    
    //Выделение суммы НДС, Расчет суммы без НДС
    ЗначениеСтавкиНДС = УчетНДСВызовСервераПовтИсп.ПолучитьСтавкуНДС(СтрокаТовар.СтавкаНДС);
    
    СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРублевая * ЗначениеСтавкиНДС/(100 + ЗначениеСтавкиНДС),2));
    СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;
    
    КонецЕсли;
    
    // Если товар комиссионный, то по нему проводки по НДС нет, поэтому на эти строки не надо распределять сумму "нашего" НДС.
    Если СтрокаТовар.ЭтоКомиссия Тогда
    СтрокаТовар.СуммаНДСКомиссии  = СтрокаТовар.СуммаНДС;
    СтрокаТовар.СуммаНДС	= 0;
    КонецЕсли;
    
    КонецЦикла;
    
    // Из-за ошибок округления общая сумма НДС может отличаться от проводок, поэтому распределим итоговую сумму.
    Если СуммаВзаиморасчетовНДС <> 0 Тогда
    ОбщегоНазначенияБПВызовСервера.РаспределитьСуммуПоКолонкеТаблицы(СуммаВзаиморасчетовНДС, ТаблицаПоТоварам, "СуммаНДС");
    КонецЕсли;
    Для Каждого СтрокаТовар Из ТаблицаПоТоварам Цикл
    Если (СтрокаТовар.ID = 2) Тогда // Возвратная тара
    Продолжить;
    КонецЕсли;
    
    Если СтрокаТовар.ЭтоКомиссия Тогда
    СтрокаТовар.СуммаНДС = СтрокаТовар.СуммаНДСКомиссии;
    КонецЕсли;
    
    Если СуммаВключаетНДС Тогда
    СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая;
    Иначе
    СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;
    КонецЕсли;
    КонецЦикла;
    
    КонецЕсли;
    
    Если НЕ ПечататьТовары ИЛИ НЕ ПечататьУслуги Тогда
    // Исключим строки из табличный частей, которые не удовлетворяют условиям печати. При выборке запросом их необходимо получать,
    // чтобы распределять сумма взаиморасчетов в рублях на все строки документа.
    Инд = ТаблицаПоТоварам.Количество() - 1;
    Пока Инд >= 0 Цикл
    СтрокаТовар = ТаблицаПоТоварам[Инд];
    
    Если СтрокаТовар.ID = 1 ИЛИ СтрокаТовар.ID = 2 Тогда // Товары или ВозвратнаяТара
    Если НЕ ПечататьТовары Тогда
    ТаблицаПоТоварам.Удалить(Инд);
    КонецЕсли;  
    ИначеЕсли СтрокаТовар.ID = 3 ИЛИ СтрокаТовар.ID = 4 Тогда // Услуги или АгентскиеУслуги
    Если НЕ ПечататьУслуги Тогда
    ТаблицаПоТоварам.Удалить(Инд);
    КонецЕсли;
    КонецЕсли;
    
    Инд = Инд - 1;
    КонецЦикла;
    КонецЕсли;Возврат ТаблицаПоТоварам;
    КонецФункции// Формирует и возвращает текст запроса для выборки данных,
    // необходимых для формирования печатной формы
    Функция ПолучитьТекстЗапросаДляФормированияПечатнойФормыАктаУслуги()
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    | РеализацияТоваровУслуг.Ссылка.Номер КАК Номер,
    | РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    | РеализацияТоваровУслуг.Ссылка.Дата КАК Дата,
    | РеализацияТоваровУслуг.Ссылка.Дата КАК ДатаДокумента,
    | РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента,
    | РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
    | РеализацияТоваровУслуг.Ссылка.Контрагент КАК Получатель,
    | РеализацияТоваровУслуг.Ссылка.Организация КАК Поставщик,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.ПодразделениеОрганизации,
    | РеализацияТоваровУслуг.Ссылка.Руководитель,
    | РеализацияТоваровУслуг.Ссылка.ЗаРуководителяПоПриказу,
    | РеализацияТоваровУслуг.Ссылка.СуммаДокумента,
    | РеализацияТоваровУслуг.Ссылка.ВалютаДокумента,
    | РеализацияТоваровУслуг.Ссылка.СчетУчетаРасчетовСКонтрагентом КАК СчетУчетаРасчетовСКонтрагентом,
    | РеализацияТоваровУслуг.Ссылка.СуммаВключаетНДС,
    | РеализацияТоваровУслуг.Ссылка.ВидОперации,
    | РеализацияТоваровУслуг.Ссылка.Проведен,
    | РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
    | РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК Товар,
    | ВЫБОР
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
    |   ТОГДА """"
    | КОНЕЦ КАК КодАртикул,
    | РеализацияТоваровУслуг.Количество,
    | РеализацияТоваровУслуг.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | ВЫБОР
    |  КОГДА РеализацияТоваровУслуг.Ссылка.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.Цена
    |  КОГДА РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.Цена * РеализацияТоваровУслуг.Ссылка.КурсВзаиморасчетов / РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ КАК Цена,
    | ВЫБОР
    |  КОГДА РеализацияТоваровУслуг.Ссылка.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.Сумма
    |  КОГДА РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.Сумма * РеализацияТоваровУслуг.Ссылка.КурсВзаиморасчетов / РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ КАК Сумма,
    | ВЫБОР
    |  КОГДА РеализацияТоваровУслуг.Ссылка.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.СуммаНДС
    |  КОГДА РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.СуммаНДС * РеализацияТоваровУслуг.Ссылка.КурсВзаиморасчетов / РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ КАК СуммаНДС,
    | РеализацияТоваровУслуг.СтавкаНДС,
    | РеализацияТоваровУслуг.НомерСтроки КАК НомерСтроки,
    | 1 КАК ID,
    | РеализацияТоваровУслуг.СчетДоходов КАК СчетДоходов,
    | ЕСТЬNULL(РеализацияТоваровУслуг.СчетУчета.Забалансовый, ЛОЖЬ) КАК ЭтоКомиссия
    |ИЗ
    | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | ДокументРеализацияТоваровУслуг.Номер,
    | ДокументРеализацияТоваровУслуг.Ссылка,
    | ДокументРеализацияТоваровУслуг.Дата,
    | ДокументРеализацияТоваровУслуг.Дата,
    | ДокументРеализацияТоваровУслуг.ДоговорКонтрагента,
    | ДокументРеализацияТоваровУслуг.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах,
    | ДокументРеализацияТоваровУслуг.Контрагент,
    | ДокументРеализацияТоваровУслуг.Организация,
    | ДокументРеализацияТоваровУслуг.Организация,
    | ДокументРеализацияТоваровУслуг.ПодразделениеОрганизации,
    | ДокументРеализацияТоваровУслуг.Руководитель,
    | ДокументРеализацияТоваровУслуг.ЗаРуководителяПоПриказу,
    | ДокументРеализацияТоваровУслуг.СуммаДокумента,
    | ДокументРеализацияТоваровУслуг.ВалютаДокумента,
    | ДокументРеализацияТоваровУслуг.СчетУчетаРасчетовСКонтрагентом,
    | ДокументРеализацияТоваровУслуг.СуммаВключаетНДС,
    | ДокументРеализацияТоваровУслуг.ВидОперации,
    | ДокументРеализацияТоваровУслуг.Проведен,
    | ВЫБОР
    |  КОГДА НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """"
    |   ТОГДА РеализацияТоваровУслуг.Содержание
    |  КОГДА НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """"
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
    |  ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """"
    |   ТОГДА РеализацияТоваровУслуг.Содержание
    |  КОГДА НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """"
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
    |  ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
    |   ТОГДА """"
    | КОНЕЦ,
    | РеализацияТоваровУслуг.Количество,
    | РеализацияТоваровУслуг.Номенклатура.ЕдиницаИзмерения,
    | ВЫБОР
    |  КОГДА ДокументРеализацияТоваровУслуг.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.Цена
    |  КОГДА ДокументРеализацияТоваровУслуг.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.Цена * ДокументРеализацияТоваровУслуг.КурсВзаиморасчетов / ДокументРеализацияТоваровУслуг.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА ДокументРеализацияТоваровУслуг.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.Сумма
    |  КОГДА ДокументРеализацияТоваровУслуг.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.Сумма * ДокументРеализацияТоваровУслуг.КурсВзаиморасчетов / ДокументРеализацияТоваровУслуг.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА ДокументРеализацияТоваровУслуг.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.СуммаНДС
    |  КОГДА ДокументРеализацияТоваровУслуг.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.СуммаНДС * ДокументРеализацияТоваровУслуг.КурсВзаиморасчетов / ДокументРеализацияТоваровУслуг.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ,
    | РеализацияТоваровУслуг.СтавкаНДС,
    | РеализацияТоваровУслуг.НомерСтроки,
    | 3,
    | РеализацияТоваровУслуг.СчетДоходов,
    | ЛОЖЬ КАК ЭтоКомиссия
    |ИЗ
    | Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
    | ПРАВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
    | ПО РеализацияТоваровУслуг.Ссылка = ДокументРеализацияТоваровУслуг.Ссылка
    |ГДЕ
    | ДокументРеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | РеализацияТоваровУслуг.Ссылка.Номер,
    | РеализацияТоваровУслуг.Ссылка,
    | РеализацияТоваровУслуг.Ссылка.Дата,
    | РеализацияТоваровУслуг.Ссылка.Дата,
    | РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента,
    | РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах,
    | РеализацияТоваровУслуг.Ссылка.Контрагент,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.Организация,
    | РеализацияТоваровУслуг.Ссылка.ПодразделениеОрганизации,
    | РеализацияТоваровУслуг.Ссылка.Руководитель,
    | РеализацияТоваровУслуг.Ссылка.ЗаРуководителяПоПриказу,
    | РеализацияТоваровУслуг.Ссылка.СуммаДокумента,
    | РеализацияТоваровУслуг.Ссылка.ВалютаДокумента,
    | РеализацияТоваровУслуг.Ссылка.СчетУчетаРасчетовСКонтрагентом,
    | РеализацияТоваровУслуг.Ссылка.СуммаВключаетНДС,
    | РеализацияТоваровУслуг.Ссылка.ВидОперации,
    | РеализацияТоваровУслуг.Ссылка.Проведен,
    | ВЫБОР
    |  КОГДА НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """"
    |   ТОГДА РеализацияТоваровУслуг.Содержание
    |  КОГДА НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """"
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
    |  ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """"
    |   ТОГДА РеализацияТоваровУслуг.Содержание
    |  КОГДА НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """"
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
    |  ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
    |   ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
    |  КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
    |   ТОГДА """"
    | КОНЕЦ,
    | РеализацияТоваровУслуг.Количество,
    | РеализацияТоваровУслуг.Номенклатура.ЕдиницаИзмерения,
    | ВЫБОР
    |  КОГДА РеализацияТоваровУслуг.Ссылка.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.Цена
    |  КОГДА РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.Цена * РеализацияТоваровУслуг.Ссылка.КурсВзаиморасчетов / РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА РеализацияТоваровУслуг.Ссылка.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.Сумма
    |  КОГДА РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.Сумма * РеализацияТоваровУслуг.Ссылка.КурсВзаиморасчетов / РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ,
    | ВЫБОР
    |  КОГДА РеализацияТоваровУслуг.Ссылка.ВалютаДокумента = &ВалютаРегламентированногоУчета
    |   ТОГДА РеализацияТоваровУслуг.СуммаНДС
    |  КОГДА РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВЫРАЗИТЬ(РеализацияТоваровУслуг.СуммаНДС * РеализацияТоваровУслуг.Ссылка.КурсВзаиморасчетов / РеализацияТоваровУслуг.Ссылка.КратностьВзаиморасчетов КАК ЧИСЛО(15, 2))
    | КОНЕЦ,
    | РеализацияТоваровУслуг.СтавкаНДС,
    | РеализацияТоваровУслуг.НомерСтроки,
    | 4,
    | NULL,
    | ИСТИНА КАК ЭтоКомиссия
    |ИЗ
    | Документ.РеализацияТоваровУслуг.АгентскиеУслуги КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |
    |УПОРЯДОЧИТЬ ПО
    | Дата,
    | Ссылка,
    | ID,
    | НомерСтроки";
    
    Возврат ТекстЗапроса;
    
    КонецФункции
    // Функция формирует табличный документ с печатной формой акта об оказании услуг
    //
    // Возвращаемое значение:
    //  Табличный документ - печатная форма акта
    //
    Функция ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати)ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
    ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
    КонецЕсли;
    ВыводитьКоды = ДополнительнаяКолонкаПечатныхФормДокументов <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
    ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб = Истина;
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт";
    Макет = УправлениеПечатью.ПолучитьМакет("Документ.РеализацияТоваровУслуг.ПФ_MXL_Акт");Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Запрос.УстановитьПараметр("ДополнительнаяКолонкаПечатныхФормДокументов", Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить());
    Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета());
    Запрос.Текст = ПолучитьТекстЗапросаДляФормированияПечатнойФормыАктаУслуги();
    Шапка = Запрос.Выполнить().Выбрать();Запрос.Текст =
    "ВЫБРАТЬ
    | Хозрасчетный.Регистратор КАК Регистратор,
    | Хозрасчетный.СчетДт,
    | Хозрасчетный.СчетКт,
    | СУММА(Хозрасчетный.Сумма) КАК Сумма
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    | Хозрасчетный.Регистратор В(&МассивОбъектов)
    |
    |СГРУППИРОВАТЬ ПО
    | Хозрасчетный.СчетДт,
    | Хозрасчетный.СчетКт,
    | Хозрасчетный.Регистратор
    |
    |УПОРЯДОЧИТЬ ПО
    | Регистратор";
    ВыборкаСуммВзаиморасчетов = Запрос.Выполнить().Выбрать();ПервыйДокумент = Истина;
    ОписаниеТиповЧисло15_2 = ОбщегоНазначенияБПКлиентСервер.ПолучитьОписаниеТиповЧисла(15, 2);ТаблицаУслуги = Новый ТаблицаЗначений;
    ТаблицаУслуги.Колонки.Добавить("Номенклатура");
    ТаблицаУслуги.Колонки.Добавить("Товар");
    ТаблицаУслуги.Колонки.Добавить("КодАртикул");
    ТаблицаУслуги.Колонки.Добавить("Количество");
    ТаблицаУслуги.Колонки.Добавить("ЕдиницаИзмерения");
    ТаблицаУслуги.Колонки.Добавить("Цена", ОписаниеТиповЧисло15_2);
    ТаблицаУслуги.Колонки.Добавить("Сумма", ОписаниеТиповЧисло15_2);
    ТаблицаУслуги.Колонки.Добавить("СтавкаНДС");
    ТаблицаУслуги.Колонки.Добавить("СуммаНДС", ОписаниеТиповЧисло15_2);
    ТаблицаУслуги.Колонки.Добавить("НомерСтроки");
    ТаблицаУслуги.Колонки.Добавить("ID");
    ТаблицаУслуги.Колонки.Добавить("СуммаБезНДС", ОписаниеТиповЧисло15_2);
    ТаблицаУслуги.Колонки.Добавить("СуммаРублевая", ОписаниеТиповЧисло15_2);
    ТаблицаУслуги.Колонки.Добавить("ЭтоКомиссия", Новый ОписаниеТипов("Булево"));
    Пока Шапка.СледующийПоЗначениюПоля("Ссылка") ЦиклСведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);
    ПредставлениеПоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,Телефоны,");
    Если НЕ ПервыйДокумент Тогда
    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;ПервыйДокумент = Ложь;
    // Запомним номер строки, с которой начали выводить текущий документ.
    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
    ТаблицаУслуги = ПодготовитьТаблицуДокументаДляПечати(Шапка, ТаблицаУслуги, ВыборкаСуммВзаиморасчетов, Ложь, Истина);ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияБПВызовСервера.СформироватьЗаголовокДокумента(Шапка, "Акт выполненных работ (оказанных услуг)");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
    ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик;
    ТабличныйДокумент.Вывести(ОбластьМакета);ОбластьМакета = Макет.ПолучитьОбласть("Получатель");
    СведенияОКонтрагенте = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
    ПредставлениеПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,ИНН,КПП,Телефоны,");
    ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
    ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ЕстьСкидки = Ложь;// Вывести табличную часть
    ОбластьШапки = ?(ВыводитьКоды, "ШапкаСКодом", "ШапкаТаблицы");
    ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
    ОбластьМакета.Параметры.Заполнить(Шапка);
    Если ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ОбластьМакета.Параметры.ИмяКодАртикул = "Артикул";
    ИначеЕсли ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
    ОбластьМакета.Параметры.ИмяКодАртикул = "Код";
    КонецЕсли;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ОбластьСтроки = ?(ВыводитьКоды, "СтрокаСКодом", "Строка");
    ОбластьСтроки = Макет.ПолучитьОбласть(ОбластьСтроки);НомерСтроки = 0;
    Для каждого СтрокаТабличнойЧасти Из ТаблицаУслуги ЦиклНомерСтроки = НомерСтроки + 1;
    ОбластьСтроки.Параметры.Заполнить(СтрокаТабличнойЧасти);
    ОбластьСтроки.Параметры.НомерСтроки = НомерСтроки;
    ОбластьСтроки.Параметры.Товар = СокрЛП(СтрокаТабличнойЧасти.ТоварНоменклатура);Если Шапка.ВалютаДокумента <> ВалютаРегламентированногоУчета Тогда
    Числ = ?(ЗначениеЗаполнено(СтрокаТабличнойЧасти.Сумма), СтрокаТабличнойЧасти.Сумма, 0);
    Знам = ?(ЗначениеЗаполнено(СтрокаТабличнойЧасти.Количество), СтрокаТабличнойЧасти.Количество, 1);
    ОбластьСтроки.Параметры.Цена = Числ/Знам;
    КонецЕсли;ТабличныйДокумент.Вывести(ОбластьСтроки);
    КонецЦикла;Если ТаблицаУслуги <> Неопределено Тогда
    Сумма = ТаблицаУслуги.Итог("Сумма");
    СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС");Иначе
    Сумма = 0;
    СуммаНДС = 0;КонецЕсли;
    ОбластьМакета = Макет.ПолучитьОбласть("Итого");
    ОбластьМакета.Параметры.Всего = ОбщегоНазначенияБПВызовСервера.ФорматСумм(Сумма);
    ТабличныйДокумент.Вывести(ОбластьМакета);ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
    Если СуммаНДС <> 0 Тогда
    ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
    ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
    Иначе
    ОбластьМакета.Параметры.ВсегоНДС = "-";
    ОбластьМакета.Параметры.НДС = "Без налога (НДС)";
    КонецЕсли;ТабличныйДокумент.Вывести(ОбластьМакета);
    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего оказано услуг " + НомерСтроки
    + ", на сумму " + ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКПрописи, ВалютаРегламентированногоУчета);
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаКПрописи, ВалютаРегламентированногоУчета);
    ТабличныйДокумент.Вывести(ОбластьМакета);ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    // В табличном документе зададим имя области, в которую был
    // выведен объект. Нужно для возможности печати покомплектно.
    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
    НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);КонецЦикла;
    Возврат ТабличныйДокумент;КонецФункции
    // Экспортная процедура печати, вызываемая из основной программы
    //
    // Параметры:
    // ВХОДЯЩИЕ:
    //  МассивОбъектовНазначения - Массив - список объектов ссылочного типа для печати документа
    //				 Как правило, содержит один элемент с ссылкой на вызвавший форму объект (документ, справочник)
    //
    // ИСХОДЯЩИЕ:
    //  КоллекцияПечатныхФорм - ТаблицаЗначений - таблица сформированных табличных документов.
    //				 Как правило, содержит одну строку с именем текущей печатной формы
    //  ОбъектыПечати - СписокЗначений - список объектов печати.
    //  ПараметрыВывода - Структура - Параметры сформированных табличных документов. Содержит поля:
    //		ДоступнаПечатьПоКомплектно - булево - по умолчанию Ложь
    //	   ПолучательЭлектронногоПисьма
    //	   ОтправительЭлектронногоПисьма
    //
    Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктВыполненныхРаботВнешняя") Тогда  ТабличныйДокумент = ПечатьАктаОбОказанииУслуг(МассивОбъектовНазначения, ОбъектыПечати);
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
    КоллекцияПечатныхФорм,
    "АктВыполненныхРаботВнешняя",
    "Акт выполненных работ (оказанных услуг) (внешняя)",
    ТабличныйДокумент
    );КонецЕсли;
    КонецПроцедуры//
    // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ
    //
    // Сервисная экспортная функция. Вызывается в основной программе при регистрации обработки в информационной базе
    // Возвращает структуру с параметрами регистрации
    //
    // Возвращаемое значение:
    //  Структура с полями:
    //   Вид - строка, вид обработки, один из возможных: "ДополнительнаяОбработка", "ДополнительныйОтчет",
    //	 "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов"
    //   Назначение - Массив строк имен объектов метаданных в формате:
    //	 <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>].
    //	 Например, "Документ.СчетЗаказ" или "Справочник.*". Параметр имеет смысл только для назначаемых обработок, для глобальных может не задаваться.
    //   Наименование - строка - Наименование обработки, которым будет заполнено наименование элемента справочника по умолчанию.
    //   Информация  - строка - Краткая информация или описание по обработке.
    //   Версия - строка - Версия обработки в формате “<старший номер>.<младший номер>” используется при загрузке обработок в информационную базу.
    //   БезопасныйРежим - булево - Принимает значение Истина или Ложь, в зависимости от того, требуется ли устанавливать или отключать безопасный режим
    //	   исполнения обработок. Если истина, обработка будет запущена в безопасном режиме.
    //
    //
    Функция СведенияОВнешнейОбработке() Экспорт
    
    //Инициализируем структуру с параметрами регистрации
    
    //Определяем список объектов, вызывающих обработку
    ОбъектыНазначенияФормы = Новый Массив;
    ОбъектыНазначенияФормы.Добавить("Документ.РеализацияТоваровУслуг");
    
    ПараметрыРегистрации = ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы);
    ПараметрыРегистрации.Версия = "1.1";//Определяем команды для печати формы
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд,
    "Акт выполненных работ (оказанных услуг) (внешняя)", // Представление команды в пользовательском интерфейсе
    "АктВыполненныхРаботВнешняя",	// Уникальный идентификатор команды
    );ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;КонецФункции
    //
    // ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ
    //// Формирует структуру с параметрами регистрации регистрации обработки в информационной базе
    //
    // Параметры:
    // ОбъектыНазначенияФормы - Массив - Массив строк имен объектов метаданных в формате:
    //	 <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>].
    //	 или строка с именем объекта метаданных
    // НаименованиеОбработки - строка - Наименование обработки, которым будет заполнено наименование элемента справочника по умолчанию.
    //	   Необязательно, по умолчанию синоним или представление объекта
    // Информация  - строка - Краткая информация или описание обработки.
    //	   Необязательно, по умолчанию комментарий объекта
    // Версия - строка - Версия обработки в формате “<старший номер>.<младший номер>” используется при загрузке обработок в информационную базу.
    //
    //
    // Возвращаемое значение:
    //  Структура
    //
    Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0")
    Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
    ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
    ОбъектыНазначенияФормы = Новый Массив;
    ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
    КонецЕсли;
    
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы);
    
    Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда
    НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление();
    КонецЕсли;
    ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);
    
    Если Не ЗначениеЗаполнено(Информация) Тогда
    Информация = ЭтотОбъект.Метаданные().Комментарий;
    КонецЕсли;
    ПараметрыРегистрации.Вставить("Информация", Информация);
    
    ПараметрыРегистрации.Вставить("Версия", Версия);Возврат ПараметрыРегистрации;
    КонецФункции// Формирует таблицу значений с командами печати
    //
    // Возвращаемое значение:
    //  ТаблицаЗначений
    //
    Функция ПолучитьТаблицуКоманд()
    Команды = Новый ТаблицаЗначений;
    
    //Представление команды в пользовательском интерфейсе
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    
    //Уникальный идентификатор команды или имя макета печати
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    
    //Способ вызова команды: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"
    // "ОткрытиеФормы" - применяется только для отчетов и дополнительных отчетов
    // "ВызовКлиентскогоМетода" - вызов процедуры Печать(), определённой в модуле формы обработки
    // "ВызовСерверногоМетода" - вызов процедуры Печать(), определённой в модуле объекта обработки
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    
    //Показывать оповещение.
    //Если Истина, требуется показать оповещение при начале и при завершении работы обработки.
    //Имеет смысл только при запуске обработки без открытия формы
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    
    //Дополнительный модификатор команды.
    //Используется для дополнительных обработок печатных форм на основе табличных макетов.
    //Для таких команд должен содержать строку ПечатьMXL
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));Возврат Команды;
    КонецФункции// Вспомогательная процедура.
    //
    Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ВызовСерверногоМетода", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL")
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;КонецПроцедуры

    Вложения:

  18. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Может в специальный раздел обратитесь, за мани быстренько подправят.

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