8.х Вопрос по технологии создания внешних печатных форм

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

  1. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Здравствуйте,

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

    Процедура печать выполняется на сервере, а еще нужно перед выполнением пользователю нужно подсунуть форму со списком принтеров для выбора. ОткрытьФорму и ПолучитьФорму на сервере не видяться. В каком методе открыть допформу???
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Формы открываются на клиенте.
  3. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Так да. А
    Код:
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    Выполняется на сервере. А в каком месте мне форму подсунуть клиенту? И по первому вопросу, как избежать ошибки "Табличный документ не сформирован...", он мне не нужен. А метод-то один Печать ()
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    После выполнения серверного кода, идет возврат на клиента. С сервера невозможно вызвать клиентскую процедуру/функцию, а вот с клиента можно.
    В вашем варианте - нужно отлавливать когда отрабатывает процедура Печать() и следом ставить клиентскую процедуру/функцию. Но т.к. в процедуре Печать() идет заполнение табличного документа - придется и ее ковырять:)

    И еще добавлю, форма выбора принтера и так открывается, не нужно изобретать велосипед.
  5. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Так когда она открывается??? Когда на предпросмотр выводиться табличный документ??? Так мне этого не надо. Мне надо получить список картинок прикрепленных к документу и отправить их на принтер командой типа: rundll32.exe C:\WINDOWS1\system32\shimgvw.dll,ImageView_PrintTo /pt "D:\Tools\ДО-000000001.tif" "Kyocera FS-3640MFP KX"
    Команде этой нужно имя принтера, вот и хочу пользователю подсунуть форму с выбором принтера
  6. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Форма выбора принтера открывается на уровне платформы, тут вы ничего думаю не сделаете. В СП посмотрите свойства и методы табличного документа, вроде есть что-то типа Напечатать().
  7. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Есть, но в 1с функции работы с картинками очень скудные. Нормально распечатать картинку вставив ее в табличный документ не получится.
  8. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    А кто вам сказал что 1С это фотошоп ? Нужно радоваться что вообще с файлами можно работать.
  9. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Так а я, от 1С ничего и не требую. Перепробовав все варианты запихивания картинок в табличный документ, пришел к выводу, надо использовать сторонние компоненты/программы. Мне понравилась идея с программой печати изображений и факсов (что выше показал), печатает прекрасно. Вопрос как встроить ее в технологию создания внешних печатных форм. :)
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Переписывать функцию печати, чтобы можно было подцепить ВК, передать в нее что необходимо, и напечатать.
  11. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Так я этим как раз и занимаюсь :) НО, по технологии создания ВПФ функция должна возвращать табличный документ, который мне не нужен. И нужно перед ее вызовом подсунуть форму выбора принтера, но ее подсунуть не знаю где, похоже для внешних печатных форм вызывается сразу метод Печать (). Выходи я могу это сделать внутри метода Печать (), но он выполняется на сервере, а мне нужна форма которую создаю на клиенте............. да и командную строку надо запускать на клиенте.........
  12. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    А зачем вам тогда ВПФ, может лучше внешнюю обработку сделать, и не мучиться ?
  13. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Так обращаться к ВПФ проще, да и логично, в принципе. Сканки документов прицеплены к документу, по этому как бы и рождается мысль о том, что нужно сделать ВПФ.
    Весь вопрос в принципе уперся, как из серверной функции передать управление на клиента? Из Печать () никаких методов с директивой &НаКлиенте не видно. Может подскажете что?
  14. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Я же вам писал, с сервера вы не вызовите клиентскую, ждите когда выполнится серверная, потом автоматом управление переходит на клиента.
  15. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Я это понял, в принципе и ждать можно и в печать () я могу вернуть табличный документ, например со списком файлов которые отправлю на принтер. После Печати () куда попадаю??? Трассировать не могу ВПФ, к сожалению
  16. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    После Печати, вы попадаете на клиента.
  17. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    :) Наверно я туплю....
    Какой метод внешней обработки выполняется после выполнения метода Печать ()?
  18. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Во внешней ВПФ у вас одна только эта процедура ?
  19. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Нет, еще есть:
    Код:
    Функция СведенияОВнешнейОбработке() Экспорт
    Функция ПолучитьТаблицуКоманд()
    Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    Функция ПечатьСканок (МассивОбъектов, ОбъектыПечати)
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    Но из ОбщегоМодуля, вызов идет только Печать ()
    Код:
    ...
    ВнешняяОбработка.Печать(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполненияКоманды);
    ...
    
    И как я подозреваю, больше ничего не дергается из нее
  20. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Ну возможно она выполняется последней:)

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