Имя: Пароль:
1C
1С v8
Пустой табличный документ
0 Never
 
03.12.18
14:03
Добрый день. Пытаюсь сделать УПД ВПФ из встроенной. При печати выводится пустой табличный документ. Где накосячил?
Функция Печать() Экспорт
    
    ТабДокумент = Новый ТабличныйДокумент;
    
    возврат ТабДокумент;
    
КонецФункции // Печать
Функция ОпределитьСчетФактураТребуются(МассивОбъектов)
    
    ДокументыСчетФактураНеТребуется = Новый Массив;
    
    Если НЕ ЗначениеЗаполнено(МассивОбъектов) Тогда
        Возврат ДокументыСчетФактураНеТребуется;
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Запрос.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    |    ИСТИНА КАК ЕстьНДС
    |ПОМЕСТИТЬ ВТ_ДокументыСНДС
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |    И РеализацияТоваровУслуг.СуммаНДС > 0
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    РеализацияТоваровУслуг.Ссылка,
    |    ИСТИНА
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |    И РеализацияТоваровУслуг.СуммаНДС > 0
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка,
    |    РеализацияТоваровУслуг.Дата,
    |    РеализацияТоваровУслуг.Организация,
    |    ЕСТЬNULL(ВТ_ДокументыСНДС.ЕстьНДС, ЛОЖЬ) КАК ЕстьНДС
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДокументыСНДС КАК ВТ_ДокументыСНДС
    |        ПО (ВТ_ДокументыСНДС.Ссылка = РеализацияТоваровУслуг.Ссылка)
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |    И РеализацияТоваровУслуг.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности)
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |    И РеализацияТоваровУслуг.ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СКомиссионером)
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка,
    |    РеализацияТоваровУслуг.Дата,
    |    РеализацияТоваровУслуг.Организация,
    |    ЕСТЬNULL(ВТ_ДокументыСНДС.ЕстьНДС, ЛОЖЬ) КАК ЕстьНДС
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДокументыСНДС КАК ВТ_ДокументыСНДС
    |        ПО РеализацияТоваровУслуг.Ссылка = ВТ_ДокументыСНДС.Ссылка
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
    |    И РеализацияТоваровУслуг.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности)
    |    И РеализацияТоваровУслуг.ДоговорКонтрагента.ВидДоговора <> ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СКомиссионером)";
    
    Результат = Запрос.ВыполнитьПакет();
    
    // Отгрузки без перехода права собственности
    Выборка = Результат[1].Выбрать();
    Пока Выборка.Следующий() Цикл
        
        УчетнаяПолитика = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитикиРегл(Выборка.Дата, Выборка.Организация);
           Если НЕ ЗначениеЗаполнено(УчетнаяПолитика) Тогда
            ДокументыСчетФактураНеТребуется.Добавить(Выборка.Ссылка);
        ИначеЕсли НЕ УчетнаяПолитика.НачислятьНДСПоОтгрузке Тогда
            ДокументыСчетФактураНеТребуется.Добавить(Выборка.Ссылка);
        ИначеЕсли НЕ Выборка.ЕстьНДС И УчетнаяПолитика.УСН Тогда
            ДокументыСчетФактураНеТребуется.Добавить(Выборка.Ссылка);
        КонецЕсли;
        
    КонецЦикла;
    
    // Отгрузки по договорам комиссии
    Выборка = Результат[2].Выбрать();
    Пока Выборка.Следующий() Цикл
        ДокументыСчетФактураНеТребуется.Добавить(Выборка.Ссылка);
    КонецЦикла;
    
    // Прочие реализации
    Выборка = Результат[3].Выбрать();
    Пока Выборка.Следующий() Цикл
        
        УчетнаяПолитика = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитикиРегл(Выборка.Дата, Выборка.Организация);
           Если НЕ ЗначениеЗаполнено(УчетнаяПолитика) Тогда
            ДокументыСчетФактураНеТребуется.Добавить(Выборка.Ссылка);
        ИначеЕсли НЕ Выборка.ЕстьНДС И УчетнаяПолитика.УСН Тогда
            ДокументыСчетФактураНеТребуется.Добавить(Выборка.Ссылка);
        КонецЕсли;
        
    КонецЦикла;
    
    Возврат ДокументыСчетФактураНеТребуется;
    
КонецФункции

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


    
    Возврат ТабДокумент;
    
КонецФункции
1 Полбатона
 
03.12.18
14:05
Функция Печать() Экспорт
    
    
    
    возврат ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати);
    
КонецФункции// Печать
2 Never
 
03.12.18
14:06
(1) Переменная не определена МассивОбъектов, Объекты печати(
3 Lexey_
 
03.12.18
14:08
(0) а откуда он будет непустой, если
"ТабДокумент = Новый ТабличныйДокумент;
    
возврат ТабДокумент;"
?
4 Never
 
03.12.18
14:12
(3) Если так то при печати выдает, недостаточно фактических параметров




Функция Печать(МассивОбъектов, ОбъектыПечати) Экспорт
    
    ТабДокумент = ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати);
    
    возврат ТабДокумент;
    
КонецФункции // Печать
5 Lexey_
 
03.12.18
14:27
(4) конечно недостаточно, ты же наверняка не передаешь их при вызове процедуры Печать()
6 Never
 
03.12.18
14:37
(5) Не подскажешь как передать?
7 hhhh
 
03.12.18
14:49
(6) посмотреть в типовой. Там штук 5 параметров. А ты почему=то 2 параметра пишешь.
8 Never
 
03.12.18
15:40
Перем МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода;
Функция Печать() Экспорт
    
    ТабДокумент = ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати);
    
    возврат ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати);
    
КонецФункции // Печать


Значение не является значением объектного типа (Количество)
    ВыводитьКолонтитул         = МассивОбъектов.Количество() = 1;

Теперь это(
9 dezss
 
03.12.18
16:01
(0) Посмотри в типовой любую команду печати.
Например, в документе.
10 Полбатона
 
03.12.18
16:12
>Где накосячил?
Везде
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший