Имя: Пароль:
1C
1C 7.7
v7: Помогите разобраться
, ,
0 Alekzander Wolf
 
04.12.14
05:44
Никогда раньше с 7.7 дело не имел. Ругает на строчку  ДокументКомплектации.НоваяСтрока() Пишет документ не найден


Процедура Сформировать()
    док = СоздатьОбъект("Документ.Реализация");
    док.ВыбратьДокументы(НачДата,КонДата);
    Пока док.ПолучитьДокумент()=1 Цикл
        Если (ВыбКонтрагент = док.Контрагент) и (ВыбСклад=док.Склад) и (док.Проведен()=1) тогда    
        док.ВыбратьСтроки();    
        Пока док.ПолучитьСтроку()=1 Цикл
           ДокументКомплектации = ВыбДокумент.ТекущийДокумент();    
           ДокументКомплектации.НоваяСтрока();  
           ДокументКомплектации.Номенклатура = док.Номенклатура;
           ДокументКомплектации.Количество = док.Количество;
           ДокументКомплектации.Единица = док.Единица;
           ДокументКомплектации.Коэффициент = док.Коэффициент;
        КонецЦикла;  
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
1 Alekzander Wolf
 
04.12.14
05:45
ДокументКомплектации.НоваяСтрока();  
{C:\USERS\АДМИНИСТРАТОР\DESKTOP\ЗАПОЛНЕНИЕ ТЧ ДОКУМЕНТА КОМПЛЕКТАЦИИ.ERT(10)}: Не выбран документ!
2 Любопытная
 
04.12.14
05:47
ВыбДокумент.ТекущийДокумент();
Кто такой ВыбДокумент?
3 Alekzander Wolf
 
04.12.14
05:49
ВыбДокумент я выбираю его в диалоговом окне на форме
4 Alekzander Wolf
 
04.12.14
05:50
Задача проста: из всех документов реализации(подходящие под условия) взять тч и записать ее в выбранный документ комплектации (ВыбДокумент)
5 ifso
 
04.12.14
05:51
(2)
> Кто такой ВыбДокумент?
Любопытная желает познакомиться?)
6 Любопытная
 
04.12.14
05:52
(3) ПО-моему, тогда не надо ТекущийДокумент() делать. Хотя я не уверена.
7 Мигало
 
04.12.14
05:53
ДокументКомплектации = ВыбДокумент.ТекущийДокумент();
заменить на
ДокументКомплектации = СоздатьОбъект("Документ." + ВыбДокумент.Вид());
ДокументКомплектации.НайтиДокумент(ВыбДокумент.ТекущийДокумент());
8 Мигало
 
04.12.14
05:55
+(7) это прописать перед         док.ВыбратьСтроки();
9 ifso
 
04.12.14
05:56
(8) сколько СоздашьОбъектов в этом случае?
10 Alekzander Wolf
 
04.12.14
06:01
ДокументКомплектации = СоздатьОбъект("Документ." + ВыбДокумент.Вид());
ДокументКомплектации.НайтиДокумент(ВыбДокумент.ТекущийДокумент());

я так понимаю это не в цикле нужно писать
11 ASV
 
04.12.14
06:03
(10) еще Записать() после цикла
12 Alekzander Wolf
 
04.12.14
06:09
Всем спасибо, вроде получилось
13 Sserj
 
04.12.14
06:11
Чего то все не того наговорили
:)

Судя по логике это создается документ на отгрузки на основе реализаций. Тогда создание объекта должно быть раньше цикла, примерно так:

Процедура Сформировать()
    
    //тут подготавливаем документ нужного вида
    ДокументКомплектации = СоздатьОбъект("Документ.НужныйВид");
    ДокументКомплектации.Новый();
    //Тут нужно заполнить шапку документа
    //....

    док = СоздатьОбъект("Документ.Реализация");
    док.ВыбратьДокументы(НачДата,КонДата);
    Пока док.ПолучитьДокумент()=1 Цикл
        Если (ВыбКонтрагент = док.Контрагент) и (ВыбСклад=док.Склад) и (док.Проведен()=1) тогда    
        док.ВыбратьСтроки();    
        Пока док.ПолучитьСтроку()=1 Цикл
           ДокументКомплектации = ВыбДокумент.ТекущийДокумент();    
           ДокументКомплектации.НоваяСтрока();  
           ДокументКомплектации.Номенклатура = док.Номенклатура;
           ДокументКомплектации.Количество = док.Количество;
           ДокументКомплектации.Единица = док.Единица;
           ДокументКомплектации.Коэффициент = док.Коэффициент;
        КонецЦикла;  
        КонецЕсли;
    КонецЦикла;

    //После цикла записываем и проводим документ
    ДокументКомплектации.Записать();
    ДокументКомплектации.Провести();
КонецПроцедуры
14 Alekzander Wolf
 
04.12.14
06:13
(13) Да я в принципе так и сделал, спасибо! Просто я с 7.7 вообще не знаком практически
15 Chameleon1980
 
04.12.14
07:46
люди читайте все, а то человек сразу уточнил, что найтиДокумент до цикла надо, а потом еще народ про это пишет