8.х Выполнение ВПФ из модуля конфигурации

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

  1. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Конфигурация УТ 11, в ней есть внешняя печатная форма - фактура образца 1137. Вызывается через форму дополнительных отчетов и обработок и нормально работает. Хочется выполнить эту обработку из модуля документа сразу на принтер, минуя форму дополнительных отчетов. Создал команду печати в обработке печати общих форм. Пишу в модуле команды следующее:

    Код:
    Отказ = Ложь;
    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОбработку(
    "Печатная форма: Счет-фактура (Постановление Правительства РФ от 26.12.2011 г. № 1137)",
    "ПечатнаяФорма",
    "СчетФактураВыданный1137",
    Ложь,
    "ВызовСерверногоМетода",
    Истина,
    "ПечатьMXL",
    ПараметрКоманды,
    Отказ);
    Вываливаются сообщения "Обработка выполняется..." и "Обработка выполнена..." и ничего не происходит. Печатная форма не открывается. Что не так делаю?
  2. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Еще такой момент. Вот исходный код модуля "ДополнительныеОтчетыИОбработкиКлиент"

    Код:
    ПараметрыОткрытия = Новый Структура("ИсточникДанных,ПараметрыИсточника");
    ПараметрыОткрытия.ИсточникДанных = ВнешняяОбработка;
    ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника;
    Все работает. Если заменить так:

    Код:
    ПараметрыОткрытия = Новый Структура("ИсточникДанных,ПараметрыИсточника");
    ПараметрыОткрытия.ИсточникДанных = "Печатная форма: Счет-фактура (Постановление Правительства РФ от 26.12.2011 г. № 1137)";
    ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника;
    то не работает.

    Значит дело в названии внешней обработки, хотя если отобразить ссылку на нее, то выводится именно это название. Что не так?
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Выводится представление, а имена обычно без пробелов идут, в частности в ИсточникДанных нужно передавать имя ВПФ (отройте эту ВПФ в конфигураторе и посмотрите название, там должно без пробелов быть имя).
  4. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    В том то и дело, что в таком виде отображается ссылка, а не представление. Имя я бы посмотрел, вот только где в конфигураторе сидят внешние обработки?
  5. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Вы сохраните внешнюю обработку на диск, и откройте ее через конфигуратор.
  6. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Она и так на диске. Открыл, название видел у нее, только все равно не работает, если его подставить. Пробовал так уже.
  7. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Такое ощущение, что в таком формате "Печатная форма: Счет-фактура (Постановление Правительства РФ от 26.12.2011 г. № 1137)" название не проходит. Пишешь в модуле
    Сообщить (ВнешняяОбработка);
    Пишет "Печатная форма: Счет-фактура (Постановление Правительства РФ от 26.12.2011 г. № 1137)".
    Если так:
    Сообщить (ТипЗнч(ВнешняяОбработка));
    Пишет "Дополнительный отчет или обработка"
  8. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Код:
    ПараметрыОткрытия = Новый Структура("ИсточникДанных,ПараметрыИсточника");
    ПараметрыОткрытия.ИсточникДанных = ВнешняяОбработка;
    ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника;
    В данном варианте "ПараметрыОткрытия.ИсточникДанных" имеет тип "СправочникСсылка.ДополнительныеОтчетыИОбработки"

    А в этом варианте

    Код:
    ПараметрыОткрытия = Новый Структура("ИсточникДанных,ПараметрыИсточника");
    ПараметрыОткрытия.ИсточникДанных = "Печатная форма: Счет-фактура (Постановление Правительства РФ от 26.12.2011 г. № 1137)";
    ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника;
    "ПараметрыОткрытия.ИсточникДанных" имеет тип "Строка".

    Как прикрутить названию обработки соответствующий тип данных, ссылку на справочник?
  9. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Разобрался со ссылками, печатная форма открывается через общую форму "ПечатьДокументов". Теперь другой вопрос - как закинуть этот документ сразу на печать, без открытия формы?

    З.Ы. Активная тема какая, сам себя спрашиваю, сам себе отвечаю:)
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    В общих модулях посмотрите(управление печатью), там, вроде, какая-то процедура должна вызываться, которая сразу на принтер отправляет.
  11. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Есть такая в "УправлениеПечатьюКлиент" - "ВыполнитьКомандуПечатиНаПринтер(ИмяМенеджераПечати, ИменаМакетов, ПараметрКоманды, ПараметрыПечати = Неопределено) Экспорт".
    Вот как туда параметры печати передать? Вот какие параметры формируются для открытия печатной формы:

    Код:
    ПараметрыИсточника = Новый Структура;
    ПараметрыИсточника.Вставить("ИдентификаторКоманды", "СчетФактураВыданный1137");
    ПараметрыИсточника.Вставить("ОбъектыНазначения", ПараметрКоманды);
    ПараметрыИсточника.Вставить("БезопасныйРежим", Ложь);
    
    ПараметрыОткрытия = Новый Структура("ИсточникДанных,ПараметрыИсточника");
    
    ПараметрыОткрытия.ИсточникДанных = Ссылька; //Ссылка на внешнюю печатную форму
    ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника;
    
    ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
    Кого менеджером печати определить?
  12. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Ну что, нет программистов? Форма с документом открывается, как его на печать запустить без дополнительных телодвижений? Типа открылась форма, документ отправился на печать, форма закрылась. Или лучше минуя открытие формы.
  13. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Как вариант:

    Код:
    ФормаОбъекта = ПолучитьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
    ФормаОбъекта.ПечатьВыполнить();//ПечатьВыполнить() - это процедура формы.
    
    В таком виде не работает, метод не обнаружен. Как обратиться к процедуре формы?
  14. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Сам все сделал, тему можно закрыть
  15. TopicStarter Overlay
    lacrimax
    Offline

    lacrimax Опытный в 1С

    Регистрация:
    9 ноя 2010
    Сообщения:
    136
    Симпатии:
    0
    Баллы:
    26
    Кому интересно:

    Код:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    Ссылка = Неопределено;
    Ссыль(Ссылка);
    
    ПараметрыИсточника = Новый Структура;
    ПараметрыИсточника.Вставить("ИдентификаторКоманды", "СчетФактураВыданный1137");
    ПараметрыИсточника.Вставить("ОбъектыНазначения", ПараметрКоманды);
    ПараметрыИсточника.Вставить("БезопасныйРежим", Ложь);
    
    ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
    
    ПараметрыОткрытия.ИсточникДанных = Ссылка;
    ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника;
    
    //Сразу уходит на печать. Если сразу на принтер не надо, а нужно открыть форму, то все, что идет ниже, надо удалить и вставить строку:
    //ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
    
    ФормаОбъекта = ПолучитьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
    
    ТабличныеДокументы = Новый СписокЗначений;
    
    Для Каждого ТабДокумент Из ФормаОбъекта.ИменаТабДокументов Цикл
    ТабличныеДокументы.Добавить(ФормаОбъекта["Таб" + ТабДокумент.Значение], ТабДокумент.Представление);
    КонецЦикла;
    
    УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(
    ТабличныеДокументы,
    ФормаОбъекта.ОбъектыПечати,
    Ложь);
    
    КонецПроцедуры
    
    &НаСервере
    Процедура Ссыль(Ссылка)
    
    Ссылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Печатная форма: Счет-фактура (Постановление Правительства РФ от 26.12.2011 г. № 1137)");
    
    КонецПроцедуры
  16. mauar
    Offline

    mauar Опытный в 1С

    Регистрация:
    19 окт 2010
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура Печать(Команда)<BR>Ссылка =
    Неопределено;<BR>Ссыль(Ссылка);<BR>МассивИсточник = Новый
    Массив;<BR>ПараметрыИсточника = Новый Структура;<BR>ПараметрыОткрытия = Новый
    Структура("ИсточникДанных, ПараметрыИсточника");<BR>Для каждого стр ИЗ ТЗ
    Цикл<BR>Если Стр.Перенести = Истина
    Тогда<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;МассивИсточник.Добавить(Стр.Ссылка);<BR><BR><BR>&nbsp;&nbsp;
    ПараметрыИсточника.Вставить("ИдентификаторКоманды", "Счет");<BR>&nbsp;&nbsp;
    ПараметрыИсточника.Вставить("ОбъектыНазначения",
    МассивИсточник);<BR>&nbsp;&nbsp; ПараметрыИсточника.Вставить("БезопасныйРежим",
    Истина);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; Сообщить
    (Ссылка);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ПараметрыОткрытия.ИсточникДанных
    = Ссылка;<BR>ПараметрыОткрытия.ПараметрыИсточника =
    ПараметрыИсточника;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;
    КонецЕсли;<BR><BR>КонецЦикла;<BR><BR>ОткрытьФорму("ОбщаяФорма.ПечатьДокументов",
    Источника);<BR><BR>КонецПроцедуры<BR><BR><BR>Процедура Ссыль(Ссылка)<BR>Ссылка =
    Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Счет");<BR>КонецПроцедуры
    А как группу распечатать,
    пробегаюсь по выбранной табличке и выбранное значение распечатываю с помощью данной команды.
    Не работает так для списка документов


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

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