Коллеги, доброго времени!
Есть "подписка на событие" - МояПодпискаНаСобытие( ЗаказКлиента, ОбработкаПроведения)
Есть общий модуль - МойОбщийМодуль, на который ссылается подписка:
МойОбщийМодуль.Процедура1Сервер
В свойствах общего модуля взведены галочки:
- Клиент (управляемое приложение)
- Сервер
- Вызов Сервера
В общем модуле
&НаКлиенте
Функция Функция1(Чтото)
некий код
КонецФункции
&НаСервере
Процедура Процедура1Сервер(Источник, Отказ, РежимПроведения) Экспорт
некий код
//Вариант1
КакаяТоПеременная = Функция1(Чтото);
//Вариант2
КакаяТоПеременная = МойОбщийМодуль.Функция1(Чтото);
некий код
КонецПроцедуры
Показать
ну и соответственно
Ошибка при Вариант1
Конфигуратор ругается
Процедура или функция с указанным именем не определена (Функция1)
Ошибка при Вариант2
Конфигуратор пишет "Синтаксических ошибок не обнаружено", но при проведении документа
{МойОбщийМодуль.Процедура1Сервер.Модуль(166)}: Метод объекта не обнаружен (Функция1)
вызываю функцию1 на клиенте потому, что мне нужно вывести Вопрос, а он на сервере не исполяется
делить ОбщийМодуль на Клиент и Сервер не хочу - хочу разобраться как это работает
подскажите, пожалуйста, т.к. инфу в нете найти не могу
(1)
1)Tomy82, с сервера нельзя вызвать клиентскую функцию.
2)Вызывать диалоговые окна в транзакции записи (подписка на событие ОбработкаПроведения() выполняется внутри транзакции) - нельзя.
(5) Tomy82, от вопроса - отказаться.
Не знаю какая логика, вопрос - можно задавать в форме документа, в событии ПередЗаписью() - когда транзакция еще не началась. В модуле документа - тоже нельзя, при записи таблицы блокируются, а при проведении - еще и таблицы остатков регистров накопления. А если пользователь, проводящий документ забудет ответить на ваш вопрос? и пойдет на обед)) А если нужно будет сделать групповое проведение??
(6) Allexe8.1,
Логика проста
УТ 11.1
Задача: в заказе поставщику есть графа назначение, там динамически появляются строки с потребностью по заказам клиента.
Нужно организовать очередь по заказам клиента, но не по дате документа, а по времени добавления/изменении данных в заказе клиента.
Решил создать регистр
Заполняется перед проведением документа после анализа на всякие "если".
Так вот одно из этих "если" подразумевает под собой Вопрос типа - "Изменилось общее количество по такой-то номенклатуре".
Если "Да" - Номенклатура по очереди встанет на время проведения
Если "Нет" - возвращаемся в документ.
(9) nSpirit2,
в разных организация разные ситуации, корректировка заказа - что это? документ или действие?
одна из наших ситуаций:
Иванов делали 15-го числа заказ, на 15 тазиков, в "под заказ", заказ номер 1234;
Пупкин сделал 16-го заказ на 20 тазиков, заказ номер 1235;
Иванов 17-го числа идёт в заказ 1234 и меняет на 50 тазиков.
соответственно он получит 50, а не 15, т.к. дата документа и номер раньше, чем Пупкина
Согласен, что существует много если, т.к. ситуация совсем не однозначная.
Дозаказ тогда по заказу 1234 будет уже по времени на текущую дату.
Клиент всегда прав, но нам тоже нужен порядок на предприятии!)))
(8) Tomy82, Обращение к заказам - На Сервере
Заполнение регистра - на сервере
Короче вам нужно отдельные функции делать в модуле объекта с пометкой ЭКСПОРТ.
Далее работаете в документе на Клиенте, если потребовалось обращение к данным, обращаемся к Серверной функции как к методу
а если работаете в общем модуле.. то каждую процедуру нужно указывать, НаКлиенте она или НаСервере
(8) Tomy82, ну, даже не вдаваясь особо, выскажу свое имхо.
На этот вопрос пользователь должен отвечать до проведения документа - путем проставления галки - реквизита документа (или табличной части).
2.
jobkostya1c_ERP
10122.08.14 15:20 Сейчас в теме
С сервера клиентскую процедуру нельзя вызывать!
ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject)
ПодпискиНаСобытия (EventSubscriptions)
Использование:
Только чтение.
Описание:
Тип: КоллекцияОбъектовМетаданных.
Коллекция объектов метаданных, которые описывают все подписки на события, определенные в конфигурации.
Элементами коллекции являются объекты типа ОбъектМетаданных: ПодпискаНаСобытие.
Доступность:
3.
jobkostya1c_ERP
10122.08.14 15:27 Сейчас в теме
В модуле где есть оработчики подписки на событие все флаги кроме "Сервер" (для толстого клиента точно) игнорируются.
Еще вариант (не проверял с подпиской на событие) у всех процедур использовать &НаКлиентеНаСервереБезКонтекста. Тогда в зависимости от ситуации будет все (включая вложенное) выполняться или только на клиенте или только на сервере. Естесственно что интерфейсная функция "Вопрос" на сервере не выполнится и выдаст ошибку - тут нужно искать другие варианты.
Основная проблема выполнения чего то на Клиенте то что при программном перепроведении вы сгребете приличную проблему. Что вы собственно пользователю показать то хотели ?
15.
jobkostya1c_ERP
10126.08.14 02:06 Сейчас в теме
По данному вопросу даже статью написал. Затронул вопросы производительности. Чтоб при программном проведении в подписке на событие выполнялись минимум проверок. http://infostart.ru/public/298700/