Имя: Пароль:
1C
1C 7.7
v7: Не могу программно добавить строку в документ НоваяСтрока() = Не выбран документ!
0 MiracMC
 
17.03.20
23:51
Приветствую Всех.

То ли лижи не едут......

Пытаюсь добавить строку в программно созданный документ. как то так:

дВып = СоздатьОбъект("Документ.БанковскаяВыписка");
дВып.Новый();
дВып.РСчет = НДС.ТекущийЭлемент();
дВып.СчетУчета = НДС.СчетУчета;
Если дВып.СчетУчета.Выбран() = 0 Тогда
    дВып.СчетУчета = СчетПоКоду(?(дВып.РСчет.Валюта = Гривня, "31.1", "31.2"));
КонецЕсли;
дВып.СчетНДС = дВып.РСчет.СпецСчетНДС;

........
дВып.Фирма = НДС.Фирма;        
дВып.ДатаДок = ДатаДвижения;
дВып.Записать();  
текВып = докВып.ТекущийДокумент();

......


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


Все есть... все находит и выводит... но вот
текВып.НоваяСтрока();

выпадает с ошибкой

текВып.НоваяСтрока();
{ХХХХХХХХХХХХХХХХ}: Не выбран документ!

Я все перепродобавл. как видно из блоку документ есть и записан ранее.
Сообщалки выводят соотвественно

1
Банк. выписка БВ-0000011 (02.03.20)
0

соответственно....
1 mikecool
 
17.03.20
23:53
докВып - а что в нем?
2 mikecool
 
17.03.20
23:56
используй найтидокумент или как там в 7, уже не помню
3 Builder
 
17.03.20
23:57
Ну йо...
текВып = СоздатьОбъект("Документ")
ТекВып.НайтиДокумент(докВып)
ТекВып.НоваяСтрока()
4 MiracMC
 
18.03.20
00:09
(1) ну так там найденный документ этот в итоге
(2) Если докВып.НайтиДокумент(текВып) = 1 Тогда
тут и нахожу его

(3)
Так по сути то это ж и делаю..
просто выше несколько вариантов поиска в чем надо создавать строки.
Один путь = как я показал... СоздатьДокумент() + Новый()
Второй путь ищет нет ли уже такого документа и если находит = тоже делает текВып = Вып.ТекущийДокумент();  (Вып = СоздатьОбъект(...) - это описано отдельно)

Оба метода в ТекВып записывают то что сделали (создали или нашли)...
5 MiracMC
 
18.03.20
00:11
меня смущает то что я вижу все что есть в документе, даже его пустую ТЧ... и ТекВып.Выбран() = 1
но ошибка говорит  

текВып.НоваяСтрока();
{хххххххххххх}: Не выбран документ!
6 Builder
 
18.03.20
00:24
(4) По сути одно, но делаешь не то совсем.
7 Builder
 
18.03.20
00:25
(4) У тебя объект докВып, а пытаещься ты изменить уже ссылку на него - ТекВып
8 Калиостро
 
18.03.20
00:30
(0) Ошибка здесь:
текВып = докВып.ТекущийДокумент();    
текВып.НоваяСтрока();

Вот так должно работать:
Док = СоздатьОбъект("Документ." + ДокВып.Вид());
Док.НайтиДокумент(ДокВып.ТекущийДокумент());
Док.НоваяСтрока();
9 MiracMC
 
18.03.20
00:52
так я типо понимаю это.. но весь фокус в том что это почти месяц работало... а тут перестало(
10 Провинциальный 1сник
 
18.03.20
05:06
.ТекущийДокумент() в семерке - это то же самое, что в восьмерке .Ссылка
Вы можете в ссылке добавлять данные?
11 Bigbro
 
18.03.20
05:29
какой то странный код.
не могло это работать, в том виде что приведены куски кода по крайней мере.
может там что то еще в многоточиях есть
или код уже меняли.
12 Kigo_Kigo
 
18.03.20
07:57
ИМХО
Если докВып.ВыбратьДокументы(текВып.ДатаДок,текВып.ДатаДок) = 1 Тогда
        Если докВып.НайтиДокумент(текВып) = 1 Тогда
            //текВып = докВып.ТекущийДокумент();    
            текВып.НоваяСтрока();
        КонецЕсли;    

попробуй вот так
13 Kigo_Kigo
 
18.03.20
07:58
+ докВып.НоваяСтрока();
14 Kigo_Kigo
 
18.03.20
07:59
у тя как то там все ссылки перемешались
15 Bigbro
 
18.03.20
08:43
да и верхнее если ни к селу с выбором документов если мы только что его создали и с этой же датой.
при таком нагромождении кривого кода лучше выбросить его и написать заново.
16 Kigo_Kigo
 
18.03.20
08:52
(15) Да и вообще нахер вот это все
вот так достаточно

дВып = СоздатьОбъект("Документ.БанковскаяВыписка");
дВып.Новый();
дВып.РСчет = НДС.ТекущийЭлемент();
дВып.СчетУчета = НДС.СчетУчета;
Если дВып.СчетУчета.Выбран() = 0 Тогда
    дВып.СчетУчета = СчетПоКоду(?(дВып.РСчет.Валюта = Гривня, "31.1", "31.2"));
КонецЕсли;
дВып.СчетНДС = дВып.РСчет.СпецСчетНДС;

........
дВып.Фирма = НДС.Фирма;        
дВып.ДатаДок = ДатаДвижения;

Двып.НоваяСтрока();
//********************************
Заполняем колонки ТЧ
//****************************

дВып.Записать();
17 Bigbro
 
18.03.20
08:56
годится)
18 HawkEye
 
18.03.20
09:13
(0) что за привычка, прося найти ошибку в коде не копировать код, а переписывать его с новыми ошибками...

дВып.Записать();  
текВып = докВып.ТекущийДокумент();

что тут такое докВып?
зачем нужна переменная ТекВып?
зачем искать уже имеющийся у тебя объект: докВып.НайтиДокумент(текВып) ????

на кой заворачивать в попытка/исключения НовуюСтроку()?

внятно можешь объяснить что должна делать твоя поделка? почему нельзя добавить строку в документ до его записи?
19 HawkEye
 
18.03.20
09:15
(9) никогда не было и вот опять?