Принтер печати этикеток и обычный принтер

1. jo0506 20 29.07.14 12:58 Сейчас в теме
УТ 10.3.14.5. Работа на сервере, принтера проброшены через RDP.

Вобщем настроен принтер этикеток, печатает нормально.
Проблема в том что если на одном компе стоит обычный принтер и принтер этикеток, начинаются проблемы.

Зашел под пользователем, сформировал форму этикетки, нажал предпросмотр, выбрал принтер этикеток. убрал все поля. И все замечательно, можно печать этикетки, но....
До тех пор пока в предварительном просмотре не выберешь обычный принтер. Как только ты его выбрал, потом выбираешь обратно принтер этикеток, и ВСЕ - размер бумаги становиться как A4 по высоте, но узкая по ширине. И дальше хоть убейся, ничего не помогает!!!

Единственный выход:
ОчиститьНастройкиПользователя(ПользователиИнформационнойБазы.ТекущийПользователь());

И заново заходить в принтер и проставлять все поля, и пр. И опять будет работать до тех пор, пока не напечатают документ на обычный принтер.

Подскажите, как решить?

Может как-то в зависимости от принтера к разным настройкам обращатся? вот здесь:
Таб.ИмяПараметровПечати = 	"ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка"+СокрЛП(ИмяКомпьютера());
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. jo0506 20 30.07.14 15:30 Сейчас в теме
Поделитесь опытом, кто как решал, или это только у меня такие проблемы....
3. Shurik1C 30.07.14 15:39 Сейчас в теме
Может перед печатью имя принтера присваивать ТабДоку? Ну и соответственно от того что печатаете задавать табдоку параметры все

Я так когда-то решал подобного рода задачу, только с печатью документов, один документ на одном принтере, другой документ с цветной печатью на другом.
Есть один скрипт который по умолчанию возвращает имя принтера установленного по умолчанию.
4. jo0506 20 31.07.14 08:04 Сейчас в теме
(3)через отладчик я в таб доку смотрю там имя принтера правильное стоит. А размер бумаги не цепляется правильный все равно. Может в Таб Документ запихать размеры бумаги, хотя помоему я уже это пробовал, не помогло.
5. jo0506 20 04.08.14 12:19 Сейчас в теме
Видимо так и придется постоянно обнулять настройки, никто не знает, что за глюк и куда копать...
6. atlantooo 04.08.14 13:38 Сейчас в теме
(5) jo0506, а для принтера отдельную настройку нельзя чтоли сделать? сохранить и выбирать перед печатью
7. jo0506 20 06.08.14 13:38 Сейчас в теме
(6) Не очень понимаю куда это все сохраняется. И как восстановить сохраненные настройки?
Вот типовой код процедуры печать, из обработки ПечатьЭтикеток.
Процедура Печать(ТаблицаТоваров) Экспорт

	КолвоПереданныхТоваров = ТаблицаТоваров.Количество();

	Если КолвоПереданныхТоваров = 0 Тогда
		Предупреждение("В списке нет ни одного товара со штрихкодом, заполните список товаров,"
		               + Символы.ПС + "для которых надо распечатать этикетки. ");
		Возврат;
	КонецЕсли;

	ПечататьБезЦены        = Ложь;
	Если ПечататьЦену Тогда
		Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
			Если СтрокаИзСписка.Цена = 0 И СтрокаИзСписка.Количество > 0 Тогда
				Ответ = Вопрос("У некоторых товаров не указаны цены! Печатать этикетки для этих товаров?",
				               РежимДиалогаВопрос.ДаНетОтмена);
				Если Ответ = КодВозвратаДиалога.Отмена Тогда
					Возврат;
				ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
					ПечататьБезЦены = Истина;
				ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
					ПечататьБезЦены = Ложь;
				КонецЕсли;
				Прервать;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	ТекКолонка = 1;
	ТекСтрока  = 1;

	Таб                     = Новый ТабличныйДокумент;
	//Таб.ИмяПараметровПечати = 	"ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка1"+СокрЛП(ИмяКомпьютера());
	// Добавил в имя параметров, еще имя пользователя, т.к. все работают через терминал и имя пк у всех - СЕРВЕР!!!
	Таб.ИмяПараметровПечати = 	"ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка1"+СокрЛП(ИмяКомпьютера())+СокрЛП(ПараметрыСеанса.ТекущийПользователь);
	Макет                   = ПолучитьОбщийМакет("Этикетка");
	
	ЭтикеткаОбласть         = Макет.ПолучитьОбласть(1,1,4,2);
	ОбластьНоменклатура     = ЭтикеткаОбласть.Области.Номенклатура;
	ОбластьШтрихкод         = ЭтикеткаОбласть.Области.ОбластьШтрихкод;
	РисунокШтрихкод         = ЭтикеткаОбласть.Рисунки.Штрихкод;
	ОбластьЦена             = ЭтикеткаОбласть.Области.Цена;

	ОбластьНоменклатура.ВысотаСтроки = ВысотаЭтикетки * 2.65 * 0.35;
	ОбластьШтрихкод.ВысотаСтроки     = ВысотаЭтикетки * 2.65 * 0.5;
	РисунокШтрихкод.Расположить(ОбластьШтрихкод);
	ОбластьЦена.ВысотаСтроки         = ВысотаЭтикетки * 2.65 * 0.35;

	ЭтикеткаОбласть.Область(2,2,2,2).ШиринаКолонки = ШиринаЭтикетки*0.53;

	Если ФорматЭтикетки  = 1 Тогда //принтер этикеток.
		ВсегоСтрок       = 1;
		КоличествоКолонок=1;
	ИначеЕсли ФорматЭтикетки = 2 Тогда //А4 по колонкам.

		ОбластьГраницаСправа      = Макет.ПолучитьОбласть(2,4,4,4);
		ОбластьНизГраницыСправа   = Макет.ПолучитьОбласть(5,4,5,4);
		ОбластьГраницаСнизу       = Макет.ПолучитьОбласть(6,2,6,2);
		ОбластьНачалоГраницыСнизу = Макет.ПолучитьОбласть(6,1,6,1);

		ОбластьГраницаСправа.Рисунки.ГраницаСправа.Высота = ВысотаЭтикетки*1.09;
		ОбластьГраницаСнизу.Рисунки.ГраницаСнизу.Ширина   = ШиринаЭтикетки;

		ОбластьГраницаСправа.Область(1,1,1,1).ВысотаСтроки = ВысотаЭтикетки*2.65;
		ОбластьГраницаСнизу.Область(1,1,1,1).ШиринаКолонки = ШиринаЭтикетки*0.53;

		ВсегоСтрок        = 19;
		КоличествоКолонок = 5;
	КонецЕсли;

	ВсегоКолонок = КоличествоКолонок;
	Если ВсегоКолонок > 1 Тогда
		ВсегоКолонок = ВсегоКолонок+ВсегоКолонок - 1; //добавляем разделители колонок.
	КонецЕсли;

	ВывелиХотяБыОдинШтрихКод = Ложь;
	Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
		Если ПечататьЦену И СтрокаИзСписка.Цена = 0
		   И Не ПечататьБезЦены Тогда
			Продолжить;
		КонецЕсли;
		
		ТипКода = ПолучитьЗначениеТипаШтрихкодаДляЭУ(СтрокаИзСписка.ТипШтрихкода);
		Если ТипКода = -1 Тогда
			ОбщегоНазначения.СообщитьОбОшибке("Для штрихкода формата """ + СтрокаИзСписка.ТипШтрихкода 
							 + """ не существует соответствующего типа в ЭУ ""1С:Печать штрихкодов"".
							 | Позиция будет пропущена");
			Продолжить;
		КонецЕсли;
		
		Если РаботаСТорговымОборудованием.ПроверитьШтрихКод(?(ПустаяСтрока(СтрокаИзСписка.ПредставлениеШтрихкода),
		                                                      СтрокаИзСписка.Штрихкод,
		                                                      СтрокаИзСписка.ПредставлениеШтрихкода),
		                                                    СтрокаИзСписка.ТипШтрихкода) Тогда

			ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.ТипКода   = ТипКода;
			ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.Сообщение = ?(ПустаяСтрока(СтрокаИзСписка.ПредставлениеШтрихкода),
			                                                      СтрокаИзСписка.Штрихкод,
			                                                      СтрокаИзСписка.ПредставлениеШтрихкода);

			ОбластьНоменклатура.Текст = СокрЛП(СтрокаИзСписка.Номенклатура) + ФормированиеПечатныхФорм.ПредставлениеСерий(СтрокаИзСписка);
			Если ПечататьЦену И СтрокаИзСписка.Цена <> 0 Тогда
				Если Не ЗначениеЗаполнено(ДопТипЦены) Тогда
					//ОбластьЦена.Текст = "Цена: " + ОбщегоНазначения.ФорматСумм(СтрокаИзСписка.Цена,СтрокаИзСписка.Валюта) + " за " + СтрокаИзСписка.ЕдиницаИзмерения;
					ОбластьЦена.Текст = СокрЛП(ТипЦены.ДляПечатиЭтикеток) + ": " + ОбщегоНазначения.ФорматСумм(СтрокаИзСписка.Цена,СтрокаИзСписка.Валюта) + " за " + СтрокаИзСписка.ЕдиницаИзмерения;
				Иначе
					ОбластьЦена.Текст = СокрЛП(ТипЦены.ДляПечатиЭтикеток) + ": " + ОбщегоНазначения.ФорматСумм(СтрокаИзСписка.Цена,СтрокаИзСписка.Валюта) + " за " + СтрокаИзСписка.ЕдиницаИзмерения;
					ОбластьЦена.Текст = ОбластьЦена.Текст + Символы.ПС + СокрЛП(ДопТипЦены.ДляПечатиЭтикеток) + ": " + ОбщегоНазначения.ФорматСумм(СтрокаИзСписка.ДопЦена,СтрокаИзСписка.Валюта) + " за " + СтрокаИзСписка.ЕдиницаИзмерения;
				КонецЕсли;
			КонецЕсли;
			Для Копий = 1 По СтрокаИзСписка.Количество Цикл
				Если ТекКолонка > ВсегоКолонок Тогда //новая строка.
					Если ВсегоСтрок <> 1 Тогда //выведем разделитель.
						Для Сч = 1 по ВсегоКолонок Цикл
							Если Сч = 1 Тогда
								Таб.Вывести(ОбластьНачалоГраницыСнизу);
							Иначе
								Таб.Присоединить(ОбластьНачалоГраницыСнизу);
							КонецЕсли;
							Таб.Присоединить(ОбластьГраницаСнизу);
							Таб.Присоединить(ОбластьНизГраницыСправа);
							Сч = Сч + 1;
						КонецЦикла;
						ТекСтрока = ТекСтрока + 1;
					КонецЕсли;
					Если ТекСтрока/ВсегоСтрок = Цел(ТекСтрока/ВсегоСтрок) Тогда
						Таб.ВывестиГоризонтальныйРазделительСтраниц();
					КонецЕсли;
					ТекСтрока = ТекСтрока + 1;
					ТекКолонка=1;
				КонецЕсли;
				Если ТекКолонка<>1 Тогда //выведем разделитель.
					Таб.Присоединить(ОбластьГраницаСправа);
					ТекКолонка = ТекКолонка + 1;
					Таб.Присоединить(ЭтикеткаОбласть);
					ТекКолонка = ТекКолонка + 1;
				Иначе
					Таб.Вывести(ЭтикеткаОбласть);
					ТекКолонка = ТекКолонка + 1;
				КонецЕсли;

				ВывелиХотяБыОдинШтрихКод = Истина;
			КонецЦикла;
		Иначе
			ТекстСообщения = "У товара """ + СтрокаИзСписка.Номенклатура + """ штрихкод не задан или имеет неверный формат!";
			Если КолвоПереданныхТоваров = 1 Тогда
				Предупреждение(ТекстСообщения);
			Иначе
				Сообщить(ТекстСообщения,СтатусСообщения.БезСтатуса);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

	Если ВывелиХотяБыОдинШтрихКод Тогда
		УниверсальныеМеханизмы.НапечататьДокумент(Таб, 1, СразуНаПринтер, "Этикетки");
	Иначе
		Сообщить("На печать не выведено ни одной этикетки!");
	КонецЕсли;

КонецПроцедуры // Печать()
Показать
8. jobkostya1c_ERP 100 08.08.14 20:13 Сейчас в теме
Ну настройки формы обработки печати сохраняются в конфигурации. Посмотрел в последнем релизе УТ 10.3 на рисунке. А вот про принтер и параметры его листа на первый взгляд не вижу. А вообще знакомая процедура печати. Все те же грабли. Для отдельного принтера этикеток приходилось опытным путем менять коэффициенты масштабирования
ОбластьГраницаСправа.Рисунки.ГраницаСправа.Высота = ВысотаЭтикетки*1.09;
ОбластьГраницаСнизу.Рисунки.ГраницаСнизу.Ширина   = ШиринаЭтикетки;

ОбластьГраницаСправа.Область(1,1,1,1).ВысотаСтроки = ВысотаЭтикетки*2.65;
ОбластьГраницаСнизу.Область(1,1,1,1).ШиринаКолонки = ШиринаЭтикетки*0.53;

Их бы на форму вывести.
9. xkunyax1994 28.09.15 20:08 Сейчас в теме
обратитесь в сервисный центр, может там есть толковый человечек, который поможет вам именно с софтом
10. rusya1995 29.09.15 03:38 Сейчас в теме
(9) xkunyax1994,
видимо сервисный центр это слишком просто, и человек хочет коллективным разумом решить проблему)
11. xkunyax1994 29.09.15 03:40 Сейчас в теме
(10) rusya1995, может быть и так, но я тут не силен к сожалению, если коллективным не получится решить, пускай обращается к ребятам из Сервис Плюс
12. jo0506 20 21.12.15 16:13 Сейчас в теме
В общем просто вывел пользователям кнопку, с функционалом:

ОчиститьНастройкиПользователя(ПользователиИнформационнойБазы.ТекущийПользователь());



По случаю проблем нажимают, и настройки сбрасываются, убирают поля в настройках и все работает...
14. DimDiemon 80 16.06.17 11:47 Сейчас в теме
(12)В настройках печати принтера этикеток созданы используемые этикетки?
13. user767545 16.06.17 10:28 Сейчас в теме
купили на склад вот такой http://denatol.ru/catalog/oborudovanie/printery_etiketok/737/ и проблем не знаем
15. splxgf 16.06.17 18:42 Сейчас в теме
Вообще проблем нету, только задавать для каждого документа свои
ТабДок.ИмяПараметровПечати
ТабДок.ИмяПринтер


Может пригодится код для поиска принтера под нужную сессию.
Принтер = ИмяПринтера (from ИмяКомпьютера);
А функция возвращает с имя принтера с учетом "перенаправлено"
Функция ПринтерВТерминале(Принтер)
ServiceSet=GetCOMObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2");
PrinterSet=ServiceSet.Get("Win32_Printer");
Попытка
	Items=ServiceSet.ExecQuery("Sel ect * fr om Win32_Printer");
Исключение
	Сообщить(ОписаниеОшибки());
    Отказ=Истина;
	возврат Принтер;
КонецПопытки;    
Для каждого стр из Items Цикл
	Если Найти(стр.Name, Принтер)>0 Тогда
		возврат (стр.Name);
	КонецЕсли;   
КонецЦикла;
Показать
16. user799758 21.07.17 11:33 Сейчас в теме
Здравствуйте! Заказывал себе принтер в одной очень крутой компании,всё очень понравилось.Хорошие цены,большой ассортимент товара.Советую и вам попробовать заказать у них http://print-code.ru
17. wermah 21.07.17 13:34 Сейчас в теме
я под каждый макет прописал
ТабДокБЭ.ИмяПараметровПечати = "ЭтикеткаБольшая";
ТабДокМЭ.ИмяПараметровПечати = "ЭтикеткаМалая";
ТабДок.ИмяПараметровПечати = "Лист";

и перестали возникать проблемы, просто под пользователем один раз настраиваем параметры страницы и все
Оставьте свое сообщение

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