История такая. Стояла торговля+склад на одном компе. был подключен термопринтер datamax DMX-E-4205. Потом тот же самый релиз платформы перенесли на новый комп, папку с базой туда же скопировали, поставили драйвера Seagull. Тестовая страница печатается, из-под винды печатает, а из 1С отправляю печать марок - и никакой реакции. На старом компе все еще работает. С чего можно начать поиск проблемы? может я чтото не докопировал?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Покопался в модулях - похоже процедура дрова не использует в принципе и ддлки ей не нужны, а печатает внутренним языком 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");
возврат;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПРоцедуры
Показать
(10) Frogger1971, я такое раньше делал.
1. Датамакс - очень шустрый принтер. Виндовые дрова делают из него медленного мученика )))
2. Язык для него очень простой.
3. Тут сделано так: создается файл, в него пихаются данные и потом он командой copy отправляется на принтер.
Для того, чтобы все работало, нужно, чтобы LPT-порт был доступен. Драйвера тут не нужны вообще.
Возможно, просто нет каталога, в который 1С пишет файл - создайте его и все будет ок.
1. Датамакс - очень шустрый принтер. Виндовые дрова делают из него медленного мученика )))
2. Язык для него очень простой.
3. Тут сделано так: создается файл, в него пихаются данные и потом он командой copy отправляется на принтер.
Для того, чтобы все работало, нужно, чтобы LPT-порт был доступен. Драйвера тут не нужны вообще.
Возможно, просто нет каталога, в который 1С пишет файл - создайте его и все будет ок.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот