Имя: Пароль:
1C
1С v8
Печать счёт-фактуры из впф 1С 8.2 УТ 10.3
0 AL_Rain
 
09.08.16
10:35
Приветствую спецы 1С, нашёл в инете нужную мне тему http://catalog.mista.ru/public/125517/
Но она сначала выводит список печатных форм, а мне надо чтобы сразу печатался документ счёт-фактура из впф.
Можете подсказать как исправить, либо у кого-то есть готовый пример, кто делал? Сам только начинающий в 1С.

перем СсылкаНаОбъект экспорт;
перем НаПРинтер экспорт;
перем КоличествоЭкземпляров экспорт;

функция Печать() экспорт

Запрос = новый запрос;
Запрос.Текст = "ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка.Ссылка
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
|ГДЕ
| СчетФактураВыданныйДокументыОснования.ДокументОснование = &ДокументОснование";
Запрос.УстановитьПараметр("ДокументОснование",СсылкаНаОбъект);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
СФ = Выборка.Ссылка.ПолучитьОбъект();
СФФорма = СФ.ПолучитьФорму("ФормаДокумента");


СтруктураВнутреннихПечатныхФорм = СФ.ПолучитьСтруктуруПечатныхФорм();
ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СФ.Ссылка, СтруктураВнутреннихПечатныхФорм);
Для каждого Строка Из ДеревоМакетовПечати.Строки Цикл

Если Строка.ТипКнопки = ТипКнопкиКоманднойПанели.Разделитель Тогда
Продолжить;
КонецЕсли;
Если Строка.Расшифровка = Неопределено Тогда
Продолжить;
КонецЕсли;
Если СокрЛП(Строка.Текст) = "Счет-фактура" тогда
УниверсальныеМеханизмы.ОткрытьФормуВыбораПечатныхФормОбъекта(СФ, СФФорма);
КонецЕсли;
КонецЦикла;

КонецЕсли;
КонецФункции
1 AL_Rain
 
09.08.16
15:45
Экспериментирую с кодом:

Запрос = новый запрос;
Запрос.Текст = "ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка.Ссылка
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
|ГДЕ
| СчетФактураВыданныйДокументыОснования.ДокументОснование = &ДокументОснование";
Запрос.УстановитьПараметр("ДокументОснование",СсылкаНаОбъект);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
СФ = Выборка.Ссылка.ПолучитьОбъект();
СФФорма = СФ.ПолучитьФорму("ФормаДокумента");

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

Выдаёт ошибку:
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (СсылкаНаВнешнююОбработку)

Я так понимаю затык из-за этой строки
ТабДокумент = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СФ, СФФорма);



Если делаю так:

Запрос = новый запрос;
Запрос.Текст = "ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка.Ссылка
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
|ГДЕ
| СчетФактураВыданныйДокументыОснования.ДокументОснование = &ДокументОснование";
Запрос.УстановитьПараметр("ДокументОснование",СсылкаНаОбъект);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
СФ = Выборка.Ссылка.ПолучитьОбъект();
СФФорма = СФ.ПолучитьФорму("ФормаДокумента");

                ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СФ.Ссылка, Неопределено);
                СтрМакета = ДеревоМакетовПечати.Строки.Найти("Счет-фактура","Текст");
                УниверсальныеМеханизмы.НапечататьДокумент(СФ, СФФорма);
                КонецЕсли;

То ошибка:
Не удалось сформировать внешнюю печатную форму!
Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)

Что делаю не так?
2 polosov
 
09.08.16
15:48
Вернуть табдок надо:
Возврат ТабДокумент;
3 polosov
 
09.08.16
15:48
(2) А тьфу, увидел возврат
4 AL_Rain
 
10.08.16
10:09
Вот такой код, мне сказали правильный, но он почему-то не находит печатную форму под названием "Счет-фактура", выдаёт ошибку:
Не удалось сформировать внешнюю печатную форму!
Значение не является значением объектного типа (Расшифровка)
Ссылается на эту строку: Расшифровка = СтрМакета.Расшифровка;
Для проверки другой ПФ указал другое название: Счет-фактура выданный (МСК и СПб), в ответ тишина, ничего не выдал (ни ошибок, ни формы на экран).
Можете подсказать, как исправить?

Запрос = новый запрос;
Запрос.Текст = "ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка.Ссылка
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
|ГДЕ
| СчетФактураВыданныйДокументыОснования.ДокументОснование = &ДокументОснование";
Запрос.УстановитьПараметр("ДокументОснование",СсылкаНаОбъект);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
СФ = Выборка.Ссылка.ПолучитьОбъект();
//СФФорма = СФ.ПолучитьФорму("ФормаДокумента");

    ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СФ.Ссылка, Неопределено);
    СтрМакета = ДеревоМакетовПечати.Строки.Найти("Счет-фактура","Текст");
    Расшифровка = СтрМакета.Расшифровка;
    Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
        ТабДокумент = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СФ, Расшифровка);
      
    Если ТабДокумент <> Неопределено Тогда
        КоличествоЭкземпляров = 2;    
        НаПринтер = Ложь;    
        УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, , СсылкаНаОбъект);            
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
Возврат ТабДокумент
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший