Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Вызов процедуры формы документа из обработки (число прочтений - 13026 )
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Вызов процедуры формы документа из обработки
22. Сентября 2007 :: 06:33
Печать  
Код
Выбрать все
Конт = "";
ОткрытьФорму(Док.ТекущийДокумент(), Конт);
Конт.ПечатьТОРГ12();
 


При попытке выполнения этого кода сначало выходит предупреждение "Файл ТОРГ12 не найден"
а затем сообщение о ошибке
Таб.ИсходнаяТаблица("ТОРГ12");
{Документ.РасходнаяНакладная.Форма.Модуль(1071)}: Неверное имя ТОРГ12

Почему не подцепляется  таблица печатной формы документа?
как можно обойти проблему?

пробовал на 1С++ v1.8.1.6 и 2.0.3.3
Вариант открывать документ с переданнмым параметром (ПриОткрытии()) для последующего вызова процедуры печати не предлагать, очень не хочется изменять документы
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #1 - 22. Сентября 2007 :: 08:15
Печать  
А можно предложить перенести эту таблицу в общие?
  

FormEx developer
Наверх
www  
IP записан
 
Massive
YaBB Newbies
*
Отсутствует



Сообщений: 13
Местоположение: Архангельск
Зарегистрирован: 23. Июля 2007
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #2 - 22. Сентября 2007 :: 10:59
Печать  
Цитата:
Конт = "";
Это зачем?
Цитата:
Док.ТекущийДокумент()
зачем тебе открывать текущий док , попробуй прописать из обработки документ.нужныйдок, и ты точно уверен что загрузил 1cpp.dll
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #3 - 22. Сентября 2007 :: 11:03
Печать  
Massive писал(а) 22. Сентября 2007 :: 10:59:
Это зачем?

Неявное объявление переменной.
Massive писал(а) 22. Сентября 2007 :: 10:59:
зачем тебе открывать текущий док , попробуй прописать из обработки документ.нужныйдок

Если человеку нужно распечатать конкретный документ, то зачем ему открывать новый?
Massive писал(а) 22. Сентября 2007 :: 10:59:
и ты точно уверен что загрузил 1cpp.dll

Если бы не загрузил, ошибка была совсем другая.
  

FormEx developer
Наверх
www  
IP записан
 
Massive
YaBB Newbies
*
Отсутствует



Сообщений: 13
Местоположение: Архангельск
Зарегистрирован: 23. Июля 2007
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #4 - 22. Сентября 2007 :: 11:09
Печать  
Я как-то без этого Конт = ""; обхажусь  Ужас , а в чем-же тогда дело ведь все написанно верно  Нерешительный
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #5 - 22. Сентября 2007 :: 11:35
Печать  
Massive писал(а) 22. Сентября 2007 :: 11:09:
Я как-то без этого Конт = ""; обхажусь  Ужас

Лукавишь... Нечто подобное ты все равно пишешь. Или объявляешь переменную явно. Иначе при компиляции получишь ошибку:
ОткрытьФорму(Док.ТекущийДокумент(), Конт<<?>>);
{(...)}: Переменная не определена (Конт)
Massive писал(а) 22. Сентября 2007 :: 11:09:
а в чем-же тогда дело ведь все написанно верно  Нерешительный

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

FormEx developer
Наверх
www  
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #6 - 22. Сентября 2007 :: 18:07
Печать  
Попробуй после открытия формы Конт.__ВызыватьМетодыКакСобытия() а потом вызвать процедуру печати вроде должно помочь
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов процедуры формы документа из обработки
Ответ #7 - 22. Сентября 2007 :: 19:43
Печать  
Цитата:
Попробуй после открытия формы Конт.__ВызыватьМетодыКакСобытия() а потом вызвать процедуру печати вроде должно помочь

Вот-вот. Для того оно и было сделано.
Альтернативный вариант - управлять тем же самым через Система::StartBatch()/EndBatch().

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

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


Кто еще пользуется __ВызыватьМетодыКакСобытия()?

PS. У этого метода есть недостаток: он не влияет, например, на Конт.Активизитровать(). Хотя, в принципе, можно и это сделать.

Совсем забыл, в 2.0.3.4 я как раз хотел отключить вызов методов как событий. Так что как раз 1С++ v1.8.1.6 и 2.0.3.3 должны вести себя по-разному. В 2.0.3.3 в TurboBL сделано автоматическое подключение таблиц.
« Последняя редакция: 24. Сентября 2007 :: 05:34 - sedmin »  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #8 - 24. Сентября 2007 :: 04:48
Печать  
Спасибо
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #9 - 24. Сентября 2007 :: 05:11
Печать  
sedmin писал(а) 22. Сентября 2007 :: 19:43:
Совсем забыл, в 2.0.3.4 я как раз хотел отключить вызов методов как событий. Так что как раз 1С++ v1.8.1.6 и 2.0.3.3 должны вести себя по-разному. В 2.0.3.3 в TurboBL сделано автоматическое подключение таблиц.

А как в 2.5 ты сделал? расскажешь?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов процедуры формы документа из обработки
Ответ #10 - 24. Сентября 2007 :: 05:19
Печать  
artbear писал(а) 24. Сентября 2007 :: 05:11:
А как в 2.5 ты сделал? расскажешь?

Так же как и в 2.0.3. Или я что-то пропустил?
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #11 - 24. Сентября 2007 :: 09:22
Печать  
Работают оба предложенных способа:
1 вынести печатную форму в общие таблицы (работает и в 1.8.1.6 и 2.0.3.3)
2 использовать Конт.__ВызыватьМетодыКакСобытия() (работает в 2.0.3.3)
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов процедуры формы документа из обработки
Ответ #12 - 24. Сентября 2007 :: 10:06
Печать  
dimm73 писал(а) 24. Сентября 2007 :: 09:22:
Работают оба предложенных способа:
1 вынести печатную форму в общие таблицы (работает и в 1.8.1.6 и 2.0.3.3)
2 использовать Конт.__ВызыватьМетодыКакСобытия() (работает в 2.0.3.3)

Странно. Ты вызываешь __ВызыватьМетодыКакСобытия() без параметров?

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

Кстати, Артур, ты в 2.5 сделал такое умолчание:
Конт.__ВызыватьМетодыКакСобытия(флаг=0)
Тебе не кажется это нелогичным, что после вызова Конт.__ВызыватьМетодыКакСобытия() методы вызываются не как события?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов процедуры формы документа из обработки
Ответ #13 - 24. Сентября 2007 :: 11:16
Печать  
sedmin писал(а) 24. Сентября 2007 :: 10:06:
Кстати, Артур, ты в 2.5 сделал такое умолчание:
Конт.__ВызыватьМетодыКакСобытия(флаг=0)
Тебе не кажется это нелогичным, что после вызова Конт.__ВызыватьМетодыКакСобытия() методы вызываются не как события?

Саш, я только оставил то поведение, которое ты нарисовал Улыбка
По умолчанию, если не указать параметр, передавалось пустое значение неопределенного типа, что при приведении к числу давало 0 !

Если это неверно, давай исправим.
Кстати, в доке ТурбоБЛ.тхт не описано, какое значение параметр имеет по умолчанию Печаль
Это и к 203, и к 25 относится Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов процедуры формы документа из обработки
Ответ #14 - 24. Сентября 2007 :: 11:34
Печать  
Честно говоря, я думал, что без указания параметра будет ошибка. Возможно, ошибался.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать