Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Вызов функции общего модуля на клиенте          
onsamuy Подменю пользователя
сообщение 07.09.15, 12:27
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 264
Спасибо сказали: 69 раз
Рейтинг: 0

Допустим, у меня в общем модуле, который имеет свойства Клиент, сервер, есть функция

Функция ПолучитьОстаток(Парам1, Парам2, ...)Экспорт
//какой-то текст кода
КонецФункции


Не могу понять, почему в форме документа в процедуре, которая &НаКлиенте при попытке обращения к этой функции выдает ошибку Метод объекта не обнаружен? Ведь в свойствах общего модуля есть флажок Клиент.

Вот так не работает
&НаКлиенте
Функция ПересчитатьКолво()
   // .......
   ПараметрыОстатка = Дополнительный.ПолучитьОстаток(Парам1, Парам2, ...)
   // .......
КонецФункции


Работает если только сделать так

&НаКлиенте
Функция ПересчитатьКолво()
   // .......
   ПараметрыОстатка = ПолучитьОстатокНаСервере(Парам1, Парам2, ...);
   // .......
КонецФункции

&НаСервере
Функция ПолучитьОстатокНаСервере(Парам1, Парам2, ...);
   // .......
   Возврат Дополнительный.ПолучитьОстаток(Парам1, Парам2, ...)
   // .......
КонецФункции

Vofka Подменю пользователя
сообщение 07.09.15, 13:53
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Для того, чтобы вызывать из клиентских процедур и функций, должна стоять галка Клиент (управляемой приложение). Но подозреваю, что если вы это сделаете - у вас перестанет работать функция ПолучитьОстаток в нем, если будете вызывать с клиента.

Petre Подменю пользователя
сообщение 07.09.15, 15:07
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Функция без дерективы считается серверной.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

onsamuy Подменю пользователя
сообщение 07.09.15, 15:10
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 264
Спасибо сказали: 69 раз
Рейтинг: 0

НУ в принципе, и так работает, с клиентской функции на форме лезем в серверную функцию на форме и там уже получаем остаток. Просто интересно, как архитектура работает. Может изза того что установлен флажок Клиент (упр. прил) и Сервер одновременно, а надо только Клиент(...

Petre Подменю пользователя
сообщение 07.09.15, 15:15
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Из-за того, что не установлен флажек "вызов сервера".


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

onsamuy Подменю пользователя
сообщение 07.09.15, 15:39
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 264
Спасибо сказали: 69 раз
Рейтинг: 0

Цитата(Petre @ 07.09.15, 16:07) *
Функция без дерективы считается серверной.

Да, действительно функция получения остатка в общем модуле у меня с директивой &НаСервере. Получается, что на форме с ф-ции &НаКлиенте я могу обратиться к функции &НаСервере, если она здесь же на форме, а если эта функция &НаСервере, но в общем модуле, то уже не могу...

Цитата(Petre @ 07.09.15, 16:15) *
Из-за того, что не установлен флажек "вызов сервера".

установлен

короче немного порукожопил я. На кой ляд я вынес функцию в общий модуль Клиент + Сервер, и задал функции &НаСервере, надо было просто в общий модуль Сервер, и никаких директив указывать не надо! Тогда из формы, из клиента она вызывается без ошибок. В типовой конфе в общих модулях никаких директив нету! Придется еще кое что переписать smile.gif

Petre Подменю пользователя
сообщение 07.09.15, 15:46
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Запамятовал я, а вы еще немного "помогли"))))
В общем, примерно так.
Если стоит и клиент, и сервер, то компилируется два экземпляра общего модуля (в соответствии с директивами). При чем с клиентской стороны виден только клиентский модуль, а с серверной - серверный.
Если директива не указана - она компилируется в оба экземпляра. И как раз по причине того, что у вас была указана серверная директива (только вы привели модуль без нее, чем и сбили меня)))), она не видна из клиента.

Сообщение отредактировал Petre - 07.09.15, 15:59


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

onsamuy Подменю пользователя
сообщение 07.09.15, 15:57
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 264
Спасибо сказали: 69 раз
Рейтинг: 0

Цитата(Petre @ 07.09.15, 16:46) *
Та не. Смысл понимается, когда представить, как это все компилируется.
Если стоит и клиент, и сервер, то компилируется два экземпляра общего модуля (в соответствии с директивами). При чем с клиентской стороны виден только клиентский модуль, а с серверной - серверный.
И да, "вызов сервера" при этом не работает.


Похоже, в общих модулях директив быть не должно ВООБЩЕ. Во всяком случае в типовых конфигурациях все идет без директив. Т.е. указывать в общих модулях директивы - рукожопство

Petre Подменю пользователя
сообщение 07.09.15, 16:01
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(onsamuy @ 07.09.15, 16:57) *
Т.е. указывать в общих модулях директивы - рукожопство

Не верно.
Предыдущее мое сообщение я отредактировал.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

logist Подменю пользователя
сообщение 09.09.15, 18:02
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(onsamuy @ 07.09.15, 16:57) *
Т.е. указывать в общих модулях директивы - рукожопство

Смотря какая цель директив. Если клиент-сервер, то да, судя по БСП их принято разделять в отдельные модули, а если тонкий-вэб то это вполне не рукожопство для клиентского модуля.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 18:24
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!