Управляемое приложение.Запрос в общий модуль(УПП)

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

Заранее спасибо
Вознаграждение за ответ
Показать полностью
Найденные решения
7. FallenMad 12 17.12.12 19:19 Сейчас в теме
необходимо в серверный модуль перенести запрос, в отдельную экспортную функцию передавая туда нужные параметры если неоьходимо и возвращать от серверной функции значение (структуру, таблицу и т.д.). Например

пишем на в серверном модуле функцию:
функция вернутьКодконтроляПередачи(Пользователь)
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КодыДоступаПользователей.Пользователь,
| КодыДоступаПользователей.КодДоступа,


| КодыДоступаПользователей.КонтрольПередачиДокументов
|ИЗ
| РегистрСведений.КодыДоступаПользователей КАК КодыДоступаПользователей
|ГДЕ
| КодыДоступаПользователей.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Выборка= Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
вовзрат Выборка.КонтрольПередачиДокументов;
Иначе
вовзрат неопределено;
КонецЕсли;

КонецФункции


в клиентской части функция будет выглядеть следующим образом:

Процедура ЧтотоТам(Форма)
Если Форма.ОбработаноЭкономистом = Истина или Форма.ОтражатьВБухгалтерскомУчете = Истина Тогда
ЗначениеВозврата = Серверныймодуль.вернутьКодконтроляПередачи(ПараметрыСеанса.ТекущийПользователь);
Если ЗначениеВозврата <> неопределено тогда
ЭлементыФормы.флОбработаноЭкономистом.Доступность =не ЗначениеВозврата ;
Форма.ТолькоПросмотр = ЗначениеВозврата ;
Иначе
ЭлементыФормы.флОбработаноЭкономистом.Доступность = Ложь;
Форма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры


таким образом 1ое, зачем выполнять запрос если используем его только при определенном условии, т.е. мы внесли выполнение запроса в условие Если;
2.ое запрос выполняется на серверной части и возвращает данные клиентской части.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DenisCh 17.12.12 17:16 Сейчас в теме
#Если ТонкийКлиент Тогда


...
#Если ТолстыйКлиентУправляемоеПриложение

...
3. sweety-twetty 17.12.12 17:24 Сейчас в теме
(2) а где посоветуете такую проверку?дело в том, что мне только часть процедуры необходимо перевести на сервер
4. andrewks 1378 17.12.12 17:56 Сейчас в теме
запросы надо выполнять на серверной стороне, а не клиентской
5. sweety-twetty 17.12.12 18:01 Сейчас в теме
(4)я знаю)вопрос только как из клиентского модуля для управляемого приложения перейти в серверный...и еще если запросы только на серверой стороне- то почему при обычном приложении все срабатывает(теореточески я понимаю так-разделение клиент -сервер обостряется при управляемом приложении)
10. FallenMad 12 17.12.12 19:41 Сейчас в теме
(5) sweety-twetty, на обычном клиенте все исполняется потому что данные клиенту передаются в полном объеме. Думаю вы уже заметили что в управляемом приложении нельзя обратиться через точку по ссылке, например взят и написать "Контрагент.ИНН". Все потому что Управляемые приложения реализуют так называемого тонкого клиента, т.е. клиенту передаются только те данные которые отображены на форме и более ни чего, чтобы все пролезало в узенький интернет канал (где такие еще остались правда не очень понятно).отсюда и разделение функций. т.е. запрос исполянемый на клиенте просто не увидит данных, так как на клиенте их не существует.
11. andrewks 1378 18.12.12 08:08 Сейчас в теме
(5) sweety-twetty,
как из клиентского модуля для управляемого приложения перейти в серверный

переносите исполнение запроса в серверный модуль (галочки сервер и вызов сервера)
6. sweety-twetty 17.12.12 18:07 Сейчас в теме
Добавила вознаграждение + ошибка

{ОбщийМодуль.ДоработкиКлиент.Модуль(475,18)}: Тип не определен (запрос)
Запрос = Новый <<?>>запрос;
Так ругается на все запросы в этом модуле
7. FallenMad 12 17.12.12 19:19 Сейчас в теме
необходимо в серверный модуль перенести запрос, в отдельную экспортную функцию передавая туда нужные параметры если неоьходимо и возвращать от серверной функции значение (структуру, таблицу и т.д.). Например

пишем на в серверном модуле функцию:
функция вернутьКодконтроляПередачи(Пользователь)
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КодыДоступаПользователей.Пользователь,
| КодыДоступаПользователей.КодДоступа,


| КодыДоступаПользователей.КонтрольПередачиДокументов
|ИЗ
| РегистрСведений.КодыДоступаПользователей КАК КодыДоступаПользователей
|ГДЕ
| КодыДоступаПользователей.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Выборка= Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
вовзрат Выборка.КонтрольПередачиДокументов;
Иначе
вовзрат неопределено;
КонецЕсли;

КонецФункции


в клиентской части функция будет выглядеть следующим образом:

Процедура ЧтотоТам(Форма)
Если Форма.ОбработаноЭкономистом = Истина или Форма.ОтражатьВБухгалтерскомУчете = Истина Тогда
ЗначениеВозврата = Серверныймодуль.вернутьКодконтроляПередачи(ПараметрыСеанса.ТекущийПользователь);
Если ЗначениеВозврата <> неопределено тогда
ЭлементыФормы.флОбработаноЭкономистом.Доступность =не ЗначениеВозврата ;
Форма.ТолькоПросмотр = ЗначениеВозврата ;
Иначе
ЭлементыФормы.флОбработаноЭкономистом.Доступность = Ложь;
Форма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры


таким образом 1ое, зачем выполнять запрос если используем его только при определенном условии, т.е. мы внесли выполнение запроса в условие Если;
2.ое запрос выполняется на серверной части и возвращает данные клиентской части.
8. sweety-twetty 17.12.12 19:28 Сейчас в теме
(7)написала почти так же =) спасибо
9. FallenMad 12 17.12.12 19:35 Сейчас в теме
таже ошибка или код похож?
12. sweety-twetty 18.12.12 10:58 Сейчас в теме
(9) пока только код, сегодня тестить будем=)
Оставьте свое сообщение

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