8.х Данные из запроса

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем maximsobaka, 22 май 2015.

  1. TopicStarter Overlay
    maximsobaka
    Offline

    maximsobaka Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    67
    Симпатии:
    0
    Баллы:
    26
    Привет Всем !!! Помогите разобраться , пытаюсь переделать бонусную программу В УТ11.
    Ни как не могу вытянуть из программы сумму понусов по контрагенту , выводит таблицу значений , что с ней делать дальше не пойму , помогите разораться, Пожалста!!!
    Что бы подтянуть бонусы создал реквизит и пытаюсь в него получить сумму бонусов , написал вот такой код:
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |СУММА(БонусныеБаллы.Начислено) КАК Начислено
    |ИЗ
    |РегистрНакопления.БонусныеБаллы КАК БонусныеБаллы
    |ГДЕ
    |БонусныеБаллы.Партнер = &партнер
    |УПОРЯДОЧИТЬ ПО
    |Начислено" ;
    Запрос.УстановитьПараметр("партнер",Объект.Партнер);
    результат = Запрос.Выполнить();
    Начислено = Результат.Выгрузить();
    Объект.СуммаБонусов = Начислено;
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Используйте виртуальную таблицу - остатки.
  3. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Код:
    Если НЕ Результат.Пустой() Тогда
          Объект.СуммаБонусов = Начислено[0].Начислено;
    КонецЕсли;
    
    --- Объединение сообщений, 22 май 2015 ---
    тавтология конечно, но вы выбрали такой путь
  4. TopicStarter Overlay
    maximsobaka
    Offline

    maximsobaka Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    67
    Симпатии:
    0
    Баллы:
    26
    Если использовать виртуальную таблице , то как из нее выдернуть данные?
  5. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    в запросе "РегистрНакопления.БонусныеБаллы.Остатки(&ДатаСреза, Партнер = &партнер) КАК БонусныеБаллы"
    и дополнительно установить параметр запроса - дата среза
    --- Объединение сообщений, 22 май 2015 ---
    в этом случае, "ГДЕ" в запросе не нужно
  6. TopicStarter Overlay
    maximsobaka
    Offline

    maximsobaka Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    67
    Симпатии:
    0
    Баллы:
    26
    У меня сам запрос отрабатывает как надо , Но как получить значение в реквизит не понятно
  7. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    см пост №3
    --- Объединение сообщений, 22 май 2015 ---
    Если у вас выборка по запросу не пустая, то в "Начислено" вы получили таблицу значений, поскольку, согласно вашему запросу, всегда получается только одна строка, ее и получим из таблицы значений.
    В полученной таблице есть ваша колонка, та которую вы указали в запросе как имя поля - "Начислено", соответственно и получаем из строки значение в этой колонке - "Начислено[0].Начислено"
    --- Объединение сообщений, 22 май 2015 ---
    я ж говорю товталогия
  8. Speaker1982
    Offline

    Speaker1982 Опытный в 1С

    Регистрация:
    12 май 2011
    Сообщения:
    223
    Симпатии:
    5
    Баллы:
    29
    некрасиво, но под рукой нет УТ что бы написать нормальный вариант, будет работать и так, но лучше срезпоследних делать

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |СУММА(БонусныеБаллы.Начислено) КАК Начислено
    |ИЗ
    |РегистрНакопления.БонусныеБаллы КАК БонусныеБаллы
    |ГДЕ
    |БонусныеБаллы.Партнер = &партнер
    |УПОРЯДОЧИТЬ ПО
    |Начислено" ;
    Запрос.УстановитьПараметр("партнер",Объект.Партнер);
    результат = Запрос.Выполнить().Выбрать ();
    суммабонуов = 0;
    Пока результат.Следующий () Цикл
    суммабонусов = суммабонусов + результат.Начислено;
    КонецЦикла;

    Объект.СуммаБонусов = суммабонусов ;
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Для таких целей специально придуманы виртуальные таблицы
    --- Объединение сообщений, 22 май 2015 ---
    Причем ваш код с ошибками, ибо записи в ресурсах хранятся как положительные, а не отрицательные.
    Так что садитесь - два!
  10. TopicStarter Overlay
    maximsobaka
    Offline

    maximsobaka Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    67
    Симпатии:
    0
    Баллы:
    26
    Огромное Спасибо, Все получилось!!!!
    --- Объединение сообщений, 22 май 2015 ---
    Я зная , что пока вытягиваю только поступление в регистр, сейчас продолжу разнице между приходом и расходом делать!!
  11. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.978
    Симпатии:
    397
    Баллы:
    104
    Не факт. Про сторнирование не забывай. :)
  12. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ну да, иногда бывает и такое :)

Поделиться этой страницей