Имя: Пароль:
1C
1С v8
Работа с массивами
,
0 Chuvaschow
 
01.06.15
19:16
Здравствуйте!

Подскажите пожалуйста, куда копать.
Есть процедура http://paste.org.ru/?i4865b
При выполнении этой процедуры массив МС получается таким http://savepic.ru/7170864.jpg
Как сделать некий массив НС, который будет свернут по полю "Номер" ? Чтобы видеть суммы по документу в целом?
Или как, на основе этих данных получить суммы по документу (по номеру)?
1 Aceforg
 
01.06.15
19:24
-Дни.Свернуть("День");
+Дни.Свернуть("Код");
2 Chuvaschow
 
01.06.15
21:35
Aceforg

Скажите, вы предлагаете написать еще один цикл Для Каждого День из Дни? Или Дописать к имеющемуся свертыванию еще одно?
Через + ?
3 Chuvaschow
 
01.06.15
21:40
Наверное не "Код", а "Номер", ибо Код - это код номенклатуры из табличной части. А нужно на уровень выше - в целом по документу.
4 Chuvaschow
 
02.06.15
08:17
Up
5 dubraver
 
02.06.15
10:00
о = ТЗ.Выгрузить("Номер,Сумма");
о.Свернуть("Номер","Сумма");
6 Chuvaschow
 
02.06.15
10:22
dubraver

Вы не могли бы привести кусок кода в целом? Дело в том, что если писать еще один цикл, то в том цикле, что уже имеется прописано создание документа в бухгалтерии, и как в него попасть я не знаю...
7 dubraver
 
02.06.15
10:33
(6) куда попасть? вы скажите в общем какую цель преследуете?
8 Chuvaschow
 
02.06.15
10:40
dubraver

Попробую :)

Вот выполняем запрос и сворачиваем таблицу в "День"

................
ТЗ = Запрос.Выполнить().Выгрузить();
    Дни = ТЗ.Скопировать();
    Дни.Свернуть("День");

Вот пошел цикл, в котором для каждого дня мы создаем документ Отчет о розничных продажах

    Для Каждого День Из Дни Цикл
        ЗапросБух = Бух.NewObject("Запрос");
        ЗапросБух.Текст = "Выбрать Ссылка Из Документ.ОтчетОРозничныхПродажах КАК ОР Где Проведен = Истина И Дата Между &НачалоПериода И &КонецПериода";
        ЗапросБух.УстановитьПараметр("НачалоПериода", День.День);
        ЗапросБух.УстановитьПараметр("КонецПериода", КонецДня(День.День));
        Если Не ЗапросБух.Выполнить().Пустой() Тогда
            Продолжить;
        КонецЕсли;

............

Если написать еще один цикл помимо вышенаписанного, то получится два документа будет создаваться. Т.е., видимо, нужно как-то сворачивать в рамках этого цикла
Для Каждого День Из Дни Цикл

Нужно получить таблицу, в которой будет номер документа - сумма по всему документу(без табличных частей,без номенклатуры, в целом). Если я правильно понимаю, такую таблицу нужно сделать в рамках этого цикла. Т.е. массив МС получается свернутым по дню, в нем есть и номер документа, но там табличные части и все в разрезе номенклатура/цена. Свернуть бы этот массив по Номеру документа, просуммировав суммы по табличным частям. Надеюсь понятно объясняю :)
9 bolobol
 
02.06.15
10:58
Если переименовать ТЗ в Дни, то строка:
    Дни = ТЗ.Скопировать();
окажется ненужной.
10 Chuvaschow
 
02.06.15
11:13
Свернул вот так:

НС = ТЗ.Скопировать();
НС.Свернуть("Номер,ВидПродажи","Сумма,ПКО");

Получил http://savepic.ru/7150235.jpg

Получил таблицу значений, не массив. Скажите, можно обрабатывать таблицу значений как и массив циклом

Для Каждого Т Из НС Цикл
11 FireAlex
 
02.06.15
11:38
(10) можно
12 Chuvaschow
 
02.06.15
13:19
Будем пробовать, всем спасибо! Навели на мысли :)
13 Chuvaschow
 
02.06.15
20:30
Все получилось! Еще раз спасибо!