Имя: Пароль:
1C
1С v8
ВПФ Счет-фактуры, "Печатная форма недоступна"
0 DenYuliya
 
26.02.18
00:53
Коллеги, подскажите, плиз, в чем ошибка? Уже все облазила, не понимаю((.
Ошибок в синтаксисе нет, ВПФ к счет-фактуре, УТ 11.
весь код в модуле обработки, макет перетащен с типового "ПФ_MXL_СчетФактура1137".

Прикрепила обработку во "Внешние обработки" для док Поступление товаров и услуг, в списке печ.форм есть, при попытке распечатать - "Печатная форма недоступна", других ошибок нет.
"Остановка по ошибке", естественно, ничего не дала(((
(уф, как же проще в 8.2 все было...)
1 DenYuliya
 
26.02.18
00:57
Листинг, фактически типовой (убрано все для печати остальных макетов, кроме к "СФ1137":

#Область Регисстрация
// Стандартные Функции и Методы для  регистрации внешней печатной формы +

Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;    
    Наименование = УказатьНаименованиеВнешнейПечатнойФормы();    
    МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", Наименование);
    ПараметрыРегистрации.Вставить("Версия", "1.1");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вставить("Информация", УказатьНаименованиеВнешнейПечатнойФормы());
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");    
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

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

Функция УказатьНаименованиеВнешнейПечатнойФормы()
    Наименование = ЭтотОбъект.Метаданные().Представление();
    Возврат Наименование;
КонецФункции

Функция УказатьНаименованиеКомандыПечати()
    Наименование = ЭтотОбъект.Метаданные().ПолноеИмя();
    Возврат Наименование;
КонецФункции

Функция ПолучитьМетаданныеДокументаПечати()
    ПолноеИмя = Документ.Метаданные().ПолноеИмя();
    Возврат ПолноеИмя;
КонецФункции

Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда. Представление = Представление;
    НоваяКоманда. Идентификатор= Идентификатор;
    НоваяКоманда. Использование= Использование;
    НоваяКоманда. ПоказыватьОповещение= ПоказыватьОповещение;
    НоваяКоманда. Модификатор= Модификатор;
    
КонецФункции

#КонецОбласти

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
        
    КомплектыПечати = Неопределено;
    СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
        
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
    КоллекцияПечатныхФорм,
    УказатьНаименованиеКомандыПечати(),
    УказатьНаименованиеВнешнейПечатнойФормы(),
    //ПечатьФормы(МассивОбъектов));
        
    СформироватьПечатнуюФормуСчетФактура(СтруктураТипов, ОбъектыПечати, КомплектыПечати = Неопределено));
    
КонецПроцедуры


Функция СформироватьПечатнуюФормуСчетФактура(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, КомплектыПечати = Неопределено) Экспорт
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб = Истина;
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактура";
    МакетОбработки = ПолучитьМакет("ПФ_MXL_СчетФактура1137");
    
    СтруктураТиповНаПечать              = Новый Структура;
    МассивСчетФактураВыданный           = Новый Массив;
    МассивСчетФактураПолученный         = Новый Массив;
    ОснованияНаРеализацию               = Новый Массив;
    ОснованияСчетФактураПолученный      = Новый Массив;
    ДокументыБезВыданногоСчетаФактуры   = Новый Массив;
    ДокументыБезПолученногоСчетаФактуры = Новый Массив;
    
    
    Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл
        
        ИмяОбъекта = Сред(СтруктураОбъектов.Ключ, 10);        
        ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОснованияНаРеализацию, СтруктураОбъектов.Значение);
        
        //Если ПараметрыПечати.Свойство("ДополнитьПолученнымиСчетамиФактуры")
        //    И ПараметрыПечати.ДополнитьПолученнымиСчетамиФактуры Тогда
        //    
        //    ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОснованияСчетФактураПолученный, СтруктураОбъектов.Значение);
        //    
        //КонецЕсли;
        
    КонецЦикла;
        
    Если ОснованияСчетФактураПолученный.Количество() > 0 Тогда        
        РезультатАнализа = Документы.СчетФактураПолученный.ПолучитьСчетаФактурыНаПечать(
        ОснованияСчетФактураПолученный, ПараметрыПечати.ПечатьВВалюте);        
        ПараметрыПечати.Вставить("ПФ_MXL_СчетФактура1137", РезультатАнализа.СчетаФактурыНаПечать);        
        СообщитьОбОшибкахПечатиСчетФактурыПолученного(РезультатАнализа.ТаблицаОшибок)        
    КонецЕсли;
    
    НомерТипаДокумента = 0;
    
    Для Каждого СтруктураОбъектов Из СтруктураТиповНаПечать Цикл
        
        НомерТипаДокумента = НомерТипаДокумента + 1;
        Если НомерТипаДокумента > 1 Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        МенеджерОбъекта = Документы[СтруктураОбъектов.Ключ];
        
        ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыСчетФактура(ПараметрыПечати, СтруктураОбъектов.Значение);
        
        ОпцииПечатиСчетаФактуры = Новый Структура;
        ОпцииПечатиСчетаФактуры.Вставить("ПечатьВВалюте",             ПараметрыПечати.ПечатьВВалюте);
        
        ЗаполнитьТабличныйДокументСчетФактура(
        ТабличныйДокумент,
        ДанныеДляПечати,
        ОбъектыПечати,
        ОпцииПечатиСчетаФактуры,
        КомплектыПечати);
        
    КонецЦикла;
    
    Возврат ТабличныйДокумент;
    
КонецФункции

Процедура ЗаполнитьРеквизитыШапкиСчетФактура(ДанныеПечати, ДанныеОснований, СведенияОПоставщике, ДанныеКонтрагентов, ТабличныйДокумент, ОпцииПечатиСчетаФактуры)
    
    СведенияОПоставщике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата);
    СведенияОГрузоотправителе = СведенияОГрузоотправителе(ДанныеПечати);
    
    ДействующиеПостановления = ОпцииПечатиСчетаФактуры.ДействующиеПостановления;
    
    Макет = ОпцииПечатиСчетаФактуры.Макет;
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);
    ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
    
    НомераДаты = Новый Структура("Номер, Дата, НомерИсправления, ДатаИсправления, РеквизитыОснований");
    
    НомераДаты.Номер = НомерСчетаФактурыНаПечать(ДанныеПечати.Номер, ДанныеПечати.ИндексПодразделения);
    НомераДаты.Дата = Формат(ДанныеПечати.Дата, "ДЛФ=ДД");
    НомераДаты.НомерИсправления = ?(ДанныеПечати.Исправление, ДанныеПечати.НомерИсправления, "--");
    НомераДаты.ДатаИсправления = ?(ДанныеПечати.Исправление, Формат(ДанныеПечати.ДатаИсправления, "ДЛФ=ДД"), "--");    
    ОбластьМакета.Параметры.Заполнить(НомераДаты);
    
    СтруктураПараметров = Новый Структура;
    
    // Выводим данные о поставщике.
    ДополнительноеПредставление = "";
    Если ДействующиеПостановления.Постановление914 И СведенияОПоставщике.ОфициальноеНаименование <> СведенияОПоставщике.ПолноеНаименование Тогда
        ДополнительноеПредставление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='(%1)'"),
        ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование"));
    КонецЕсли;
    
    ПредставлениеПоставщика = СокрЛП(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru='Продавец: %1 %2'"),
    СведенияОПоставщике.ОфициальноеНаименование,
    ДополнительноеПредставление));
    
    АдресПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru='Адрес: %1'"),
    ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес"));
    
    ИННПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru='ИНН/КПП продавца: %1%2'"),
    ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ИНН", Ложь),
    ?(Не ПустаяСтрока(ДанныеПечати.КПППоставщика), "/" + ДанныеПечати.КПППоставщика, ""));
    
    СтруктураПараметров.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
    СтруктураПараметров.Вставить("АдресПоставщика", АдресПоставщика);
    СтруктураПараметров.Вставить("ИННПоставщика", ИННПоставщика);
    
    Если НЕ ДанныеПечати.КорректировочныйСчетФактура Тогда
        
        // Выводим данные грузоотправителя.
        ТекстГрузоотправителя = "";
        Если ДанныеПечати.ТолькоУслуги
            ИЛИ (ДействующиеПостановления.Постановление1137 И ОпцииПечатиСчетаФактуры.СчетФактураНаАванс)
            ИЛИ ОпцииПечатиСчетаФактуры.СчетФактураНалоговыйАгент Тогда
            ТекстГрузоотправителя = "--";
        ИначеЕсли ДанныеПечати.Организация = ДанныеПечати.Грузоотправитель Тогда
            ТекстГрузоотправителя = НСтр("ru='он же'");
        Иначе
            ТекстГрузоотправителя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
            СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес");
        КонецЕсли;
        
        ПредставлениеГрузоотправителя = СокрЛП(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='Грузоотправитель и его адрес: %1'"),
        ТекстГрузоотправителя));
        
        СтруктураПараметров.Вставить("ПредставлениеГрузоотправителя", ПредставлениеГрузоотправителя);
        
        СтрокаПоДокументу = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='К платежно-расчетному документу № %1'"),
        ?(ПустаяСтрока(ДанныеПечати.СтрокаПоДокументу),
        НСтр("ru='-- от --'"),
        ДанныеПечати.СтрокаПоДокументу));
        
        СтруктураПараметров.Вставить("ПоДокументу", СтрокаПоДокументу);
        
    КонецЕсли;
    
    ЕстьГрузополучатель = Не ДанныеПечати.КорректировочныйСчетФактура
    И НЕ (ДанныеПечати.ТолькоУслуги
    ИЛИ (ДействующиеПостановления.Постановление1137 И ОпцииПечатиСчетаФактуры.СчетФактураНаАванс)
    ИЛИ ОпцииПечатиСчетаФактуры.СчетФактураНалоговыйАгент);
    
    ПредставлениеПокупателя       = "";
    ПредставлениеАдресаПокупателя = "";
    ПредставлениеИННКПППокупателя = "";
    ПредставлениеГрузополучателя  = "";
    
    ТаблицаКонтрагентов = ТаблицаКонтрагентовСчетаФактуры(ДанныеПечати, ДанныеКонтрагентов);
    
    Для Каждого СтрокаТаблицы Из ТаблицаКонтрагентов Цикл          
        
        СведенияОПокупателе = СтрокаТаблицы.СведенияОПокупателе;
        
        ПредставлениеПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1; %2'"),
        ПредставлениеПокупателя,
        ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование", Ложь));
        
        ПредставлениеАдресаПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1; %2'"),
        ПредставлениеАдресаПокупателя,
        ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес", Ложь));
        
        ПредставлениеИННПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1; %2%3'"),
        ПредставлениеИННПокупателя,
        ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ИНН", Ложь),
        ?(Не ПустаяСтрока(СтрокаТаблицы.КПП), "/" + СтрокаТаблицы.КПП, ""));
        
        Если ЕстьГрузополучатель Тогда
            СведенияОГрузополучателе = СтрокаТаблицы.СведенияОГрузополучателе;
            ПредставлениеГрузополучателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru='%1; %2'"),
            ПредставлениеГрузополучателя,
            ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ФактическийАдрес", Ложь));
        КонецЕсли;
        
    КонецЦикла;
    
    ПредставлениеПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru='Покупатель: %1'"),
    Сред(ПредставлениеПокупателя, 3));
    
    ПредставлениеАдресаПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru='Адрес: %1'"),
    Сред(ПредставлениеАдресаПокупателя, 3));
    
    ПредставлениеИННПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru='ИНН/КПП покупателя: %1'"),
    Сред(ПредставлениеИННПокупателя, 3));
    
    ПредставлениеГрузополучателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru='Грузополучатель и его адрес: %1'"),
    ?(ЕстьГрузополучатель, Сред(ПредставлениеГрузополучателя, 3), "--"));
    
    СтруктураПараметров.Вставить("ПредставлениеПокупателя", ПредставлениеПокупателя);
    СтруктураПараметров.Вставить("АдресПокупателя", ПредставлениеАдресаПокупателя);
    СтруктураПараметров.Вставить("ИННПокупателя", ПредставлениеИННПокупателя);
    
    Если Не ДанныеПечати.КорректировочныйСчетФактура Тогда
        СтруктураПараметров.Вставить("ПредставлениеГрузополучателя", ПредставлениеГрузополучателя);
    КонецЕсли;
    
    Если ДействующиеПостановления.Постановление1137 И ЗначениеЗаполнено(ДанныеПечати.Валюта)
        И ОпцииПечатиСчетаФактуры.ПечатьВВалюте Тогда
        
        СтруктураПараметров.Вставить("Валюта", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='Валюта: наименование, код %1, %2'"),
        ДанныеПечати.ВалютаНаименованиеПолное,
        ДанныеПечати.ВалютаКод));
        
    ИначеЕсли ДействующиеПостановления.Постановление1137 Тогда
        СтруктураПараметров.Вставить("Валюта", НСтр("ru='Валюта: наименование, код Российский рубль, 643'"));
    КонецЕсли;
    
    СтруктураПараметровИдентификаторГосКонтракта = Новый Структура("ИдентификаторГосКонтракта");
    ЗаполнитьЗначенияСвойств(СтруктураПараметровИдентификаторГосКонтракта, ДанныеПечати);
    
    ПредставлениеИдентификаторГосКонтракта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru='Идентификатор государственного контракта, договора (соглашения): %1'"),
    СокрЛП(СтруктураПараметровИдентификаторГосКонтракта.ИдентификаторГосКонтракта));
    
    СтруктураПараметров.Вставить("ИдентификаторГосКонтракта", ПредставлениеИдентификаторГосКонтракта);
    
    //Если ОпцииПечатиСчетаФактуры.СчетФактураНалоговыйАгент Тогда
    //    // для печати подвала берем сведения об организации из сведений о покупателе
    //    СведенияОПоставщике = СведенияОПокупателе;
    //КонецЕсли;
    //
    ОбластьМакета.Параметры.Заполнить(СтруктураПараметров);
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
КонецПроцедуры

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

Процедура ЗаполнитьТабличныйДокументСчетФактура(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ОпцииПечатиСчетаФактуры, КомплектыПечати = Неопределено) Экспорт
    
    Перем ВыборкаОснований, ВыборкаКонтрагентов;
    
    ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
    
    Макет1137     = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_СчетФактура1137");
    
    ДанныеПечати        = ДанныеДляПечати.РезультатПоШапке.Выбрать();
    ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Если ДанныеДляПечати.Свойство("РезультатПоКонтрагентам") тогда
        ВыборкаКонтрагентов = ДанныеДляПечати.РезультатПоКонтрагентам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    КонецЕсли;
    
    ДействующиеПостановления = ОпцииПечатиСчетаФактуры.ДействующиеПостановления;
    
    ВыводитьКодыТНВЭД = ВыводитьКодыТНВЭД(ДанныеПечати, ДействующиеПостановления.Постановление981);
    
    
    Если ДанныеДляПечати.Свойство("РезультатПоИсходнымДанным") Тогда
        ВыборкаОснований = ДанныеДляПечати.РезультатПоИсходнымДанным.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    КонецЕсли;
    
    ЕстьПостановление1137 = ЛОЖЬ;
    
    ПервыйДокумент = Истина;
    
    Пока ДанныеПечати.Следующий() Цикл
        
        // Для печати комплектов
        Если КомплектыПечати <> Неопределено И КомплектыПечати.Колонки.Найти("Ссылка") <> Неопределено Тогда
            
            КомплектПечатиПоСсылке = Неопределено;
            
            СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
            ВыборкаОснований.НайтиСледующий(СтруктураПоиска);
            СтрокиОснований = ВыборкаОснований.Выбрать();
            
            Если СтрокиОснований.Следующий() Тогда
                КомплектПечатиПоСсылке = КомплектыПечати.Найти(СтрокиОснований.ДокументОснование, "Ссылка");
            КонецЕсли;
            
            Если КомплектПечатиПоСсылке = Неопределено Тогда
                КомплектПечатиПоСсылке = КомплектыПечати[0];
            КонецЕсли;
            
            Если КомплектПечатиПоСсылке.Экземпляров = 0 Тогда
                Продолжить
            КонецЕсли;
            
        КонецЕсли;
        
        Если ЗначениеЗаполнено(ДанныеПечати.ВалютаСчетаФактуры)
            И ОпцииПечатиСчетаФактуры.ПечатьВВалюте
            И ДанныеПечати.ВалютаСчетаФактуры = ВалютаРегламентированногоУчета Тогда
            
            Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Для %1 указана валюта: рубли. Не требуется печатать счет-фактуру в иностранной валюте.'"),
            ДанныеПечати.Ссылка);
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
            Текст,
            ДанныеПечати.Ссылка);
            
        ИначеЕсли ЗначениеЗаполнено(ДанныеПечати.ВалютаСчетаФактуры)
            
            И НЕ ОпцииПечатиСчетаФактуры.ПечатьВВалюте
            И ДанныеПечати.ВалютаСчетаФактуры <> ВалютаРегламентированногоУчета  Тогда
            
            Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Для %1 указана иностранная валюта. Не требуется печатать счет-фактуру в рублях.'"),
            ДанныеПечати.Ссылка);
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
            Текст,
            ДанныеПечати.Ссылка);
            
        Иначе
            
            ДействующиеПостановления = Новый Структура;
            ДействующиеПостановления.Вставить("Постановление1137", Истина);
            
            ОпцииПечатиСчетаФактуры.Вставить("ДействующиеПостановления", ДействующиеПостановления);
            
            Макет = Макет1137;
            ЕстьПостановление1137 = Истина;
            
        КонецЕсли;
        
        ОпцииПечатиСчетаФактуры.Вставить("Макет", Макет);
        
        Если Не ПервыйДокумент Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        ПервыйДокумент = Ложь;
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
        
        // Выводим общие реквизиты шапки
        СведенияОбОрганизации = Новый Структура;
        ЗаполнитьРеквизитыШапкиСчетФактура(
        ДанныеПечати,
        ВыборкаОснований,
        СведенияОбОрганизации,
        ВыборкаКонтрагентов,
        ТабличныйДокумент,
        ОпцииПечатиСчетаФактуры);
        
        // Выводим заголовок таблицы
        ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
        
        ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
        
        НомерСтраницы = 1;
        
        // Инициализация итогов в документе
        ИтоговыеСуммы = СтруктураИтоговыеСуммы();
        
        // Создаем массив для проверки вывода
        МассивВыводимыхОбластей = Новый Массив;
        
        // Выводим многострочную часть документа
        ОбластьМакетаСтандарт = Макет.ПолучитьОбласть("Строка");
        ОбластьИтого = Макет.ПолучитьОбласть("Итого");
        ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");
        
        СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
        ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
        
        ИспользоватьНаборы = Ложь;
        
        Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоДокументам, "ЭтоНабор") Тогда
            ИспользоватьНаборы = Истина;
            ОбластьМакетаНабор         = Макет.ПолучитьОбласть("СтрокаНабор");
            ОбластьМакетаКомплектующие = Макет.ПолучитьОбласть("СтрокаКомплектующие");
        КонецЕсли;
        
        ЗаполнитьРеквизитыПодвалаСчетФактура(ОбластьПодвала, ДанныеПечати, СведенияОбОрганизации);
        
        //ВыводитьКодыТНВЭД = ВыводитьКодыТНВЭД(ДанныеПечати, ДействующиеПостановления.Постановление981);
        
        СтрокаТовары = ВыборкаПоДокументам.Выбрать();
        КоличествоСтрок = СтрокаТовары.Количество();
        ТолькоСтавкаБезНДС = Истина;
        НомерСтроки = 0;
        
        Пока СтрокаТовары.Следующий() Цикл
            
            ОбластьМакета = ОбластьМакетаСтандарт;

            Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьМакета, Неопределено, ДанныеПечати.КорректировочныйСчетФактура, ВыводитьКодыТНВЭД);
            Иначе
                НомерСтроки = НомерСтроки + 1;
                ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьМакета, НомерСтроки, ДанныеПечати.КорректировочныйСчетФактура, ВыводитьКодыТНВЭД);
        
            КонецЕсли;
            
            СтруктураПараметров = Новый Структура;
            
            Если СтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
                СтруктураПараметров.Вставить("СтавкаНДС", НСтр("ru='без НДС'"));
                СтруктураПараметров.Вставить("СуммаНДС", НСтр("ru='без НДС'"));
            ИначеЕсли СтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
                СтруктураПараметров.Вставить("СуммаНДС", 0);
                ТолькоСтавкаБезНДС = Ложь;
            Иначе
                ТолькоСтавкаБезНДС = Ложь;
            КонецЕсли;
            
            Если Не НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                СтруктураПараметров.Вставить("Акциз", НСтр("ru='без акциза'"));        
            КонецЕсли;
            
            МассивВыводимыхОбластей.Очистить();
            МассивВыводимыхОбластей.Добавить(ОбластьМакета);
            
            Если НомерСтроки = КоличествоСтрок Тогда
                МассивВыводимыхОбластей.Добавить(ОбластьИтого);
                МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
            КонецЕсли;
            
            Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
                
                НомерСтраницы = НомерСтраницы + 1;
                ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();    
                ОбластьНумерацияЛистов = Макет.ПолучитьОбласть("НумерацияЛистов");
                ОбластьНумерацияЛистов.Параметры.Номер = НомерСчетаФактурыНаПечать(ДанныеПечати.Номер, ДанныеПечати.ИндексПодразделения);
                ОбластьНумерацияЛистов.Параметры.Дата = Формат(ДанныеПечати.Дата, "ДЛФ=ДД; ДП=--");
                ОбластьНумерацияЛистов.Параметры.НомерЛиста = НомерСтраницы;                    
                ТабличныйДокумент.Вывести(ОбластьНумерацияЛистов);                
                ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
                
            КонецЕсли;
            
            ОбластьМакета.Параметры.Заполнить(СтруктураПараметров);
            ТабличныйДокумент.Вывести(ОбластьМакета);
            
            Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары);
            КонецЕсли;
            
        КонецЦикла;
        
        // Выводим итоги по д
2 DenYuliya
 
26.02.18
01:05
Проще так...
https://yadi.sk/d/ft6H4dY43SmJBt
3 ildary
 
26.02.18
01:24
На всякий случай - Вы бы поточнее писали - УТ11.Сколько? Потому что 11.1 и 11.4 отличаются внутре значительно.
4 DenYuliya
 
26.02.18
01:27
(3)  Управление торговлей, редакция 11 (11.3.4.149)
5 DenYuliya
 
26.02.18
13:39
Что-то я думаю, может дело все-же не в коде, а в том, что Счет-фактуру 1137 можно печатать не из любого Поступления, типа права какие-нибудь? Я вроде по коду прошлась, ничего такого не нашла, но вдруг упустила что...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший