Имя: Пароль:
1C
1C 7.7
v7: Открытие справочника и передача выбранного в документ.
0 Enlighted
 
25.12.15
11:17
Умный народ, подскажите новичку.

Есть документ при открытии которого сначала должна открыться форма справочника "Контрагенты" пользователь должен выбрать одного и при закрытии справочника, выбранный Контрагент должен попадать в собственно документ.

вот конструкция которую я навалял

    КАгент = СоздатьОбъект("Справочник.Контрагенты");
    КАгент.ОткрытьФормуМодально ("Справочник.Контрагенты");

Ругается что "ОткрытьФормуМодально" используется неверно, а как по другому передать выбранного контрагента в документ я пока не знаю.

Однако,
    ОткрытьФормуМодально ("Справочник.Контрагенты");
открывает форму но при выборе элемента он открывает конкретного контрагента на редактирование.
1 ДенисЧ
 
25.12.15
11:18
ПолучитьФорму().ОткрытьМодально()....
2 Enlighted
 
25.12.15
11:19
(1) О_о реактивный ответ. Сейчас применю.
3 Ясный перец
 
25.12.15
11:31
(2) Применил? ;)
4 Enlighted
 
25.12.15
11:34
(1)
    КАгент = СоздатьОбъект("Справочник.Контрагенты");
    КАгент = ПолучитьФорму().ОткрытьМодально("Справочник.Контрагенты");

КАгент = ПолучитьФорму<<?>>().ОткрытьМодально("Справочник.Контрагенты");
{Документ.ЗалоговыйБилет.Форма.Модуль(580)}: Функция не обнаружена (ПолучитьФорму)

    КАгент.ПолучитьФорму().ОткрытьМодально("Справочник.Контрагенты");

КАгент.ПолучитьФорму().ОткрытьМодально("Справочник.Контрагенты");
{Документ.ЗалоговыйБилет.Форма.Модуль(580)}: Поле агрегатного объекта не обнаружено (ПолучитьФорму)
5 Ясный перец
 
25.12.15
11:35
(4) Потому что в 7.7 нет такого слова ;)
6 Enlighted
 
25.12.15
11:37
Остряки :)
7 Ясный перец
 
25.12.15
11:38
ОткрытьПодбор() не пробовал?
8 Enlighted
 
25.12.15
11:42
(7) Ясен перец не пробовал! Ибо новичок.

Сейчас
9 Enlighted
 
25.12.15
11:45
Попробовал:

    КАгент = СоздатьОбъект("Справочник.Контрагенты");
    Кагент = ОткрытьПодбор("Справочник.Контрагенты");

открывается окно справочника, при выборе агента

Процедура не обнаружена: ОбработкаПодбора/ProcessPermanentChoice
10 Ясный перец
 
25.12.15
11:46
Ну так напиши её ;)
11 Ясный перец
 
25.12.15
11:46
(предопределённая вещь - в том же синтакс-помощнике посмотри)
12 Масянька
 
25.12.15
11:48
(0) Что из типовых есть под рукой?
13 Ясный перец
 
25.12.15
11:49
Типа такого:
(допустим реквизит Контрагент в документе так и называется)
Процедура обработкаПодбора(элемент)
    Контрагент = элемент;
конецПроцедуры

Как-то так...
14 Pers0naGrata
 
25.12.15
11:50
(0)
Процедура ПриОткрытии()
    ОткрытьПодбор("Справочник.Контрагенты","ДляВыбора",,0);
КонецПроцедуры

Процедура ОбработкаПодбора(Элемент)
    Контрагент = Элемент;
КонецПроцедуры
15 Pers0naGrata
 
25.12.15
12:09
(14) Тебе нужно модально. Тогда для типовой ТиС можно сделать так:

Процедура ПриОткрытии()
    Парам = "Выбор";
    ОткрытьФормуМодально("Справочник.Контрагенты.ДляВыбора", Парам);
    Контрагент = Парам;
КонецПроцедуры

У тебя типовая или самописка?
16 vladmenleo
 
25.12.15
12:18
А можно вот так
Процедура ПриОткрытии()
    Контра = ПолучитьПустоеЗначение("Справочник.Контрагенты");
    Если ВвестиЗначение(Контра, "Выберите Контрагента", "Справочник.Контрагенты") = 1 Тогда
        Контрагент = Контра;
    КонецЕсли;
КонецПроцедуры
17 Enlighted
 
25.12.15
13:37
(13) (14) Благодарю за разъяснение

Всё удалось, работает.
18 Enlighted
 
26.12.15
12:01
(15) У меня походу что-то из банка + куча самописки

Ваш вариант открывает форму справочника при выборе открывается форма редактирования Контрагента. Не подходит (16) Ваш вариант открывает форму справочника, при выборе форма справочника закрывается выбранный КА в документ не передаётся
19 Enlighted
 
26.12.15
12:05
(16) (18)  А всё проверил всё верно работает
20 HawkEye
 
26.12.15
17:39
подозревается мне, что все это действо лучше всего смотрелось бы в ВводНового... а не в ПриОткрытии...
21 Enlighted
 
28.12.15
14:10
(20) Тут возник момент.
Всё отлично работает только если такого контрагента нет, то его надо создать а в открывшейся форме такая опция не предусмотренна.
И форма не открывается на весь экран.
22 Злопчинский
 
28.12.15
14:13
(21) ну так поредусмотри такую опцию (кнопку "сделать нового контрагента", или делай его автоматом если его нет и хватает данных для создания контрагента...
23 Enlighted
 
28.12.15
14:19
(22) Не, открывается форма для выбора контрагента еще никаких данных нет предполагается выбрать контрагента и передать его в запущенный документ,

Процедура ПриОткрытии()
    Контра = ПолучитьПустоеЗначение("Справочник.Контрагенты");
    Если ВвестиЗначение(Контра, "Выберите Контрагента", "Справочник.Контрагенты") = 1 Тогда
        Контрагент = Контра;
    КонецЕсли;
КонецПроцедуры

но при открытии формы в ней отсутствуют кнопки и хоткеи для созднаия нового контрагента только выбор уже существующего
24 HawkEye
 
28.12.15
14:45
(23) в ввестиЗначение - и не будет таких кнопок..
используй ОткрытьФормуМодально()
25 HawkEye
 
28.12.15
14:47
(23) документ откуда у тебя открывается? он новый или существующий?
26 HawkEye
 
28.12.15
14:50
+24 или в при открытии используй ложное закрытие и Активизируй реквизит "Контрагент"
27 Enlighted
 
28.12.15
15:08
(25) документ новый открывается создаётся точнее из журнала документов

Процедура ПриОткрытии()
    ОткрытьПодбор("Справочник.Контрагенты","ДляВыбора",,0);
КонецПроцедуры

Процедура ОбработкаПодбора(Элемент)
    Контрагент = Элемент;
КонецПроцедуры

Этот вариант самый подходящий всё что надо есть и создание и выбор, один вопрос по нему.
когда открывается справочник ощущение что он открывается 2 раза. раз мигнуло окно раз поверх него такое же со справочником. ну как-бы косметический эффект
28 HawkEye
 
28.12.15
15:11
(27) если новый, то и вызывать надо в ВводНового(), а открывать окно для выбора можно или через Подбор, или через ОткрытьФормуМодально или через ложное закрытие и Активировать... как делать - сам выбирай.
ну или ВыбратьЗначение() - но только для выбора