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

Таблица значений в запросе

Автор trialex3, 01 июн 2018, 12:09

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

trialex3

Добрый день! Есть документ с табличной частью. В табличной части есть колонка Характеристика и количество. Сделал запрос который должен возвращать значение ячейки количество в нужном заказе и от нужной характеристики.
        ВЫБРАТЬ
ЗаказНаПроизводство.Продукция.(
Количество
)    КАК Кол
ИЗ
Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
ГДЕ
ЗаказНаПроизводство.Ссылка = &ЗаказНаПроизводство1
И ЗаказНаПроизводство.Продукция.ХарактеристикаНоменклатуры.Ссылка = &Характеристика1

Но возвращается не число а таблица значений
скрин
Как сделать, что бы возвращалось число?

Ну или как взять из этой таблицы значение, если вот так не получается
ВыборкаДетальныеЗаписи.Следующий();
ТабЗнач = ВыборкаДетальныеЗаписи.Кол;
Возврат ТабЗнач[0].Количество;



buketov.av

можно весь код, пожалуйста?

trialex3

Цитата: buketov.av от 01 июн 2018, 14:35
можно весь код, пожалуйста?
вот функция которая должна возвратить число
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(АР_КодыИзделий.Код) КАК Код
|ИЗ
| Справочник.АР_КодыИзделий КАК АР_КодыИзделий
|ГДЕ
| АР_КодыИзделий.ЗаказНаПроизводство = &ЗаказНаПроизводство2
| И АР_КодыИзделий.ХарактеристикаСсылка = &Характеристика2";

Запрос.УстановитьПараметр("ЗаказНаПроизводство2", ЗаказНаПроизводство2);
Запрос.УстановитьПараметр("Характеристика2", Характеристика2);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Если Результат.Пустой() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Количество уже сделанных изделий не найдено!";
Сообщение.Сообщить();
Иначе
ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.Код;
КонецЕсли;

buketov.av

Цитата: trialex3 от 01 июн 2018, 14:51Иначе ВыборкаДетальныеЗаписи.Следующий(); Возврат ВыборкаДетальныеЗаписи.Код; КонецЕсли;

может так получится:
в серверной функции "ПолучитьКоличествоНаСервере();"

   Иначе
      ВыборкаДетальныеЗаписи.Следующий();
      Количество =  ВыборкаДетальныеЗаписи.ПолучаемоеКоличество;
   КонецЕсли;
   
   Возврат Количество;

а в клиентской процедуре

Объект.Количество = ПолучитьКоличествоНаСервере();


trialex3

Цитата: buketov.av от 01 июн 2018, 15:13
Цитата: trialex3 от 01 июн 2018, 14:51Иначе ВыборкаДетальныеЗаписи.Следующий(); Возврат ВыборкаДетальныеЗаписи.Код; КонецЕсли;

может так получится:
в серверной функции "ПолучитьКоличествоНаСервере();"

   Иначе
      ВыборкаДетальныеЗаписи.Следующий();
      Количество =  ВыборкаДетальныеЗаписи.ПолучаемоеКоличество;
   КонецЕсли;
   
   Возврат Количество;

а в клиентской процедуре

Объект.Количество = ПолучитьКоличествоНаСервере();
А если мне в результате запроса дается таблицаЗначений с одним значением и одной колонкой как мне получить это значение?

buketov.av


trialex3


buketov.av


trialex3

Прошу прощения не тот запрос скинул(( 2 похожих.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказНаПроизводство.Продукция.(
| Количество
| )    КАК Кол
|ИЗ
| Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
|ГДЕ
| ЗаказНаПроизводство.Ссылка = &ЗаказНаПроизводство1
| И ЗаказНаПроизводство.Продукция.ХарактеристикаНоменклатуры.Ссылка = &Характеристика1";

Запрос.УстановитьПараметр("ЗаказНаПроизводство1", ЗаказНаПроизводство1);
Запрос.УстановитьПараметр("Характеристика1", Характеристика1);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

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

Вот в данном случае Переменная "ТаблицаЗначений" имеет тип Таблица значений и если просто попытатся ее вернуть но выскакивает ошибка;

AIFrame

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказНаПроизводство.Продукция.(
        |        Количество
        |    )    КАК Кол
        |ИЗ
        |    Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
        |ГДЕ
        |    ЗаказНаПроизводство.Ссылка = &ЗаказНаПроизводство1
        |    И ЗаказНаПроизводство.Продукция.ХарактеристикаНоменклатуры.Ссылка = &Характеристика1";

    Запрос.УстановитьПараметр("ЗаказНаПроизводство1", ЗаказНаПроизводство1);
    Запрос.УстановитьПараметр("Характеристика1", Характеристика1);


    Результат = Запрос.Выполнить();
Сообщение = Новый СообщениеПользователю;

Если Результат.Пустой() Тогда
    Сообщение.Текст = "Данные по общему количеству изделий в заказе не найдены!";
Сообщение.Сообщить();
Иначе
ТЧ_Запрос = Результат.Выгрузить();
ИНД = 0;
Для Каждого СтрокаТЧ ИЗ ТЧ_Запрос Цикл
Кол = СтрокаТЧ.Кол.Итог("Количество");
    Сообщение.Текст = "Номер строки ТЧ_Запрос: " + ИНД + Символы.ПС
+ "Количество ТЧ (СтрокаТЧ.Кол) в Строке ТЧ_Запрос: " + СтрокаТЧ.Кол.Количество() + Символы.ПС
+ "ИтогТЧ (СтрокаТЧ.Кол) в Строке ТЧ_Запрос: " + Кол + Символы.ПС
+ "-----------------";
Сообщение.Сообщить();
ИНД = ИНД + 1;
КонецЦикла;
КонецЕсли;

Просто попробуй понять, какого монстра ты создал ;)
Отладчик в помощь, кстати.

Теги:  

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

Рейтинг@Mail.ru

Поиск