Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:29

Объединение функций с запросом

Автор Алексей_1985_06, 25 июл 2022, 21:44

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Ребят подскажите возможно ли за одно обращение на сервер (запрос) как-то получить значения двух функций?

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

Если ПолучитьАдресДокумента(ПараметрКоманды) = Неопределено Тогда
Возврат
КонецЕсли;

ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов();
ПараметрыДиалога.Заголовок = НСтр("ru = 'Выберите путь для сохранения файла'; en = 'Select the path to save the file'");
НачатьПолучениеФайлаССервера(ПолучитьАдресДокумента(ПараметрКоманды),ПолучитьИмяИФорматФайла(ПараметрКоманды),ПараметрыДиалога);

КонецПроцедуры

Первая:
&НаСервере
Функция ПолучитьАдресДокумента(СсылкаНаФайл)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЭлектронныеДокументыСрезПоследних.НаименованиеДокумента КАК НаименованиеДокумента,
| ЭлектронныеДокументыСрезПоследних.ДанныеФайла КАК ДанныеФайла,
| ЭлектронныеДокументыСрезПоследних.Период КАК Период,
| ЭлектронныеДокументыСрезПоследних.ФорматФайла КАК ФорматФайла
|ИЗ
| РегистрСведений.ЭлектронныеДокументы.СрезПоследних(, НаименованиеДокумента = &Документ) КАК ЭлектронныеДокументыСрезПоследних";

Запрос.УстановитьПараметр("Документ",СсылкаНаФайл);
Результат = Запрос.Выполнить();

Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать(); 
Выборка.Следующий();


Если ПустаяСтрока(Выборка.ФорматФайла) Тогда
Возврат  Неопределено
КонецЕсли;

// Создаем ключ записи Регистра Сведений
Отбор = Новый Структура;
Отбор.Вставить("Период", Выборка.Период);
Отбор.Вставить("НаименованиеДокумента", Выборка.НаименованиеДокумента);
Ключ = РегистрыСведений.ЭлектронныеДокументы.СоздатьКлючЗаписи(Отбор);

АдресФайла = ПолучитьНавигационнуюСсылку(Ключ, "ДанныеФайла");
Возврат АдресФайла;

КонецЕсли;

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

Вторая:
&НаСервере
Функция ПолучитьИмяИФорматФайла(СсылкаНаФайл)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЭлектронныеДокументыСрезПоследних.ФорматФайла КАК ФорматФайла,
| ЭлектронныеДокументыСрезПоследних.НаименованиеДокумента.Наименование КАК НаименованиеДокумента
|ИЗ
| РегистрСведений.ЭлектронныеДокументы.СрезПоследних(, НаименованиеДокумента = &Документ) КАК ЭлектронныеДокументыСрезПоследних";

Запрос.УстановитьПараметр("Документ",СсылкаНаФайл);
Результат = Запрос.Выполнить();

Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать(); 
Выборка.Следующий();
Возврат Выборка.НаименованиеДокумента + Выборка.ФорматФайла
   


LexaK

Алексей_1985_06,
ЦитироватьРебят подскажите возможно ли за одно обращение на сервер (запрос) как-то получить значения двух функций?

да хоть ста!!! вот шаблон вызова (это пример, подставьте свои наименования)
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   
    лкДанные = ПолучитьДанныеССервера(СсылкаНаФайл);

КонецПроцедуры

&НаСервере
Функция ПолучитьДанныеССервера(прПараметр)
//серверная процедура, из нее же вызываем и другие (сколько надо) серверные процедуры
//ответы собираем в то что можно вернуть на тонкий клиент, Структура, Массив, ...
    лкДанные = Новый Структура;
    лкДанные.Вставить("Результат1", ВашаСервернаяПроцедура1(Параметры));
    лкДанные.Вставить("Результат2", ДругаяВашаСервернаяПроцедура2(Параметры));
...
    лкДанные.Вставить("Результат100", СотаяВашаСервернаяПроцедура2(Параметры));

    Возврат лкДанные;
КонецФункции

если помогло нажмите: Спасибо!

Алексей_1985_06

LexaK, Спасибо вам огромное! Буду пробовать!!!!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск