Имя: Пароль:
1C
1C 7.7
v7: Глючит ВыбратьПодчиненныеДокументы()
, ,
0 DrRaptor
 
01.11.13
11:18
Подскажите, пожалуйста, в чем ошибка:

Процедура ПроводкиПоСделке(ДокСделки,Доля,_ПроведеннаяСумма,_ПроведенныйНДС)
        
    Если ДокСделки.Вид()="ОснованиеСделки" Тогда
        ДкОсн=СоздатьОбъект("Документ.Сделка");
    ИначеЕсли ДокСделки.Вид()="ОснованиеОперации" Тогда
        ДкОсн=СоздатьОбъект("Документ.ОперацияЦБ");
    ИначеЕсли ДокСделки.Вид()="Сделка" Тогда
        ДкОсн=СоздатьОбъект("Документ.Поставка");
    Иначе
        Сообщить("Ошибочно выбран документ "+ДокСделки);
        Возврат;
    КонецЕсли;
    
    ИсполненоШтук=0;
    ПроведеннаяСумма=0;
    ПроведенныйНДС=0;
    СуммарноПроведено=0;
    СуммарноНДС=0;
    
    Если ДокСделки.Завершенность=0 Тогда
        КФЦ=1;
        глИсторияКонвертаций(ДокСделки.ДатаДок,ДатаДок,ДокСделки.ЦБ,,КФЦ);
        ИсполненоШтук=ДокСделки.Количество*КФЦ;
    Иначе
        Если ДкОсн.ВыбратьПодчиненныеДокументы(,,ДокСделки)=1 Тогда
            Пока ДкОсн.ПолучитьДокумент() = 1 Цикл
                Если ДкОсн.Проведен()=1 Тогда
                    КФЦ=1;
                    глИсторияКонвертаций(ДкОсн.ДатаДок,ДатаДок,ДкОсн.ЦБ,,КФЦ);
                    ИсполненоШтук=ИсполненоШтук+(ДкОсн.Количество*КФЦ);
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;


При выполнении выдает:

Если ДкОсн.ВыбратьПодчиненныеДокументы(,,ДокСделки)=1 Тогда
{Документ.Платежи.Модуль Документа(248)}: Объект - документ определенного вида!

Отладчик нормально видит и ДкОсн и ДокСделки. Вид() у них определяется нормально. Документ ДокСделки и любой его атрибут в отладчике при запросе отображаются.
1 lamme
 
01.11.13
11:21
а потому что не так делается выборка по подчиненному документу
2 lamme
 
01.11.13
11:21
вернее - подлчиненных документов )
3 lamme
 
01.11.13
11:22
твое
ДкОсн.ВыбратьПодчиненныеДокументы(,,ДокСделки)
заменить бы на

Д = СоздатьОбъект("Документ")
Д.ВыбратьПодчиненныеДокументы(,,ДокСделки)
4 DrRaptor
 
01.11.13
11:22
А где я ошибся?
5 DrRaptor
 
01.11.13
11:24
А

Д=СоздатьОбъект("Документ.Поставка");
Д.ВыбратьПодчиненныеДокументы(,,ДокСделки);

1С не понимает?
Можно только обобщенно "Документы"?
6 lamme
 
01.11.13
11:24
ну короче как-то так.
Д.ВыбратьПодчиненныеДокументы(,,ДкОсн );
так вроде правильнее будет
ты ж у ДкОсн выбираешь подчиненные документы
7 lamme
 
01.11.13
11:25
(5)
я хз .. просто на этом месте тоже пару раз споткнулся
пока не запомнил - что делается именно так
9 DrRaptor
 
01.11.13
11:28
(6) Я выбираю документы, которые подчинены документу ДокСделки, а не документу ДкОсн. ДкОсн - это и есть подчиненные документы
10 mishaPH
 
модератор
01.11.13
11:30
(9) обвыбирайся. правильно (5) только по общему доку

а далее если надо выбрать подчиненные опр. вида то перебор их с определением Д.Вид() = ??
11 lamme
 
01.11.13
11:31
(9)
ну тогда (3)
Д.ВыбратьПодчиненныеДокументы(,,ДокСделки)
12 lamme
 
01.11.13
11:31
(10)
да.
или запросом
13 mishaPH
 
модератор
01.11.13
11:33
(12) ;) я в курсе, что надо перебирать. это я автору пример написал.
14 Ыщъ
 
01.11.13
11:44
(5) Подчиненные могут быть разных видов. Поэтому так.
15 DrRaptor
 
01.11.13
11:55
Спасибо - так оно и есть.
Если делаешь Д.ВыбратьДокументы() то Д может быть конкретного вида, а если Д.ВыбратьПодчиненныеДокументы(), то только общего вида "Документы".
16 Ыщъ
 
01.11.13
11:57
(15) Далле как (10) подсказал

Если Д.Вид() = "ДокСделки"