Имя: Пароль:
1C
1С v8
Печать документа из 2 документа
0 KonstantinK90
 
07.05.15
11:26
Всем привет! У меня проблема! Есть первый документ в есть макет(печатная форма), Есть второй документ как повесить во втором документе на кнопку что бы при нажатии формировалась печатная форма из первого документа только при условии что 1 документ является основанием 2 документа
15 KonstantinK90
 
07.05.15
11:39
ага если я ее скопирую вылазиют ошибки реквизит не определен
16 Fish
 
07.05.15
11:40
(14) Если процедура экспортная то так:
ТвойДокументОбъект.Печать();
17 lera01
 
07.05.15
11:40
ДокументОснование.ПолучитьОбъект.ПЕчать(Вот тут надо поставить параметры с которыми вызывается процедура ПЕчать в объекте этого документа чтоб напечаталась нужная печатная форма)
18 hhhh
 
07.05.15
11:41
(15) определить реквизит, который неопределен,  и не парить людям мозг.
19 lera01
 
07.05.15
11:41
*ПолучитьОбъект().
20 KonstantinK90
 
07.05.15
11:42
я чет не понимаю не могли бы написать по подробнее как обратиться к первой процедуре и од куда
21 fisher
 
07.05.15
11:43
Боюсь, в этой ветке мозги будут испаряться еще долго.
22 KonstantinK90
 
07.05.15
11:45
???
23 Fish
 
07.05.15
11:47
(20) Ты понимаешь, чем тип "документобъект" отличается от типа "документссылка"?
24 KonstantinK90
 
07.05.15
11:49
Объект для записи ссылка показывает данные
25 KonstantinK90
 
07.05.15
11:49
и все же как обратиться к процедуре 1 документа
26 Fish
 
07.05.15
11:50
(25) Через объект. Тебе же ещё в (3) написали. Что не получается?
27 ДенисЧ
 
07.05.15
11:50
Хм... То ли человек от первых майских не отошёл, то ли ко вторым уже начал готовиться...
28 KonstantinK90
 
07.05.15
11:52
я пишу как это сделать через объект
29 KonstantinK90
 
07.05.15
11:53
я с такой задачей первый раз сталкиваюсь и понятия даже не имею с чего начать
30 KonstantinK90
 
07.05.15
11:53
я вас и прошу что бы вы мне помогли обратиться правильно к процедуре
31 Fish
 
07.05.15
11:54
(30) Пост (3) видел? Там ответ. Или ты тролль?
32 KonstantinK90
 
07.05.15
11:55
док2.ПолучитьОбъект().Печать()- док 2 это как описать
33 ДенисЧ
 
07.05.15
11:56
(32) док2 - это сслыка на документ, который ты хочешь распечатать.
Остальное - дословно
34 hhhh
 
07.05.15
11:56
док2 = ДокументОснование;
35 1976vas
 
07.05.15
11:57
(32) Док2.ДокументОснование.ПолучитьОбъект().Печать()
36 KonstantinK90
 
07.05.15
11:59
вам легко говорить когда понимаешь очем
37 fisher
 
07.05.15
11:59
(32) Слушай внимательно и не отвлекайся!
"Док2" - вместо этого нужно подставить имя реквизита в твоем документе, где хранится ссылка на тот документ, который ты хочешь распечатать. Если такого реквизита нет, то распечатать не получится.
38 KonstantinK90
 
07.05.15
11:59
док -2 ссылка на документ который я хочу получить. как получить эту ссылку
39 1976vas
 
07.05.15
12:00
(38) Это реквизит ДокументОснование в твоем Док1
40 Fish
 
07.05.15
12:01
(38) Тогда вопрос на засыпку: что ты имел ввиду в (0) под фразой:
"1 документ является основанием 2 документа"
41 KonstantinK90
 
07.05.15
12:02
да 1 документ является основанием 2 документа
42 Fish
 
07.05.15
12:02
(39) В (0) вроде наоборот написано. док1 является основанием док2 (если я правильно понял). И автору надо получить подчинённый док.
43 Fish
 
07.05.15
12:02
(41) Тогда запросом получаешь подчинённый документ.
44 fisher
 
07.05.15
12:03
Чувствую, назревает очередной ликбез по понятиям подчиненного документа, документа введенного на основании, и отсутствию прямой связи между этими понятиями.
45 KonstantinK90
 
07.05.15
12:03
да все верно
46 KonstantinK90
 
07.05.15
12:03
реквизит ДокументОснование в твоем Док1 - е меня нету такого реквизита
47 Fish
 
07.05.15
12:04
(45) Тогда смотри (43), но встаёт вопрос, как быть, если подчинённых доков несколько?
48 KonstantinK90
 
07.05.15
12:04
а как запросом?
49 Fish
 
07.05.15
12:07
(48) Приехали :)
Нажимаешь в модуле ПКМ, выбираешь "конструктор запросов" и вперёд.
50 hhhh
 
07.05.15
12:07
(47) в (0) кстати наоборот написано, запрос не нужно. Нужно ДокументОснование.
51 hhhh
 
07.05.15
12:09
(48) вы это, потренируйтесь сначала на кошках. Зачем вы сразу с реальных задач начинаете?
52 Fish
 
07.05.15
12:10
(50) Ну строго говоря да, написано именно так, но автор путается в показаниях, поэтому я и предположил обратную ситуацию :)
53 KonstantinK90
 
07.05.15
12:11
Док1 = Документы.Уат_УведомлениеОПринятыхУслугах.ПолучитьСсылку();
    Док1.ПолучитьОбъект().Печать();
ошибка:Значение не является значением объектного типа (Печать)
    Док1.ПолучитьОбъект().Печать();
54 lera01
 
07.05.15
12:13
(53) Ужжас. Ссылку чего ты получаешь????
55 Timon1405
 
07.05.15
12:13
(53) Рекомендую отойти от конфигуратора на 3 метра, сделать 3 оборота на месте, закрыть конфигуратор и позвать специалиста
56 1976vas
 
07.05.15
12:13
"1 документ является основанием 2 документа" где, в каком реквизите Документа2 у тебя хранится ссылка на ДокументОснование?
57 Fish
 
07.05.15
12:15
(56) Судя по (53) всё ещё более запущено, чем я предполагал. На этом я умываю руки, может, найдётся тот, кто сможет помочь автору, но не я. :)
58 hhhh
 
07.05.15
12:15
всё-таки лучше скопипастить в док2 макет и процедуру печать.
59 KonstantinK90
 
07.05.15
12:16
у меня нету реквизита документ основание
60 lera01
 
07.05.15
12:17
(48) Ты когда Вводишь Док2 на основании Док1, у тебя работает процедура "Обработка заполнения"  в модуле Док2. В этой процедуре параметр Основание - это и есть ссылка на Док1. Открой конфигуратор, погляди в код и выясни, в какой реквизит твоего Док2 записывается Основание, пока будем называть этот реквизит "ТудаКудаПишетсяДокументОснование". Когда ты это узнаешь, в код своего вызова Печати Док1 из Док2 вставь оператор
ТудаКудаПишетсяДокументОснование.ПолучитьОбъект().Печать(), заменив слова ТудаКудаПишется документОснование на конкретное название реквизита.
61 hhhh
 
07.05.15
12:17
(59) а как тогда определили, что "1 документ является основанием 2 документа"? По какому реквизиту?
62 KonstantinK90
 
07.05.15
12:27
ОбработкаЗаполненияТечатнойформы() Экспорт
        //Костя
    Если ТипЗнч(Основание) = Тип("ДокументСсылка.Уат_УведомлениеОПринятыхУслугах") Тогда
         Заполнение шапки
        Дата = Основание.ДатаУведомления;
        ДоговорКонтрагента = Основание.ДоговорКонтрагента;
        Комментарий = Основание.Комментарий;
        Контрагент = Основание.Контрагент;
        НомерУведомления = ДанныеЗаполнения.НомерУведомления;
        Ответственный = Основание.Ответственный;
        Статус = ДанныеЗаполнения.Статус;
        ТабЧ = Услуги.Добавить();
        ТабЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("00000000878");
        ТабЧ.Содержание   = "Перевозка груза согласно уведомления о выполненных услугах№ "+ Основание.НомерУведомления + " от "+ Формат(Основание.ДатаУведомления,"ДЛФ=Д"); //Сообщить(Формат(Дата, "ДЛФ=Д")); // 01.01.2005
        СуммаКол   = 0;
        СуммаСуммы = 0;
        Для Каждого ТекСтрокаУведомлениеОПринятыхУслугах Из Основание.УведомлениеОПринятыхУслугах Цикл
        СуммаКол   = СуммаКол   + ТекСтрокаУведомлениеОПринятыхУслугах.РастояниеПеревозкиКМРедактируемое;
        СуммаСуммы = СуммаСуммы + ТекСтрокаУведомлениеОПринятыхУслугах.СтоимостьПеревГруза;
        ТабЧ.Цена  = ТекСтрокаУведомлениеОПринятыхУслугах.ЦенаНаПеревЗа1КМ_Руб_НДС;
    КонецЦикла;
        ТабЧ.Количество               = СуммаКол;
        ТабЧ.Сумма                    = СуммаКол * ТабЧ.Цена;
        ТабЧ.СуммаНДС                 = (ТабЧ.Сумма * 18) / 118;
        ТабЧ.СчетДоходов              = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
        ТабЧ.СчетУчетаНДСПоРеализации = ПланыСчетов.Хозрасчетный.НайтиПоНаименованию(" Налог на добавленную стоимость");
        ТабЧ.Субконто                 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000027");
        ТабЧ.СчетРасходов             = ПланыСчетов.Хозрасчетный.НайтиПоНаименованию("Себестоимость продаж по деятельности с основной системой налогообложения");
        ТабЧ.СтавкаНДС                = Перечисления.СтавкиНДС.НДС18;
    КонецЕсли;
63 KonstantinK90
 
07.05.15
12:27
нету реквизита документ основание
64 hhhh
 
07.05.15
12:43
если нету, то никак не поймешь, что он является основанием.
65 lera01
 
07.05.15
12:47
(62) А это здесь зачем? ОбработкаЗаполненияТечатнойФормы??? Это что? Возможно, в твоей конфе вообще запись основания еще куда-то вынесена. Посмотри групповой обработкойсправочников и документов, куда пишется основание и там потом его ищи.
66 KonstantinK90
 
07.05.15
13:14
ошибка Ошибка при вызове метода контекста (ПолучитьОбъект)
    СсылкаНаПотомка.ПолучитьОбъект().Печать();
по причине:
Элемент не выбран!


СсылкаНаДок = Документы.РеализацияТоваровУслуг.НайтиПоРеквизиту("ДокументОснование", Ссылка);
    СсылкаНаДок.ПолучитьОбъект().Печать();
67 ДенисЧ
 
07.05.15
13:14
(66) Наверное, документ не нашли. Ваш СЯХ.
68 KonstantinK90
 
07.05.15
13:14
Ошибка при вызове метода контекста (ПолучитьОбъект)
    СсылкаНаДок.ПолучитьОбъект().Печать();
по причине:
Элемент не выбран!
69 KonstantinK90
 
07.05.15
13:15
и что делать
70 KonstantinK90
 
07.05.15
13:18
ну как это исправить
71 1976vas
 
07.05.15
13:21
СсылкаНаПотомка.ПолучитьОбъект().Печать(); тебе нужна функция печати предка вроде же.
72 KonstantinK90
 
07.05.15
13:24
да печать документа основания
73 KonstantinK90
 
07.05.15
13:25
как это сделать уже всю голову сломал
74 Fish
 
07.05.15
13:27
(73) Не расстраивайся, я тоже, пытаясь понять, что же ты в итоге хочешь сделать: то ли документ-основание из подчинённого напечатать, то ли наоборот. :)
75 KonstantinK90
 
07.05.15
13:29
документ А основание Б введенный на основании А нужно покнопке из документа Б Распечатать макет из Документа А
76 KonstantinK90
 
07.05.15
13:30
пишу вот так СсылкаНаДок = Документы.РеализацияТоваровУслуг.НайтиПоРеквизиту("ДокументОснование", Ссылка);
    СсылкаНаДок.ПолучитьОбъект().Печать();
Ошибка при вызове метода контекста (ПолучитьОбъект)
    СсылкаНаДок.ПолучитьОбъект().Печать();
по причине:
Элемент не выбран!
77 1976vas
 
07.05.15
13:30
(75) Задачу ставишь правильно, по крайней мере сходится с (0), но решение ее не можешь понять.
78 KonstantinK90
 
07.05.15
13:32
ну так помогите что я от вас и жду
79 KonstantinK90
 
07.05.15
13:33
Как правильно надо
80 1976vas
 
07.05.15
13:33
"СсылкаНаДок = Документы.РеализацияТоваровУслуг.НайтиПоРеквизиту("ДокументОснование", Ссылка);" Ссылка - это что?
81 KonstantinK90
 
07.05.15
13:35
ссылка документ А, я в отладчике смотрю вней отображается ссылка документа А
82 KonstantinK90
 
07.05.15
13:36
ой нет документ А отображается
83 KonstantinK90
 
07.05.15
13:36
ой Б
84 1976vas
 
07.05.15
13:36
Е-мае так это и есть ДокументОснование - твоя Ссылка. По ней просто получай объект А.
85 ДенисЧ
 
07.05.15
13:36
Ой А
Ой Б
Ой всё...
86 KonstantinK90
 
07.05.15
13:38
а если вот так пишу СсылкаНаДок = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(ДокументОснование.Ссылка);
    СсылкаНаДок.ПолучитьОбъект().Печать();
Ошибка при вызове метода контекста (ПолучитьСсылку)
    СсылкаНаДок = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(ДокументОснование.Ссылка);
по причине:
Несоответствие типов (параметр номер '1')
87 KonstantinK90
 
07.05.15
13:39
вы же знаете как это сделать не ужели так тяжело помочь?
88 1976vas
 
07.05.15
13:40
(87) Я сдаюсь...
89 TeddySlaf
 
07.05.15
13:43
(62) Код из 62 поста работает?

ОбработкаЗаполненияТечатнойформы() Экспорт
        //Костя

    Если ТипЗнч(Основание) = Тип("ДокументСсылка.Уат_УведомлениеОПринятыхУслугах") Тогда
         Заполнение шапки
90 KonstantinK90
 
07.05.15
13:44
да работает на основании реализация создается
91 Fish
 
07.05.15
13:45
(87) Понимаешь, мы-то знаем, как сделать. И больше того, тебе даже всё, что нужно, уже объяснили. Но пока ты сам не узнаешь что же тебе нужно, и что у тебя и где есть (а пока сам не узнаешь - не сможешь внятно задать вопрос), то боюсь, ты просто не поймёшь наших ответов, которые в этой ветке уже есть в избытке.
92 PCcomCat
 
07.05.15
13:46
Ссылка.Печать();
93 KonstantinK90
 
07.05.15
13:47
вы кусками пишете а я общую картину не вижу
94 KonstantinK90
 
07.05.15
13:49
я даже ссылку не могу получить пишу вот так СсылкаНаДок = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(ДокументОснование);
    СсылкаНаДок.ПолучитьОбъект().Печать();
Ошибка при вызове метода контекста (ПолучитьСсылку)
    СсылкаНаДок = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(ДокументОснование);
по причине:
Несоответствие типов (параметр номер '1')
что это как исправить
95 fisher
 
07.05.15
13:49
(87) Гы! Ну, скажи это врачу-хирургу, чтобы он бы он тебе помог в телефонном режиме операцию провести.
96 PCcomCat
 
07.05.15
13:49
ДокументОснование - в отладчике это что?
97 hhhh
 
07.05.15
13:50
(93) вот эту вот функцию ПОлучитьСсылку() никогда не используй. Ножом у себя на ладони вырежи "Я никогда не буду использовать ПоОлучитьСсылку() ". Мы тебе другое пишем, а ты постоянно этот бред выкатываешь.
98 KonstantinK90
 
07.05.15
13:51
вы напишите полностью как правильно получить ссылку
99 hhhh
 
07.05.15
13:54
СсылкаНаДок = ДокументОснование;
100 KonstantinK90
 
07.05.15
13:56
документоснование это ссылка на док А
101 TeddySlaf
 
07.05.15
13:56
(90) Попробуй вместо написать так:

Основание.ПолучитьОбъект().Печать();

Исходя из кода в (62), возможно переменная "Основание' вовсе не переменная, а реквизит твоего второго документа, который создается на основании.
102 hhhh
 
07.05.15
13:56
если в форме пишете то

СсылкаНаДок = Объект.ДокументОснование;
103 KonstantinK90
 
07.05.15
14:00
блин вот я тормоз у меня несколько документов я открывал тот который не создан на основвании
104 KonstantinK90
 
07.05.15
14:00
все получилось спасибо!
105 Fish
 
07.05.15
14:01
Все дружно выдохнули :))
106 KonstantinK90
 
07.05.15
14:02
ага вместе со мной
107 TeddySlaf
 
07.05.15
14:02
(104) KonstantinK90, напиши уж, какой командой у тебя получилось вызвать печать документа-родителя.
108 KonstantinK90
 
07.05.15
14:03
СсылкаНаДок = ДокументОснование;
    СсылкаНаДок.ПолучитьОбъект().Печать();
109 KonstantinK90
 
07.05.15
14:04
а как поставить условие если у документа Б нет основания что бы ошибка не выходила
110 KonstantinK90
 
07.05.15
14:04
по нажатию кнопки
111 Fish
 
07.05.15
14:07
(110) Например, есть такая функция ЗначениеЗаполнено(). Почитай про неё с СП.
112 TeddySlaf
 
07.05.15
14:09
(111) или как уже у него есть в коде в посте (62)

Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.Уат_УведомлениеОПринятыхУслугах") Тогда
...
113 Fish
 
07.05.15
14:11
(112) Если пустая ссылка, то условие выполнится.
114 KonstantinK90
 
07.05.15
14:11
все понял спасибо