Управляемое приложение.Запрос в общий модуль(УПП)
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Здравствуйте.Подскажите, пожалуйста, создала новый регистр сведений и 2 новых общих модуля(один из них на клиенте- для программного изменения форм документов,другой серверный). В клиентском модуле сделала проверку:
при открытии формы.В обычном приложении -работает как надо.Подозреваю, что ругань начнется при пробе управляемого приложения(из-за запроса).Возможно попробовать как-то вынести проверку при управляемом приложении в мною созданный серверный модуль?Подскажите, какое условие наложить (кажется что проверка текущего режима запуска не поможет )
Заранее спасибо
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КодыДоступаПользователей.Пользователь,
| КодыДоступаПользователей.КодДоступа,
| КодыДоступаПользователей.КонтрольПередачиДокументов
|ИЗ
| РегистрСведений.КодыДоступаПользователей КАК КодыДоступаПользователей
|ГДЕ
| КодыДоступаПользователей.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.ТекущийПользователь);
Выборка= Запрос.Выполнить().Выбрать();
Если Форма.ОбработаноЭкономистом = Истина или Форма.ОтражатьВБухгалтерскомУчете = Истина Тогда
Если Выборка.Следующий() Тогда
ЭлементыФормы.флОбработаноЭкономистом.Доступность =не Выборка.КонтрольПередачиДокументов;
Форма.ТолькоПросмотр = Выборка.КонтрольПередачиДокументов;
Иначе
ЭлементыФормы.флОбработаноЭкономистом.Доступность = Ложь;
Форма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
ПоказатьЗаранее спасибо
Найденные решения
необходимо в серверный модуль перенести запрос, в отдельную экспортную функцию передавая туда нужные параметры если неоьходимо и возвращать от серверной функции значение (структуру, таблицу и т.д.). Например
пишем на в серверном модуле функцию:
функция вернутьКодконтроляПередачи(Пользователь)
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КодыДоступаПользователей.Пользователь,
| КодыДоступаПользователей.КодДоступа,
| КодыДоступаПользователей.КонтрольПередачиДокументов
|ИЗ
| РегистрСведений.КодыДоступаПользователей КАК КодыДоступаПользователей
|ГДЕ
| КодыДоступаПользователей.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Выборка= Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
вовзрат Выборка.КонтрольПередачиДокументов;
Иначе
вовзрат неопределено;
КонецЕсли;
КонецФункции
в клиентской части функция будет выглядеть следующим образом:
Процедура ЧтотоТам(Форма)
Если Форма.ОбработаноЭкономистом = Истина или Форма.ОтражатьВБухгалтерскомУчете = Истина Тогда
ЗначениеВозврата = Серверныймодуль.вернутьКодконтроляПередачи(ПараметрыСеанса.ТекущийПользователь);
Если ЗначениеВозврата <> неопределено тогда
ЭлементыФормы.флОбработаноЭкономистом.Доступность =не ЗначениеВозврата ;
Форма.ТолькоПросмотр = ЗначениеВозврата ;
Иначе
ЭлементыФормы.флОбработаноЭкономистом.Доступность = Ложь;
Форма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
таким образом 1ое, зачем выполнять запрос если используем его только при определенном условии, т.е. мы внесли выполнение запроса в условие Если;
2.ое запрос выполняется на серверной части и возвращает данные клиентской части.
пишем на в серверном модуле функцию:
функция вернутьКодконтроляПередачи(Пользователь)
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КодыДоступаПользователей.Пользователь,
| КодыДоступаПользователей.КодДоступа,
| КодыДоступаПользователей.КонтрольПередачиДокументов
|ИЗ
| РегистрСведений.КодыДоступаПользователей КАК КодыДоступаПользователей
|ГДЕ
| КодыДоступаПользователей.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Выборка= Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
вовзрат Выборка.КонтрольПередачиДокументов;
Иначе
вовзрат неопределено;
КонецЕсли;
КонецФункции
в клиентской части функция будет выглядеть следующим образом:
Процедура ЧтотоТам(Форма)
Если Форма.ОбработаноЭкономистом = Истина или Форма.ОтражатьВБухгалтерскомУчете = Истина Тогда
ЗначениеВозврата = Серверныймодуль.вернутьКодконтроляПередачи(ПараметрыСеанса.ТекущийПользователь);
Если ЗначениеВозврата <> неопределено тогда
ЭлементыФормы.флОбработаноЭкономистом.Доступность =не ЗначениеВозврата ;
Форма.ТолькоПросмотр = ЗначениеВозврата ;
Иначе
ЭлементыФормы.флОбработаноЭкономистом.Доступность = Ложь;
Форма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
таким образом 1ое, зачем выполнять запрос если используем его только при определенном условии, т.е. мы внесли выполнение запроса в условие Если;
2.ое запрос выполняется на серверной части и возвращает данные клиентской части.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)я знаю)вопрос только как из клиентского модуля для управляемого приложения перейти в серверный...и еще если запросы только на серверой стороне- то почему при обычном приложении все срабатывает(теореточески я понимаю так-разделение клиент -сервер обостряется при управляемом приложении)
(5) sweety-twetty, на обычном клиенте все исполняется потому что данные клиенту передаются в полном объеме. Думаю вы уже заметили что в управляемом приложении нельзя обратиться через точку по ссылке, например взят и написать "Контрагент.ИНН". Все потому что Управляемые приложения реализуют так называемого тонкого клиента, т.е. клиенту передаются только те данные которые отображены на форме и более ни чего, чтобы все пролезало в узенький интернет канал (где такие еще остались правда не очень понятно).отсюда и разделение функций. т.е. запрос исполянемый на клиенте просто не увидит данных, так как на клиенте их не существует.
необходимо в серверный модуль перенести запрос, в отдельную экспортную функцию передавая туда нужные параметры если неоьходимо и возвращать от серверной функции значение (структуру, таблицу и т.д.). Например
пишем на в серверном модуле функцию:
функция вернутьКодконтроляПередачи(Пользователь)
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КодыДоступаПользователей.Пользователь,
| КодыДоступаПользователей.КодДоступа,
| КодыДоступаПользователей.КонтрольПередачиДокументов
|ИЗ
| РегистрСведений.КодыДоступаПользователей КАК КодыДоступаПользователей
|ГДЕ
| КодыДоступаПользователей.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Выборка= Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
вовзрат Выборка.КонтрольПередачиДокументов;
Иначе
вовзрат неопределено;
КонецЕсли;
КонецФункции
в клиентской части функция будет выглядеть следующим образом:
Процедура ЧтотоТам(Форма)
Если Форма.ОбработаноЭкономистом = Истина или Форма.ОтражатьВБухгалтерскомУчете = Истина Тогда
ЗначениеВозврата = Серверныймодуль.вернутьКодконтроляПередачи(ПараметрыСеанса.ТекущийПользователь);
Если ЗначениеВозврата <> неопределено тогда
ЭлементыФормы.флОбработаноЭкономистом.Доступность =не ЗначениеВозврата ;
Форма.ТолькоПросмотр = ЗначениеВозврата ;
Иначе
ЭлементыФормы.флОбработаноЭкономистом.Доступность = Ложь;
Форма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
таким образом 1ое, зачем выполнять запрос если используем его только при определенном условии, т.е. мы внесли выполнение запроса в условие Если;
2.ое запрос выполняется на серверной части и возвращает данные клиентской части.
пишем на в серверном модуле функцию:
функция вернутьКодконтроляПередачи(Пользователь)
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КодыДоступаПользователей.Пользователь,
| КодыДоступаПользователей.КодДоступа,
| КодыДоступаПользователей.КонтрольПередачиДокументов
|ИЗ
| РегистрСведений.КодыДоступаПользователей КАК КодыДоступаПользователей
|ГДЕ
| КодыДоступаПользователей.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Выборка= Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
вовзрат Выборка.КонтрольПередачиДокументов;
Иначе
вовзрат неопределено;
КонецЕсли;
КонецФункции
в клиентской части функция будет выглядеть следующим образом:
Процедура ЧтотоТам(Форма)
Если Форма.ОбработаноЭкономистом = Истина или Форма.ОтражатьВБухгалтерскомУчете = Истина Тогда
ЗначениеВозврата = Серверныймодуль.вернутьКодконтроляПередачи(ПараметрыСеанса.ТекущийПользователь);
Если ЗначениеВозврата <> неопределено тогда
ЭлементыФормы.флОбработаноЭкономистом.Доступность =не ЗначениеВозврата ;
Форма.ТолькоПросмотр = ЗначениеВозврата ;
Иначе
ЭлементыФормы.флОбработаноЭкономистом.Доступность = Ложь;
Форма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
таким образом 1ое, зачем выполнять запрос если используем его только при определенном условии, т.е. мы внесли выполнение запроса в условие Если;
2.ое запрос выполняется на серверной части и возвращает данные клиентской части.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот