Имя: Пароль:
1C
1C 7.7
v7: Распечать и закрыть документ созданный другим документом через СоздатьОбъект
,
0 Double_Medved
 
13.01.14
16:43
Добрый день! ТиС, дописанная. Вот была уже сделана такая штука - в документе заявка  есть кнопка "Создать пакет документов". Она программно создает ПКО и Реализацию, и потом "ОткрытьФорму(ПКО и Реализация). А менеджеру остается напечатать их и закрыть. Но нет предела совершенству, и менеджер не хочет сам печатать и закрывать, это долго. Он хочет чтобы документы сами напечатались и закрылись. Вот подскажите, как это лучше сделать? Единственное что мне пока пришло в голову - сделать константу "Напечатать и Закрыть", которая будет ставиться в 1 в процедуре "Создать пакет документов" и при открытии реализации форма будет к ней к ней обращаться, если 1 - то печатать, закрывать, и менять на 0. Но а вдруг одновременно 2 менеджера будут это делать с разными документами? И как-то это не по-людски.
1 Ёпрст
 
13.01.14
16:48
если без переделок самих документов, то проще всего печатать внешнюю печ.  форму
2 Ёпрст
 
13.01.14
16:48
может еще и в твоей поделке принтёр выбрать сразу.. куды печатать
3 Avganec
 
13.01.14
16:49
(0) ну и что. просто вместо ОткрытьФорму вызывайте Печать()
4 Double_Medved
 
13.01.14
16:50
ДокРеализация.Записать();
ОткрытьФорму(ДокРеализация.ТекущийДокумент());
5 Double_Medved
 
13.01.14
16:51
А вот печать - она же уже в форме, разве к ней можно обратиться через ДокРеализация?
6 Avganec
 
13.01.14
16:54
(5) выноси печать из формы, тогда можно без проблем. а так, у тебя же есть форма, попробуй вызови. не помню, можно было так в 7.7
7 DeiMos
 
13.01.14
17:00
Не открывай формы ПКО и Реализации вообще.

А в том документе, в котором создаёшь ПКО и Реализацию - ПКО.Записать(); ПечатьПКО(ПКО.ТекущийДокумент());

И то же самое с реализацией.
Реал.Записать(); ПечатьРеал(Реал.ТекущийДокумент());
8 Double_Medved
 
13.01.14
17:03
(7)О, спасибо, так и буду делать
9 ADirks
 
13.01.14
17:05
вообще-то в стандартном ТиС'е есть стандартный механизм для печати документов (например так они из журналов печатаются)

сзПарам = СоздатьОбъект("СписокЗначений");
сзПарам.Установить("Команда", "ПечатьНаПринтер"); //или ПечатьНаЭкран
ОткрытьФорму(Док, сзПарам);
10 Double_Medved
 
13.01.14
17:11
(9)О, получилось! Спасибо!
11 Double_Medved
 
13.01.14
17:17
(9)А как таким макаром можно закрыть?
12 Ёпрст
 
13.01.14
17:18
(11) он и не откроется, там СтатусВозврата(0) стоит в ПриОткрытии у документа.
13 Double_Medved
 
13.01.14
17:28
(12)у меня печатается, но при этом и открывается
14 Ёпрст
 
13.01.14
17:31
(13) смотри, что написано в ПриОткрытии у документа.
в штатном тисе форма дока не открывается, её статусвозврата подавляет
15 Double_Medved
 
13.01.14
17:39
(14) О, все норм, это у меня просто уже глаза устали, там был другой документ открвт
16 Double_Medved
 
13.01.14
17:39
Всем спасибо, все оказалось просто

сзПарам = СоздатьОбъект("СписокЗначений");
сзПарам.Установить("Команда", "ПечатьНаПринтер"); //или ПечатьНаЭкран

ОткрытьФорму(Док, сзПарам);
17 Double_Medved
 
13.01.14
17:39
Как и писал (9)
18 Ёпрст
 
13.01.14
17:40
(16) учти, что печатаемая "по-умолчанию" форма, это не всегда то, что нужно.. особенно в реализации
19 Double_Medved
 
13.01.14
17:50
(18) Понятно, спасибо. А с помощью сзПарам.Установить("Команда", "ПечатьНаПринтер"); Можно как-нибудь выбрать печатную форму?
20 ADirks
 
13.01.14
17:51
(19) штатный механизм такого не предусматривает, надо допиливать
21 Ёпрст
 
13.01.14
17:51
(19) неа..если только в самом документе не подправишь код.
22 Ёпрст
 
13.01.14
17:53
либо править документ, либо сразу печатать нужную внеш.печ.форму (только её тоже выбирать придётся :)))