1с программно закрыть печатную форму

Обновлено: 07.07.2024

Подскажите, пожалуйста.Программно создаётся новый документ на основании, типа: "ОткрытьФорму("Документ.ЗаписьКнигиПокупок",,ТаблицаПодбора.Документ)"Можно ли эту открытую форму закрыть программно? Естественно, с сохранением документа.

Если юзеру в этом программно созданном документе нЕчего делать, то зачем открывать его форму?А если юзеру надлежит что-то сделать, то какая же твоя задача? Приподнести ему сюрприз, неожиданно закрыв эту форму?

Все зависит от контекста задачи, ты подробней расскажи зачем ты открываешь форму.

А процедуру ВВодНаОсновании скопировать не судьба? И чуть чуть подкорректировать.

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

если "как-то" не получается, покажи как делаешь, может чтото не так делаешь? Конфигурация то какая.

Можно и скопировать. Только по-моему не очень красивое решение. Это-то всегда успеется. Мне показалось изящнее воспользоваться процедурами модуля. Поскольку они не глобальные и доступа из обработки явным образом не получить, надеялся извернуться через интерактивное открытие формы. Поиском пользоваться умею и сначала делал запрос. Ни одного из якобы пяти подобных вопросов не нашёл. Может подскажете ЧТО именно нужно забивать в строке поиска?Про внешние компоненты если не трудно, поподробнее.А по поводу буфера обмена и немодности кодирования отвечу так: вам, уважаемый, не приходило в голову, что люди могут искать нестандартные пути решения? Пусть эти решения вам лично кажутся нелепыми, ну так никто в этой ветке не навязывает вам своего мнения, в отличии от вас. Метод "Copy-Paste" мне известен. Да вот только несмотря на то, что кодирование - не то, чем я зарабатываю себе на хлеб, мне всегда интересно узнать РАЗЛИЧНЫЕ методы решения. Конфигурация 466, Бухия. Почему не получается, уже сказал - нет доступа к готовым процедурам модуля (которые, в принципе и делают всю работу) из обработки. Ищу способ программного закрытия формы поэтому.

Так ты и не открывай ее, просто при открытии получаешь Форма.Параметр с каким открываешь выполняешь процедуры какие тебе надо, далее записать , и СтатусВозврата;

Ну если очень надо, то можешь сделать так:А в самом документе в

". Да вот только несмотря на то, что кодирование - не то, чем я зарабатываю себе на хлеб, мне всегда интересно узнать РАЗЛИЧНЫЕ методы решения." - без КОДИРОАВНИЯ тут ни как не обойтись. :-)

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

улыбнуло. если хочешь без "корёжить модуль документа", то без формекса тебе не обойтись. но кодить все равно придется ;-)к искать: закрыть форму.

Ну че мучаете человекка, хоть бы подсказал кто про контекст.

а контекст ему не поможет без формекса он таб.часть не заполнит. да и все равно кодить придется.

За конструктивный ответ - спасибо.Про "формекс" ответите или в поиск? :)

а что отвечать то? внешняя компонента. где качать не помню. так что в поиск. ;-)но кодить то все равно придется, заполнять ТабЧасть придется самому, вызвать локальные процедуры модуля она не поможет.

Либо я тупой и алкоголик либо два вариантаконт="";ОткрытьФорму(ЛяЛяЛя,конт)конт.Форма.Закрыть. либоПерем глКонт экспорт;. ПриОткрытии; глКонт=Контекст;. В другой обработке, глКонт.Форма.Закрыть;. Наверное и тупой алкоголик.

Ну что ж, вроде выяснил вопрос. А как заманчиво было сэмулировать интерактивный ввод документа с последующим сохранением… Кстати, ЗаписьКнигиПокупок ТаблЧасти не содержит, так что сэкономлю чуток.

блин, я сплошь и рядом, чтоб в модулях доков нековыряться(сильно) аж по 4 подряд(все один за одним подчиненные) создаю, без открытия форм.

дык если ты делаешь все скопом. он задолбает вопросом записать или нет?

Дак я нисказал, что совсем нету изменений в модулях.

если таб.части нет, то смысла формекса нет. мы как то ушли от темы. формекс помогает отобразить заполненую табчасть, но не закрыть открытую форму её. если ты начинаешь писать обработку, то тебе все равно придется заполнять реквизиты дока в обработке ух хитер.

Скопировать процедуру к себе в обработку некошерно как-то. а долбать мозги другими способами так можно. извините за грубость.Действительно не первый вопрос уже за последнее время.да и что быстрее будет - постоянно интерактивно открывать и закрывать или програмно создать и записать?!это уж, батенька, извращение!

+ и тогда нафиг не надо открывать форму. короче итог такой:ответ в . ;-)

Извиняюсь кнешно, но, ты нАрмальные процедуры видел? В Рарусе позырь, и незахочется к себе в обработку копировать.

кАнЭчно.Рарус - это одно, но когда надо создать ЗаписьКнигиПродаж в количестве 500 и более. то что лучше будет?!так что вопрос чисто риторический, ответом ему может быть только определение человека с трудозатратами на варианты создания обработки.

И так, сам макет документа мы уже создали, как это сделано, вы можете узнать в соответствующей статье.

Сейчас мы получим ранее созданный макет, заполним табличный документ 1С по этому макету, и нам останется вывести табличный документе 1С на просмотр для последующей печати.

Мы сделаем упрощенный (учебный) вариант: формирование всего нашего табличного документа будет осуществляться на модуле управляемой формы. Для этого мы на форме документа создадим команду «ПечатьДокумента», которую разместим в командной панели формы.

Создание и размещение команды печать

Для команды ПечатьДокумента создадим два обработчика в клиентском и серверном контексте.

Создание обработчиков команды

Серверный обработчик переименуем в функцию, в нем мы создадим программно табличный документ 1С, который она и будет возвращать.

Теперь нужно получить макет, созданный в предыдущей статье, для этого мы будем использовать метод менеджера документа ПолучитьМакет.

Имейте в виду, что метод ПолучитьМакет напрямую доступен только или в модуле документа, или в модуле менеджера документа. Еще этот метод можно применить, используя менеджер конкретного объекта, как я сделал выше. Непосредственно на форме его использовать нельзя!

Доступность метода получить макет

Алгоритм заполнения табличного документа будет следующим: мы будем получать нужную область макета, если необходимо заполнять эту область какими-нибудь данными, а потом выводить полученную область в табличный документ.

Напомню, что макет у нас имеет четыре области: Шапка, ШапкаТаблицы, СтрокаТаблицы, Подвал. Области Шапка, ШапкаТаблицы и Подвал будут выведены в табличный документ всего один раз, а область СтрокаТаблицы будет выведена столько раз, сколько строк в табличной части обрабатываемого документа.

Области макета табличного документа

Весь код ниже я выполняю между кодом получения макета и возвратом табличного документа.

Получим самую первую область макета, при помощи метода ПолучитьОбласть, где в качестве параметра следует указать название получаемой области.

В этой области мы используем шаблон, в котором имеются два параметра: НомерДок и ДатаДок передадим номер документа и дату документа в соответствующие параметры области, используя свойство Параметры нужной нам области. Данное свойство содержит коллекцию параметров табличного документа, и мы можем обращаться к нужному параметру через оператор «.».

Мы закончили с областью Шапка, и нам нужно вывести её в табличный документ, делается это при помощи метода Вывести табличного документа, где в качестве параметра указывается выводимая область.

Точно также получим область, которая соответствует шапке таблицы, заполнять его не нужно, а мы просто выведем его сразу же в табличный документ.

Следующим шагом выведем область СтрокаТаблицы, причем эта область должна быть выведена столько раз, сколько строк в табличной части документа. Поэтому мы сначала получим эту область, а потом циклом будем обходить табличную часть, заполнять параметры области и выводить область в табличный документ.

В коде выше, мы обошли табличную часть документа, обратившись к ней через основной реквизит Объект управляемой формы (основной формы документа).

Обратите внимание, я использовал метод Заполнить, потому что названия параметров макета совпадают с названиями реквизитов табличной части документа.

Нам осталось получить область Подвал и вывести её в табличный документ.

На этом мы закончим работать с функцией на сервере, весь ее код будет выглядеть следующим образом.

Нам осталось доделать клиентскую процедуру ПечатьДокумента: мы будем выводить на просмотр полученный табличный документ при помощи метода табличного документа Показать().

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

Проверим, как работает наш код.

Управляемая форма документа

Показ табличного документа

Напомню, что я рассмотрел самый простой (учебный) пример вывода печатной формы, следующие примеры будут более приближенные к реальным.


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Использую функцию модуля документа для получения печатной формы, но она перед возвращением открывает окно просмотра. Это не изменить. Считать как условие задачи. Как программно закрыть это окно без завершения печати ? Т.к. то, что нужно, я уже получил - табличный документ. Спасибо.

Емае . "Закройте мне веки. "(С) И свяжите мне бляруки . Торкнуло меня сегодня на вопросы. Да. Модераторы, будьте добры, исправьте заголовок на "Как программно закрыть окно печати ?" А то у общества когнитивный диссонанс случится )) 1 Стандартная в Альфе авто. РАРУС. 2 Конфу трогать не хочу. Да что там не хочу. БАЮСБЛЯ . ККолдуны писали под грибами . Затянет. 3. Дак я сам иной раз такое заверну, так что . Не суди, как говорится.

Ну, раз п1 и п3 невозможны, придется таки себя как-то пересилить про п2 :) Ибо если нет ссылки на форму и/или она модальная - вариант такой, что вариантов нет.

Которая открывается, на какую же еще. Тогда ей можно сказать Закрыть

Окна предварительного просмотра ? Или табличная печатная форма ? Или форма объекта ? Емае .

Чьи методы надо курить ? Печатной формы или формы окна печати ? И что такое вообще за объект метаданных - форма окна предварительного просмотра ?? Чето уже грустнею Как вот не пить то тут .

Кажи код, которым это окно открыается. Утром посмотрю.

Я етить кода не могу найти . В итоге после всех переходов к определениям попадаю в общий модуль, где попадаю в функицию, которая вызывает закрытую функцию. И ПЦ ) Черный ящик раруса. Туду только параметры передаются Принтер=ложь - тогда печать с показом и тогда я отлавливаю табличный документ. А если принтер=истина - тогда просто на принтер все повалит. А открывается форма - из общих форм "ПечатнаяФормаДокументов" вот как ее отловить ?

Запущенный случай. Тогда видимо никак - выводить документ самому.

йеетиттьь . Тут к стати на форуме проскакивала тема как определить активные или открытые окнаформы. У меня эта сулема будет сама работать в своем сеансе, так что других открытых форм не будет. как вот все активное позакрывать нах ? И гадать не надо, что конкретно.

А что за Альфа ? Подключить внешних печатную форму не решит задачу?

Мне не нужна лишняя форма. Мне нужно существующую в файл напечатать/сформировать

Все, камрады, решил проблему через другой дверь. В модуле документа нашел функцию ЭКСПОТНУЮ, она печатала то, что мне нужно. Но не использовал ее потому, что не понимал, какой параметр она просит. И не понимал, как она работала, потому, что ни откуда в модуле докумнета она не вызывалась. Потом допер, что вызывалась она из защищенной функции печати а в нее передавался в качестве параметра просто НОВЫЙ табдичный документ )) потом заполнялся и возвращался. Такая вот немудреная защита у Раруса ) Вапроц закрыт.

Читайте также: