Имя: Пароль:
1C
1C 7.7
v7: Список субконто
0 unlstu
 
27.08.12
13:22
Помогите криворукому нубу. Идет обработка конкретных субконто из списка, но выдаются нулевые значения. УСН 1.3.
       Ж=1;
   Ав=СоздатьОбъект("СписокЗначений");
       Ав.ДобавитьЗначение("60 Транспортная");
   Ав.ДобавитьЗначение("Прочее");
   Сп=СоздатьОбъект("СписокЗначений");
   Пока Ж<2  цикл
   БИ.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности,Ав.ПолучитьЗначение(Ж));
   БИ.ВыполнитьЗапрос(НачГода(ДатаНач),ДатаКон,"90.1");
   БИ.ВыбратьСубконто();  
   если БИ.ПолучитьСубконто()=1 тогда
       Сп.ДобавитьЗначение(БИ.КО());
       иначе Сп.ДобавитьЗначение(0);
       КонецЕсли;
       Ж=Ж+1;
   КонецЦикла;
1 КонецЦикла
 
27.08.12
13:24
Пока БИ.ПолучитьСубконто.... - где?

КонецЦикла;
2 unlstu
 
27.08.12
13:36
(1)А если БИ.ПолучитьСубконто()=1 тогда чем плохо?
3 Zmich
 
27.08.12
13:41
ВидыДеятельности - справочник, надо искать элементы по наименованию.

Ав.ДобавитьЗначение("60 Транспортная"); - этим ты добавляешь строку, а не элемент справочника.
4 chief accountant
 
27.08.12
13:43
(2) А это
Пока Ж<2  цикл

зачем?
5 unlstu
 
27.08.12
13:44
(4)там просто элементов больше 100 это для простоты приведено
6 chief accountant
 
27.08.12
13:46
(5) Какая разница сколько элементов, накуя бухзапрос в цикле?
7 unlstu
 
27.08.12
13:51
(6)Мне нужен доступ к конкретным субконто, создал список. С помощью цикла собираюсь получить доступ к каждому элементу списка. Без цикла идет отбор по всем субконто конкретного вида.
8 miki
 
27.08.12
13:52
(7)Ну и передай свой список, как параметр, в БухЗапрос.
9 unlstu
 
27.08.12
13:54
(8)Список в данном виде тоже игнорируется - отбираются все субконто.
10 miki
 
27.08.12
13:55
(9)если сувать вместо агрегата строки, то, конечно...
11 unlstu
 
27.08.12
13:56
(10)Это мне уже сказали. Лучше подскажите как "агрегат сунуть"
12 Zmich
 
27.08.12
13:59
Ав=СоздатьОбъект("СписокЗначений");
Спр = СоздатьОбъект("Справочник.ВидыДеятельности");
Если Спр.НайтиПоНаименованию("60 Транспортная", 0, 0) = 1 Тогда
  Ав.ДобавитьЗначение(Спр.ТекущийЭлемент());
КонецЕсли;
13 unlstu
 
27.08.12
14:01
(12) Спасибо
14 chief accountant
 
27.08.12
14:08
(7) Для начала типовую поизучай, а то таким кодом как в (0) только студентов смешить
15 unlstu
 
27.08.12
14:44
Теперь выводятся значения только для каждого второго субконто из списка
16 miki
 
27.08.12
14:49
обновленный код покажи
17 unlstu
 
27.08.12
14:52
Ав=СоздатьОбъект("СписокЗначений");
...
См=СоздатьОбъект("СписокЗначений");
   Спр = СоздатьОбъект("Справочник.ВидыДеятельности");
   Пока Ж<22 цикл
       Если Спр.НайтиПоНаименованию(Ав.ПолучитьЗначение(Ж), 0, 0) = 1 Тогда
             См.ДобавитьЗначение(Спр.ТекущийЭлемент());
       КонецЕсли;
     Ж=Ж+1;
     КонецЦикла;
   Сп=СоздатьОбъект("СписокЗначений");
   Ж=1;
   БИ.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности,См);

   БИ.ВыполнитьЗапрос(НачГода(ДатаНач),ДатаКон,"90.1");
   БИ.ВыбратьСубконто();  
   Пока Ж<22  цикл
       
           Если   БИ.ПолучитьСубконто()=1 тогда
               Сп.ДобавитьЗначение(БИ.КО());
           иначе Сп.ДобавитьЗначение(0);
           КонецЕсли;
       
       Ж=Ж+1;
   КонецЦикла;
18 unlstu
 
27.08.12
14:58
Может кто-нибудь подскажет вариант как используя
Пока   БИ.ПолучитьСубконто()=1 цикл ... КонецЦикла;
к субконто не участвующим  сопоставлять БИ.КО()=0.
19 miki
 
27.08.12
14:59
(17)Тебе же в (1) ещё написали юзай Пока БИ.ПолучитьСубконто.
Если критична последовательность, в которой надо получать субконто, то юзай свой Если, но передавай в ПолучитьСубконто конкретное значение субконто.
20 miki
 
27.08.12
15:01
(18)Если бы не СЗ, а ТЗ, то заполнить колонку нулями, а в цикле заполнять через НайтиЗначение. Привязываться к абстрактному номеру в списке - не айс, потому и мучаешься.
21 unlstu
 
27.08.12
15:07
(17) Если ставить конкретное субконто, выдает надпись "Число фильтров субконто превысило допустимое значение!"
22 chief accountant
 
27.08.12
15:13
(18) расшифруй, не догоняю
23 Rie
 
27.08.12
15:15
(21) Так а сколько у тебя этих фильтров субконто?
24 unlstu
 
27.08.12
15:16
(22)Важна последовательность субконто. Если его можно получить, то сопоставить БИ.КО, если нет 0.
То есть на выходе получить вид типа
15
23
5
0
22
7
0
9
25 unlstu
 
27.08.12
15:17
(23) Не знаю. Я нуб.
26 chief accountant
 
27.08.12
15:45
(24) бухзапросом пихаешь обороты в ТЗ, потом перебирашь список на предмет присутствия значений оборотов в ТЗ, если есть, то подставляешь значение, если нет, то "0"
27 unlstu
 
27.08.12
16:01
(26) А каким образом узнать название субконто для которого получен оборот?
28 chief accountant
 
27.08.12
16:09
(27)    
Ит.ВыбратьСубконто();
Пока Ит.ПолучитьСубконто()=1 Цикл
Если Ит.КО()<>0 Тогда
Таб.НоваяСтрока();
Таб.Субконто=Ит.Субконто();  
Таб.КО=Ит.КО();
КонецЕсли;
КонецЦикла;
29 unlstu
 
27.08.12
16:25
Спасибо за помощь и за терпение.