Имя: Пароль:
1C
1С v8
Вернуться в открытую форму документа программно
,
0 marshalbratsk
 
02.08.17
08:17
Дело такое - работа ведётся в форме документа (форма1), затем по нажатию кнопки открывается другая форма (форма2) (форма1 остаётся открытой), в эту форму передаются некоторые переменные с формы1. Затем по нажатию кнопки на Формы2 из неё передаются некоторые переменные обратно в форму1. И вместо того, чтобы открывать уже открытую форму1 программа открывает ещё одну копию формы1 и заносит данные туда. Чем нужно упороться, чтобы такого не было и чтобы данные шли уже в открытую форму документа?
1 Lexey_
 
02.08.17
08:20
(0) ключ уникальности не используй
2 Lexey_
 
02.08.17
08:21
Где код?
3 lodger
 
02.08.17
08:24
все дело в том как вы "передаете" некоторые переменные обратно.
имхо, надо юзать Оповестить().
4 Dvoe4nik
 
02.08.17
08:33
(0) перед закрытием формы 2 записывай в данные родителя/ параметры полученные и просто закрывай форму.
5 Мимохожий Однако
 
02.08.17
08:35
(0) Закрой 1 форму
6 marshalbratsk
 
02.08.17
08:50
(1) (2) Ключ не использовал, код банален.
форма1

    Форма = Документы.ИмяДокумента.ПолучитьФорму("Форма2",ЭтаФорма);
    Форма.НомерДокумента = ЭтотОбъект.Номер;
    Форма.ДатаДокумента = ЭтотОбъект.Дата;
    Форма.ДатаНачалаЭкспорт = ДатаНачалаАнализа;
    Форма.ДатаОкончанияЭкспорт = ДатаОкончанияАнализа;
    Форма.ОткрытьМодально();

Форма2

    Документ = Документы.ИмяДокумента.НайтиПоНомеру(НомерДокумента, ДатаДокумента);
    Форма = Документ.ПолучитьФорму("ФормаДокумента",ЭтаФорма);
    Форма.СписокКонтрагентовЭкспорт = СписокКонтрагентов;
    Форма.ВладелецФормыФорма = ЭтаФорма;
    Форма.Открыть();
7 lodger
 
02.08.17
08:54
(6) а зачем на форма2 ты получаешь новую форму?
8 Lexey_
 
02.08.17
08:55
(6) зачем ты ищешь по номеру, когда можно сразу передать ссылку?
9 Lexey_
 
02.08.17
08:55
+(8) то же самое про форму
10 lodger
 
02.08.17
08:58
(6) на форма2 поменяй весь приведенный код на что-то в духе:

Владелец.СписокКонтрагентовЭкспорт = СписокКонтрагентов;
Закрыть();
11 dezss
 
02.08.17
08:59
(6) Форма = Документ.ПолучитьФорму("ФормаДокумента",ЭтаФорма);
Зачем ты указываешь владельцем Форму2?
Попробуй не указывать владельца.
Если не поможет, то бери ключ уникальности Форма1 и заполняй его, когда форму пытаешься получить.
12 marshalbratsk
 
02.08.17
09:04
(11) чтобы при открытии формы1 проверить на владельца и если владелец форма2, тогда добавить данные в табличную часть из "СпискаКонтрагентов"
13 marshalbratsk
 
02.08.17
09:05
(11) убрал владельца, всё равно открывается ещё одна форма
14 aleks_default
 
02.08.17
09:12
ОткрытьМодально() зачем? Все равно потом открываешь новую форму
15 dezss
 
02.08.17
09:16
(12) Если она уже открыта, ПриОткрытии не вызовется.
(13) Значит передавай ключуникальности формы1 в форму2.
16 marshalbratsk
 
02.08.17
09:18
(15) Да, уже понял, что не вызовется. Буду ключи пробовать, спасибо
17 marshalbratsk
 
02.08.17
09:31
Всем спасибо, кто отозвался. Большое. Решил проблему создав экспортную процедуру "ДобавитьКонтрагентов()" на форме1 и запустив её с формы2 в итоге получив следующий код в форме2

    ВладелецФормы.СписокКонтрагентовЭкспорт = СписокИндивидуальныхКонтрагентов;
    ВладелецФормы.ДобавитьКонтрагентов();