Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 мар 2025, 00:03

Команда печати

Автор sali, 18 мар 2025, 14:14

0 Пользователей и 4 гостей просматривают эту тему.

antoneus

В серверной процедуре

РеквизитФормыВЗначение("Объект").Печать(сюда можно передать всякие параметры)
Ну или, раз форма нарисована - перетащить процедуру печати в нее.
Но вообще, надо задействовать стандартный механизм (УправлениеПечатью.что-то там) и просто подсовывать в него свой табличный документ. Потому что все захотят, чтобы печатная форма открывалась в стандартной форме со всякими кнопочками - для сохранения, отправки по почте и пыр.

sali

Цитата: antoneus от 20 мар 2025, 06:51Печать(сюда можно передать всякие параметры)
типо моих курс валюты и сама валюта?

antoneus


sali

@antoneus, а что может означать
Метод объекта не обнаружен (НайтиПоЗначению)
{ОбщийМодуль.УправлениеПечатью.Модуль(115)}: Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
{ВнешняяОбработка.торг12.Форма.Форма.Форма(953)}: УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
{ВнешняяОбработка.торг12.Форма.Форма.Форма(5)}: ТаблДокум = СформироватьПФ(объект.СсылкаНаДокумент, таблдокум, истина);

строка Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);

полный код в общем модуле управление печатью
// Задает область печати объекта в табличном документе. Необходимо использовать при выводе нескольких печатных форм
// в одном табличном документе для возможности печати комплектов документов, а также для возможности сохранения
// печатных форм в отдельных файлах.
// Необходимо вызывать после формирования каждой печатной формы в табличном документе.
//
// Параметры:
//  ТабличныйДокумент - ТабличныйДокумент - печатная форма;
//  НомерСтрокиНачало - Число - позиция начала очередной области в документе;
//  ОбъектыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ОбъектыПечати
//  Ссылка - ЛюбаяСсылка - объект печати.
//
// Пример:
//  Пока ВыборкаПоДокументам.Следующий() Цикл
//    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
//    // ... вывод печатной формы в табличный документ ...
//    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
//  КонецЦикла;
//
Процедура ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка) Экспорт

Если Не ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Ссылка)) Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недопустимое значение параметра ""Ссылка"",
|ожидалось значение ссылочного типа, передано значение: ""%1"" (тип %2)'"), Ссылка, ТипЗнч(Ссылка));
Попытка // Такая конструкция нужна для проброса стека в журнал регистрации.
ВызватьИсключение ТекстСообщения;
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Печать'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , ,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Возврат;
КонецЕсли;

Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
Если Элемент = Неопределено Тогда
ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ=");
ОбъектыПечати.Добавить(Ссылка, ИмяОбласти);
Иначе
ИмяОбласти = Элемент.Представление;
КонецЕсли;

НомерСтрокиОкончание = ТабличныйДокумент.ВысотаТаблицы;
ТабличныйДокумент.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти;

Если Не НастройкиПечати().ИспользоватьПодписиИПечати Тогда
Возврат;
КонецЕсли;

Для Каждого Рисунок Из ТабличныйДокумент.Рисунки Цикл
ЭтоПодписьИПечать = Ложь;
Для Каждого ИмяОбластиСПодписьюИПечатью Из ПрефиксыИменОбластейСПодписьюИПечатью() Цикл
Если СтрНайти(Рисунок.Имя, ИмяОбластиСПодписьюИПечатью) > 0 Тогда
ЭтоПодписьИПечать = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ЭтоПодписьИПечать Тогда
Продолжить;
КонецЕсли;
Если Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Картинка И СтрНайти(Рисунок.Имя, "_Документ_") = 0 Тогда
Рисунок.Имя = Рисунок.Имя + "_" + ИмяОбласти;
КонецЕсли;
КонецЦикла;

КонецПроцедуры

Процедура в модуле формы


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

КонецПроцедуры


Функция СформироватьПФ(ДанныеОбъектовПечати, ОбъектыПечати, ВключаяРаботыУслуги) Экспорт
Перем Ошибки, ПервыйДокумент, НомерСтрокиНачало;

   
//Макет = УправлениеПечатью.МакетПечатнойФормы("документ.РасходнаяНакладная.ПФ_MXL_ТОРГ12валютный");//ПолныйПутьКМакету());//ОписаниеПечатнойФормы.ПолныйПутьКМакету);
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПФ_MXL_ТОРГ12валютный");
ТабличныйДокумент = Новый ТабличныйДокумент;//ОписаниеПечатнойФормы.ТабличныйДокумент;
ДанныеПечати = Новый Структура;   

ДанныеОбъектовПечати = ДанныеДокументовРегУчет(объект.СсылкаНаДокумент, Истина, Истина, Ошибки);

ЕстьТЧЗапасы = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаЗапасы") <> Неопределено);
ЕстьТЧПродукция = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаПродукция") <> Неопределено);
ЕстьТЧОтходы = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаОтходы") <> Неопределено);
ЕстьТЧРаботыУслуги = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаРаботыУслуги") <> Неопределено);
НациональнаяВалюта = Константы.НациональнаяВалюта.Получить();

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

Для Каждого ДанныеОбъекта Из ДанныеОбъектовПечати Цикл

ПечатьДокументовУНФ.ПередНачаломФормированияДокумента(ТабличныйДокумент, ПервыйДокумент, НомерСтрокиНачало,
ДанныеПечати);

Если ОбластиМакета.ОбластьМакетаШапка <> Неопределено Тогда

НомерДокумента = ПечатьДокументовУНФ.ПолучитьНомерНаПечатьСУчетомДатыДокумента(ДанныеОбъекта.ДатаДокумента,
ДанныеОбъекта.Номер, ДанныеОбъекта.Организация.Префикс);

ДанныеПечати.Вставить("НомерДокумента", НомерДокумента);
ДанныеПечати.Вставить("ДатаДокумента", ДанныеОбъекта.ДатаДокумента);

БанковскийСчетГрузоотправителя = ?(ДанныеОбъекта.Организация = ДанныеОбъекта.Грузоотправитель,
ДанныеОбъекта.БанковскийСчет, Неопределено);

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

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

Если ПустаяСтрока(ДанныеОбъекта.АдресДоставки) Тогда

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

Иначе

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

ДанныеПечати.Вставить("ПредставлениеГрузополучателя", СтрШаблон("%1, %2, %3", ПерваяЧастьКИ,
ДанныеОбъекта.АдресДоставки, ВтораяЧастьКИ));

КонецЕсли;

ДанныеПечати.Вставить("ГрузоотправительПоОКПО", СведенияОГрузоотправителе.КодПоОКПО);
ДанныеПечати.Вставить("ПредставлениеПодразделения", ДанныеОбъекта.ПредставлениеСкладаСписания);
ДанныеПечати.Вставить("ВидДеятельностиПоОКДП", Неопределено);
ДанныеПечати.Вставить("ГрузополучательПоОКПО", СведенияОГрузополучателе.КодПоОКПО);
ДанныеПечати.Вставить("ПоставщикПоОКПО", СведенияОПоставщике.КодПоОКПО);
ДанныеПечати.Вставить("ПлательщикПоОКПО", СведенияОПокупателе.КодПоОКПО);
ДанныеПечати.Вставить("ПредставлениеОснования", ДанныеОбъекта.ПредставлениеОснования);

ОснованиеНомер = Строка(ДанныеОбъекта.ОснованиеНомер);
Если Не ПустаяСтрока(ОснованиеНомер) Тогда

ОснованиеНомер = ПечатьДокументовУНФ.ПолучитьНомерНаПечатьСУчетомДатыДокумента(
ДанныеОбъекта.ДатаДокумента, ОснованиеНомер, ДанныеОбъекта.Префикс);

КонецЕсли;

ДанныеПечати.Вставить("ОснованиеНомер", ОснованиеНомер);
ДанныеПечати.Вставить("ОснованиеДата", ДанныеОбъекта.ОснованиеДата);
ДанныеПечати.Вставить("ТранспортнаяНакладнаяНомер", ДанныеОбъекта.ТранспортнаяНакладнаяНомер);
ДанныеПечати.Вставить("ТранспортнаяНакладнаяДата", ДанныеОбъекта.ТранспортнаяНакладнаяДата);

ОбластиМакета.ОбластьМакетаШапка.Параметры.Заполнить(ДанныеПечати);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет,
ОбластиМакета.ОбластьМакетаШапка, ДанныеОбъекта.Ссылка);
ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаШапка);

КонецЕсли;

Итоги = Новый Структура;
Итоги.Вставить("ИтогоМестНаСтранице", 0);
Итоги.Вставить("ИтогоМассаБруттоПоСтранице", 0);
Итоги.Вставить("ИтогоКоличествоНаСтранице", 0);
Итоги.Вставить("ИтогоСуммаНаСтранице", 0);
Итоги.Вставить("ИтогоНДСНаСтранице", 0);
Итоги.Вставить("ИтогоСуммаСНДСНаСтранице", 0);
Итоги.Вставить("НомерСтроки", 0);
Итоги.Вставить("КоличествоСтрок", 0);
Итоги.Вставить("ИтогоМест", 0);
Итоги.Вставить("ИтогоМассаБрутто", 0);
Итоги.Вставить("ИтогоКоличество", 0);
Итоги.Вставить("ИтогоСумма", 0);
Итоги.Вставить("ИтогоНДС", 0);
Итоги.Вставить("ИтогоСуммаСНДС", 0);
Итоги.Вставить("НомерСтраницы", 1);
Итоги.Вставить("ИспользоватьФаксимиле", ДанныеОбъекта.ИспользоватьФаксимиле);

Если ОбластиМакета.ОбластьМакетаЗаголовокТаблицы <> Неопределено Тогда

ДанныеПечати.Вставить("НомерСтраницы", "Страница " + Итоги.НомерСтраницы);

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

КонецЕсли;

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

Если ОбластиМакета.ОбластьМакетаСтрока <> Неопределено Тогда

ПараметрыНоменклатуры = Новый Структура;

Если ЕстьТЧЗапасы Тогда

// Наборы
Итоги.Вставить("ЕстьНаборы", ДанныеОбъекта.ТаблицаЗапасы.Колонки.Найти(
"НоменклатураНабора") <> Неопределено);

Для Каждого СтрокаЗапаса Из ДанныеОбъекта.ТаблицаЗапасы Цикл

Если Не ВключаяРаботыУслуги
И СтрокаЗапаса.ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.Запас
И СтрокаЗапаса.ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.ПодарочныйСертификат Тогда

Продолжить;

КонецЕсли;

Если СтрокаЗапаса.Количество = 0 Тогда

Продолжить;

КонецЕсли;

Если Итоги.НомерСтроки <> 0 И СтрокаКорректноРазмещаетсяНаСтранице(ТабличныйДокумент,
ОбластиМакета, Итоги) = Ложь Тогда

ДобавитьНовуюСтраницуДокумента(ТабличныйДокумент, ОбластиМакета, Итоги);

КонецЕсли;

ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧасти(СтрокаЗапаса, ДанныеПечати, ПараметрыНоменклатуры,
Итоги, ДанныеОбъекта.СуммаВключаетНДС);
ОбластиМакета.ОбластьМакетаСтрока.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаСтрока);

// Наборы
Если Итоги.ЕстьНаборы Тогда
НаборыСервер.УчестьОформлениеСтрокиНабора(ТабличныйДокумент, ОбластиМакета.ОбластьМакетаСтрока,
СтрокаЗапаса);
КонецЕсли;
// Конец Наборы

КонецЦикла;

КонецЕсли;

Если ВключаяРаботыУслуги И ЕстьТЧРаботыУслуги Тогда

// Наборы
Итоги.Вставить("ЕстьНаборы", ДанныеОбъекта.ТаблицаРаботыУслуги.Колонки.Найти(
"НоменклатураНабора") <> Неопределено);

Для Каждого СтрокаРаботУслуг Из ДанныеОбъекта.ТаблицаРаботыУслуги Цикл

Если Итоги.НомерСтроки <> 0 И СтрокаКорректноРазмещаетсяНаСтранице(ТабличныйДокумент,
ОбластиМакета, Итоги) = Ложь Тогда

ДобавитьНовуюСтраницуДокумента(ТабличныйДокумент, ОбластиМакета, Итоги);

КонецЕсли;

Если СтрокаРаботУслуг.Количество = 0 Тогда

Продолжить;

КонецЕсли;

ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧасти(СтрокаРаботУслуг, ДанныеПечати, ПараметрыНоменклатуры,
Итоги, ДанныеОбъекта.СуммаВключаетНДС);
ОбластиМакета.ОбластьМакетаСтрока.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаСтрока);

// Наборы
Если Итоги.ЕстьНаборы Тогда
НаборыСервер.УчестьОформлениеСтрокиНабора(ТабличныйДокумент, ОбластиМакета.ОбластьМакетаСтрока,
СтрокаРаботУслуг);
КонецЕсли;
// Конец Наборы

КонецЦикла;

КонецЕсли;

// Наборы
Итоги.Вставить("ЕстьНаборы", Ложь);

Если ЕстьТЧПродукция Тогда

Для Каждого СтрокаПродукция Из ДанныеОбъекта.ТаблицаПродукция Цикл

Если Не ВключаяРаботыУслуги
И СтрокаПродукция.ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.Запас Тогда

Продолжить;

КонецЕсли;

Если СтрокаПродукция.Количество = 0 Тогда

Продолжить;

КонецЕсли;

Если Итоги.НомерСтроки <> 0 И СтрокаКорректноРазмещаетсяНаСтранице(ТабличныйДокумент,
ОбластиМакета, Итоги) = Ложь Тогда

ДобавитьНовуюСтраницуДокумента(ТабличныйДокумент, ОбластиМакета, Итоги);

КонецЕсли;

ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧасти(СтрокаПродукция, ДанныеПечати, ПараметрыНоменклатуры,
Итоги, ДанныеОбъекта.СуммаВключаетНДС);

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

КонецЦикла;

КонецЕсли;

Если ЕстьТЧОтходы Тогда

Для Каждого СтрокаОтходы Из ДанныеОбъекта.ТаблицаОтходы Цикл

Если Не ВключаяРаботыУслуги И СтрокаОтходы.ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.Запас Тогда

Продолжить;

КонецЕсли;

Если СтрокаОтходы.Количество = 0 Тогда

Продолжить;

КонецЕсли;

Если Итоги.НомерСтроки <> 0 И СтрокаКорректноРазмещаетсяНаСтранице(ТабличныйДокумент,
ОбластиМакета, Итоги) = Ложь Тогда

ДобавитьНовуюСтраницуДокумента(ТабличныйДокумент, ОбластиМакета, Итоги);

КонецЕсли;

ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧасти(СтрокаОтходы, ДанныеПечати, ПараметрыНоменклатуры,
Итоги, ДанныеОбъекта.СуммаВключаетНДС);

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

КонецЦикла;

КонецЕсли;

КонецЕсли;

Если ОбластиМакета.ОбластьМакетаИтогоПоСтранице <> Неопределено Тогда

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

КонецЕсли;

Если ОбластиМакета.ОбластьМакетаВсего <> Неопределено Тогда

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

КонецЕсли;

ОбластьМакета = ?(ДанныеОбъекта.ИспользоватьФаксимиле = Перечисления.ДаНет.Да,
ОбластиМакета.ОбластьМакетаПодвалСФаксимиле, ОбластиМакета.ОбластьМакетаПодвалБезФаксимиле);
Если ОбластьМакета <> Неопределено Тогда

ПоследняяЦифра = Прав(Строка(Итоги.НомерСтраницы), 1);
Суффикс = ?(ПоследняяЦифра = "1", НСтр("ru =' листе'"), НСтр("ru =' листах'"));
ДанныеПечати.Вставить("КоличествоЛистовВПриложении", Строка(Итоги.НомерСтраницы) + Суффикс);

ДанныеПечати.Вставить("ДолжностьРуководителя", ДанныеОбъекта.ДолжностьРуководителя);
ДанныеПечати.Вставить("РасшифровкаПодписиРуководителя", ДанныеОбъекта.РасшифровкаПодписиРуководителя);
ДанныеПечати.Вставить("РасшифровкаПодписиГлавногоБухгалтера",
ДанныеОбъекта.РасшифровкаПодписиГлавногоБухгалтера);
ДанныеПечати.Вставить("ДолжностьКладовщика", ДанныеОбъекта.ДолжностьКладовщика);
ДанныеПечати.Вставить("РасшифровкаПодписиКладовщика", ДанныеОбъекта.РасшифровкаПодписиКладовщика);
ДанныеПечати.Вставить("КоличествоПорядковыхНомеровЗаписейПрописью", ЧислоПрописью(
Итоги.КоличествоСтрок, , ",,,,,,,,0"));
ДанныеПечати.Вставить("ВсегоМестПрописью", ?(Итоги.ИтогоМест = 0, "", ЧислоПрописью(
Итоги.ИтогоМест, , ",,,С,,,,,0")));
ДанныеПечати.Вставить("МассаГрузаПрописью", МассаГрузаПрописью(Итоги.ИтогоМассаБрутто,
ДанныеОбъекта));
ДанныеПечати.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(
Итоги.ИтогоСуммаСНДС, НациональнаяВалюта));
ДанныеПечати.Вставить("ДоверенностьНомер", ДанныеОбъекта.ДоверенностьНомер);
ДанныеПечати.Вставить("ДоверенностьДата", ДанныеОбъекта.ДоверенностьДата);
ДанныеПечати.Вставить("ДоверенностьВыдана", ДанныеОбъекта.ДоверенностьВыдана);
ДанныеПечати.Вставить("ДоверенностьЧерезКого", ДанныеОбъекта.ДоверенностьЛицо);
ДанныеПечати.Вставить("ДоверенностьЧерезКого", ДанныеОбъекта.ДоверенностьЛицо);
ДанныеПечати.Вставить("РасшифровкаПодписиКонтрагента", ДанныеОбъекта.РасшифровкаПодписиКонтрагента);

ПолнаяДатаДокумента = Формат(ДанныеОбъекта.ДатаДокумента, "ДФ=""дд ММММ гггг """"года""""""");
ДлинаСтроки = СтрДлина(ПолнаяДатаДокумента);
ПервыйРазделитель = СтрНайти(ПолнаяДатаДокумента, " ");
ВторойРазделитель = СтрНайти(Прав(ПолнаяДатаДокумента, ДлинаСтроки - ПервыйРазделитель), " ")
+ ПервыйРазделитель;

ДанныеПечати.Вставить("ДатаДокументаДень", """" + Лев(ПолнаяДатаДокумента, ПервыйРазделитель - 1) + """");
ДанныеПечати.Вставить("ДатаДокументаМесяц", Сред(ПолнаяДатаДокумента, ПервыйРазделитель + 1,
ВторойРазделитель - ПервыйРазделитель - 1));
ДанныеПечати.Вставить("ДатаДокументаГод", Прав(ПолнаяДатаДокумента, ДлинаСтроки - ВторойРазделитель));

Если ДанныеОбъекта.ИспользоватьФаксимиле = Перечисления.ДаНет.Да Тогда

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

ПодписьДокументовУНФ.ЗаполнитьФаксимилеВОбластиМакета(ОбластьМакета, ДанныеОбъекта, ПодписиИФаксимиле,
Ошибки);

КонецЕсли;

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

КонецЕсли;

УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
ДанныеОбъекта.Ссылка);

КонецЦикла;


Возврат ТабличныйДокумент;

КонецФункции

antoneus

ОбъектыПечати - это список значений. Можно передать пустой. То есть

ОбъектыПечати = Новый  СписокЗначений;
ТаблДокум = СформироватьПФ(объект.СсылкаНаДокумент, ОбъектыПечати, истина);//ДанныеОбъектовПечати, ОбъектыПечати, ВключаяРаботыУслуги);

sali

antoneus,вы знаете я пробовал так , мне выдавалась следующая ошибка, которая может из-за объект.ссылканадокумент вызвалась
как раз на строке     ТаблДокум = СформироватьПФ(объект.СсылкаНаДокумент, ОбъектыПечати, истина);//ДанныеОбъектовПечати, ОбъектыПечати, ВключаяРаботыУслуги);
Ошибка при вызове метода контекста (СформироватьПФ)
{ВнешняяОбработка.торг12.Форма.Форма.Форма(6)}:ТаблДокум = СформироватьПФ(объект.СсылкаНаДокумент, ОбъектыПечати, истина);

по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: param    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'

antoneus

Нет, это потому что в ОбъектыПечати где-то впихивается таблица значений, которой на клиенте не бывает.

&НаКлиенте
Процедура выполнитьпечать(Команда)
    ТаблДокум = ПолучитьТабДок();
    ТаблДокум.Показать("Печать документа");
   
КонецПроцедуры

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

sali

antoneus, кажется это будет хрень зациклена и исправляешь одно, тебе старое прилетает

&НаКлиенте
Процедура выполнитьпечать(Команда)
    ТаблДокум = ПолучитьТабДок();
    ТаблДокум.Показать("Печать документа");
   
КонецПроцедуры

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


Функция СформироватьПФ(ДанныеОбъектовПечати, ОбъектыПечати, ВключаяРаботыУслуги) Экспорт
Перем Ошибки, ПервыйДокумент, НомерСтрокиНачало;

   
//Макет = УправлениеПечатью.МакетПечатнойФормы("документ.РасходнаяНакладная.ПФ_MXL_ТОРГ12валютный");//ПолныйПутьКМакету());//ОписаниеПечатнойФормы.ПолныйПутьКМакету);
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПФ_MXL_ТОРГ12валютный");
ТабличныйДокумент = Новый ТабличныйДокумент;//ОписаниеПечатнойФормы.ТабличныйДокумент;
ДанныеПечати = Новый Структура;   

ДанныеОбъектовПечати = ДанныеДокументовРегУчет(объект.СсылкаНаДокумент, Истина, Истина, Ошибки);

ЕстьТЧЗапасы = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаЗапасы") <> Неопределено);
ЕстьТЧПродукция = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаПродукция") <> Неопределено);
ЕстьТЧОтходы = (Данн
выходит самая первая ошибка Поле объекта не обнаружено (Колонки)
{ВнешняяОбработка.торг12.Форма.Форма.Форма(603)}: ЕстьТЧЗапасы = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаЗапасы") <> Неопределено);
{ВнешняяОбработка.торг12.Форма.Форма.Форма(21)}:    Возврат СформироватьПФ(объект.СсылкаНаДокумент, ОбъектыПечати, истина);
{ВнешняяОбработка.торг12.Форма.Форма.Форма(13)}:    ТаблДокум = ПолучитьТабДок();
для этого перетащил специально строку ДанныеОбъектовПечати = ДанныеДокументовРегУчет(объект.СсылкаНаДокумент, Истина, Истина, Ошибки);

отвечаю если это исправить, то выйдет следующая ошибка не найдено это, невозможно найти , макета такого нет

sali

это конфа упрямится или проще самому уже переписать все???

LexaK

sali,
Цитироватьуже переписать все???
пятница! развеселили! :D
(особенно с таким подходом и такими знаниями...)
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск