Печать этикеток на datamax

1. kollegue 23.06.15 16:27 Сейчас в теме
История такая. Стояла торговля+склад на одном компе. был подключен термопринтер datamax DMX-E-4205. Потом тот же самый релиз платформы перенесли на новый комп, папку с базой туда же скопировали, поставили драйвера Seagull. Тестовая страница печатается, из-под винды печатает, а из 1С отправляю печать марок - и никакой реакции. На старом компе все еще работает. С чего можно начать поиск проблемы? может я чтото не докопировал?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. jj_mail 23.06.15 16:33 Сейчас в теме
там длл-ки нужно регистрировать на новом компе
3. kollegue 23.06.15 16:48 Сейчас в теме
командой Regsvr32 да? а какие именно? из 1ски или из дров принтера?
4. jj_mail 23.06.15 16:49 Сейчас в теме
Именно так. А вот какие, нужно в коде посмотреть
5. kollegue 23.06.15 16:55 Сейчас в теме
в обработке печати марок? там будут ссылки на ддлки? или в каком коде? сори пока слабо шарю(
11. Grek2000 14.07.15 11:50 Сейчас в теме
(5) kollegue,
уже лет 6 работают Datamax E4203, достаточно установить драйвера, причем родные с диска и с сайта не подходят, могу скинуть.
Печать идет средствами windows, без внешних компонент и dll
13. kollegue 24.07.15 17:23 Сейчас в теме
(11) Grek2000, я seagull'овские ставил... винда печатает, а вот 1ска не понимает его)
6. jj_mail 23.06.15 17:00 Сейчас в теме
Я бы начал именно с обработки печати. Можно еще сделать глобальный поиск ".dll"
kollegue; +1 Ответить
7. kollegue 23.06.15 17:47 Сейчас в теме
8. kollegue 24.06.15 18:33 Сейчас в теме
Покопался в модулях - похоже процедура дрова не использует в принципе и ддлки ей не нужны, а печатает внутренним языком 1с. с автором кода, к сожалению связаться возможности нет(. Не могу понять чего е хватает ему.. файлы все есть

Процедура глПечатьЭтикеток(Конт,флагзапуска=1) Экспорт
    Текст=создатьОбъект("Текст"); 
	флаг=создатьОбъект("Текст");  
		
	
    Конт.ВыбратьСтроки();
	Каталог=СокрЛП(Константа.КаталогФайловШК); 
	Если ФС.СуществуетФайл(Каталог+"CODEPAGE1251.txt")=1 ТОгда
		Текст.КодоваяСтраница(0);
	Иначе
		 Текст.КодоваяСтраница(1);
    КонецЕсли;   
	
	спрТЦ=создатьОбъект("Справочник.КатегорииЦен");  
	спрТЦ.НайтиПоНаименованию("Розничная",0);   
	спрЦ=создатьОбъект("Справочник.Цены");
	
	спрП = создатьОбъект("Справочник.Пользователи");          
	ПутьКПринтеруПользователь = ""; 
	КаталогПринтера = "";
	Если спрП.НайтиПоКоду(СокрЛП(ИмяПользователя())) = 1 ТОгда
		ПутьКПринтеруПользователь = СокрЛП(спрП.ТекущийЭлемент().ПутьКПринтеруЧеков);
		КаталогПринтера = СокрЛП(спрП.ТекущийЭлемент().ПапкаПринтера);  
		
		
	КонецЕсли;	
	Каталог = Каталог + ?(КаталогПринтера = "", "", "\" + КаталогПринтера + "\");
    Пока Конт.ПолучитьСтроку()=1 Цикл
	     Если ПустоеЗначение(Конт.ТОвар.ШтрихКод)=1 ТОгда
		      Сообщить("На товар несуществует штрих код " + СокрЛП(Конт.ТОвар.Наименование));
			  продолжить;
	     КонецЕсли;
		 Если Конт.Количество=0 ТОгда
		      продолжить;
		 КонецЕсли;	
		 Если флагзапуска=1 ТОгда
		 	Если ФС.СуществуетФайл(Каталог+"1LPT.txt")=1 ТОгда
		 	     Текст.Открыть(Каталог+"1LPT.txt");
		 		 Для i=1 ПО Текст.КоличествоСтрок() Цикл
		 		     Стр=СокрЛП(Текст.ПолучитьСтроку(i));
		 			 Если Найти(Стр,"%BARCODE%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%BARCODE%",СокрЛП(Конт.ТОвар.ШтрихКод));
		 		     КонецЕсли;	                                                    
		 		     Если Найти(Стр,"%NAME%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME%",СокрЛП(Конт.ТОвар.Наименование));
		 		     КонецЕсли;	
		 		     Если Найти(Стр,"%CODE%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%CODE%",СокрЛП(Конт.ТОвар.Код));
		 		     КонецЕсли;	 
		 		     Если Найти(Стр,"%KOL%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%KOL%",Формат(Конт.Количество,"Ч(0)"+4));
		 		     КонецЕсли;	 
		 		     Текст.ЗаменитьСтроку(i,Стр);
		 	
		 		 КонецЦикла;	

		 	 	 
		 		 Текст.Записать(Каталог+"30x19.txt"); 
		 	 	 
		 		 Если ПутьКПринтеруПользователь <> "" ТОгда
		 		      КомандаСистемы("copy /b "+Каталог+"30x19.txt"+" "+ПутьКПринтеруПользователь);
		 	 	 ИначеЕсли ФС.СуществуетФайл(Каталог+"DataMax.ini")=1 ТОгда  
		 	 	 	  Флаг.Открыть(Каталог+"DataMax.ini");
		 	 	 	  Стр=СокрЛП(Флаг.ПолучитьСтроку(1));
		 	 	      КомандаСистемы("copy /b "+Каталог+"30x19.txt"+" "+Стр);
		 	 	 ИНаче
		 	 	 	  КомандаСистемы("copy /b "+Каталог+"30x19.txt"+" LPT1");
		 	 	 КонецЕсли;
		 	 	 
			ИНаче
			     сообщить("В каталоге "+Каталог+" не существует файла 1LPT.txt");
				 возврат;
			КонецЕсли;	
		 ИначеЕсли флагзапуска=0 ТОгда
		 	Если ФС.СуществуетФайл(Каталог+"2LPT.txt")=1 ТОгда
		 	     Текст.Открыть(Каталог+"2LPT.txt");   
		 		 Наименование=СокрЛП(Конт.ТОвар.Наименование);
		 		 Для i=1 По Текст.КоличествоСтрок() Цикл
		 		    Стр=СокрЛП(Текст.ПолучитьСтроку(i));
		 			 Если Найти(Стр,"%BARCODE%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%BARCODE%",СокрЛП(Конт.ТОвар.ШтрихКод));
		 		     КонецЕсли;	                                                    
		 		     Если Найти(Стр,"%NAME%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME%",Сред(Наименование,1,25));
		 		     КонецЕсли;	 
		 		     Если СтрДлина(Наименование)>25 Тогда 
		 			    Если Найти(Стр,"%NAME1%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME1%",Сред(Наименование,26,25));
		 				КонецЕсли;	
		 		        Если Найти(Стр,"%NAME2%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME2%",Сред(Наименование,51,25));
		 		        КонецЕсли;	 
		 		        Если Найти(Стр,"%NAME3%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME3%",Сред(Наименование,77,25));
		 				КонецЕсли;
		 			 Иначе
		 				Стр=СтрЗаменить(Стр,"%NAME1%",""); 
		 				Стр=СтрЗаменить(Стр,"%NAME2%",""); 
		 				Стр=СтрЗаменить(Стр,"%NAME3%","");
		 		     КонецЕсли;
		 		     Если Найти(Стр,"%CODE%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%CODE%",СокрЛП(Конт.ТОвар.Код));
		 		     КонецЕсли;	  
		 		     Если Найти(Стр,"%PRICE%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%PRICE%",Конт.Цена);
		 		     КонецЕсли;	  
		 			 Если Найти(Стр,"%VAL%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%VAL%",СокрЛП(Конт.Валюта));
		 		     КонецЕсли;	  
		 		
		 		     Если Найти(Стр,"%KOL%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%KOL%",Формат(Конт.Количество,"Ч(0)"+4));
		 		     КонецЕсли;	 
		 		     Текст.ЗаменитьСтроку(i,Стр);
		 		 	
		 		 КонецЦикла;	
		 		 Текст.Записать(Каталог+"58x30.txt");
		 		 Если ПутьКПринтеруПользователь <> "" ТОгда
		 		      КомандаСистемы("copy /b "+Каталог+"58x30.txt"+" "+ПутьКПринтеруПользователь);
		 	 	 ИначеЕсли ФС.СуществуетФайл(Каталог+"DataMax.ini")=1 ТОгда  
		 	 	 	  Флаг.Открыть(Каталог+"DataMax.ini");
		 	 	 	  Стр=СокрЛП(Флаг.ПолучитьСтроку(1));
		 	 	      КомандаСистемы("copy /b "+Каталог+"58x30.txt"+" "+Стр);
		 	 	 ИНаче
		 	 	 	  КомандаСистемы("copy /b "+Каталог+"58x30.txt"+" LPT1");
		 	 	 КонецЕсли;
		 	ИНаче
			     сообщить("В каталоге "+Каталог+" не существует файла 2LPT.ini");
				 возврат;
	        КонецЕсли;	 
		ИначеЕсли флагзапуска=2 ТОгда
			Если ФС.СуществуетФайл(Каталог+"3LPT.txt")=1 ТОгда
		 	     Текст.Открыть(Каталог+"3LPT.txt");       
		 		 пЦенаРоз="";
		 		 Наименование=СокрЛП(Конт.ТОвар.Наименование);
		 		 спрЦ.ИспользоватьВладельца(Конт.ТОвар);
		 		 Если спрЦ.НайтиПоРеквизиту("КатегорияЦены",СпрТц.ТекущийЭлемент(),0)=1 ТОгда
		 		      пЦенаРоз=спрЦ.Цена.Получить(Конт.ДатаДок); 
		 			  ВалютаЦены = спрЦ.Валюта.Получить(Конт.ДатаДок);
		 			  если ВалютаЦены <> Константа.БазоваяВалюта Тогда
		 			    если ПустоеЗначение(ВалютаЦены) = 0 Тогда  
		 			  		пЦенаРоз = Окр(пЦенаРоз * ВалютаЦены.Курс.Получить(Конт.ДатаДок), 0);
		 			  	КонецЕсли;	
		 			  КонецЕсли;
		 		 КонецЕсли;	
		 		 Для i=1 По Текст.КоличествоСтрок() Цикл
		 		    Стр=СокрЛП(Текст.ПолучитьСтроку(i));
		 			 Если Найти(Стр,"%BARCODE%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%BARCODE%",СокрЛП(Конт.ТОвар.ШтрихКод));
		 		     КонецЕсли;	                                                    
		 		     Если Найти(Стр,"%NAME%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME%",Сред(Наименование,1,25));
		 		     КонецЕсли;	 
		 		     Если СтрДлина(Наименование)>25 Тогда 
		 			    Если Найти(Стр,"%NAME1%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME1%",Сред(Наименование,26,25));
		 		        КонецЕсли;	 
		 		        Если Найти(Стр,"%NAME2%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME2%",Сред(Наименование,51,25));
		 		        КонецЕсли;	 
		 		        Если Найти(Стр,"%NAME3%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%NAME3%",Сред(Наименование,77,25));
		 				КонецЕсли;	
		 		     Иначе
		 				Стр=СтрЗаменить(Стр,"%NAME1%",""); 
		 				Стр=СтрЗаменить(Стр,"%NAME2%",""); 
		 				Стр=СтрЗаменить(Стр,"%NAME3%","");
		 		     КонецЕсли;
		 		     Если Найти(Стр,"%CODE%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%CODE%",СокрЛП(Конт.ТОвар.Код));
		 		     КонецЕсли;	  
		 		     Если Найти(Стр,"%PRICE%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%PRICE%",Конт.Цена);
		 		     КонецЕсли;	    
		 		     Если Найти(Стр,"%PRICE2%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%PRICE2%",пЦенаРоз);
		 		     КонецЕсли;	 
		 		     Если Найти(Стр,"%VAL%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%VAL%",СокрЛП(Конт.Валюта));
		 		     КонецЕсли;	  
		 		
		 		     Если Найти(Стр,"%KOL%")>0 Тогда
		 			      Стр=СтрЗаменить(Стр,"%KOL%",Формат(Конт.Количество,"Ч(0)"+4));
		 		     КонецЕсли;	 
		 		     Текст.ЗаменитьСтроку(i,Стр);
		 		 	
		 		 КонецЦикла;	
		 		
		 		 
		 		 Текст.Записать(Каталог+"58x30.txt");
		 		 Если ПутьКПринтеруПользователь <> "" ТОгда
		 		      КомандаСистемы("copy /b "+Каталог+"58x30.txt"+" "+ПутьКПринтеруПользователь);
		 	 	 ИначеЕсли ФС.СуществуетФайл(Каталог+"DataMax.ini")=1 ТОгда  
		 	 	 	  Флаг.Открыть(Каталог+"DataMax.ini");
		 	 	 	  Стр=СокрЛП(Флаг.ПолучитьСтроку(1));
		 	 	      КомандаСистемы("copy /b "+Каталог+"58x30.txt"+" "+Стр);
		 	 	 ИНаче
		 	 	 	  КомандаСистемы("copy /b "+Каталог+"58x30.txt"+" LPT1");
		 	 	 КонецЕсли;
		 	ИНаче
			     сообщить("В каталоге "+Каталог+" не существует файла 3LPT.ini");
				 возврат;
	        КонецЕсли;	 
		КонецЕсли;  
	КонецЦикла; 	
КонецПРоцедуры

Показать
9. Frogger1971 24.06.15 23:28 Сейчас в теме
если идет прямая передача по-битно на принтер - проблема скорее всего в драйвере...
10. Frogger1971 24.06.15 23:29 Сейчас в теме
...особенно, когда - КомандаСистемы("copy /b "+Каталог+"58x30.txt"+" LPT1");
пугает LPT1
12. starik-2005 3084 14.07.15 12:08 Сейчас в теме
(10) Frogger1971, я такое раньше делал.

1. Датамакс - очень шустрый принтер. Виндовые дрова делают из него медленного мученика )))
2. Язык для него очень простой.
3. Тут сделано так: создается файл, в него пихаются данные и потом он командой copy отправляется на принтер.

Для того, чтобы все работало, нужно, чтобы LPT-порт был доступен. Драйвера тут не нужны вообще.

Возможно, просто нет каталога, в который 1С пишет файл - создайте его и все будет ок.
14. kollegue 24.07.15 17:31 Сейчас в теме
(12) starik-2005, точняк, очень похоже на правду - в понедельник попробую. Спасибо! :)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот