снова "ОбщийМодуль и Клиент и Сервер

1. Tommy82 65 22.08.14 14:48 Сейчас в теме
Коллеги, доброго времени!
Есть "подписка на событие" - МояПодпискаНаСобытие( ЗаказКлиента, ОбработкаПроведения)
Есть общий модуль - МойОбщийМодуль, на который ссылается подписка:

МойОбщийМодуль.Процедура1Сервер

В свойствах общего модуля взведены галочки:
- Клиент (управляемое приложение)
- Сервер
- Вызов Сервера

В общем модуле


&НаКлиенте
Функция Функция1(Чтото)
некий код
КонецФункции

&НаСервере
Процедура Процедура1Сервер(Источник, Отказ, РежимПроведения) Экспорт
некий код
//Вариант1
КакаяТоПеременная = Функция1(Чтото);
//Вариант2
КакаяТоПеременная = МойОбщийМодуль.Функция1(Чтото);
некий код
КонецПроцедуры

Показать


ну и соответственно
Ошибка при Вариант1
Конфигуратор ругается
Процедура или функция с указанным именем не определена (Функция1)

Ошибка при Вариант2
Конфигуратор пишет "Синтаксических ошибок не обнаружено", но при проведении документа
{МойОбщийМодуль.Процедура1Сервер.Модуль(166)}: Метод объекта не обнаружен (Функция1)

вызываю функцию1 на клиенте потому, что мне нужно вывести Вопрос, а он на сервере не исполяется

делить ОбщийМодуль на Клиент и Сервер не хочу - хочу разобраться как это работает

подскажите, пожалуйста, т.к. инфу в нете найти не могу
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. Allexe8.1 22.08.14 15:34 Сейчас в теме
(1)
1)Tomy82, с сервера нельзя вызвать клиентскую функцию.
2)Вызывать диалоговые окна в транзакции записи (подписка на событие ОбработкаПроведения() выполняется внутри транзакции) - нельзя.
5. Tommy82 65 22.08.14 15:39 Сейчас в теме
Всем спасибо!
(4) Allexe8.1,
т.е. нужно отказаться от подписки на события и корячить в модуле документа либо отказаться от Вопроса, да?
6. Allexe8.1 22.08.14 15:46 Сейчас в теме
(5) Tomy82, от вопроса - отказаться.
Не знаю какая логика, вопрос - можно задавать в форме документа, в событии ПередЗаписью() - когда транзакция еще не началась. В модуле документа - тоже нельзя, при записи таблицы блокируются, а при проведении - еще и таблицы остатков регистров накопления. А если пользователь, проводящий документ забудет ответить на ваш вопрос? и пойдет на обед)) А если нужно будет сделать групповое проведение??
jobkostya1c_ERP; nSpirit2; +2 Ответить
8. Tommy82 65 22.08.14 16:15 Сейчас в теме
(6) Allexe8.1,
Логика проста
УТ 11.1
Задача: в заказе поставщику есть графа назначение, там динамически появляются строки с потребностью по заказам клиента.
Нужно организовать очередь по заказам клиента, но не по дате документа, а по времени добавления/изменении данных в заказе клиента.
Решил создать регистр
Заполняется перед проведением документа после анализа на всякие "если".
Так вот одно из этих "если" подразумевает под собой Вопрос типа - "Изменилось общее количество по такой-то номенклатуре".
Если "Да" - Номенклатура по очереди встанет на время проведения
Если "Нет" - возвращаемся в документ.
9. nSpirit2 22.08.14 16:24 Сейчас в теме
(8) Tomy82, Сори а что мешает корректировку заказа делать а не менять документы и придумывать такую сложную схему.
12. Tommy82 65 25.08.14 10:37 Сейчас в теме
(9) nSpirit2,
в разных организация разные ситуации, корректировка заказа - что это? документ или действие?
одна из наших ситуаций:
Иванов делали 15-го числа заказ, на 15 тазиков, в "под заказ", заказ номер 1234;
Пупкин сделал 16-го заказ на 20 тазиков, заказ номер 1235;
Иванов 17-го числа идёт в заказ 1234 и меняет на 50 тазиков.
соответственно он получит 50, а не 15, т.к. дата документа и номер раньше, чем Пупкина
Согласен, что существует много если, т.к. ситуация совсем не однозначная.
Дозаказ тогда по заказу 1234 будет уже по времени на текущую дату.
Клиент всегда прав, но нам тоже нужен порядок на предприятии!)))
10. Bukaska 140 22.08.14 16:28 Сейчас в теме
(8) Tomy82, Обращение к заказам - На Сервере
Заполнение регистра - на сервере
Короче вам нужно отдельные функции делать в модуле объекта с пометкой ЭКСПОРТ.
Далее работаете в документе на Клиенте, если потребовалось обращение к данным, обращаемся к Серверной функции как к методу
а если работаете в общем модуле.. то каждую процедуру нужно указывать, НаКлиенте она или НаСервере
13. Tommy82 65 25.08.14 10:37 Сейчас в теме
11. Allexe8.1 22.08.14 17:43 Сейчас в теме
(8) Tomy82, ну, даже не вдаваясь особо, выскажу свое имхо.
На этот вопрос пользователь должен отвечать до проведения документа - путем проставления галки - реквизита документа (или табличной части).
14. Tommy82 65 25.08.14 10:37 Сейчас в теме
(11) Allexe8.1,
спасибо за совет, буду думать
2. jobkostya1c_ERP 100 22.08.14 15:20 Сейчас в теме
С сервера клиентскую процедуру нельзя вызывать!

ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject)
ПодпискиНаСобытия (EventSubscriptions)
Использование:
Только чтение.
Описание:
Тип: КоллекцияОбъектовМетаданных.
Коллекция объектов метаданных, которые описывают все подписки на события, определенные в конфигурации.
Элементами коллекции являются объекты типа ОбъектМетаданных: ПодпискаНаСобытие.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
3. jobkostya1c_ERP 100 22.08.14 15:27 Сейчас в теме
В модуле где есть оработчики подписки на событие все флаги кроме "Сервер" (для толстого клиента точно) игнорируются.
Еще вариант (не проверял с подпиской на событие) у всех процедур использовать &НаКлиентеНаСервереБезКонтекста. Тогда в зависимости от ситуации будет все (включая вложенное) выполняться или только на клиенте или только на сервере. Естесственно что интерфейсная функция "Вопрос" на сервере не выполнится и выдаст ошибку - тут нужно искать другие варианты.
7. nSpirit2 22.08.14 16:15 Сейчас в теме
Основная проблема выполнения чего то на Клиенте то что при программном перепроведении вы сгребете приличную проблему. Что вы собственно пользователю показать то хотели ?
15. jobkostya1c_ERP 100 26.08.14 02:06 Сейчас в теме
По данному вопросу даже статью написал. Затронул вопросы производительности. Чтоб при программном проведении в подписке на событие выполнялись минимум проверок. http://infostart.ru/public/298700/
16. Tommy82 65 03.09.14 09:16 Сейчас в теме
(15) kostyaomsk,
спасибо за статью! попробую задействовать "ПередЗаписью"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот