|
v7: Открытие вновь созданного, но не записанного документа. | ☑ | ||
---|---|---|---|---|
0
Damash
22.11.11
✎
01:19
|
Есть Документ_1 с табличной частью.
Выделяем определенную строку и на основании данных из этой строки необходимо создать Документ_2. Но по итогу создания необходимо этот Документ_2 показать пользователю, без предварительного сохранения. Как это сделать можно? |
|||
1
Попытка1С
22.11.11
✎
01:21
|
ОткрытьФорму
|
|||
2
FN
22.11.11
✎
01:21
|
ОткрытьФорму
данные передаем параметромформы, в ВВодНового обрабатываем либо заполнять через контекст это на твое усмотрение |
|||
3
Aleksey
22.11.11
✎
01:22
|
Только в голой 1С ТЧ не заполнишь
|
|||
4
Damash
22.11.11
✎
01:23
|
ОткрытьФорму(<?>,,)
Синтаксис: ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>) Назначение: Открывает визуальную форму ввода нового документа (в т.ч. в режиме ввода на основании). А что есть "ОписательОбъекта"? Как спозиционировать на этот незаписанный документ? |
|||
5
Damash
22.11.11
✎
01:24
|
(3) это уже в моем случае второстепенно, мне шапку нового дока нужно заполнить, чтобы пользователи не вводили сами (ато косячат много)
|
|||
6
Aleksey
22.11.11
✎
01:24
|
(4) Это строка, в которой указывается тип и вид, те.е
"Документ.ТвойДокумент" |
|||
7
Aleksey
22.11.11
✎
01:25
|
Т.е. если хочешь открыть счет-фактуру, значит
"Документ.СчетФактура" (или как у тебя в конфигураторе имя задано) |
|||
8
Попытка1С
22.11.11
✎
01:26
|
(7) У него там будет заполненный документ.
ОткрытьФорму(Докум, Конт); |
|||
9
Aleksey
22.11.11
✎
01:27
|
Согласен
|
|||
10
Damash
22.11.11
✎
01:31
|
хорошо, а как в новый документ передать именно данные (к примеру) 34-ой строки Документа_1?
|
|||
11
Aleksey
22.11.11
✎
01:41
|
(10) Ну ты же его создаешь?
Док=создатьОбъект("Документ.СчетФактура"); Док.Фирма=.. Док.ДатаДок = ... //Заполняем шапку, или используем типовые процедуры из ГМ //Все готово можно показать ОткрытьФорму(Докум, ); |
|||
12
Попытка1С
22.11.11
✎
01:43
|
(10) Смотри (11) только на строке спозиционируйся.
|
|||
13
Aleksey
22.11.11
✎
01:44
|
Типа
ДокИсточник.ПолучитьСтрокуПоНомеру(34); Док.ТвойРеквизитШапки = ДокИсточник.ТвойРеквизитВ34Строке; |
|||
14
Damash
22.11.11
✎
01:49
|
(11) почему-то не срабатывает:
Акт=СоздатьОбъект("Документ.ОказаниеУслугНамБН"); Акт.Новый(); Акт.ДатаДок = ДатаДок; ... ОткрытьФорму(Акт); |
|||
15
Damash
22.11.11
✎
01:49
|
попробую по принципу Aleksey
|
|||
16
Aleksey
22.11.11
✎
01:50
|
попробуй
ОткрытьФорму(Акт.ТекущийДокумент()); |
|||
17
Damash
22.11.11
✎
01:51
|
(16) нет, тоже без реакции
|
|||
18
Aleksey
22.11.11
✎
01:52
|
должно работать. давай код весь
|
|||
19
Aleksey
22.11.11
✎
01:54
|
На крайняк попробуй через контекст
ОткрытьФорму("Документ.ОказаниеУслугНамБН",Конт); Конт.ДатаДок = ДатаДок; ... заполняем док Конт.Форма.Обновить(); |
|||
20
Damash
22.11.11
✎
01:55
|
Процедура СоздатьАкт()
Акт=СоздатьОбъект("Документ.ОказаниеУслугНамБН"); Акт.Новый(); Акт.ДатаДок = ДатаДок; Акт.Контрагент = КтоПричина; Акт.МестоХранения = МестоХранения; Акт.Комментарий = Коммент; ... Акт.Курс = Курс; ОткрытьФорму(Акт.ТекущийДокумент()); КонецПроцедуры |
|||
21
Aleksey
22.11.11
✎
01:57
|
видно он новый док не открывает, нужно записать сначала.
Так что попробуй через контекст заполнять |
|||
22
Damash
22.11.11
✎
01:57
|
попробую, как в (13)
|
|||
23
Попытка1С
22.11.11
✎
01:59
|
Да не сработает так похоже, делай как в (2) предлагал.
ОткрытьФорму("Документ.ОказаниеУслугНамБН",Контекст); |
|||
24
Damash
22.11.11
✎
02:03
|
т.е. через контекст я так понимаю вот так делать,да?
Процедура СоздатьАкт() ПараметрыПередачи=СоздатьОбъект("СписокЗначений"); ПараметрыПередачи.ДобавитьЗначение(КтоПричина); ПараметрыПередачи.ДобавитьЗначение(Списание); ПараметрыПередачи.ДобавитьЗначение(Коммент); ОткрытьФорму("Документ.ОказаниеУслугНамБН",ПараметрыПередачи,ТекущийДокумент()); КонецПроцедуры затем в новом документе обрабатываю ПараметрыПередачи в ВводНового, а данные не из ТЧ - ВВодНаОсновании. Так? |
|||
25
Aleksey
22.11.11
✎
02:04
|
(24) Один из вариантов, 100% должен сработать
|
|||
26
Aleksey
22.11.11
✎
02:05
|
Только Текущий Документ можно не указывать. Иначе он вызовет процедуру ВВодНаОсновании()
|
|||
27
Damash
22.11.11
✎
02:26
|
в итоге срослось таким образом!
В Документе_1 вызываю создание документа, при выделенной нужной строчке ТЧ Процедура СоздатьАкт() ОткрытьФорму("Документ.ОказаниеУслугНамБН",НомерСтроки,ТекущийДокумент()); КонецПроцедуры // где в качестве Контекста - передаю номер строки А в Документе_2 обрабатываю ВводНаОсновании(): Процедура ВводНаОсновании(ДокОсн) ДатаДок = ДокОсн.ДатаДок; ... ДокОсн.ПолучитьСтрокуПоНомеру(Форма.Параметр); // и начинаю обращаться к данным спозиционированной строки Контрагент=ДокОсн.КтоПричина; ... ВводНового(); КонецПроцедуры |
|||
28
Damash
22.11.11
✎
02:27
|
Всем спасибо за поддержку...
|
|||
29
Aleksey
22.11.11
✎
02:27
|
ВводНового(); это лишнее. он дублирует ВводНаОсновании
|
|||
30
Aleksey
22.11.11
✎
02:28
|
т.е. может затереть тебе реквизиты и заполнить их значениями по умолчанию
|
|||
31
Damash
22.11.11
✎
02:30
|
(29) не согласен.
давно как-то обжегся на этом. Если срабатывает ВводНаОсновании, то алгоритм не передается в ВводНового, а мне нужно ... т.е. тут либо дублировать алгоритм из ВводНового, либо сослаться на нее.. |
|||
32
Aleksey
22.11.11
✎
02:34
|
(31) Ну я отсюда код процедур не вижу.
Главное чтобы не получилось например он заполнит реквизит Склад из документа основания, потом в процедуре Ввод нового заполнит этот реквизит складом по умолчанию. А так если там прописано граматно, типа если не заполнен реквизит склад - тогда заполняем - ради бога |
|||
33
Aleksey
22.11.11
✎
02:35
|
А не передается потому что эти процедуры по сути дублируют друг друга. Просто вызываются разными событиями
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |