Печать на сервере 1с. DLL для 1С, способная печатать картинки и pdf файлы в серверном контексте (например, при работе веб-сервиса)

0. 27 13.03.18 10:36 Сейчас в теме
Не знаю, пригодится кому или нет, писалось для себя, т.к возникла необходимость печатать на принтере этикеток sscc напрямую с ТСД через web - сервис. Как известно, веб сервис в 1С работает только в серверном контексте и, к сожалению, разработчики платформы пока не позаботились о возможности вызывать метод при таких условиях.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. host_kms 125 06.05.18 14:54 Сейчас в теме
Выдает ошибку, вроде все по инструкции сделал
	
    МояОбработка=Новый COMОбъект("Component1c.MyClassComponent");
    МояОбработка.PrinterName="PP8000";
    МояОбработка.FileName= "D:\file.pdf";
    МояОбработка.PaperHight=100;
    МояОбработка.PaperWight=80;
    Ответ=МояОбработка.PrintPDF();
Прикрепленные файлы:
2. evgeny43 27 07.05.18 09:46 Сейчас в теме
(1) Если все сделано по инструкции, но не работает - то мне известна только 1 причина , из за которой может пойти не так .
в моем случае сервер 1с у меня работает от системной записи , если у вас это не так, то необходимо дать доступ вашей учетной записи виндовс, под которой работает сервер 1с до компоненты. (п.с на некоторых пк адекватно регистрируется компонента без "/codebase", а на некоторых с.. , попробуйте оба варианта).
тут есть 2 варианта :
1) в реестре пробежаться по всем записям сделанным компонентой и вами ( щелкать по ним правой кнопкой мыши , и выбирать меню разрешить доступ и т.д)
2) можно дать учетной записи доступ ко всем компонентам на пк .

в разделе Component Services/Computers на My Computer клик правой кнопкой, Свойства (Properties)
закладка Безопасность COM (COM Security)
в разделе Права доступа (Access Permissions) нажать Изменить настройки по умолчанию... (Edit Default...), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный доступ (Local Access)
в разделе Разрешения на запуск и активацию (Launch and Activation Permissions) нажать Изменить настройки по умолчанию... (Edit Default...), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный запуск, Локальная активация (Local Launch, Local Activation)



Component Services--- служба компонент "Панель управления\Все элементы панели управления\Администрирование\Службы компонентов".
И не забудьте дать доступ учетной записи 1с , до физического нахождения ком компоненты ( т.е то место куда вы ее скопировали )


P.S "/codebase"
до перерегистрации компоненты, не забудьте почистить реестр от ее остатков в ручном режиме, в противном случае есть большая вероятность, что перерегистрация не поможет.
3. D@rkM@ster 11.03.19 10:11 Сейчас в теме
Добрый день, установил компоненту на сервер, проверил работоспособность через внешнюю обработку, все отлично печатало (нужно было реализовать печать SSCC штрихкода для склада WMS). В конфигурацию ничего добавлять не стал, т.к. впереди были выходные.
Но как не печально это не помогло, ночью позвонили со склада, сказали что 1с не доступна. Попробовали подключиться удаленно, сервер не отвечал... Пришлось вызывать системного администратора, у него тоже ничего не получилось сделать на месте, сервер просто при загрузке показывал черный экран и на этом все. В итоге после долгих попыток что-то придумать, пришлось восстанавливать сервер из бэкапа. К сожалению логов после восстановления из бэкапа не осталось.
Можете сделать какое-нибудь предположение почему такое могло произойти и с чем могло быть связано ?
4. evgeny43 27 13.03.19 14:14 Сейчас в теме
(3)
Здравствуйте. Честно говоря без логов ни чего сказать не могу.
Однако с обработкой скорее всего не связано, т.к у меня так же все установленно для печати с ТСД на принтер этикеток через сервер 1с. Работаем уже 1.5 года на ней . Единственное различие - com соединение создается в общем модуле, а не в обработке.

вот код в общем модуле для анализа :
	//// Печать через HP принтер этикеток с рулоном 10 на 5 см ( 10 ширина , 5 высота) 	
	КомпонентШК=Неопределено;
	ОбработкаШК=Обработки.итПечатьПроизвольногоШтрихкода.Создать();
	ОбработкаШК.ПодключитьКомпоненту(КомпонентШК);
	Если КомпонентШК=Неопределено тогда
		Сообщить("Нет компоненты штрихкода");
		Возврат 
	КонецЕсли;
	КомпонентШК.ТипКода=4;
	КомпонентШК.ЗначениеКода=ИдентификаторУпаковки;
	КомпонентШК.Высота=110;
	КомпонентШК.Ширина=400;
	ОбработкаШК.ПроверкаКартинкиПоМинимальнымПараметрам(КомпонентШК);
	Картинка=КомпонентШК.ПолучитьШтрихкод();
	Картинка=новый Картинка(Картинка);
	ВременныйФайл = ПолучитьИмяВременногоФайла("Jpg");
	Картинка.Записать(ВременныйФайл);
	ComОбработкаПечати=Новый COMОбъект("Component1c.MyClassComponent");
	ComОбработкаПечати.PrinterName=Принтер;
	ComОбработкаПечати.FileName=ВременныйФайл;
	ComОбработкаПечати.LeftField=0;
	ComОбработкаПечати.RightField=0;
	ComОбработкаПечати.UpField=0;
	ComОбработкаПечати.DownField=0;
	ComОбработкаПечати.PaperHight=197;
	ComОбработкаПечати.PaperWight=404;
	ComОбработкаПечати.PixelJpgX=0;
	ComОбработкаПечати.PixelJpgY=0;
	
	Ответ=ComОбработкаПечати.PrintJPG();
	УдалитьФайлы(ВременныйФайл);
Показать
5. isstorm 5 03.07.20 13:39 Сейчас в теме
Добрый день.
Скачал обработку, зарегистрировал. Пробую на внешней обработке, файловая база.
Обработка проходит, ответ="ОК", но печати на принтере не происходит. И ошибки тоже никакой нет
6. isstorm 5 03.07.20 14:23 Сейчас в теме
Документ даже появляется в очереди принтера, но принтер не хочет его печатать. при этом тот же самый документ если открыть в adobe, всё ок, печатается без проблем
7. evgeny43 27 03.07.20 17:09 Сейчас в теме
(6)необходимо смотреть конкретный случай, в данной разработке я использовал готовую библиотеку, и просто сделал для нее обертку под 1с.
Давно уже было и всего не помню, у нас работает, такой проблемы не возникало . Скорее всего это связано либо с библиотекой ос , попробуйте поставить пакеты с ++ и дот нет , либо с драйвером принтера. Разочек у нас была проблема с настройками сервера, но я в это не лез, с эти разбирались админы.
8. evgeny43 27 03.07.20 18:02 Сейчас в теме
(6)возможно если время появится в дальнейшем, попробую Native компоненту сделать на с++ библиотеке , мб она вам поможет, но это в планах.
9. user853074 24.09.20 17:56 Сейчас в теме
Может кто-то сталкивался, не получается запустить ДЛЛ, если 1С 64-bit. На версии 32-bit, все хорошо?
10. evgeny43 27 05.10.20 09:12 Сейчас в теме
(9) Вы регистрацию в реестре на сервере делали?

Работа с реестром----
1. создаем раздел с именем "{69EE0677-884A-4eeb-A3BD-D407844C0C70}" в ветке HKEY_CLASSES_ROOT\wow6432node\appid. Для этого раздела создаем строковое свойство "DllSurrogate" с пустым значением.
2. Находим HKEY_CLASSES_ROOT\wow6432node\CLSID\{69EE0677-884A-4eeb-A3BD-D407844C0C70} и добавляем строковое свойство "AppID" со значением "{69EE0677-884A-4eeb-A3BD-D407844C0C70}".

где
{69EE0677-884A-4eeb-A3BD-D407844C0C70} гуид приложения
11. user853074 21.10.20 13:10 Сейчас в теме
(10)
Да спасибо, печатает.
Но возник вопрос, как мне подобрать параметры, что бы печать происходила на целый лист. К примеру у меня размер листа 98*150, и мне нужно что бы с таким же размером вывелась печатная форма. Могу ли установить что бы печаталось на весь размер бумаги?
12. user853074 22.10.20 09:10 Сейчас в теме
(11)

Не правильно выразил мысль. Когда я пытаюсь установить размер через:
МояОбработка.PaperHight=197;
МояОбработка.PaperWight=404;
То после печати ПДФ, слетают настройки принтера и пишет сообщение "Неправельный размер бумаги"
13. evgeny43 27 22.10.20 09:49 Сейчас в теме
(12)Честно говоря давно писал, сейчас не помню, но для управления размером бумаги я использовал типовую библиотеку виндовс , наверное в этом направлении надо копать , позже посмотрю мб получиться сделать натив компоненту, там постараюсь исправить недочеты.
14. dekson 29.11.21 18:44 Сейчас в теме
Есть интересное наблюдение. Есть 2 файла pdf
1 печатается нормально, а второй 2 страничный печатается без пробелов.
Оставьте свое сообщение
Вакансии
Консультант-аналитик 1С
Санкт-Петербург
По совместительству

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Архитектор 1С
Москва
зарплата от 260 000 руб.
Полный день

Начальник отдела архитектуры
Москва
зарплата от 300 000 руб.
Полный день

Эксперт по технологическим вопросам
Москва
зарплата от 250 000 руб.
Полный день