|
v7: Записать() - Ошибка! - Не выбран документ! | ☑ | ||
---|---|---|---|---|
0
america2013
20.11.13
✎
15:45
|
Приветствую Вас, уважаемые форумчане!
Помогите понять причину такой ошибки, имею код (прошу заранее простить за непонятность имен переменных - вырвал кусок из большой процедуры), получаю список значений и заполняю реквизита документа Счет-фактуры значениями из списка: ЗначениеИзСписка = ""; ДокСФ = СоздатьОбъект("Документ.СчетФактураПоставщика"); НайдСФ = СоздатьОбъект("Документ.СчетФактураПоставщика"); Если НайдСФ.НайтиПоНомеру(ПарамСФ.ПолучитьЗначение(2,ЗначениеИзСписка), НачДата) = 1 Тогда ДокСФ = НайдСФ.ТекущийДокумент(); Иначе ДокСФ.Новый(); КонецЕсли; //////Заполнение реквизитов шапки: ДокСФ.Организация = ПарамДок.Организация; ДокСФ.ДатаДок = ПолучитьДатуИзСтроки(ПарамСФ.ПолучитьЗначение(1,ЗначениеИзСписка)); ДокСФ.НомерДок = ПарамСФ.ПолучитьЗначение(2,ЗначениеИзСписка); ДокСФ.Контрагент = ПарамДок.Контрагент; ДокСФ.СчетФактураНомер = ПарамСФ.ПолучитьЗначение(3,ЗначениеИзСписка); ДокСФ.СчетФактураДата = ПарамСФ.ПолучитьЗначение(4,ЗначениеИзСписка); ДокСФ.Дополнительная = ПарамСФ.ПолучитьЗначение(5,ЗначениеИзСписка); //ПолучитьПризнакСФДополнительная(ПарамСФ.ПолучитьЗначение(5,ЗначениеИзСписка)); //ДокСФ.Подразделение = ""; //ДокСФ.ОригиналОтсутствует = ""; ДокСФ.Записать(); КонецПроцедуры Проблема вот в чем, на строке: ДокСФ.Записать(), ругается, что: Не выбран документ! От чего ругается, ведь по полученному номеру документ нашелся и надо было всего-то перезаписать его реквизиты? Заранее благодарен! |
|||
1
NS
20.11.13
✎
15:46
|
ДокСФ = НайдСФ.ТекущийДокумент();
Вот тут ошибка. Текущийдокумент() записывать нельзя. |
|||
2
NS
20.11.13
✎
15:47
|
Если ДокСФ.НайтиПоНомеру(ПарамСФ.ПолучитьЗначение(2,ЗначениеИзСписка), НачДата) = 1 Тогда
//ДокСФ = НайдСФ.ТекущийДокумент(); Иначе ДокСФ.Новый(); КонецЕсли; |
|||
3
КонецЦикла
20.11.13
✎
15:49
|
Если ДокСФ.НайтиПоНомеру(ПарамСФ.ПолучитьЗначение(2,ЗначениеИзСписка), НачДата) = 0 Тогда
ДокСФ.Новый(); КонецЕсли; |
|||
4
america2013
20.11.13
✎
15:50
|
(1) и (3) Как тогда программно поменять значения реквизитов в найденом ДокСФ, ведь мне нужно заменить не все реквизиты, а некотороые, полагаю, что если сделаю ДокСФ.Новый(), тогда создастся и запишется совершенно чистый документ?
|
|||
5
Господин ПЖ
20.11.13
✎
15:58
|
(4) можешь если не нашелся не делать ничего...
Если ДокСФ.НайтиПоНомеру(ПарамСФ.ПолучитьЗначение(2,ЗначениеИзСписка), НачДата) = 1 Тогда //ДокСФ = НайдСФ.ТекущийДокумент(); Иначе Сообщить("ААААА!!! Мы все умрем!!"); КонецЕсли; |
|||
6
america2013
20.11.13
✎
16:01
|
(5) Если не нашелся, у меня с ним отдельный разговор будет. Проблема моя в том, что документ есть, он нашелся по номеру и теперь бы надо поменять пару его реквизитов. Реквизиты переприсвоены, и теперь пришло время записываться - Записать() и облом((( Перезаписать уже найденный хочу.
|
|||
7
NS
20.11.13
✎
16:03
|
(6) Тебе в (2) написали как, в (3) написали. Тебе этого недостаточно?
|
|||
8
Господин ПЖ
20.11.13
✎
16:04
|
(6) ну и что не хватает то?
тебе все уже написали... .ТекущийДокумент() делать не надо - это ссылка уже а не объект |
|||
9
america2013
20.11.13
✎
16:07
|
(7) и (8) я понял, что в момент правильного нахождения документа следует сделать Новый(), будет ли это означать, что все реквизиты уже существующего документа "обнулятся" и запишутся только те, которые я присвою?
|
|||
10
NS
20.11.13
✎
16:09
|
(9) Если ты нашел документ, то ссылка на него уже в ДокСФ, если не нашел, тогда новый().
|
|||
11
Ёпрст
20.11.13
✎
16:09
|
(9) ты нихрена не понял.
|
|||
12
КонецЦикла
20.11.13
✎
16:13
|
(9) Если такого документа нет, то будет создан НОВЫЙ и ВСЕ реквизиты заново надо заполнить. А существующие останутся такими как и были.
|
|||
13
america2013
20.11.13
✎
16:19
|
(11) Сделал, как понял. Теперь пишет, что Номер не уникальный!(((
Но вопрос совсем не в том, что делать с Новым, а как поменять старый??? ...в общем, мой мятежный дух успокоился, когда на мысль навел (10). В существующем документе реквизиты стали перезаписываться. В итоге имею: ЗначениеИзСписка = ""; ДокСФ = СоздатьОбъект("Документ.СчетФактураПоставщика"); //ДокСФ.НайтиПоНомеру(ПарамСФ.ПолучитьЗначение(2,ЗначениеИзСписка), НачДата); Если ДокСФ.НайтиПоНомеру(ПарамСФ.ПолучитьЗначение(2,ЗначениеИзСписка), НачДата) = 1 Тогда Иначе ДокСФ.Новый(); КонецЕсли; //////Заполнение реквизитов шапки: ДокСФ.Организация = ПарамДок.Организация; ДокСФ.ДатаДок = ПолучитьДатуИзСтроки(ПарамСФ.ПолучитьЗначение(1,ЗначениеИзСписка)); ДокСФ.НомерДок = ПарамСФ.ПолучитьЗначение(2,ЗначениеИзСписка); ДокСФ.Контрагент = ПарамДок.Контрагент; ДокСФ.СчетФактураНомер = ПарамСФ.ПолучитьЗначение(3,ЗначениеИзСписка); ДокСФ.СчетФактураДата = ПарамСФ.ПолучитьЗначение(4,ЗначениеИзСписка); ДокСФ.Дополнительная = ПарамСФ.ПолучитьЗначение(5,ЗначениеИзСписка); //ПолучитьПризнакСФДополнительная(ПарамСФ.ПолучитьЗначение(5,ЗначениеИзСписка)); //ДокСФ.Подразделение = ""; //ДокСФ.ОригиналОтсутствует = ""; ДокСФ.Записать(); Благодарю всех за помощь и участие!!! |
|||
14
Ёпрст
20.11.13
✎
16:25
|
(13) еще подумай, зачем менять дату и номер у счет фактуры, если она в базе уже есть.
Оно тебе точно надо ? |
|||
15
america2013
20.11.13
✎
16:26
|
(14) Да, надо. Реквизиты зависят от документа Поступления.
|
|||
16
Mikeware
20.11.13
✎
16:26
|
Ошибка там же, где и обычно....
|
|||
17
america2013
20.11.13
✎
16:28
|
(16) На что намекаете?
|
|||
18
Tankur
20.11.13
✎
16:54
|
(17) дело в том что ДокСФ = НайдСФ.ТекущийДокумент()
возвращает ссылку на документ, а ссылкой ничего низя сделать, а нужн получить ОБЪЕКТ а номер будет ругатся. для того чтобы не ругался на номер нужно ДокСФ.УстановитьНовыйНомер() |
|||
19
NS
20.11.13
✎
17:03
|
Вообще-то номер и дата счет фактуры поставщика заполняются в отдельном реквизите, а никак не в номердок и датадок.
Номердок и датадок - это наши номер и дата, и грузить их не надо, и у уже существующих документов менять не надо. |
|||
20
america2013
21.11.13
✎
07:33
|
(18) Проблема у меня была (да и осталась, наверное) в том, что Ссылку и Объект я не вижу явно, другое дело, к примеру, как в 8.2 получил в запросе именно "ссылку", а от неё с помощью ПолучитьОбъект() уже сам "объект", и было явно видно, когда имеем объект, а когда ссылку. В 7.7 же мы это только подразумеваем, догадываемся, узнаем из опыта...
(19) (У нас здесь) многое зависит от состояния базы, поставленной задачи и прежнего опыта коллег : ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |