v8: Процедура или функция с указанным именем не определена (РасчетТребКолТов) #637941


#0 by sidalexsandr
Функция на которую ругается 1с определена в модуле объекта (документ) выше процедуры из которой вызывается эта функция. 1с выдает ошибку: {Документ.Ведомость.МодульОбъекта(57,8)}: Процедура или функция с указанным именем не определена (РасчетТребКолТов)        ТЗ = <<?>>РасчетТребКолТов(ДанныеЗаполнения.Ссылка);     (Проверка: Толстый клиент (обычное приложение))
#1 by sidalexsandr
Вот текст фунции и процедуры:
#2 by sidalexsandr
Ошибку нашел, Надо вместо &НаСервереБезКонтекста написать &НаСервере
#3 by sidalexsandr
Подскажите теперь правильно ли я сделал. Написал на сервере выполнить запрос и выгрузить его в таблицу значений, а уже из таблицы значений буду брать на клиенте данные и заполнять документ ?
#4 by Mort
Конечно неправильно
#5 by Mort
Чо это за директивы в модуле объекта?
#6 by vie_za
мог бы подсказать ТС,куда ему рыть
#7 by Mort
1. Убрать директивы. Или это финт ушами для толстого клиента? 2. Функция РасчетТребКолТов получает параметр. Это тогда зачем:
#8 by sidalexsandr
В строке ошибка, исправил на:
#9 by sidalexsandr
C ТЗ дальше делаю так ТЗ = РасчетТребКолТов(ДанныеЗаполнения.Ссылка);
#10 by sidalexsandr
Подскажи про директивы. Что не так? Я написал директиву &НаСервере для того чтобы запрос выполнился на сервере и выгрузился в Таблицу значений. А дальше обрабатываю всё на клиенте.
#11 by Mort
Это модуль объекта. На стороне тонкого клиента его тупо не существует. Посему директива &НаКлиенте тупо сделает процедуру невидимой в режиме тонкого клиента. А что такое на серверебезконтекста в модуле объекта, я вообще сказать затрудняюсь. Короче толк от директив в модуле объекта можно получить только занимаясь сурьезным онанизмом с вариантами работы в разных режимах.
#12 by Mort
В двух словах, не путай модуль формы и модуль объекта.
#13 by sidalexsandr
Без контекста вот  нашел &НаКлиенте (&AtClient) — определяет клиентскую процедуру (функцию); &НаСервере (&AtServer) — определяет серверную процедуру (функцию); &НаСервереБезКонтекста (&AtServerNoContext) — определяет серверную процедуру (функцию), исполняемую на сервере вне контекста формы. Переменные не могут быть внеконтекстными. В таких методах недоступен контекст формы (включая данные формы). Допустимыми являются вызовы только других внеконтекстных методов. При вызове этих методов не выполняется передача данных формы на сервер и обратно. Применение внеконтекстных методов позволяет существенно уменьшить объем передаваемых данных при вызове серверной процедуры из среды клиентского приложения; &НаКлиентеНаСервереБезКонтекста (&AtClientAtServerNoContext) — определяет процедуру (функцию), исполняемую в модуле формы на клиенте и на сервере, не имеющую доступа к контексту формы, данным формы, переменным, но имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно. Сама процедура (функция) доступна для клиентский, серверных контекстных и неконтекстных процедур и функций модуля формы. Из серверных внеконтекстных методов формы допускается вызов серверных методов общих модулей; &НаКлиентеНаСервере (&AtClientAtServer) — определяет процедуру (функцию), исполняемую в модуле команды, выполняемую на клиенте и на сервере, имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно, не имеющую доступ к переменным. Сама процедура (функция) доступна для клиентских серверных процедур и функций модуля команды. Клиентская процедура (функция) исполняется в среде клиентского приложения. В такой процедуре доступен клиентский контекст формы и вызовы любых процедур модуля. Серверная процедура (функция) исполняется в среде серверного приложения. В такой процедуре доступны данные формы, доступен серверный контекст формы и вызовы серверных и серверных внеконтекстных процедур модуля. При вызове такой процедуры данные формы будут передаваться  с клиента на сервер и обратно (по окончанию вызова). Серверная процедура (функция), исполняемая вне контекста формы, (внеконтекстная) исполняется в среде серверного приложения. В такой процедуре (функции) недоступен контекст формы (включая данные формы). Допустимыми являются вызовы только других внеконтекстных процедур (функций). При вызове этих процедур (функций) не выполняется передача данных формы на сервер и обратно. Применение внеконтекстных процедур (функций) позволяет существенно уменьшить объем передаваемых данных при вызове серверной процедуры (функции) из среды клиентского приложения. Отсутствие директивы компиляции перед процедурой (функцией) означает использование директивы по умолчанию. Директивой по умолчанию является &НаСервере. Не допускается использование нескольких директив компиляции перед одной процедурой (функцией). Не допускается наличие одноименных процедур (функций), отличающихся только директивами компиляции. В модуле управляемой формы допускается использование инструкций препроцессору. Рекомендуется использовать инструкции препроцессора только внутри процедур (функций). Для понимания результата при "пересечении" инструкциями препроцессора границ процедур (функций) следует учитывать, что обработка инструкций препроцессора выполняется до обработки директив компиляции. В модуле команды предопределенная процедура-обработчик ОбработатьКоманду должна предваряться директивой &НаКлиенте, так как выполнение команды происходит в клиентском приложении. Модуль формы В модуле формы доступны директивы компиляции – &НаКлиенте, &НаСервере, &НаСервереБезКонтекста, &НаКлиентеНаСервереБезКонтекста. Модуль команды  В модуле команды доступны директивы компиляции – &НаКлиенте, &НаСервере, &НаКлиентеНаСервере. Общий модуль  В общем модуле доступны директивы компиляции – &НаКлиенте, &НаСервере.
#14 by Mort
Ну а я о чем. Про модуль объекта в справке ни слова, несмотря что эффект от директив в нём есть. Потому что не нужны они в нем.
#15 by sidalexsandr
Из справки выше: Отсутствие директивы компиляции перед процедурой (функцией) означает использование директивы &НаСервере.
#16 by sidalexsandr
Вот ещё про директивы компиляции:
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С