Имя: Пароль:
1C
1C 7.7
v7: Подчиненый справочник
0 work92
 
17.09.12
11:53
Всем прив!!!!!
Возникла проблема подскажите пути решения.........
Функция КоличествоЭлементов(Спр, Влд)
   
   Спр.ИспользоватьВладельца(Влд);
   Спр.ВыбратьЭлементы();
   й=0;
   Пока Спр.ПолучитьЭлемент()=1 Цикл
       й=й+1;
   КонецЦикла;
   Возврат й;
КонецФункции

Процедура Выполнить()
   Контрагенты=СоздатьОбъект("Справочник.Контрогент");
   Списания=СоздатьОбъект("Справочник.Товар");
   Спс=СоздатьОбъект("Справочник.Товар");
   Поставка=СоздатьОбъект("Справочник.Поставк");
   Поставка.НайтиПоНаименованию("Молот",0,1);  
   ТоварПро2=Поставка.ТекущийЭлемент();
   Контрагенты.ВыбратьЭлементы();
   Пока Контрагенты.ПолучитьЭлемент()=1 Цикл
       //Если Контрагенты.ЭтоГруппа()=1 Тогда
       //    Продолжить;
   //    КонецЕсли;
       КоличествоПодчинённых=КоличествоЭлементов(Списания,Контрагенты);
       Списания.ИспользоватьВладельца(Контрагенты);
       Списания.ВыбратьЭлементы();
       Пока Списания.ПолучитьЭлемент() = 1 Цикл
           Если(Списания.Товар=ТоварПро2) и (КоличествоПодчинённых=1) Тогда
               Списания.Сумма=14;
           ИначеЕсли(Списания.Товар=ТоварПро2) и (КоличествоПодчинённых>=2)Тогда
               Списания.Сумма=24;
           Иначе
               Продолжить;
           КонецЕсли;
           Списания.Записать();
           Сообщить("Записано "+Списания.Сумма+" в "+Контрагенты+"::"+Списания);
       КонецЦикла;
   КонецЦикла;
КонецПроцедуры
1 Ёпрст
 
17.09.12
11:53
(0) не озвучена проблема - нет путей решения. Тупик.
2 Ёпрст
 
17.09.12
11:54
КонтрОгент - может, причина в этом ?
3 work92
 
17.09.12
11:55
Как зделать чтоб в подчиненом справочнике
Если(Списания.Товар=ТоварПро2) и (КоличествоПодчинённых=1) Тогда считала количество подчиненых только ТоварПро2 (а у меня считает все подчиненые
)
4 Ёпрст
 
17.09.12
11:56
Ладно, решение:

//КоличествоПодчинённых=КоличествоЭлементов(Списания,Контрагенты);
КоличествоПодчинённых=КоличествоЭлементов(Списания,Контрагенты.ТекущийЭлемент());

//Списания.ИспользоватьВладельца(Контрагенты);
Списания.ИспользоватьВладельца(Контрагенты.ТекущийЭлемент());
5 work92
 
17.09.12
11:57
считала количество подчиненых только ТоварПро2
6 work92
 
17.09.12
11:58
подскажите как решить это
7 Ёпрст
 
17.09.12
12:02
Функция КоличествоЭлементов(Спр, Влд,Товар)
   Спр.ИспользоватьВладельца(Влд);
   Спр.ВыбратьЭлементы();
   й=0;
   Пока Спр.ПолучитьЭлемент()=1 Цикл
      Если Спр.Товар=Товар Тогда
       й=й+1;
      КонецЕсли;
   КонецЦикла;
   Возврат й;
КонецФункции

....

КоличествоПодчинённых=КоличествоЭлементов(Списания,Контрагенты.ТекущийЭлемент(),ТоварПро2);
8 work92
 
17.09.12
12:03
Ёпрст4 СПС
9 Cthulhu
 
17.09.12
13:51
Запрос с фильтром по владельцу - не быстрее перебора?.. вроде первичный индекс...
Ошибка? Это не ошибка, это системная функция.