Имя: Пароль:
1C
 
Ошибка "Не выбран документ"
0 Rok
 
03.11.09
11:00
Подскажите плиз, почему выдается ошибка на строке ТекДок.НоваяСтрока(); (!!!Не выбран документ!!!) и как ее исправить

ППП = СоздатьОбъект("Документ.ПлатежноеПоручениеПриход");

Если (ППП.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1) Тогда
   Пока ППП.ПолучитьДокумент() > 0 Цикл
       Если ППП.ПометкаУдаления() = 0 Тогда
           ТекДок = ППП.ТекущийДокумент();
           Если ТекДок.Выбран() = 1 Тогда
               ТекДок.НоваяСтрока();
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
КонецЕсли;
1 ДенисЧ
 
03.11.09
11:01
ТекДок.НайтиДокумент(ППП.ТекущийДокумент());
2 Rok
 
03.11.09
11:02
Спасибо
3 Rok
 
03.11.09
11:07
Теперь говорит, что документ не может быть перепозиционирован!

Если (ППП.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1) Тогда
   Пока ППП.ПолучитьДокумент() > 0 Цикл
       Если ППП.ПометкаУдаления() = 0 Тогда
           ТекДок = ППП.ТекущийДокумент();
           ТекДок.НайтиДокумент(ППП.ТекущийДокумент());
           Если ТекДок.Выбран() = 1 Тогда
               ТекДок.НоваяСтрока();
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
КонецЕсли;
4 Если
 
03.11.09
11:10
ТекДок = ППП.ТекущийДокумент();
накуа???
убери.
5 AeDen
 
03.11.09
11:11
А с ППП без ТекДок никак не работается?
6 Rok
 
03.11.09
11:13
А как должно быть ?
7 Если
 
03.11.09
11:13
(6) а чё ты хочешь то???
8 Шахид
 
03.11.09
11:14
(6) он наверно имеет в виду

Если (ППП.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1) Тогда
   Пока ППП.ПолучитьДокумент() > 0 Цикл
       Если ППП.ПометкаУдаления() = 0 Тогда
           Если ППП.Выбран() = 1 Тогда
               ППП.НоваяСтрока();
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
КонецЕсли;
9 ДенисЧ
 
03.11.09
11:14
ТекДок = СоздатьОбъект("ДОкумент." + ППП.Вид());
ТекДок.НайтиДокумент(ППП.ТекущийДокумент());
10 Если
 
03.11.09
11:16
Если (ППП.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1) Тогда
а условие тут вообще зачем? Если не секрет?
11 Rok
 
03.11.09
11:16
Новую строку добавить, а оно ошибки все выдает.
Мы же сначало выбираем доки за период, проходим по кождому доку, а потом с помощью ТекДок = ППП.ТекущийДокумент(); получаем значение позиционированного дока, вроде так же ?
12 Если
 
03.11.09
11:17
(11) не так!!!
13 Rok
 
03.11.09
11:18
А как ?
14 Если
 
03.11.09
11:19
(13) Шахид тебе в помощь. (8)
15 dk
 
03.11.09
11:35
а в чем сакральный смысл

Если ППП.Выбран() = 1 Тогда

?
16 DrZombi
 
гуру
03.11.09
11:38
(15)А вдруг показалось :)))))
Бывает 1С иллюзии пишет :)))))
17 DrZombi
 
гуру
03.11.09
11:41
(0)Автар если ты пишешь "ППП.ПолучитьДокумент()", то документ ужо есть и он выбран 100%!!

Так же если ты делаешь так "ТекДок = ППП.ТекущийДокумент();", то переменная "ТекДок", не позиционируется на документе, а только позволяет тебе получать данные, на момент времени  операции "ТекДок=ППП.ТекущийДокумент()"

Ну и коль ты пишешь "ППП.ПометкаУдаления()", то лучше еще наверное проверять:
1. А может док проведен
2. А может он не проведен, но табличная часть ужо заполнена :)
18 Rok
 
03.11.09
11:51
Вообщем тогда так, да ?

Если (ППП.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1) Тогда
   Пока ППП.ПолучитьДокумент() > 0 Цикл
        ППП.НоваяСтрока();
   КонецЦикла;
КонецЕсли;
19 Шахид
 
03.11.09
11:52
(18) типо да. только ты еще зачем то на пометку удаления проверял
20 Если
 
03.11.09
11:53
Если (ППП.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1) Тогда
ну зачем тут условие то???
ППП.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
И все.
Если в выборке пусто, то

ППП.ПолучитьДокумент() = 0
и в цикл не пойдет.
21 Шахид
 
03.11.09
11:55
(20) по синтаксису можно.
может он потом захочет что то сделать если докуменов нет
22 Rok
 
03.11.09
11:55
Так если доков нет за этот период, тогда зачем что-либо делать ?
23 Если
 
03.11.09
11:56
(21) Можно, но не нужно.
Еще раз: если доков нет, тогда
ППП.ПолучитьДокумент() = 0
24 dk
 
03.11.09
11:57

Если (ППП.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1) Тогда
   Пока ППП.ПолучитьДокумент() > 0 Цикл
        ППП.НоваяСтрока();
        ППП.Количество = 999;
        Попытка
            ППП.Записать();
            Сообщить("Записан:" + ППП.ТекущийДокумент());
        Исключение
            Сообщить("Облом:" + ППП.ТекущийДокумент());
        КонецПопытки;
   КонецЦикла;
КонецЕсли;

ну и проверку на проведен добавить
25 Шахид
 
03.11.09
11:59
(22) ну малоли.например для контроля.
1 пользователь выгружает данные
2 проверяет.корректирует

Если документов нет то 2 пользователь знает что 1 не сделал свою работу
26 Rok
 
03.11.09
12:02
Спасибо, за помощь )
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс