Имя: Пароль:
1C
1С v8
Как получить значение по Кред. счета со всеми известными субконто?
0 mdv92
 
20.09.11
21:26
"ВЫБРАТЬ
       |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
       |    ХозрасчетныйОстатки.Субконто2 КАК Субконто2,
       |    ХозрасчетныйОстатки.Субконто3 КАК Субконто3,
       |    ХозрасчетныйОстатки.СуммаОстатокКт КАК СуммаОстатокКт
       |ИЗ
       |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ГраницаОстатков, Счет = &Счет, ,
       |Субконто1 = &Субконто1 и Субконто2 = &Субконто2 и Субконто3 = &Субконто3) КАК ХозрасчетныйОстатки
       |
       |СГРУППИРОВАТЬ ПО
       |    ХозрасчетныйОстатки.СуммаОстатокКт,
       |    ХозрасчетныйОстатки.Субконто1,
       |    ХозрасчетныйОстатки.Субконто2,
       |    ХозрасчетныйОстатки.Субконто3
       |ИТОГИ ПО
       |    СуммаОстатокКт";

Почему не получилось?
1 zak555
 
20.09.11
21:28
типы аналитик не совпадают ?
2 mdv92
 
20.09.11
21:34
Да вроде совпадают!
3 zak555
 
20.09.11
21:38
может ещё нужно писать : СубконтоКт ?
4 mdv92
 
20.09.11
21:41
Конструктор запроса мне предлагает просто субконто1
5 mdv92
 
20.09.11
21:43
Запрос86.УстановитьПараметр("Субконто1",НазначениеЦелевыхСредств);
       Запрос86.УстановитьПараметр("Субконто2",СтрокаТаблицы.НКО_Проект);
       //Запрос86.УстановитьПараметр("Субконто3",Перечисления.ДвиженияЦелевыхСредств.ДобровольныеВзносы);
       Запрос86.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("86.02"));
       
       
       Запрос86.УстановитьПараметр("ГраницаОстатков", Новый Граница(КонецДня(Дата), ВидГраницы.Включая));
       РезультатЗапроса86 = Запрос86.Выполнить().Выбрать();
       Ост86=0;
       Если  РезультатЗапроса86.Количество()>0 Тогда
           Если РезультатЗапроса86.СуммаОстатокКт>0 Тогда
               Ост86=РезультатЗапроса86.СуммаОстатокКт;

И вот что интересно - РезультатЗапроса86.Количество() - равно 2,
а все значения - "ошибка чтения"
6 zak555
 
20.09.11
21:45
НКО -- НеКоммерсчекиеОрганизации ?
7 mdv92
 
20.09.11
21:47
(6) Ага!
Запрос86.УстановитьПараметр("Субконто1",НазначениеЦелевыхСредств.Ссылка);
- при установке параметров не было .ссылка, наверное, это неправильно. Но не помогло!
8 zak555
 
20.09.11
21:48
что нужно в конечном итоге д?
9 zak555
 
20.09.11
21:54
а так :




"ВЫБРАТЬ
       |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
       |    ХозрасчетныйОстатки.Субконто2 КАК Субконто2,
       |    ХозрасчетныйОстатки.Субконто3 КАК Субконто3,
       |    ХозрасчетныйОстатки.СуммаОстатокКт КАК СуммаОстатокКт
       |ИЗ
       |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ГраницаОстатков, Счет = &Счет, ,) КАК ХозрасчетныйОстатки
       |ГДЕ
       |    Субконто1 = &Субконто1 и Субконто2 = &Субконто2 и Субконто3 = &Субконто3
       |
       |СГРУППИРОВАТЬ ПО
       |    ХозрасчетныйОстатки.СуммаОстатокКт,
       |    ХозрасчетныйОстатки.Субконто1,
       |    ХозрасчетныйОстатки.Субконто2,
       |    ХозрасчетныйОстатки.Субконто3
       |ИТОГИ ПО
       |    СуммаОстатокКт";
10 mdv92
 
20.09.11
22:05
(8) Да всего-то надо проверить - сколько там по кредиту осталось.
(9) Сейчас попробую! Но так же говорят - медленнее!
11 mdv92
 
20.09.11
22:12
Результат-тот же!
Еще вводные - Запрос86.Выполнить().ВЫгрузить()[0] - там какая-то ерунда, а вот Запрос86.Выполнить().ВЫгрузить()[1] - там есть все нужные субконто и сумма!
Как мне уцепить нужный элемент?
12 mdv92
 
20.09.11
22:48
Эх!
13 zak555
 
20.09.11
23:26
что за эх ?
14 mdv92
 
21.09.11
11:26
Вот так и написала - Запрос86.Выполнить().ВЫгрузить()[1]  - оттуда всё беру.
Но так же не делают приличные люди!
15 mdv92
 
21.09.11
12:04
А, предположим, мне все остатки по счету надо в таблицу загрузить? Это как написать, чтоб там не было лишних строк (не полностью заполненных)?
16 unregistered
 
21.09.11
12:12
Убрать ИТОГИ и группировку.

Из виртуальных таблиц данные выдаются уже сгруппированными.
ИТОГИ дают то, что первой строкой в таблице идет итоговая запись, а только второй - детальная.

"ВЫБРАТЬ
|  ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
|  ХозрасчетныйОстатки.Субконто2 КАК Субконто2,
|  ХозрасчетныйОстатки.Субконто3 КАК Субконто3,
|  ХозрасчетныйОстатки.СуммаОстатокКт КАК СуммаОстатокКт
| ИЗ
|  РегистрБухгалтерии.Хозрасчетный.Остатки(&ГраницаОстатков, Счет = &Счет, ,
|Субконто1 = &Субконто1 и Субконто2 = &Субконто2 и Субконто3 = &Субконто3) КАК ХозрасчетныйОстатки";
17 unregistered
 
21.09.11
12:14
Кроме того при использовании группировок надо указывать какие поля группируются, а какие суммируются. По идее СуммаОстатокКт должно быть суммируемым полем, а не группировочным.

но повторюсь: виртальнгые таблицы выдают данные уже сгруппированными по измерениям и значениям субконто.
18 mdv92
 
21.09.11
12:50
(17) Спасибо!
19 mdv92
 
21.09.11
14:03
НайденСтроки=Таб86.НайтиСтроки(Отбор);
Нашла я нужные строки! А как теперь в самой таблице сумму-то изменить? Где взять номер найденной строки?
20 mdv92
 
21.09.11
14:05
Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным.- это я в синтаксисе нашла. А мне бы, наоборот, в самой таблице строку изменить!