Процедура или функция с указанным именем не определена #792427


#0 by Mikhail Volkov
Во внешней обработке процедуры СохранитьНастройки и ВосстановитьНастройки из формы перенес в модуль, приписал им Экспорт, чтобы запускать обработку по расписанию. Реквизиты формы, которые сохраняю, переделал в реквизиты обработки. Ошибку пишет: {ВнешняяОбработка.ЗакрытиеПросроченныхЗаказовКлиентов.Форма.Форма.Форма(6,2)}: Процедура или функция с указанным именем не определена (ВосстановитьНастройки)!?
#1 by h-sp
формы обычные хоть?
#2 by rphosts
Если уф, что там с контекстом, Чарли?
#3 by Mikhail Volkov
Да, УФ. Что дописать?
#4 by МимохожийОднако
Код в студию.
#5 by Mikhail Volkov
То, что из формы в модуль перенис:
#6 by МимохожийОднако
Ты не показал код команды из формы, в которой вызываешь сохранение настроек.
#7 by rphosts
галочки какие у общего модуля?
#8 by Cyberhawk
В УФ методы модуля объекта внешней обработки / отчета надо вызывать через объект типа "Внешняя обработка / отчет", полученный на сервере через метод "РеквизитФормыВЗначение"
#9 by Mikhail Volkov
В форме оставил как было: #КонецОбласти Все реквизиты формы переделал в реквизиты обработки. Форма должна открываться только при непосредственном открытии обработки для задания этих реквизитов, и их сохранении. А в фоновом режиме по расписанию обработка должна восстанавливать их, и выполняться по ним.
#10 by h-sp
уже сто раз бвло ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); //или что у вас вместо объекта
#11 by Mikhail Volkov
Можно так, но я уже реквизиты формы переделал в реквизиты обработки. Правильнее наверное использовать справочник ВариантыОтчетов... Но почему ошибка: Процедура или функция с указанным именем не определена (ВосстановитьНастройки)!?
#12 by МимохожийОднако
Потому что из модуля формы просто так не увидишь процедуры модуля объекта.
#13 by Mikhail Volkov
Странно...
#14 by h-sp
это азы. Самое главное в УФ
#15 by Mikhail Volkov
Да уж, пусть ВосстановитьНастройки и форме и модуле будет...
#16 by Mikhail Volkov
Переделал, для сохранения настоек теперь использую справочник ВариантыОтчетов. В нем что угодно можно сохранять. Для ПериодВыборкиДокументов - СтандартныйПериод, он содержит: Вариант, ДатаНачала и ДатаОкончания. ДатаОкончания мне не нужна, поскольку в режиме по расписанию всегда ТекущаяДата. ДатаНачала хотелось тоже сделать вычисляемой. Например, пользователь в настройка указал неделю, то завтра обработка запустилась с значением ДатаНачала на неделю назад от ТекущаяДата. Какие значения имеет СтандартныйПериод.Вариант?
#17 by МимохожийОднако
Встань отладчиком и через точку посмотри
#18 by Mikhail Volkov
Обычно "Произвольный период" (поскольку ДатаОкончания обычно ТекущаяДата) - не подходит. Сохраняю еще Период в днях, по нему восстанавливаю ДатаНачала. В общем обработка получилась такая , в ней только функцию ПолучитьПричинуЗакрытия пришлось продублировать в форме и модуле.
#19 by МимохожийОднако
Тебе в прямым текстом подсказали. Ты пройдись отладчиком и посмотри, когда используется дубль функции в модуле формы и перепиши.
#20 by Mikhail Volkov
Когда убираю дубль из формы или модуля (делаю ее Экспорт), то ошибка возникает: Процедура или функция с указанным именем не определена (ПолучитьПричинуЗакрытия)!? Это обработка УФ.
#21 by МимохожийОднако
В модуле обработки  сделай эту функция экспортной. А в модуле формы замени на &НаСервере
#22 by Mikhail Volkov
Хм, так сработало! Жаль, что недоступен на клиенте метод: ПричинаЗакрытия = РеквизитФормыВЗначение("Объект").ПолучитьПричинуЗакрытия;
#23 by Mikhail Volkov
Еще, смотрю обработку по заполнения табличной части документа, там в модуле ничего нет(кроме стандартных процедур регистрации). Форма пустая, кроме: Она какая-то предопределенная?
#24 by МимохожийОднако
Для этого в модуле формы используют директиву НаСервере Да. РТФМ
#25 by Mikhail Volkov
РТФМ - ? Тогда мне тоже ее можно перенести в форму, Тогда все вспомогательные функции будут только в форме, в модуле они будут не нужны? Никаких дублирующих!
#26 by МимохожийОднако
Тебе решать. Если нигде, кроме формы эта процедура не используется, то кидай в модуль формы. Если задумаешь сделать регламентное задания без открытия формы, то эта процедура должна быть в модуле обработки. Ты же спрашивал про ВыполнитьКоманду. Подумай. При возможности надо закладывать наиболее универсаальный код.
#27 by Mikhail Volkov
Дык, без открытия формы сейчас обработка выполняется через ВыполнитьКоманду, ее перенесу в форму. Какие еще варианты есть выполнения обработки?
#28 by Mikhail Volkov
В обработке по заполнению табличной части документа нужно заполнить остатками: - по организации и складу - не соображу как их лучше объединить?
#29 by mexanik_96
дак да, в чем смысл 2 раза ходить на сервер, когда можно за один вызов сделать в пакете... и "объект" мне кажется не стоит гонять...
#30 by Mikhail Volkov
Это уже другая обработка, нужны 3 варианта (с 3 вариантами ДобавитьКоманду)
#31 by МимохожийОднако
Серверные процедуры рекомендуется по максимуму закинуть в модуль обработки
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям