1С 8.2 ставит тот принтер, который запоминает, а не тот, который по умолчанию.

1. AndrewM 06.02.12 10:43 Сейчас в теме
Помогите, пожалуйста!
Срочно надо!

Сотрудники прыгают с компа на комп. Это необходимость, т.к. у них выходные в разные дни. Т.е. в один день один работает, другой отдыхает, в другой день наоборот.
На 1С заходят через RDP-ярлыки, настроенные на разных терминальных пользователей. И соответственно у каждого терминального пользователя настроен свои принтеры и свой принтер по умолчанию. Но1С 8.2 запоминает принтер, на который печатался документ, и печатает на него, даже если по-молчанию другой. Причём после печати принудительно на другой принтер, всё равно не запоминает!!! Помогает только смена принтера в параметрах страницы.

Как заставить 1С печатать документы на принтер по-умолчанию без изменения параметров страницы?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. vovka-x13 4 06.02.12 11:09 Сейчас в теме
Не совсем понятно, т.е. ты хочешь привязать к рабочему месту принтер и какой бы пользователь не садился за это рабочее место он печатал только на этот принтер, правильно?
3. AndrewM 06.02.12 11:22 Сейчас в теме
Совершенно верно.
Какой принтер на этом рабочем месте по-умолчанию, на такой и надо распечатать.
Как отучить 1С запоминать принтеры?
4. vovka-x13 4 06.02.12 11:27 Сейчас в теме
Может проще её научить находить тот принтер, который установлен виндой по умолчанию.
5. AndrewM 06.02.12 11:34 Сейчас в теме
А как это сделать? Без взлома конфигуратора.
6. ktuhlu 06.02.12 11:54 Сейчас в теме
На самом деле легче было бы использовать принтер настроенный по умолчанию на компе, с которого запускается терминальная сессия. Единственная проблемма терминальный сервак не всегда видит локальные принтера, но я использую ScrewDrivers для решение проблеммы.При такой системе любой пользователь заходящий с локального компа, может использовать прописанные у него принтеры в терминальной сессии.
7. DikSer 29.02.12 04:32 Сейчас в теме
Добрый день товарищи, вопрос еще актуален? Кто нибудь нашел внятное решение проблемы, кроме использования Скрю?
8. bankolya 29.02.12 09:56 Сейчас в теме
А выбирать принтер каждый раз при печати очень трудно? Время выполнения операции увеличится на несколько секунд, что не фатально, я думаю. Зато проблема будет решена, ибо сотрудник в этом случае должен будет знать твердо, что ему нужно выбрать принтер. Через пару дней выбор принтера пользователь будет делать автоматически, и время выполнения операции вернется к прежней величине.
11. AndrewM 02.03.12 22:02 Сейчас в теме
(8) bankolya, это, конечно, всё логично, верно и правильно, но не всегда согласуется с реальностью. =) Если бы я был на месте кассира, который не по своей воле прыгает с кассы на кассу, и мне всё время приходилось бы распечатывать документы покупателям из очереди, которая есть почти всегда, меня бы тоже бесило, что надо тут, блин, ещё и принтер выбирать. =)
9. DikSer 29.02.12 10:17 Сейчас в теме
Просто сотрудники работают сменами, и тыкают на автомате на печать...=) Так то конечно пои идеи лучше каждый раз выбирать...) Просто в инете часто встречаются случае когда люди лечатся от обратнего, чтобы сохранялся последний принтер, а тут надо наоборот)))
12. DikSer 05.03.12 04:09 Сейчас в теме
Помнится 7.7 хранила данные о печати в реестре, возможно 8.2 тоже хранит там же... Если бы как нибудь к этой ветки реестра заблокировать доступ пользователю то возможно можно было бы решить данную проблему...
13. AndrewM 05.03.12 09:33 Сейчас в теме
(12) DikSer, кстати, пользователи говорили, что до перехода с 7.7 на 8.2 принтеры не сохранялись. Печать шла сразу на принтер, настроенный по-умолчанию на текущем компьютере.
Так всё-таки 7-ка тоже запоминает принтеры? Я с 7-кой мало сталкивался, поэтому не знаю.
14. DikSer 05.03.12 09:37 Сейчас в теме
7.7 помнила принтеры, точно помню что когда подключит что то или принтер поменяется, лазиш в реестр в ветку с 1с-кой \точно уже не помню\ и чистишь там последний принтер на который шла печать как то так, и еще там были всякие настройки...
15. AndrewM 05.03.12 09:45 Сейчас в теме
(14) DikSer,
Если это так, то это опять же галочка в пользу того, что пользователи просто не завершают терминальный сеанс. Просто вместе с переходом на 8.2 мы и время терминального сеанса после выхода пользователя удлинили, т.к. меня напугали, что в случае принудительного завершения сеанса есть риск повреждения базы.
Но почему же тогда опытным путём это не подтверждается.

Кстати, такой вопрос: когда завершаешь терминальный сеанс, означает ли закрытие терминального окна, что сеанс уже полностью завершён? Или надо ждать ещё какое-то время? Возникло подозрение, что, может быть, во время своих опытов я мало ждал после завершения терминального сеанса.
16. DikSer 05.03.12 09:53 Сейчас в теме
Если в процессах на терминале все процессы завершились то думаю никаких более вещей творится не может.
17. AndrewM 05.03.12 09:58 Сейчас в теме
(16) DikSer, а у Вас как с этим делом: завершаете принудительно или учите пользователей правильно выходить? Или у Вас не терминальный режим?
18. DikSer 05.03.12 10:00 Сейчас в теме
(17) AndrewM, Учим пользователей завершать правильно, по крайней мере стараемся..)
19. unoDosTres 05.03.12 10:19 Сейчас в теме
так решилась проблема:? или приходится выбирать принтер из списка?
20. DikSer 05.03.12 10:23 Сейчас в теме
(19) unoDosTres, Пока что приходится выбирать из списка, пока конечных никаких решений нету. Говорят что кто то решил проблему с помощью СКРЮ драйвера, но - "Это не наш метод" (с)
22. AndrewM 05.03.12 12:03 Сейчас в теме
(20) DikSer,
ScrewDrivers, если я правильно понял, это средство для отображения в терминальной сессии принтеров, установленных на локальном компе. Аналогичное ПО и у наших клиентов стоит, и все свои локальные принтеры они видят. Но как это может помочь в данной проблеме, мне пока не понятно.

Насчёт блокировки ветки реестра: хлопотно, учитывая что у нас нет прав администрирования, этим у них штатный сисадмин занимается. Если только с ним скооперироваться. =)
23. DikSer 05.03.12 12:07 Сейчас в теме
(22) AndrewM, Ну вот я тоже не совсем понял при чем тут он. Хотя кто то вышел писал что ему помогло...
Пытаюсь замутить с реестром. Надо найти куда 1с-ка 8-ка пишет данные о принтерах, в реестра то кажется нету блин...
24. AndrewM 05.03.12 12:22 Сейчас в теме
(23) DikSer,
Да. Для 7-ки нашёл ветку, для 8-ки нет. Похоже, что 8-ка эти настройки записывает в базу.
25. DikSer 05.03.12 12:24 Сейчас в теме
(24) AndrewM, Есть подозрения что пишет она их вот сюда "C:\Documents and Settings\USER\Application Data\1C\1Cv82" Но вот куда %)
21. DikSer 05.03.12 11:41 Сейчас в теме
Вот нашел как можно залочить ветку реестра... блокирование ветки реестра
Как вариант зайти в груповую политику - Конфигурция компьютера - Конфигурация Виндовс - Параметры безопасности - Политика ограничения использования программ - Создать правила - Дополнительные правила, там запретить доступ к ветки в которую 1с-ка пишет инфу о принтере... Вот.
26. all4cf 41 13.08.15 13:07 Сейчас в теме
решение данной проблемы простое, не выбран принтер по умолчанию, или выбран принтер по умолчанию который отключен, нужно зайти в СИСТЕМУ и там выбрать принтер и тогда все ОК.
27. Maxx2008 15.10.15 11:07 Сейчас в теме
(26) all4cf, не, не поможет, 1с всё равно печатает на принтер, который она запомнила. Причем если разные документы печатать на разные принтеры, то при быстрой печати, без выбора принтера и предпросмотра, 1С печатает тоже на разные принтеры, не зависимо от принтера по умолчания!
28. Maxx2008 15.10.15 11:09 Сейчас в теме
Вот, встроил в свою конфигурацию, для получения принтера по умолчанию, может кому и пригодится:

Функция ПолучитьПринтерПоУмолчанию() Экспорт
    
    Скрипт = Новый ComObject("MSScriptControl.ScriptControl");
    Скрипт.Language = "vbscript";                 
    Скрипт.AddCode("
         |Function GetDefaultPrinter()
         |GetDefaultPrinter=vbNullString
         |Set objWMIService=GetObject(""winmgmts:"" _
         |& ""{impersonationLevel=impersonate}!\\.\root\cimv2"")
         |Set colInstalledPrinters=objWMIService.ExecQuery _
         |(""Sel ect * fr om Win32_Printer"")
         |For Each objPrinter in colInstalledPrinters
         |If objPrinter.Attributes and 4 Then
         |GetDefaultPrinter=objPrinter.Name
         |Exit For
         |End If
         |Next
         |End Function");
         
    Возврат СокрЛП(Скрипт.run("GetDefaultPrinter"));
    
КонецФункции
Показать


Далее полученное имя принтера подставляю в поле "ИмяПринтера" в нужные макеты печати)
ybatiaev; Nefilimus; Now; +3 Ответить
30. smaharbA 09.03.16 23:32 Сейчас в теме
(28) Maxx2008, Все гораздо просче...
31. KatyariK 07.07.16 15:32 Сейчас в теме
29. Now 17 20.01.16 12:21 Сейчас в теме
В тексте функции предыдущего поста закрались очепятки из-за защиты от взлома сайта вместо
        |(""Sel ect * fr om Win32_Printer"")

следует писать
""Select * from Win32_Printer"")
32. Eugene11 06.09.16 10:26 Сейчас в теме
Всё гораздо проще. Отрываете печатную форму документа, файл - параметры страницы, в параметрах выбираете нужный принтер, жмём ок и вуаля! Данная накладная или счёт-фактура будет печататься на нужный вам принтер постоянно.
Yurik1993; gusda; tuprikov; GetNight; war4un; +5 1 Ответить
34. пользователь 23.10.17 13:35
Сообщение было скрыто модератором.
...
35. GetNight 46 02.02.18 13:15 Сейчас в теме
(32) Все гениальное просто) +1 в карму
Решение в достаточно логичном месте...

Проблема только в том, что ещё более логичное место (не через файл, а через Ctrl+P/меню принтера сверху) не работает:
выбрать принтер можешь, распечатать можешь... а вот запомнить - нет.
37. Stell 53 05.09.18 08:19 Сейчас в теме
(32)
Причём после печати принудительно на другой принтер, всё равно не запоминает!!!


Автор же пишет что это НЕ работает. Если бы было так просто, народ бы не мучился с этим (уж до этого бы додумались).
33. AndrewM 02.03.12 15:52 Сейчас в теме
У меня было подозрение на то, что пользователи, у которых есть такая проблема, выходят из терминала, не завершая сеанс (проще говоря, нажимают крестик от терминального режима, а не от 1С). Догадка такая была из-за того, что встречались сотрудники, у которых сразу выходит тот принтер, который настроен по-умолчанию на текущем компе. Но когда я пробовал смоделировать ситуацию с такой догадкой, принтер у меня всё равно сохранялся. Да и те, у кого проблема есть, клянутся, что завершают сеанс.

А ещё была такая дурацкая догадка, что свой механизм запоминания принтера платформа 1С 8.2 включает только тогда, когда ты первый раз под текущим пользователем выбрал другой принтер. То есть пока просто нажимал на печать, ничего не меняя, всегда печаталось на принтер по-умолчанию. А как только один раз понадобилось выбрать руками какой-нибудь другой принтер, так с тех пор программа и запускает маховик своей запоминаемости. =)

Но всё это на уровне догадок.
36. Stell 53 22.03.18 15:16 Сейчас в теме
1С начинает запоминать настройки только когда, когда видит или новый принтер, или новые настройки для старого. Чтобы "включить память" 1Ске нужно поиграть настройками (с сохранением) старого принтера (Файл- Параметры страницы - (выбрать нужный принтер из списка) - кнопка Принтер - Порядок страниц, например). Сохранить. И потом вернуть старый порядок страниц.
Valerianich; payta; portorico; +3 Ответить
38. user1056127 07.02.19 09:12 Сейчас в теме
1С как всегда радует своим стилем работы, запоминает принтер по умолчанию по своему и изменение настроек в Винде не влияет на выбор принтера, как печатала на первом выбранном, так и продолжает радовать выбором. Если кого-то задолбало раздолбайство программистов 1С и постоянно вызов настроек принтера через Ctrl+P, то вот мое решение. Я победил свою 3.0 базовую так: зашел в печатную форму нажав соответствующую кнопку печати (в моем случае это был УПД), нажал предварительный просмотр документа перед печатью, там нажал параметры страницы, вылезло окно по всей видимости написанное под 1С и для 1С, в ней в выпадающем списке выбрал нужный принтер, и напечатал документ, теперь 1С запомнила его, и ей походу по барабану какой принтер по умолчанию в Винде, она запоминает последний выбранный именно по ее алгоритму печати.
neverhood_05; WindFinder; Valerianich; Asenka; payta; AlenaR; +6 Ответить
39. user1161585 22.02.19 10:59 Сейчас в теме
user1056127, спасибо! Алгоритм реально рабочий. Проблема решена.
40. user1263036 06.08.19 14:42 Сейчас в теме
============================================================­===========
РЕШЕНИЕ РЕШЕНИЕ РЕШЕНИЕ РЕШЕНИЕ РЕШЕНИЕ РЕШЕНИЕ
============================================================­===========
Нажал предварительный просмотр документа, там нажал параметры страницы, в ней в выпадающем списке выбрал нужный принтер, и напечатал документ, теперь 1С запомнила его
41. СергейК 51 17.01.20 10:50 Сейчас в теме
(40)
Нажал предварительный просмотр документа, там нажал параметры страницы, в ней в выпадающем списке выбрал нужный принтер, и напечатал документ, теперь 1С запомнила его

Нужна обратная задача - заставить 1С "забыть" выбранный так принтер.
Что бы печать шла на принтер по умолчанию.
На сейчас помогает только переименовать выбранный в параметрах страницы принтер, тогда 1С печатает на принтер по умолчанию.
42. СергейК 51 17.01.20 15:56 Сейчас в теме
(41) Не нашел пока другого способа, кроме как очищать настройки печати:

КлючОбъекта = "Общее/НастройкиПечатиТабличногоДокумента/" + ИмяПараметраПечати;
	
	ЗначениеНастройки  = ХранилищеСистемныхНастроек.Загрузить(КлючОбъекта , , ,ИмяПользователя);
	ТекстНастройки  = ЗначениеВСтрокуВнутр(ЗначениеНастройки);
	ХранилищеСистемныхНастроек.Удалить(КлючОбъекта,,ИмяПользователя);

Пример ТекстНастройки печати документа СчФактуры:
{"#",3646265f-919a-4293-9fbd-c64c4a00095c,
{0,20,0,
{"N",9},1,
{"N",1},2,
{"N",100},3,
{"N",1},4,
{"N",1},5,
{"N",1},6,
{"N",1000},7,
{"N",1000},8,
{"N",1000},9,
{"N",1000},10,
{"N",1000},11,
{"N",1000},12,
{"N",1},13,
{"N",0},14,
{"S","Оператор 1"},15,
{"N",7},16,
{"N",0},17,
{"N",0},19,
{"N",4},20,
{"N",0}
}
}
Показать

Где "Оператор 1" - запомненное имя принтера.
Оставьте свое сообщение

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