1с закрыть уже открытую форму

Горячая тема (более 10 ответов)Программное закрытие формы (число прочтений - 6389 ) MAXXL Junior Member

Отсутствует

Сообщений: 17
Зарегистрирован: 25. Августа 2006

Программное закрытие формы
23. Февраля 2008 :: 09:00

Печать   Решил тут сделать обработку, чтобы пакетно распечатать документы из 1С:Бухгалтерия 7.7
Написал такой код:
Код 1с закрыть уже открытую форму alt="Выбрать все" title="Выбрать все"> Конт=""; ОткрытьФорму(Док.ТекущийДокумент()+ "#", Конт); Конт = ""; Если Сервис.АктивныйКонтекст(Конт) = 1 Тогда // получен активный контекст, можно попытаться вызвать процедуру модуля Сервис.ВыполнитьПроцедуру(Конт,"Печать",); Если Сервис.АктивныйКонтекст(Конт) = 1 Тогда Если ТипЗначенияСтр(Конт) = "Таблица" Тогда Конт.Показать("","",-1); //Конт.Напечатать(0); КонецЕсли; Сервис.АктивныйКонтекст(Конт); Конт.Форма.Закрыть(0); КонецЕсли; КонецЕсли;
Так вот,печатные формы печатаются, закрываются. По идее хотелось чтобы и форма документа после этого закрылась, а она остается на экране до завершения работы обработки. Получается что на экране висит несколько десятков экранных форм документов, и если их слишком много, то 1С совсем зависает ПечальПодскажите как сделать более правильно

  

Наверх

 

IP записан
  Nick God Member

Отсутствует

Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской

Re: Программное закрытие формы
Ответ #1 - 23. Февраля 2008 :: 09:08

Печать  

У FormEx есть метод для закрытия форм, поищи

  

Наверх

ICQ  

IP записан
  MAXXL Junior Member

Отсутствует

Сообщений: 17
Зарегистрирован: 25. Августа 2006

Re: Программное закрытие формы
Ответ #2 - 23. Февраля 2008 :: 11:14

Печать   Перечитал вроде весь доковский файл... так и не нашел ПечальТкните носом,плиз

  

Наверх

 

IP записан
  mvgfirst Full Member

Отсутствует

В борьбе бобра с ослом
всегда побеждает бобро!
Сообщений: 152
Местоположение: Украина г. Кривой Рог
Зарегистрирован: 17. Августа 2007
Пол: Мужской

Re: Программное закрытие формы
Ответ #3 - 23. Февраля 2008 :: 14:35

Печать  

А если весь код который ты написал вписать в обработку ПриОткрытии.. и после завершении работы кода ставить СтатусВозврата(0). Очень уж мне сильно кажется что в этом варианте форма не откроется.

  

Наверх

ICQ  

IP записан
  MAXXL Junior Member

Отсутствует

Сообщений: 17
Зарегистрирован: 25. Августа 2006

Re: Программное закрытие формы
Ответ #4 - 23. Февраля 2008 :: 15:08

Печать  

ПриОткрытии чего, этой обработки? Или документов? Так смысл в том чтобы не затрагивать исходную конфу... А формы документов открываются,и еще как... Я же писал, что их можно открыть столько что 1С просто зависает...

  

Наверх

 

IP записан
  kiruha 1c++ power user
Отсутствует

Сообщений: 1249
Зарегистрирован: 11. Апреля 2007

Re: Программное закрытие формы
Ответ #5 - 23. Февраля 2008 :: 15:12

Печать  

OFF, но нафига вообще так извращаться?
Разве нельзя просто в обработке перенести процедуру печати и не открывая формы
произвести печать?

  

Наверх

 

IP записан
  MAXXL Junior Member

Отсутствует

Сообщений: 17
Зарегистрирован: 25. Августа 2006

Re: Программное закрытие формы
Ответ #6 - 23. Февраля 2008 :: 15:22

Печать  

Можно. На один, на два.... А на все типы документов что есть в конфигурации?

  

Наверх

 

IP записан
  kiruha 1c++ power user
Отсутствует

Сообщений: 1249
Зарегистрирован: 11. Апреля 2007

Re: Программное закрытие формы
Ответ #7 - 23. Февраля 2008 :: 15:43

Печать   Не удалось повторить, проверил 2 раза - все закрывается
Код Выбрать все фл=ОткрытьФорму(ВыбДок1,Конт); Если фл<>1 Тогда продолжить КонецЕсли; ВыполняемыйМодуль=СоздатьОбъект("ВыполняемыйМодуль"); ИмяПроцедуры="Печать"; СписокЗначений=СоздатьОбъект("СписокЗначений"); фл=ВыполняемыйМодуль.ВыполнитьПроцедуруКонтекста(Конт, ИмяПроцедуры,СписокЗначений); Конт.Форма.Закрыть();

  

Наверх

 

IP записан
  Nick God Member

Отсутствует

Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской

Re: Программное закрытие формы
Ответ #8 - 23. Февраля 2008 :: 16:48

Печать   Цитата:

Синтаксис:
Закрыть()
Назначение:
закрывает форму (в отличие от стандартного метода Форма.Закрыть() который ожидает завершения выполнения текущего кода)

Объект РасширениеФормы

  

Наверх

ICQ  

IP записан
  MAXXL Junior Member

Отсутствует

Сообщений: 17
Зарегистрирован: 25. Августа 2006

Re: Программное закрытие формы
Ответ #9 - 23. Февраля 2008 :: 22:08

Печать   (kiruha) Не печатает, и не закрывается  Печаль
(Nick) Закрывается  Улыбкажаль только что не то - закрывается форма моей обработки, а документ остается открытым... Что нужно - перебирать все окна после каждого вызова документа и закрывать новые?

  

Наверх

 

IP записан
  kiruha 1c++ power user
Отсутствует

Сообщений: 1249
Зарегистрирован: 11. Апреля 2007

Re: Программное закрытие формы
Ответ #10 - 23. Февраля 2008 :: 22:58

Печать   Проверь свой код лучше.
Начни с самого простого - приведенного и только дальше усложняй.

Вот как минимум одна ошибка

Код Выбрать все Конт=""; ОткрытьФорму(Док.ТекущийДокумент()+ "#", Конт); Конт = "";

Тем более если даже не печатает - artbear весьма удивится  Подмигивание

  

Наверх

 

IP записан
  Nick God Member

Отсутствует

Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской

Re: Программное закрытие формы
Ответ #11 - 24. Февраля 2008 :: 04:29

Печать   Код Выбрать все Конт=""; ОткрытьФорму(Док.ТекущийДокумент(), Конт); оРасширениеФормы.УстановитьФорму(Конт.Форма)............... оРасширениеФормы.Закрыть(); Конт = "";

Должно быть как то так

  

Наверх

ICQ  

IP записан
  artbear 1c++ developer
1c++ moderator
Отсутствует

Эх, дайте что-нибудь новенькое
да полезное потести
Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской

Re: Программное закрытие формы
Ответ #12 - 24. Февраля 2008 :: 12:37

Печать   MAXXL писал(а) 23. Февраля 2008 :: 09:00:

Решил тут сделать обработку, чтобы пакетно распечатать документы из 1С:Бухгалтерия 7.7


Правильный код такой:
Код Выбрать все Конт=""; ОткрытьФорму(Док.ТекущийДокумент(), Конт); // "#" можно не использовать Если ТипЗначения(Конт) = 100 Тогда // получен активный контекст, можно попытаться вызвать процедуру модуля Сервис.ВыполнитьПроцедуру(Конт,"Печать",); // или Конт.Печать(); КонтекстПечТаблицы = 0; // зачем одно имя переменной для разных значений!! Если Сервис.АктивныйКонтекст(КонтекстПечТаблицы) = 1 Тогда Если ТипЗначенияСтр(КонтекстПечТаблицы) = "Таблица" Тогда КонтекстПечТаблицы.Показать("","",-1); КонецЕсли; КонецЕсли; КонецЕсли; Система = СоздатьОбъект("Система"); Система.ЗакрытьФорму(Конт);
Две последние строчки гарантированно закроют открывшуюся форму документа!
Но также есть некоторое ограничение - для очень большого числа открываемых документов 1С все равно вылетит. Но количество открываемых документов без падения 1С НАМНОГО БОЛЬШЕ, чем в варианте Конт.Форма.Закрыть().

Правда, должна быть загружена ВК 1С++  - класс Система из нее Улыбка

  

НаверхIP записан
  Nick God Member

Отсутствует

Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской

Re: Программное закрытие формы
Ответ #13 - 24. Февраля 2008 :: 12:42

Печать  

Артур, а разве нелья просто обращатся к функциям контекста через точку?
Или приводимое рещение при использования только с FormEx?

  

Наверх

ICQ  

IP записан
  artbear 1c++ developer
1c++ moderator
Отсутствует

Эх, дайте что-нибудь новенькое
да полезное потести
Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской

Re: Программное закрытие формы
Ответ #14 - 24. Февраля 2008 :: 12:44

Печать   Nick писал(а) 24. Февраля 2008 :: 12:42:

Артур, а разве нелья просто обращатся к функциям контекста через точку?
Или приводимое рещение при использования только с FormEx?


Можно при использовании 1С++.
Я в коде специально в комментах написал Улыбка
// или Конт.Печать();
Улыбка

  

НаверхIP записан
 

Переход в » Главная » 10 последних Сообщений » 10 последних Тем 1С++ и прочие расширения v7   1С++, TurboMD и прочие вкусности   Прямые запросы к БД   FormEx ««   Объектно-Ориентированное программирование под v7.7   OpenConf, Telepat, Интеллисенс, другие скрипты и плагины.   Репозиторий   Разработка Близкие и сопутствующие проекты   qt1L, 2C и прочие "аналоги" 1С.   Восьмерка Форумные задворки   Курилка   Песочница   Техничка

 
Источник: http://www.1cpp.ru/forum/YaBB.pl?num=1203757221



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Как закрыть форму без вопросов? Помощник программиста 1 С ВКонтакте Самостоятельная по английскому на местоимения

Как программно закрыть открытую форму нового документа? Форум Новое в платформе Как правильно закрывать формы и приложение 1 С 8.2 УП : Форма при закрытии просит сохранить изменения. : » o Передать значение из одной формы в другую в 1 С:Предприятии Как закрыть форму в 1 с 8.1 с другой формы? - Форум 1 С Выполнение ПриОткрытии не открывая формы Форум Закрыть форму элемента справочника Форум Открыть новую, Закрыть текущую форму - 1 С