8.х Внешняя печатная форма!

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

  1. TopicStarter Overlay
    ls600
    Offline

    ls600 Опытный в 1С

    Регистрация:
    14 май 2012
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток. Подскажите создал внешнюю печатную форму. Добавил в 1С Предприятие. При нажатие на нее выводит сообщение.
    Не удалось сформировать внешнюю печатную форму!
    Поле объекта не обнаружено (ДанныеДляПечати)



    Код:
    Функция Печать() Экспорт
    ТабДокумент = Новый ТабличныйДокумент;
    
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура";
    Макет = ПолучитьМакет("СчетФактура");
    
    СведенияОбПокупателе = ОбщегоНазначения.СведенияОЮрФизЛице(СсылкаНаОбъект.ДанныеДляПечати.Покупатель, СсылкаНаОбъект.Дата, ,СсылкаНаОбъект.СчетКонтрагента);
    СведенияОПоставщике  = ОбщегоНазначения.СведенияОЮрФизЛице(СсылкаНаОбъект.ДанныеДляПечати.Поставщик, СсылкаНаОбъект.Дата, ,СсылкаНаОбъект.СчетОрганизации);
    
    СведенияОГрузоотправителе = Новый Структура;
    Если ЗначениеЗаполнено(СсылкаНаОбъект.ДанныеДляПечати.Грузоотправитель) Тогда
    СведенияОГрузоотправителе = ОбщегоНазначения.СведенияОЮрФизЛице(СсылкаНаОбъект.ДанныеДляПечати.Грузоотправитель, СсылкаНаОбъект.Дата);
    КонецЕсли;
    
    СведенияОГрузополучателе = Новый Структура;
    Если ЗначениеЗаполнено(СсылкаНаОбъект.ДанныеДляПечати.Грузополучатель) Тогда
    СведенияОГрузополучателе = ОбщегоНазначения.СведенияОЮрФизЛице(СсылкаНаОбъект.ДанныеДляПечати.Грузополучатель, СсылкаНаОбъект.Дата);
    КонецЕсли;
    // Выводим шапку накладной
    
    ТекстДопСчетФактура = "";
    Если СсылкаНаОбъект.ДанныеДляПечати.Дополнительная Тогда
    ТекстДопСчетФактура = "Дополнительный Счет-фактура" + ?(ЗначениеЗаполнено(СсылкаНаОбъект.ДанныеДляПечати.ОсновнойСчетФактура), " к " +
    "Счету-фактуре №" + ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект.ДанныеДляПечати.ОсновнойСчетФактура) + " от " + Формат(СсылкаНаОбъект.ДанныеДляПечати.ОсновнойСчетФактура.Дата,"ДФ=dd.MM.yyyy" ),"");
    КонецЕсли;
    
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакета.Параметры.ДопСчетФактура = ТекстДопСчетФактура;
    ОбластьМакета.Параметры.Заполнить(СсылкаНаОбъект.ДанныеДляПечати);
    
    Попытка
    Если Найти(Строка(СсылкаНаОбъект.ДокументОснование.УсловияОплаты),"Расчет наличными денежными")>0 Тогда
    ОбластьМакета.Параметры.УсловияОплаты	= "Расчет наличными";
    Иначе
    ОбластьМакета.Параметры.УсловияОплаты	= "Расчет в безналичном порядке ("+СсылкаНаОбъект.ДокументОснование.Доверенность+" от "+СсылкаНаОбъект.ДокументОснование.ДатаДоверенности+")";
    КонецЕсли;
    Исключение
    КонецПопытки;
    
    ОбластьМакета.Параметры.Номер = РаботаСДиалогами.СформироватьЗаголовокДокумента(ЭтотОбъект, "Счет-фактура", глСписокПрефиксовУзлов);
    // Если СтрДлина(КвитанцияДляФактуры)<2 Тогда
    КвитанцияДляФактуры = РаботаСДиалогами.СформироватьЗаголовокДокумента(ЭтотОбъект, ".", глСписокПрефиксовУзлов);
    // КонецЕсли;
    Если СсылкаНаОбъект.ДокументыОснования.Количество()>0 Тогда
    Если ЗначениеЗаполнено(СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование) Тогда
    ОбластьМакета.Параметры.ТТН = СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование;
    // Если СтрДлина(ВагоныДляФактуры)>2 Тогда
    ОбластьМакета.Параметры.ТТН = КвитанцияДляФактуры;
    
    КонецЕсли;
    КонецЕсли;
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ОбщегоНазначения.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,");
    
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ОбщегоНазначения.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,") +
    ОбщегоНазначения.ОписаниеОрганизации(СведенияОПоставщике, "БИН_ИИН,");
    Если СтрДлина(ВагоныДляФактуры)<2 Тогда
    ВагоныДляФактуры = "  самовывоз  ";
    Если (СтрДлина(КвитанцияДляФактуры)>2)И(СтрДлина(КвитанцияДляФактуры)<16) Тогда
    ВагоныДляФактуры = КвитанцияДляФактуры;
    КонецЕсли;
    Иначе
    КвитанцияДляФактуры = "кв ";
    Если СсылкаНаОбъект.ДокументыОснования.Количество()>0 Тогда
    Если ТипЗнч(СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаЦемента")
    Или ТипЗнч(СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаСторонно")
    Или ТипЗнч(СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
    Для Каждого Вагон из СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование.Вагоны Цикл
    КвитанцияДляФактуры = КвитанцияДляФактуры + Вагон.Квитанция + ", ";
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;
    ОбластьМакета.Параметры.ТТН = КвитанцияДляФактуры;
    КонецЕсли;
    ОбластьМакета.Параметры.СпособОтправления = ВагоныДляФактуры;
    
    Стр = ""; Стр = глТекущийПользователь;
    Н1 = Найти (Стр, "Галицкая");
    Н2 = Найти (Стр, "Админ");
    Н3 = Найти (Стр, "Шерер");
    Если СсылкаНаОбъект.ДокументыОснования.Количество()>0 Тогда
    Если  ((Н1>0)ИлИ(Н2>0)ИлИ(Н3>0)) И ТипЗнч(СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаЦемента")  Тогда
    Ссс = Строка("("+СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование.ДокументОтправки+")");
    Если Ссс<>"("+")" Тогда
    ОбластьМакета.Параметры.ТТН = "";
    КонецЕсли;
    ОбластьМакета.Параметры.СпособОтправления = ОбластьМакета.Параметры.СпособОтправления + " ("+СсылкаНаОбъект.ДокументыОснования[0].ДокументОснование.ДокументОтправки+")";
    КонецЕсли;
    КонецЕсли;
    
    ОбластьМакета.Параметры.СвидетельствоПоНДС = "свидетельство   серия 30001 №0010460 от 5 августа 2009г";
    ПредставлениеРНН_БИНПоставщика = "";
    РННиБИНПоставщика = ОбщегоНазначения.ПолучитьРегистрационныйНомерОрганизацииКонтрагентаВПечатнуюФорму(СведенияОПоставщике, СсылкаНаОбъект.Дата, Истина, ПредставлениеРНН_БИНПоставщика);
    ОбластьМакета.Параметры.РННИАдресПоставщика	  = РННиБИНПоставщика  + ", " +  ОбщегоНазначения.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес,");
    
    ОбластьМакета.Параметры.РасчетныйСчетПоставщика	= ОбщегоНазначения.ОписаниеОрганизации(СведенияОПоставщике, "НомерСчета,Банк,БИК,");
    ОбластьМакета.Параметры.РасчетныйСчетПоставщика = ОбластьМакета.Параметры.РасчетныйСчетПоставщика + " БИК: "+Строка(СсылкаНаОбъект.СчетОрганизации.Банк.Код);
    
    ПредставлениеРНН_БИНГрузоотправителя = "";
    РННиБИНГрузоотправителя = ОбщегоНазначения.ПолучитьРегистрационныйНомерОрганизацииКонтрагентаВПечатнуюФорму(СведенияОГрузоотправителе, СсылкаНаОбъект.Дата, Истина, ПредставлениеРНН_БИНГрузоотправителя);
    ОбластьМакета.Параметры.ПредставлениеГрузоотправителя  = РННиБИНГрузоотправителя  + ", " +  ОбщегоНазначения.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование,ЮридическийАдрес,");
    ПредставлениеРНН_БИНГрузополучателя = "";
    РННиБИНГрузополучателя = ОбщегоНазначения.ПолучитьРегистрационныйНомерОрганизацииКонтрагентаВПечатнуюФорму(СведенияОГрузополучателе, СсылкаНаОбъект.Дата, Истина, ПредставлениеРНН_БИНГрузополучателя);
    ОбластьМакета.Параметры.ПредставлениеГрузополучателя  = РННиБИНГрузополучателя
    + ", " +  ОбщегоНазначения.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ЮридическийАдрес,")
    + ?(ТипЗнч(СсылкаНаОбъект.ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаЦемента") И ЗначениеЗаполнено(СсылкаНаОбъект.ДокументОснование.Направление),", " + СсылкаНаОбъект.ДокументОснование.Направление.Наименование,"");
    ОбластьМакета.Параметры.ПредставлениеПокупателя	= ОбщегоНазначения.ОписаниеОрганизации(СведенияОбПокупателе, "ПолноеНаименование,");
    
    ПредставлениеРНН_БИНПокупателя = "";
    РННиБИНПокупателя = ОбщегоНазначения.ПолучитьРегистрационныйНомерОрганизацииКонтрагентаВПечатнуюФорму(СведенияОбПокупателе, СсылкаНаОбъект.Дата, Истина, ПредставлениеРНН_БИНПокупателя);
    ОбластьМакета.Параметры.РННИАдресПокупателя = РННиБИНПокупателя  + ", " +  ОбщегоНазначения.ОписаниеОрганизации(СведенияОбПокупателе, "ЮридическийАдрес,")
    + ", " +  ОбщегоНазначения.ОписаниеОрганизации(СведенияОбПокупателе, "Телефоны,");
    // ОбластьМакета.Параметры.ПредставлениеРНН_БИНПокупателя = ПредставлениеРНН_БИНПокупателя;
    
    СтрС = ОбщегоНазначения.ОписаниеОрганизации(СведенияОбПокупателе, "НомерСчета,Банк,БИК,");
    Если ЗначениеЗаполнено(СсылкаНаОбъект.СчетКонтрАгента) Тогда
    СтрС = СтрС + " БИК: " + СсылкаНаОбъект.СчетКонтрАгента.Банк.Код;
    КонецЕсли;
    ОбластьМакета.Параметры.РасчетныйСчетПокупателя = СтрС;
    
    
    Стр = ""; Стр = глТекущийПользователь;
    Если Найти(Стр,"Максим")>0 Тогда
    ОбластьМакета.Параметры.СпособОтправления = "";
    ОбластьМакета.Параметры.ТТН = "";
    КонецЕсли;
    
    ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    ИтогоСуммаНДС = 0;
    ИтогоВсего	= 0;
    ВыборкаСтрокТовары = СсылкаНаОбъект.ДанныеДляПечати.ТабличнаяЧасть;
    Для Каждого Строчка Из ВыборкаСтрокТовары Цикл
    
    ОбластьМакета.Параметры.Заполнить(Строчка);
    ТабДокумент.Вывести(ОбластьМакета);
    КонецЦикла;
    ОбластьМакета = Макет.ПолучитьОбласть("Итого");
    ОбластьМакета.Параметры.ИтогоСуммаНДС	= ВыборкаСтрокТовары.Итог("СуммаНДС");
    ОбластьМакета.Параметры.ИтогоСтоимостьБезНДС  = ВыборкаСтрокТовары.Итог("СтоимостьБезНДС");
    ОбластьМакета.Параметры.ИтогоВсего	   = ВыборкаСтрокТовары.Итог("Всего");
    
    _О = Макет.ПолучитьОбласть("Пропись");
    _О.Параметры.Текст = ЧислоПрописью(ВыборкаСтрокТовары.Итог("Всего"),,"Тенге, Тенге, Тенге, м, тиын, тиын, тиын, м, 2");
    
    
    ОбластьМакета.Параметры.ИтогоСуммаАкциза   = ВыборкаСтрокТовары.Итог("СуммаАкциза");
    ТабДокумент.Вывести(ОбластьМакета);
    ТабДокумент.Вывести(_О);
    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакета.Параметры.Заполнить(СсылкаНаОбъект.ДанныеДляПечати);
    
    Руководители = ОбщегоНазначения.ОтветственныеЛицаОрганизаций(СсылкаНаОбъект.ДанныеДляПечати.Поставщик, СсылкаНаОбъект.Дата);
    Если ЗначениеЗаполнено(Руководители.Руководитель) Тогда
    ДолжностьРуководителя = "Руководитель организации ";
    ОбластьМакета.Параметры.ФИОРуководителя =  ДолжностьРуководителя + Руководители.Руководитель;
    Иначе
    ДолжностьРуководителя = "Руководитель организации ";
    ОбластьМакета.Параметры.ФИОРуководителя = ДолжностьРуководителя + Руководители.Руководитель;
    КонецЕсли;  
    //заполним уполномоченного за главного бухгалтера для подписи счета-фактуры
    Если ЗначениеЗаполнено(Руководители.ГлавныйБухгалтер) Тогда
    ДолжностьГлБухгалтера = ?(НЕ ЗначениеЗаполнено(Руководители.ГлавныйБухгалтерДолжность), "<Должность не указана>: ", Руководители.ГлавныйБухгалтерДолжность + ": ");
    ОбластьМакета.Параметры.ФИОГлавногоБухгалтера = ДолжностьГлБухгалтера + Руководители.ГлавныйБухгалтер;
    Иначе
    ДолжностьГлБухгалтера = "Главный бухгалтер: ";
    ГлавныйБухгалтер = ?(НЕ ЗначениеЗаполнено(Руководители.ГлавныйБухгалтер), "Не предусмотрен", Руководители.ГлавныйБухгалтер);
    ОбластьМакета.Параметры.ФИОГлавногоБухгалтера = ДолжностьГлБухгалтера + ГлавныйБухгалтер;
    КонецЕсли;
    
    //заполним уполномоченного за руководителя для подписи счета-фактуры
    Если ЗначениеЗаполнено(Руководители.УполномоченныйПодписыватьСчетаФактурыЗаРуководителя) Тогда
    ДолжностьРуководителя = "Уполномоченный за руководителя: ";
    ОбластьМакета.Параметры.УполномоченныйЗаРуководителя =  ДолжностьРуководителя + Руководители.УполномоченныйПодписыватьСчетаФактурыЗаРуководителя;
    Иначе
    ДолжностьРуководителя = "Уполномоченный за руководителя: ";
    ОбластьМакета.Параметры.УполномоченныйЗаРуководителя = ДолжностьРуководителя + Руководители.Руководитель;
    КонецЕсли;  
    
    Если НЕ  СсылкаНаОбъект.Ответственный.ФизЛицо.Пустая() Тогда
    ДанныеОтветственногоЛица = ПроцедурыУправленияПерсоналом.ДанныеФизЛица(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Ответственный.ФизЛицо, СсылкаНаОбъект.Дата);
    ОбластьМакета.Параметры.ФИОИсполнителя = ДанныеОтветственногоЛица.Представление;
    ОбластьМакета.Параметры.ДолжностьИсполнителя = ДанныеОтветственногоЛица.Должность;
    
    //Если ДокументыОснования.Количество()>0 Тогда
    // ЗначениеЗаполнено(ДокументыОснования[0].ДокументОснование) Тогда
    // //ОбластьМакета.Параметры.ДолжностьИсполнителя = Ответственный;
    //КонецЕсли;
    КонецЕсли;
    //ОбластьМакета.Параметры.ФИОИсполнителя = Ответственный;
    
    ТабДокумент.Вывести(ОбластьМакета);
    
    Если (СтрДлина(ВагоныДляФактуры)>4)И(Найти(ВагоныДляФактуры,"самовывоз")=0) Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Конверт");
    ОбластьМакета.Параметры.Получатель = "Получатель: "+ОбщегоНазначения.ОписаниеОрганизации(СведенияОбПокупателе, "ПолноеНаименование,");
    ОбластьМакета.Параметры.Адрес = "Адрес: "+ОбщегоНазначения.ОписаниеОрганизации(СведенияОбПокупателе, "ФактическийАдрес,");
    
    ТабДокумент.Вывести(ОбластьМакета);
    КонецЕсли;
    Возврат ТабДокумент;
    КонецФункции // ПечатьСчетаФактуры()
    
    Может где что забыл добавить?! Заранее благодарю !
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Вы написали подобный код и не можете разобраться с этой ошибкой?! Странно. Ну да ладно. Я думаю, что отладчик Вам подскажет...
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Похоже вид документ, который указали при регистрации ВПФ не содержит данного реквизита.
  4. TopicStarter Overlay
    ls600
    Offline

    ls600 Опытный в 1С

    Регистрация:
    14 май 2012
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    данные для печати находятся
    Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт?
  5. TopicStarter Overlay
    ls600
    Offline

    ls600 Опытный в 1С

    Регистрация:
    14 май 2012
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Закрывайте тему, решил проблему!
  6. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Хотя бы решение напишите :)
  7. TopicStarter Overlay
    ls600
    Offline

    ls600 Опытный в 1С

    Регистрация:
    14 май 2012
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    надо было еще две функции добавить.

    Функция СобратьДанныеТабличныхЧастейДляПечати(Ссылка)


    Код:
    Функция ИнициализацияТаблицыСтрок()
    ТаблицаСтрок = Новый ТаблицаЗначений;
    ТаблицаСтрок.Колонки.Добавить("НомерСтроки");
    ТаблицаСтрок.Колонки.Добавить("ТоварНаименование");
    ТаблицаСтрок.Колонки.Добавить("ЕдиницаИзмеренияНаименование");
    ТаблицаСтрок.Колонки.Добавить("Количество");
    ТаблицаСтрок.Колонки.Добавить("ЦенаБезНДС");
    ТаблицаСтрок.Колонки.Добавить("СтоимостьБезНДС");
    ТаблицаСтрок.Колонки.Добавить("СтавкаНДС");
    ТаблицаСтрок.Колонки.Добавить("СуммаНДС");
    ТаблицаСтрок.Колонки.Добавить("СтавкаАкциза");
    ТаблицаСтрок.Колонки.Добавить("СуммаАкциза");
    ТаблицаСтрок.Колонки.Добавить("Всего");
    
    Возврат ТаблицаСтрок;
    
    КонецФункции // ИнициализацияТаблицыСтрок()
    

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