Имя: Пароль:
1C
 
не удается записать объект. Помогите найти ошибку в коде.
,
0 AlexBor
 
naïve
17.06.15
21:41
8.2 самописная. Есть документ Акт в нем реквизит(ссылканадокумент обращение). И в одном и в друго есть реквизит АР1 но в Акте заполнен. Требуется заполнить этот реквизит и в обращение. Делаю так:

Выборка = Документы.Акт.Выбрать(Дата1,Дата2);
Пока Выборка.Следующий() Цикл
Объект = Выборка.ОснованиеОбращение.Ссылка.ПолучитьОбъект();
выборка.ОснованиеОбращение.АР1=Объект.АР1;
Объект.Записать();
КонецЦикла;

вылетает ошибка Поле объекта недоступно для записи (АР1)
Вопрос как сделать правильно. Да с запросами я не очень поэтому по возможности не предлагать)))
1 Фрэнки
 
17.06.15
21:45
(0) перевернут оператор присвоения.
В Объект.АР1 записать значение из выборки.
А у тебя наоборот.
2 ДенисЧ
 
17.06.15
21:47
выборка.ОснованиеОбращение.АР1 => Объект.АР1;
3 Фрэнки
 
17.06.15
21:49
И второе замечание.
Вообще смысл оператора какой-то странный.
Если мы видим Объект.АР1 и видим выборка.ОснованиеОбращение.АР1 это одно и тоже поле. Т.е. не просто присвоение одного в другое, а просто одно и тоже поле в которое бесполезно и переписывать и сравнивать
4 AlexBor
 
naïve
17.06.15
21:51
(3) Вообще подразумевается что выборка.ОснованиеОбращение.АР1 - это реквизит АР1 в документе обращение
5 AlexBor
 
naïve
17.06.15
21:55
Сделал вот так но помоему что то не так

Выборка = Документы.Акт.Выбрать(Дата1,Дата2);
Пока Выборка.Следующий() Цикл
Объект = Выборка.ОснованиеОбращение.Ссылка.ПолучитьОбъект();
Объект2 = Выборка.Ссылка.ПолучитьОбъект();
Объект2.АР1=выборка.ОснованиеОбращение.АР1;
Объект.Записать();
Сообщить(Строка(Объект.Ссылка))
КонецЦикла;
6 ДенисЧ
 
17.06.15
21:55
(4) У предложенного кода моет подразумеваться только одно. У автора кода проблемы в ДНК. Ничего больше.
7 AlexBor
 
naïve
17.06.15
21:57
(6) ))))
8 Фрэнки
 
17.06.15
21:58
(5) издеваешься?

Объект = Выборка.ОснованиеОбращение.Ссылка.ПолучитьОбъект(); // тут у тебя присваивается справа налево.

Объект2.АР1=выборка.ОснованиеОбращение.АР1; // здесь тоже справа налево

Объект.Записать(); // а здесь записывается объект, который не изменялся.
9 AlexBor
 
naïve
17.06.15
22:06
Вообщем сделал так:
Выборка = Документы.Акт.Выбрать(Дата1,Дата2);
Пока Выборка.Следующий() Цикл
Объект = Выборка.ОснованиеОбращение.Ссылка.ПолучитьОбъект();
Объект2= Выборка.Ссылка.ПолучитьОбъект();
Объект.АР1=Объект2.АР1;
Объект.Записать();
Сообщить(Строка(Объект.Ссылка))
КонецЦикла;
КонецПроцедуры

Начинает нормально работать но на каком то этапе выбрасывет
{Форма.ФормаОтчета.Форма(22)}: Значение не является значением объектного типа (Ссылка)
Объект = Выборка.ОснованиеОбращение.Ссылка.ПолучитьОбъект();
Не знаете что это?
10 ДенисЧ
 
17.06.15
22:08
(9) Я знаю. см (6)
11 Фрэнки
 
17.06.15
22:09
(9) В выборку попадают документы вида Акт, у которых не заполнен реквизит ОснованиеОбращение. В этом случае Свойство ссылка (при попытке проверки) будет равна пустой ссылке, а у пустой ссылки не может быть объекта.
12 1sanekmaloi1
 
17.06.15
22:11
(9) это та самая ошибка о которой писали в (6)
13 Fish
 
17.06.15
22:11
(9) Сделай всё через попытку. Ошибка уйдёт :)
14 Фрэнки
 
17.06.15
22:14
+11 перед использованием метода ПолучитьОбъект() необходимо поставить проверку, что значение ОснованиеОбращение не является пустой ссылкой
или поставить проверку ЗначениеЗаполнено(Выборка.ОснованиеОбращение)
или поставить Попытка ... как это предлагает Fish
15 KUBIK
 
17.06.15
22:16
(0) Открой для себя Отладчик! "Будь мужиком, бл..."©
16 AlexBor
 
naïve
17.06.15
22:19
Сделал вот так
Выборка = Документы.Акт.Выбрать(Дата1,Дата2);
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.ОснованиеОбращение)=Истина Тогда    
Объект = Выборка.ОснованиеОбращение.Ссылка.ПолучитьОбъект();
Объект2= Выборка.Ссылка.ПолучитьОбъект();
Объект.АР1=Объект2.АР1;
Объект.Записать();
Сообщить(Строка(Объект2.Ссылка))
КонецЕсли
КонецЦикла;
КонецПроцедуры

Форма.ФормаОтчета.Форма(25)}: Значение не является значением объектного типа (АР1)
Объект.АР1=Объект2.АР1;
17 Fish
 
17.06.15
22:22
(16) Напиши так:
Выборка = Документы.Акт.Выбрать(Дата1,Дата2);
Пока Выборка.Следующий() Цикл
Попытка
Объект = Выборка.ОснованиеОбращение.Ссылка.ПолучитьОбъект();
Объект2= Выборка.Ссылка.ПолучитьОбъект();
Объект.АР1=Объект2.АР1;
Объект.Записать();
Сообщить(Строка(Объект2.Ссылка))
Исключение;
КонецПопытки;
КонецЦикла;

Даю 146%, что ошибок не будет.
18 AlexBor
 
naïve
17.06.15
22:29
(17) Я поражен но да да и еще раз да
19 Drac0
 
17.06.15
22:29
(0) Ты точно программист? Запутать в двух переменных - это надо суметь...
20 AlexBor
 
naïve
17.06.15
22:29
(17)  Спасибо вам и всем кто принял участие все получилось
21 AlexBor
 
naïve
17.06.15
22:30
(19) нет я не программист там не правильно написано
22 Fish
 
17.06.15
22:31
(20) Только вот вся проблема в том, что отсутствие ошибок ещё не означает правильного результата :)
23 AlexBor
 
naïve
17.06.15
22:32
(22) я в курсе проверил вроде как все встало правильно ....
24 Фрэнки
 
17.06.15
22:33
(23) сделай в исключении сообщить("...") и поставь в нем всякие разные переменные и поля. посмотришь, что же в выборке вызывало ошибку
25 Drac0
 
17.06.15
22:35
(21) Ну, так хоть спокойней :)
26 AlexBor
 
naïve
17.06.15
22:40
(24) Фигурируют две ошибки каких больше а каки меньше это

Форма.ФормаОтчета.Форма(23)}: Значение не является значением объектного типа (Ссылка)
{Форма.ФормаОтчета.Форма(25)}: Поле объекта не обнаружено (АР1)
27 AlexBor
 
naïve
17.06.15
22:41
Ошибка при вызове метода контекста (ПолучитьОбъект): Элемент не выбран!

Тоже встретилась
28 Necessitudo
 
17.06.15
22:43
(27) Поддерживаю коллег, предложивших (6)
29 AlexBor
 
naïve
17.06.15
22:44
(28) Спи спокойно дорогой товарищ
30 Drac0
 
17.06.15
22:56
Вообще, в данной ситуации реально стоит звать специалиста. Даже студенту-лодырю здесь работы на полчаса и 500р.
31 Любопытная
 
18.06.15
05:24
(29)
ВО-первых, чтобы получить значение реквизита API из акта, необязательно получать объект акта, достаточно ссылки.
Во-вторых, надо проверять заполнен ли реквизит ОснованиеОбращение у текущего элемента выборки перед тем, как получать его объект.
В-третьих, используй запросы, чтобы получить то, что хочешь и будет тебе счастье