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