К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

1С 7.7 как из внешней печатной формы закрыть форму документа :

0 - 25.12.2019 - 13:33
Добрый день ! Знатокам формекс и прочим :).
что то я уперся в стену :(
1С 7.7. конф на базе комплексной. документ реализация. к нему подключена внешняя печатная форма. открывают эту печ форму из документа. в ней хотят что то сделать в этом документе !

для этого надо форму документа закрыть из этой внешней печатной формы и потом в документ чтото записать . конфу изменять нельзя...

если формекс вот так :

РасшФ=создатьобъект("Расширениеформы");
спис=сервис.СписокВсехОткрытыхОкон();

док=создатьобъект("Документ."+выбдок.вид());
если док.найтидокумент(выбдок)=1 тогда

для ит=1 по спис.размерсписка() цикл

конт="";
окно=спис.получитьзначение(ит,конт);

если найти(конт,"Реализация ТМЦ")>0 тогда
сообщить("Закрываем форму документа");

РасшФ.УстановитьФорму(Окно.форма);
Сообщить(РасшФ.ТипОбъекта());
РасшФ.закрыть();

сообщить("форму документа закрыли");

конецесли;
конеццикла;


так вот сообщить("форму документа закрыли"); - не сообщает ! и дальше программа не выполняется...и внешняя форма висит открытой, а форма реализации закрыта.


// потом идут действия с док - и потом док.записать()



а если вот так :


док=создатьобъект("Документ."+выбдок.вид());
если док.найтидокумент(выбдок)=1 тогда

для ит=1 по спис.размерсписка() цикл

конт="";


окно=спис.получитьзначение(ит,конт);

если найти(конт,"Реализация ТМЦ")>0 тогда


сообщить("Закрываем форму документа");
попытка
окно.форма.закрыть(0);
исключение

сообщить(описаниеошибки());
конецпопытки;



конецесли;
конеццикла;

то форма реализации исчезает из фиду ( вроде как закрывается )

то потом когда доходит дело до док.записать()

то 1с ругается :
Объект заблокирован: Реализация А-000



Гость
1 - 25.12.2019 - 15:31
ну, когда ты штатно подцепил DGA у тебя через параметры пришел ГрупповойКонтекст.
.
Попробуй так
Докум = Параметры.Получить("Контекст"); ..этот оператор у тебя штатно должен быть, это ГрупповойКонтекст открытой формы
Докум.Форма.Закрыть();
.
если, конечно, ты умный - то обеспечишь что вызов ВПФ будет выполнен для НЕМОДИФИЦИРОВАННОЙ формы документа, иначе у тебя при закрытии вылезут вопросы от платформы...
.
можно модифицировать типа
Докум.Записать(); //тут отработает ПриЗаписи(), хз что там у тебя понатыкано
Докум.Форма.Закрыть();
.
по крайней мере я такую блямбу как тебе надо делал (закрывал форму документа, обрабатывал хитрым образом документ, а при закрытии ВПФ можно снова открыть документ)
Гость
2 - 25.12.2019 - 15:32
0-СпецХ >- при чем тут формекс?
Разве не проще использовать глобальную переменную, типа
глКонтПередать, чтобы через неё передать таблицу значений, или что нужно ещё, в документ и в документе из полученной таблицы дописать то, что было отработано в вызванной внешней форме? Естественно, глКонтПередать сначала очистить, а потом использовать заполнением во внешней выбранной форме. В самом документе сначала удостовериться, что глКонтПередать получило нужный тип значения для использования и после использования, скажем, в части модуля, приЗаписи, приЗакрытии, закрыть форму и самого документа с полученными значениями из глКонтПередать. - Если я правильно понял ваш вопрос.
Гость
3 - 25.12.2019 - 15:33
"в ней хотят что то сделать в этом документе!"
можно обойтись малой кровью если устроит по процессам - можно документ не закрывать, а т.к. у тебя доступен контекст формы - поменять прямо в форме, типа
Докум.Контрагент = чтото;
Докум.ПриВыбореКонтрагента(); ..точно не помню, но должно сработать
4 - 25.12.2019 - 15:40
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
"в ней хотят что то сделать в этом документе!" можно обойтись малой кровью если устроит по процессам - можно документ не закрывать, а т.к. у тебя доступен контекст формы - поменять прямо в форме, типа Докум.Контрагент = чтото; Докум.ПриВыбореКонтрагента(); ..точно не помню, но должно сработать


вообще в типовой сделано действия - Изменить спецификацию - и вызывается обработка которая напрямую пишет в форму открытую дока . пока сделал по ее принципу. а отлавливаю , открыт ли док интерактивно,с помощью формекс...

всем спасибо.
Гость
5 - 25.12.2019 - 20:03
я бы создал глобальную переменную контекста этого документа. Тогда и писать в документ просто и закрывать.
Гость
6 - 25.12.2019 - 20:35
в впф в параметре "контекст" передается или текущий документ или форма документа. всё.
Гость
7 - 25.12.2019 - 20:38
(6)это мы все знаем, во всех типовых передается. может ему понадобится из других форм что-то менять в документе. Короче, контекст - наше все )


К списку вопросов






Copyright ©, Все права защищены