Имя: Пароль:
1C
 
Вызов из модуля команды объекта процедуры из модуля объекта
0 BVG1951
 
16.04.15
14:46
При попытке вызова из модуля команды документа (той команды, что в отдельной ветке у объекта в конфигураторе) процедуры, расположенной в модуле документа вдруг стала появляться ошибка.
Раньше ТОЧНО ТАКОЙ ЖЕ код работал. Момент, когда код перестал работать точно не отловили (достаточно редко вызывалась команда). Но на платформе 8.2 - точно работала. Никто не знает, произошли ли изменения в 8.3 с этой точки зрения?
1 Любопытная
 
16.04.15
14:48
Какая ошибка?
2 butterbean
 
16.04.15
14:48
где код-то??
3 a_alenkin
 
16.04.15
14:49
тут много телепатов - хоть бы текст ошибки привел
4 BVG1951
 
16.04.15
14:52
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    ТабДокумент = ПечатьНаСервере(ПараметрКоманды);

    Если Не ТабДокумент = Неопределено Тогда
        ...............................;
        ТабДокумент.Показать();
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Функция ПечатьНаСервере(СсылкаДок)
    Документ = СсылкаДок.ПолучитьОбъект();
    ИмяМакета = "РасчетПособияКЛисткуНетрудоспособности2011";
    ТабДок = Документ.Печать(ИмяМакета);

    Возврат ТабДок;
КонецФункции


А ругается на то, что не найден метод "Печать" (хотя в модуле документа такая функция есть и она экспортная
5 Любопытная
 
16.04.15
14:55
А объект-то получился? А то мало ли... Что в ПараметрКоманды ушло?
6 BVG1951
 
16.04.15
15:00
Получился объект и тот, что надо
7 BVG1951
 
16.04.15
15:03
Ничего не понимаю, должно работать (и работало), а не работает. Единственное предположение, что в 8.3 стало невозможно из модуля команды вызвать процедуру модуля объекта. Вот это и хотел уточнить
8 Defender aka LINN
 
16.04.15
15:49
Кэш продувал?
9 BVG1951
 
16.04.15
16:23
Не понимаю. Ошибка возникает у разных пользователей, на разных базах (с идентичной структурой). При чем здесь кэш?
10 GROOVY
 
16.04.15
16:27
Это система намекает тебе, что получать объект для формирования печатной формы - плохо.
11 Лефмихалыч
 
16.04.15
16:29
раз "раньше точно такой же код работал", значит у формы появился реквизит с именем Документ и каким-нить там ссылочным типом
12 BVG1951
 
16.04.15
16:32
Ошибка появилась после очередного обновления из типового функционала. Эта ошибка возникает при печати (которой, полагаю, пользователи пользовались не часто и, возможно, после перехода на 8.3 месяца 2 назад решали проблему печати как-то иным способом), но в этот раз ей сопутствовала ошибка при проведении, от которой "не отмахнуться" (ее я уже исправил). Поскольку иных объяснений ошибки при печати я не вижу, вот решил спросить про изменения в 8.3

(10) Этот код писал не я, так что претензии не ко мне :)

(11) Напоминаю, что код вызывается не из формы, а из модуля команды
13 GROOVY
 
16.04.15
16:35
В отладке глянь тип значения "Документ", скорее всего там массив.
14 Лефмихалыч
 
16.04.15
16:40
(12) отладчик купи или укради где-нибудь
15 BVG1951
 
16.04.15
16:43
(13) а вот и не угадал. Натуральный документ-объект. И даже не "эрзац" из формы (тоже было предположение). Вы мне скажите по собственному опыту: вызывали ли из модуля КОМАНДЫ процедуру (функцию) модуля объекта и так, чтобы это работало в 8.3.
Я уже переношу все процедуры/функции из модуля объекта в модуль менеджера (там вызов работает, только долго переносить)
16 BVG1951
 
16.04.15
16:44
(14) Да... Шуточки ниже плинтуса
17 Лефмихалыч
 
16.04.15
16:45
(15) директивы компиляции поди вокруг Печать() появились какие-то. Или всегда были, но у тебя режим запуска им соответствовал, а щас вдруг перестал
18 sapphire
 
16.04.15
16:56
(4)
На сервере:
ЭтотОбъект=РеквизитФормыВЗначение("Объект");
// вызов метода модуля объекта
// ЭтотОбъект.{Имя метода}.
ЗначениеВРеквизитФормы(ЭтотОбъект,"Объект");

Лучше, нежели ПолучитьОбъект()
19 BVG1951
 
16.04.15
16:57
(17) Большое спасибо, Лефмихалыч! Эти (очевидно перенесенные при обновлении из типового функционала) директивы были так широко расставлены, что без осознанного поиска я бы их не нашел. Все заработало.

Между прочим, это всего 2-ой случай, когда я получаю толковый совет на этом форуме. Как правило сюда обращаешься, когда сам перебрал все мыслимые возможности. Но в ответ молчок.
20 BVG1951
 
16.04.15
16:59
(18) Еще раз напоминаю: это не форма, а команда объекта. Этот код не пройдет
21 Лефмихалыч
 
16.04.15
17:03
(19) пожалуйста
22 BVG1951
 
16.04.15
17:20
А дело было в том, что обновлял то я из типового, обыкновенного приложения, а у нас управляемое. Вот и надо было к директиве добавить ... или Сервер...
Что ж, теперь буду знать эту "фишку"
Ошибка? Это не ошибка, это системная функция.