Имя: Пароль:
1C
1C 7.7
v7: Почему так работает запрос по бух итогам?
0 mg-samara
 
16.03.12
12:03
Есть проводка Дт52 Кт 76.11.1
Хочу отобрать суммы только по определеннмы контрагентам. (в коде список значений - сзКонтрагентыИКО) На 76.11.1. есть аналитика Контрагент.

Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты, сзКонтрагентыИКО, 2, 0);
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "51", "76.11.1",, 3,, "С");
Сообщить(Ит.ДО());

Сумма не отбирается

Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, сзКонтрагентыИКО, 2, 0);
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "76.11.1", "51",, 3,, "С");
Сообщить(Ит.КО());

Сумма отбирается..
1 mg-samara
 
16.03.12
12:03
Почему так?
2 YF
 
16.03.12
12:04
(0) В первом случае нужно Ит.КорДО()
3 mg-samara
 
16.03.12
12:04
Если-же отбираю контрагента не по списку значений, а по конкретному элементу справочника - то сумма выдается в обоих случаях...
4 mg-samara
 
16.03.12
12:05
(2) Ит.КорДО() - тоже ничего не выдает..
5 mg-samara
 
16.03.12
12:09
Это похоже на какую-то фичу...
6 mg-samara
 
16.03.12
12:14
Наверное семерку уже все забыли... :-)

Если что - база ДБФ.
7 v4442
 
16.03.12
12:25
используй конструктор
8 v4442
 
16.03.12
12:26
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора, внесенные вручную изменения будут потеряны!!!

//{{ Схема номер 3

Процедура Сформировать()
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты, ВыбКорСубконто1, 2);
   Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "51", "76.1.1",, 3, "Проводка", "СК");
   Таб.ВывестиСекцию("Шапка");
   Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
   Ит.ВыбратьПериоды();
   Пока Ит.ПолучитьПериод() = 1 Цикл
       Дт = Ит.ВыбранаПоДт();
       Кт = Ит.ВыбранаПоКт();
       Опер = Ит.Операция;
       Сд = Ит.СКД() - Ит.СКК();
       Таб.ВывестиСекцию("Строка");
       Если (Опер.Дебет.Счет.Валютный = 1) Или (Опер.Кредит.Счет.Валютный = 1) Тогда
           СдВал = Ит.СКД(2) - Ит.СКК(2);
           Таб.ВывестиСекцию("Валюта");
       КонецЕсли;
       Если (Опер.Дебет.Счет.Количественный = 1) Или (Опер.Кредит.Счет.Количественный = 1) Тогда
           СдКол = Ит.СКД(3) - Ит.СКК(3);
           Таб.ВывестиСекцию("Количество");
       КонецЕсли;
   КонецЦикла;
   Таб.ВывестиСекцию("Подвал");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
КонецПроцедуры
//}}БУХГАЛТЕРСКИЙ ЗАПРОС
9 mg-samara
 
16.03.12
12:28
(8) А мне не нужен отбор по проводкам....
10 mg-samara
 
16.03.12
12:29
Получается что запрос по ДО с обтором по кор субконто не работает, а обратный запрос по КО с отбором по субконто работает..
11 v4442
 
16.03.12
12:31
//{{БУХГАЛТЕРСКИЙ ЗАПРОС(Сформировать)

//Данный фрагмент построен конструктором.
//При повторном использовании конструктора, внесенные вручную изменения будут потеряны!!!

//{{ Схема номер 6
//{{ ДтКт 1111110

Процедура Сформировать()
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты, ВыбКорСубконто1, 2);
   Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "51", "76.1.1",, 2,, "С");
   Таб.ВывестиСекцию("Шапка");
   Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
КонецПроцедуры
//}}БУХГАЛТЕРСКИЙ ЗАПРОС
12 v4442
 
16.03.12
12:34
попробуй
13 mg-samara
 
16.03.12
12:35
(12) Спасибо!
14 mg-samara
 
16.03.12
12:36
Вопрос в другом - твой пример работает, но попробуй замени ВыбКорСубконто1 на список значений и он перестанет работать. :-)
15 v4442
 
16.03.12
12:41
Список не правильно наверно заполняешь
16 mg-samara
 
16.03.12
12:42
А сделаешь запрос

Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ВыбКорСубконто1, 2);
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "76.1.1", "51",, 2,, "С");

Тогда КО - выдает искомую сумму, причем независимо от того что в отборе ВыбКорСубконто1 значение элемента или список значений.
17 mg-samara
 
16.03.12
12:43
(15) Попробуй сам
18 mg-samara
 
16.03.12
12:43
(15)

сзКонтрагентыИКО = СоздатьОбъект("СписокЗначений");
сзКонтрагентыИКО.ДобавитьЗначение(ВыбКорСубконто1.ТекущийЭлемент());
19 mg-samara
 
16.03.12
12:44
(15) Список в одном случае работает, в другом не работает. :-(
20 mg-samara
 
16.03.12
12:45
Блин... неужели из-за этого переписывать отчет придется.. :-(
21 mg-samara
 
16.03.12
14:55
22 zak555
 
16.03.12
15:03
(21) было дело =)
Ошибка? Это не ошибка, это системная функция.