7.7 Помогите начинающему с запросами

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем shurik_klgd, 5 мар 2007.

  1. TopicStarter Overlay
    shurik_klgd
    Offline

    shurik_klgd

    Регистрация:
    6 окт 2006
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Типовая конфигурация Торговля и Склад 7.70.944.
    Впрос №1. Почему запрос
    Код:
         ТекстЗапроса = "
    |Ном = Регистр.ОстаткиТМЦ.Номенклатура;
    |Скл = Регистр.ОстаткиТМЦ.Склад;
    |Колво = Регистр.ОстаткиТМЦ.Количество;
    |";
    Запрос.Выгрузить(Табл,1,0);  
    Сообщить("Выгружено строк:"+Строка(Табл.КоличествоСтрок()));
    
    всегда возвращает одну строчку (последнюю запись в регистр)? А сделав группировку, например, по номенлатуре мы уже получаем не одну строчку.

    Вопрос №2. В типовую конфу добавил Справочник.КартыСкидок, добавил Регистр.СуммыПоКарте (Измерение КартаСкидок=Справочник.КартыСкидок, Ресурс Сумма). Пишем запрос:
    Код:
    ТекстЗапроса = "//{{ЗАПРОС(СуммаНаКарте)
    |Период с '01.01.1980' по '05.03.2007';
    |РегКарта = Регистр.СуммыПоКарте.КартаСкидок;
    |РегСумма = Регистр.СуммыПоКарте.Сумма;
    |Функция СуммаПоКарте = Сумма(РегСумма);
    |Группировка РегКарта;
    |"//}}ЗАПРОС
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Сообщить("запрос не выполнен"); 
    Иначе                      
    Запрос.Выгрузить(ТаблЗнач,0,0);  
    Сообщить("Выгружено строк:"+Строка(таблЗнач.КоличествоСтрок()));
    ТаблЗнач.ВыбратьСтроки();
    Пока таблЗнач.ПолучитьСтроку() = 1 Цикл   
    Сообщить(ТаблЗнач.РегКарта+" "+Строка(ТаблЗнач.СуммаПоКарте));
    КонецЦикла;       
    КонецЕсли;
    
    В результате не выводит ни одного значения.

    Делаем по другому:
    Код:
    Функция глПолучитьПроцентПоКарте(Карта)
    ТаблСумм = СоздатьОбъект("ТаблицаЗначений");
    РегНакСкидки = СоздатьОбъект("Регистр.СуммыПоКарте");
    РегНакСкидки.УстановитьЗначениеФильтра("КартаСкидок",Карта,1);
    РегНакСкидки.ВыгрузитьИтоги(ТаблСумм,1,1);
    ТаблСумм.ВыбратьСтроки();
    Пока ТаблСумм.ПолучитьСтроку()=1 Цикл
    Сообщить(ТаблСумм.Сумма);
    КонецЦикла;    
    КонецФункция;
    
    В результате на выходе есть значения.
    Внимание вопрос: ПОПРАВЬТЕ ЧТО НЕПРАВИЛЬНО В ЗАПРОСЕ...
  2. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    По первому запросу: ты не указываешь период, значит и дата берется как Точка актуальности, не указываешь никакую группировку, т.е. не разбиваешь итог, вот и выводит только одну строку.
    По второму запросу: для регистров вместо функции Сумма нужно использовать функцию КонОст
  3. TopicStarter Overlay
    shurik_klgd
    Offline

    shurik_klgd

    Регистрация:
    6 окт 2006
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Спасибо, с Наступющим вас :)

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