Имя: Пароль:
1C
1C 7.7
v7: Закрыть форму ДокОснования
0 Eeakie
 
30.09.13
15:44
Добрый день.
Проблема в следующем: в документе1 есть кнопка, которая должна вызывать ВводНаОсновании() документа2. При этом в "ВводНаОсновании()" есть изменение реквизитов документа1 и из запись, что невозможно при открытой форме документа1. В итоге нужно получить открытую форму документа2 с данными из документа1, при этом документ1 должен быть закрыт. Как это можно реализовать? Уже перепробовал всё что можно.
Программно создать документ2 не предлагать - нужно открыть его форму без   предварительной записи.
1 antoneus
 
30.09.13
15:56
Грузишь 1cpp.dll или Formex.dll (не помню что там именно нужно для обращения к процедурам переданного контекста).

В параметре в открываемый док передаешь контекст документа1. Дальше в модуле формы док2 получаешь контекст дока1. Изменяешь данные

Конт.Реквизит = ЧтоТоТам;

Записываешь

Конт.Записать()

Как-то так.
2 Eeakie
 
02.10.13
14:21
(1) не пойдет. Надо закрывать окно документа1. Суть проблемы в том, как программно закрыть окно из другого модуля. Даже если поймать контекст этого окна. Я уже доизвращался до Окна.ЗакрытьОкно() :D Но это не особо работает...
3 Eeakie
 
02.10.13
14:25
Вообще всё сводится к тому, что есть два открытых окна А и Б. Из модуля окна А открываю форму окна Б. Как из окна Б закрыть окно А?
4 Mikeware
 
02.10.13
14:27
(2) загрузи 1с++ или хотя бы ТурбоБЛ. хотя вроде и без них Контекст.Форма.Закрыть(0) работает...
5 Eeakie
 
02.10.13
14:36
(4) работает. После Форма.Закрыть() позиционируюсь на этот документ, который закрыл, и начинаю там менять реквизиты, после смены делаю Записать() - ругается "Объект заблокирован".
6 Eeakie
 
02.10.13
14:36
(4) позиционирую через СоздатьОбъект() > НайтиДокумент.
7 Eeakie
 
02.10.13
14:37
Похоже, надо закрывать форму не через штатную Закрыть(), а через Формекс.
8 antoneus
 
02.10.13
14:57
(2) Насколько я понял, нужно изменить данные в открытом документе и его записать. Для этого док закрывать необязательно. Есть метод Записать(), работающий в модуле формы документа, который записывает документ без закрытия. К нему-то мы и обращаемся. Способ, приведённый в (1) работает при открытой форме, я не стал бы сюда что-то постить, не проверив.
9 Eeakie
 
02.10.13
15:07
(8) Всё верно. Всё работает. Только вот не пойму зачем я хотел закрыть форму и потом изменить реквизиты. Сделал наоборот: изменил, записал, закрыл. Всё нормально.
Сам себе придумал проблему.
AdBlock убивает бесплатный контент. 1Сергей