Имя: Пароль:
1C
1С v8
Возврат структуры при помощи функции
0 SerGo-116
 
21.11.14
18:16
Всем привет, помогите новичку

Задача следующая:
Требуется из регистра накоплений РасчетСПоставщиками достать СуммаПриход и СуммаРасход. При помощи запроса получаю значения затем добавляю их в структуру и возвращаю на клиент, но ничего не возвращается хотя и данные есть. Когда требовалось вернуть только СуммаРасход возвращал Массивом, сейчас почему не получается не понимаю...

&НаСервере
Функция ОбновитьРассчетнуюИнформациюНаСервере(Поставщик,Ссылка)

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

    Запрос.УстановитьПараметр("ЗаказПоставщику", Ссылка);
    Запрос.УстановитьПараметр("Поставщик", Поставщик);

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

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

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


&НаКлиенте
Процедура ОбновитьРассчетнуюИнформацию(Команда)
    
    Объект.СуммаОплаты = 0;
    Расчеты = ОбновитьРассчетнуюИнформациюНаСервере(Объект.Поставщик,Объект.Ссылка);
    Для каждого СуммаРасход Из Расчеты Цикл
        Объект.СуммаОплаты = СуммаРасход;    
    КонецЦикла;
    
    Объект.СуммаПоступленияТоваров = 0;
    Расчеты = ОбновитьРассчетнуюИнформациюНаСервере(Объект.Поставщик,Объект.Ссылка);
    Для каждого СуммаПриход Из Расчеты Цикл
        Объект.СуммаПоступленияТоваров = СуммаПриход;    
    КонецЦикла;
1 gornovrom
 
21.11.14
18:18
Возвращай не структуру (которую ты в цикле перезаписываешь), а массив, в который в цикле добавляй структуру данных
2 SerGo-116
 
21.11.14
18:21
Что-то типа такого
МассивСтрокПриложения = Новый Массив;
// далее из некоторого запроса формируется МассивСтрокПриложения

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

Пока Выборка.Следующий() Цикл
      
       СтрокаПриложения = Новый Структура;
       СтрокаПриложения.Вставить("НомерСтроки", Выборка.НомерСтроки);
       СтрокаПриложения.Вставить("ПериодСтоимостиУслуги", Выборка.ПериодСтоимостиУслуги);
       СтрокаПриложения.Вставить("ЗначениеПериодаСтоимостиУслуги", Выборка.ЗначениеПериодаСтоимостиУслуги);
       СтрокаПриложения.Вставить("ВалютаПрайса", Выборка.ВалютаПрайса);
       СтрокаПриложения.Вставить("ЦенаПрайсаВалютаПрайса", Выборка.ЦенаПрайсаВалютаПрайса);
       СтрокаПриложения.Вставить("ЦенаПрайсаВалютаОплаты", Выборка.ЦенаПрайсаВалютаОплаты);
       СтрокаПриложения.Вставить("ЦенаВДокументе", Выборка.ЦенаВДокументе);
              
       МассивСтрокПриложения.Добавить( СтрокаПриложения);
3 SerGo-116
 
21.11.14
18:27
Спасибо все получилось )
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший