![]() |
1С 7.7 как из внешней печатной формы закрыть форму документа : Добрый день ! Знатокам формекс и прочим :). что то я уперся в стену :( 1С 7.7. конф на базе комплексной. документ реализация. к нему подключена внешняя печатная форма. открывают эту печ форму из документа. в ней хотят что то сделать в этом документе ! для этого надо форму документа закрыть из этой внешней печатной формы и потом в документ чтото записать . конфу изменять нельзя... если формекс вот так : РасшФ=создатьобъект("Расширениеформы"); спис=сервис.СписокВсехОткрытыхОкон(); док=создатьобъект("Документ."+выбдок.вид()); если док.найтидокумент(выбдок)=1 тогда для ит=1 по спис.размерсписка() цикл конт=""; окно=спис.получитьзначение(ит,конт); если найти(конт,"Реализация ТМЦ")>0 тогда сообщить("Закрываем форму документа"); РасшФ.УстановитьФорму(Окно.форма); Сообщить(РасшФ.ТипОбъекта()); РасшФ.закрыть(); сообщить("форму документа закрыли"); конецесли; конеццикла; так вот сообщить("форму документа закрыли"); - не сообщает ! и дальше программа не выполняется...и внешняя форма висит открытой, а форма реализации закрыта. // потом идут действия с док - и потом док.записать() а если вот так : док=создатьобъект("Документ."+выбдок.вид()); если док.найтидокумент(выбдок)=1 тогда для ит=1 по спис.размерсписка() цикл конт=""; окно=спис.получитьзначение(ит,конт); если найти(конт,"Реализация ТМЦ")>0 тогда сообщить("Закрываем форму документа"); попытка окно.форма.закрыть(0); исключение сообщить(описаниеошибки()); конецпопытки; конецесли; конеццикла; то форма реализации исчезает из фиду ( вроде как закрывается ) то потом когда доходит дело до док.записать() то 1с ругается : Объект заблокирован: Реализация А-000 |
ну, когда ты штатно подцепил DGA у тебя через параметры пришел ГрупповойКонтекст. . Попробуй так Докум = Параметры.Получить("Контекст"); ..этот оператор у тебя штатно должен быть, это ГрупповойКонтекст открытой формы Докум.Форма.Закрыть(); . если, конечно, ты умный - то обеспечишь что вызов ВПФ будет выполнен для НЕМОДИФИЦИРОВАННОЙ формы документа, иначе у тебя при закрытии вылезут вопросы от платформы... . можно модифицировать типа Докум.Записать(); //тут отработает ПриЗаписи(), хз что там у тебя понатыкано Докум.Форма.Закрыть(); . по крайней мере я такую блямбу как тебе надо делал (закрывал форму документа, обрабатывал хитрым образом документ, а при закрытии ВПФ можно снова открыть документ) |
0-СпецХ >- при чем тут формекс? Разве не проще использовать глобальную переменную, типа [b]глКонтПередать[/b], чтобы через неё передать таблицу значений, или что нужно ещё, в документ и в документе из полученной таблицы дописать то, что было отработано в вызванной внешней форме? Естественно, глКонтПередать сначала очистить, а потом использовать заполнением во внешней выбранной форме. В самом документе сначала удостовериться, что глКонтПередать получило нужный тип значения для использования и после использования, скажем, в части модуля, приЗаписи, приЗакрытии, закрыть форму и самого документа с полученными значениями из глКонтПередать. - Если я правильно понял ваш вопрос. |
"в ней хотят что то сделать в этом документе!" можно обойтись малой кровью если устроит по процессам - можно документ не закрывать, а т.к. у тебя доступен контекст формы - поменять прямо в форме, типа Докум.Контрагент = чтото; Докум.ПриВыбореКонтрагента(); ..точно не помню, но должно сработать |
[quote=Сергей Че;47341765] "в ней хотят что то сделать в этом документе!" можно обойтись малой кровью если устроит по процессам - можно документ не закрывать, а т.к. у тебя доступен контекст формы - поменять прямо в форме, типа Докум.Контрагент = чтото; Докум.ПриВыбореКонтрагента(); ..точно не помню, но должно сработать [/quote] вообще в типовой сделано действия - Изменить спецификацию - и вызывается обработка которая напрямую пишет в форму открытую дока . пока сделал по ее принципу. а отлавливаю , открыт ли док интерактивно,с помощью формекс... всем спасибо. |
я бы создал глобальную переменную контекста этого документа. Тогда и писать в документ просто и закрывать. |
в впф в параметре "контекст" передается или текущий документ или форма документа. всё. |
(6)это мы все знаем, во всех типовых передается. может ему понадобится из других форм что-то менять в документе. Короче, контекст - наше все ) |
Текущее время: 15:38. Часовой пояс GMT +3. |