Ошибка документ не выбран 1с

v7: Ошибка "Не выбран документ!" при записи документа
   Dark_iNiTro

04.03.12 — 21:26

Код

            Док = СоздатьОбъект(«Документ»);

            Док.ВыбратьПодчиненныеДокументы(,,ТекДок);

            Пока Док.ПолучитьДокумент() = 1 Цикл        

               Если Док.Вид() = «СчетФактура» Тогда  

                  ДокСчФ = Док.ТекущийДокумент();

                  ЕстьСчетФактура = 1;                  

               КонецЕсли;                                

            КонецЦикла;      

           
            // создаем СФ

            Если ЕстьСчетФактура = 0 Тогда                                  

               ДокСчФ = СоздатьОбъект(«Документ.СчетФактура»);

               ДокСчФ.Новый();                                          

            ИначеЕсли ТекДок.ТекущийДокумент().проведен() = 1 Тогда

               // текущиее основание (Документ отгрузка) проведен! — пропускаем цикл

               Продолжить;

            КонецЕсли;  

               
            ….  

                               // заполняем СФ              

           
            ТекДок.ВыбратьСтроки();

            Пока ТекДок.ПолучитьСтроку() = 1 Цикл

            …      

            КонецЦикла;    

           
            //Попытка

            ДокСчФ.Записать();

суть в том, что если есть непроведенная реализация, то перезаписываем счет-фактуру (если есть, если нет то создаем).

Проблема в том что при записи выдается «Не выбран документ!»

   Креатив

1 — 04.03.12 — 21:38

(0)Так в обоих случаях нужно ДокСчФ = СоздатьОбъект(«Документ.СчетФактура»);

А в первом ещё и спозиционироваться на нём.

   Dark_iNiTro

2 — 04.03.12 — 21:44

добавил код перед:

ДокСчФ = СоздатьОбъект(«Документ.СчетФактура»);

               
но все равно не помогает

   viktor_vv

3 — 04.03.12 — 21:46

А ТекДок — это что ? Где присваиваешь ?

   viktor_vv

4 — 04.03.12 — 21:50

И сделай лучше так

               Если Док.Вид() = «СчетФактура» Тогда  

                  ДокСчФСсылка = Док.ТекущийДокумент();

                  ЕстьСчетФактура = 1;                  

               КонецЕсли;    

               ДокСчФ = СоздатьОбъект(«Документ.СчетФактура»);

            Если ЕстьСчетФактура = 0 Тогда                                  

               ДокСчФ.Новый();                                          

            ИначеЕсли ТекДок.ТекущийДокумент().проведен() = 1 Тогда

               // текущиее основание (Документ отгрузка) проведен! — пропускаем цикл

               Продолжить;

            Иначе

                 ДокСчФ.НайтиДокумент(ДокСчФСсылка) ;

            КонецЕсли;

   andrewks

5 — 04.03.12 — 21:52

ДокСчФ = Док.ТекущийДокумент();

заменить на

ДокСчФ = Док;

   Dark_iNiTro

6 — 04.03.12 — 21:59

ДокСчФ.Договор = ТекДок.Договор;

{C:DOCUMENTS AND SETTINGSdarkРАБОЧИЙ СТОЛЗАГРУЗКАДАННЫХИЗ82ТЕСТ.ERT(288)}: Поле агрегатного объекта не обнаружено (Договор)

   Dark_iNiTro

7 — 04.03.12 — 22:55

Хэлп!!!

   BlackSeaCat

8 — 04.03.12 — 23:00

Настоящий программист даже когда тонет, кричит: «F1! F1! F1!!!»

   nicxxx

9 — 05.03.12 — 05:54

телепатирую, в 8.2 поле Договор на самом деле называется ДоговорКонтрагента

   Альбатрос

10 — 05.03.12 — 06:39

(9) Учитывая, что это 7

   Godofsin

11 — 05.03.12 — 06:45

(0) Если ТекДок выбирается в цикле, то переменную ЕстьСчетФактура нужно обнулять.

   Ёпрст

12 — 05.03.12 — 08:31

(0)

            ЕстьСчетФактура =0;

            Док = СоздатьОбъект(«Документ»);

            Док.ВыбратьПодчиненныеДокументы(,,ТекДок);

            Пока Док.ПолучитьДокумент() = 1 Цикл        

               Если Док.Вид() = «СчетФактура» Тогда  

                  ЕстьСчетФактура = 1;                  

                  Прервать;  

               КонецЕсли;                                

            КонецЦикла;      

           
            // создаем СФ

            Если ЕстьСчетФактура = 0 Тогда                                  

               Док = СоздатьОбъект(«Документ.СчетФактура»);

               Док.Новый();                                          

            ИначеЕсли ТекДок.проведен() = 1 Тогда

               // текущиее основание (Документ отгрузка) проведен! — пропускаем цикл

               //Тут тоже бред, если это выборка по ТекДок, то достаточно ТекДок.УстановитьФильтр(0,1);

               Продолжить;

            КонецЕсли;  

            ….  

             // заполняем СФ              

           
            ТекДок.ВыбратьСтроки();

            Пока ТекДок.ПолучитьСтроку() = 1 Цикл

            …      

            КонецЦикла;    

           
            //Попытка

            Док.Записать();

   nicxxx

13 — 05.03.12 — 10:04

(10)а это ни о чем не говорит — ЗАГРУЗКАДАННЫХИЗ82ТЕСТ.ERT ?

   Dark_iNiTro

15 — 05.03.12 — 10:35

Спасибо,  viktor_vv, получилось!

   Ёпрст

16 — 05.03.12 — 10:47

(15) наивный какой..

   Ёпрст

17 — 05.03.12 — 10:47

+16 в (4) лажа, если что

   viktor_vv

18 — 05.03.12 — 10:50

(17) Ну и где там лажа ?

   Ёпрст

19 — 05.03.12 — 10:56

(18) подумай.

   viktor_vv

20 — 05.03.12 — 10:59

(19) Ну еще (11) прощелкал.

   Ёпрст

21 — 05.03.12 — 11:00

(20) еще подумай.

   viktor_vv

22 — 05.03.12 — 11:04

(21) Ну тут в цикле.

            Пока Док.ПолучитьДокумент() = 1 Цикл        

               Если Док.Вид() = «СчетФактура» Тогда  

                  ДокСчФСсылка = Док.ТекущийДокумент();

                  ЕстьСчетФактура = 1;                  

               КонецЕсли;                                

            КонецЦикла;    

Я уже все не копировал, просто кусок показал где поменять.

Че-то ты меня пмо в тупик ставишь :).

  

viktor_vv

23 — 05.03.12 — 11:04

*прямо.

Приветствую Вас, уважаемые форумчане! Помогите понять причину такой ошибки, имею код (прошу заранее простить за непонятность имен переменных — вырвал кусок из большой процедуры), получаю список значений и заполняю реквизита документа Счет-фактуры значениями из списка: Проблема вот в чем, на строке: ДокСФ.Записать, ругается, что: Не выбран документ! От чего ругается, ведь по полученному номеру документ нашелся и надо было всего-то перезаписать его реквизиты? Заранее благодарен!

Вот тут ошибка. Текущийдокумент записывать нельзя.

и Как тогда программно поменять значения реквизитов в найденом ДокСФ, ведь мне нужно заменить не все реквизиты, а некотороые, полагаю, что если сделаю ДокСФ.Новый, тогда создастся и запишется совершенно чистый документ?

можешь если не нашелся не делать ничего…

Если не нашелся, у меня с ним отдельный разговор будет. Проблема моя в том, что документ есть, он нашелся по номеру и теперь бы надо поменять пару его реквизитов. Реквизиты переприсвоены, и теперь пришло время записываться — Записать и облом((( Перезаписать уже найденный хочу.

Тебе в написали как, в написали. Тебе этого недостаточно?

ну и что не хватает то? тебе все уже написали… .ТекущийДокумент делать не надо — это ссылка уже а не объект

и я понял, что в момент правильного нахождения документа следует сделать Новый, будет ли это означать, что все реквизиты уже существующего документа «обнулятся» и запишутся только те, которые я присвою?

Если ты нашел документ, то ссылка на него уже в ДокСФ, если не нашел, тогда новый.

Если такого документа нет, то будет создан НОВЫЙ и ВСЕ реквизиты заново надо заполнить. А существующие останутся такими как и были.

Сделал, как понял. Теперь пишет, что Номер не уникальный!((( Но вопрос совсем не в том, что делать с Новым, а как поменять старый??? …в общем, мой мятежный дух успокоился, когда на мысль навел . В существующем документе реквизиты стали перезаписываться. В итоге имею: Благодарю всех за помощь и участие!!!

еще подумай, зачем менять дату и номер у счет фактуры, если она в базе уже есть. Оно тебе точно надо ?

Да, надо. Реквизиты зависят от документа Поступления.

Ошибка там же, где и обычно….

дело в том что ДокСФ = НайдСФ.ТекущийДокумент возвращает ссылку на документ, а ссылкой ничего низя сделать, а нужн получить ОБЪЕКТ а номер будет ругатся. для того чтобы не ругался на номер нужно ДокСФ.УстановитьНовыйНомер

Вообще-то номер и дата счет фактуры поставщика заполняются в отдельном реквизите, а никак не в номердок и датадок. Номердок и датадок — это наши номер и дата, и грузить их не надо, и у уже существующих документов менять не надо.

Проблема у меня была (да и осталась, наверное) в том, что Ссылку и Объект я не вижу явно, другое дело, к примеру, как в 8.2 получил в запросе именно «ссылку», а от неё с помощью ПолучитьОбъект уже сам «объект», и было явно видно, когда имеем объект, а когда ссылку. В 7.7 же мы это только подразумеваем, догадываемся, узнаем из опыта… (У нас здесь) многое зависит от состояния базы, поставленной задачи и прежнего опыта коллег : )

Тэги: 1С 7.7 и ранее

Комментарии доступны только авторизированным пользователям

0 / 0 / 0

Регистрация: 15.05.2012

Сообщений: 16

1

Не выбран элемент при записи реквизита справочника из обработки проведения документа

02.06.2012, 19:01. Показов 13039. Ответов 12


Требуется из обработки проведения документа внести изменения в справочник,

Процедура ОбработкаПроведения()
Спр = СоздатьОбъект(«Справочник.Автомобили»);
Спр.НайтиЭлемент(Автомобиль); //Автомобиль это реквизит табличной части документа
Спр.ДатаКонАренды = ДатаКонАренды;
Спр.Записать();
КонецПроцедуры

Нажимаю кнопку «Провести» и мне выдает:
Спр.ДатОконАренд = АрендаДо;
{Документ.ВыдачаАвтомобиля.Модуль Документа(9)}: Не выбран элемент!

Уже все перепробовал….

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

02.06.2012, 21:05

2

ДатО или Дата?
Спр.НайтиЭлемент что возвращает? 1?



1



0 / 0 / 0

Регистрация: 15.05.2012

Сообщений: 16

02.06.2012, 21:42

 [ТС]

3

Цитата
Сообщение от duk337
Посмотреть сообщение

ДатО или Дата?
Спр.НайтиЭлемент что возвращает? 1?

Привел код вот в такой вид, ошибки нет но значения реквизитов не меняются…

Процедура ОбработкаПроведения()
ТекДок = ТекущийДокумент();
Спр = СоздатьОбъект(«Справочник.Автомобили»);
Если
Спр.НайтиЭлемент(Автомобиль) = 1 Тогда
Спр.ДатаНачАренды = НомерДок;
Спр.ДатаОконАренды = АрендаДо;
Спр.Записать();
КонецЕсли;
КонецПроцедуры

(((((((



0



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

02.06.2012, 21:47

4

Периодический?
В отладчике в Если попадает?



1



900 / 877 / 8

Регистрация: 15.03.2012

Сообщений: 2,680

02.06.2012, 21:47

5

Ну и правильно, т.к. элемент не найден. Вы значение какого типа передаете в переменной Автомобиль?



1



0 / 0 / 0

Регистрация: 15.05.2012

Сообщений: 16

02.06.2012, 22:12

 [ТС]

6

Цитата
Сообщение от duk337
Посмотреть сообщение

Периодический?
В отладчике в Если попадает?

В отладчике все проходит.



0



0 / 0 / 0

Регистрация: 15.05.2012

Сообщений: 16

02.06.2012, 22:13

 [ТС]

7

Цитата
Сообщение от Fenomen
Посмотреть сообщение

Ну и правильно, т.к. элемент не найден. Вы значение какого типа передаете в переменной Автомобиль?

Тип значения Справочник.Автомобили в табличной части документа.



0



900 / 877 / 8

Регистрация: 15.03.2012

Сообщений: 2,680

02.06.2012, 22:15

8

Цитата
Сообщение от untercover
Посмотреть сообщение

В отладчике все проходит

Так Спр.НайтиЭлемент(Автомобиль) что возвращает? 1 или 0?



1



0 / 0 / 0

Регистрация: 15.05.2012

Сообщений: 16

02.06.2012, 22:21

 [ТС]

9

Цитата
Сообщение от duk337
Посмотреть сообщение

Периодический?
В отладчике в Если попадает?

Прошу прощения, в отладчике Если попадает а вот со строки Спр.НайтиЭлемент(Автомобиль)
перескакивает на КонецЕсли; (((

Добавлено через 1 минуту

Цитата
Сообщение от Fenomen
Посмотреть сообщение

Так Спр.НайтиЭлемент(Автомобиль) что возвращает? 1 или 0?

По сути должен вернуть элемент который указан в реквизите табличной части документа «Автомобиль».



0



900 / 877 / 8

Регистрация: 15.03.2012

Сообщений: 2,680

02.06.2012, 22:25

10

Цитата
Сообщение от untercover
Посмотреть сообщение

По сути должен вернуть элемент который указан в реквизите табличной части документа «Автомобиль».

Возвращает Вам 0, поэтому:

Цитата
Сообщение от untercover
Посмотреть сообщение

в отладчике Если попадает а вот со строки Спр.НайтиЭлемент(Автомобиль)
перескакивает на КонецЕсли;

Возвращаемся обратно:

Цитата
Сообщение от untercover
Посмотреть сообщение

Тип значения Справочник.Автомобили в табличной части документа.

У вас скорее всего переменная Автомобиль пуста, т.к. Вы не спозиционировались на конкретной строке таб. чати.



1



0 / 0 / 0

Регистрация: 15.05.2012

Сообщений: 16

02.06.2012, 22:34

 [ТС]

11

Цитата
Сообщение от Fenomen
Посмотреть сообщение

Возвращает Вам 0, поэтому:

Возвращаемся обратно:

У вас скорее всего переменная Автомобиль пуста, т.к. Вы не спозиционировались на конкретной строке таб. чати.

Подскажите пожалуйста, каким образом это сделать?



0



Fenomen

900 / 877 / 8

Регистрация: 15.03.2012

Сообщений: 2,680

02.06.2012, 22:38

12

Цитата
Сообщение от untercover
Посмотреть сообщение

одскажите пожалуйста, каким образом это сделать?

1C
1
2
3
4
5
6
ВыбратьСтроки()
Пока ПолучитьСтроку()  = 1 Цикл
 
<Ваш код>
 
КонецЦикла



1



untercover

0 / 0 / 0

Регистрация: 15.05.2012

Сообщений: 16

02.06.2012, 22:43

 [ТС]

13

Цитата
Сообщение от Fenomen
Посмотреть сообщение

1C
1
2
3
4
5
6
ВыбратьСтроки()
Пока ПолучитьСтроку()  = 1 Цикл
 
<Ваш код>
 
КонецЦикла

Спасибо огромное! Все получилось )))



0



Понравилась статья? Поделить с друзьями:
  • Ошибка двигателя р0138
  • Ошибка доктора боткина
  • Ошибка детектирования prince of persia warrior
  • Ошибка двигателя 0422
  • Ошибка двигателя р0135