Код выдает ошибку "Поле объекта не доступно для записи (Дата)"

1. fedel_lozovski 28.01.22 08:15 Сейчас в теме
Добрый день.
Есть такой код
бухСФВыдан = БазаОле.CreateObject("Документ.СчетФактура");
Выборка =  Документы.СчетФактураВыданный.Выбрать(НачалоДня(Отчет.НачалоПериода), КонецДня(Отчет.КонецПериода)); 
бухСФВыдан.ВыбратьДокументы(НачалоДня(Отчет.НачалоПериода), КонецДня(Отчет.КонецПериода));
Пока Выборка.Следующий()  Цикл
			сообщить(Выборка);
			сообщить(ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Выборка.Номер));
			Если бухСФВыдан.НайтиПоНомеру(ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Выборка.Номер),Выборка.Дата) = 0 Тогда
				сообщить("Не нашли документ - " + Выборка); Продолжить;
			КонецЕсли;
			Если Выборка.ДокументыОснования.Количество() > 1 Тогда
				 	сообщить("У документа несколько оснований (испр. невозможно) - " + Выборка); Продолжить;
			КонецЕсли;
КонецЦикла;
Показать

На втором доке пишет - Поле объекта не доступно для записи (Дата)
Вроде ничего не пытаюсь записывать.
Чего я не вижу?
По теме из базы знаний
Найденные решения
8. comptr 33 28.01.22 08:53 Сейчас в теме
Возможно, в функции НайтиПоНомеру при выходе происходит неявный возврат значений в её параметры (видимо, они передаются туда по ссылке, а не по значению).
Вариант решения: закиньте номер и дату в переменные и в процедуру Найти() передайте переменные, а не реквизиты выборки.
...
Номер = Выборка.Номер;
Дата = Выборка.Дата;
... бухСФВыдан.НайтиПоНомеру(ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер), Дата) ...
...
fedel_lozovski; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. SlavaKron 28.01.22 08:26 Сейчас в теме
(1) По коду ошибки вроде бы нет.
2. TokarevV 30 28.01.22 08:21 Сейчас в теме
У вас тут процедуры, в которых мы не видим, что происходит. Сделайте "остановку по ошибке" и увидите на что ругается.
fedel_lozovski; +1 Ответить
4. fedel_lozovski 28.01.22 08:30 Сейчас в теме
(2)Спасибо. Редко пишу, забываю про остановку по ошибке.
Ругается конкретно на
Если бухСФВыдан.НайтиПоНомеру(ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Выборка.Номер),Выборка.Дата) = 0 Тогда
Но почему?
5. fedel_lozovski 28.01.22 08:32 Сейчас в теме
(4)Если что у меня в коде уже
Если бухСФВыдан.НайтиПоНомеру(Прав(СокрЛП(Выборка.Номер),5),Выборка.Дата) = 0 Тогда
т.е. префиксация объектов ни причем
6. TokarevV 30 28.01.22 08:33 Сейчас в теме
(5) И на эту строку продолжает ругаться?
7. fedel_lozovski 28.01.22 08:33 Сейчас в теме
8. comptr 33 28.01.22 08:53 Сейчас в теме
Возможно, в функции НайтиПоНомеру при выходе происходит неявный возврат значений в её параметры (видимо, они передаются туда по ссылке, а не по значению).
Вариант решения: закиньте номер и дату в переменные и в процедуру Найти() передайте переменные, а не реквизиты выборки.
...
Номер = Выборка.Номер;
Дата = Выборка.Дата;
... бухСФВыдан.НайтиПоНомеру(ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер), Дата) ...
...
fedel_lozovski; +1 Ответить
10. fedel_lozovski 28.01.22 09:05 Сейчас в теме
11. fedel_lozovski 28.01.22 09:45 Сейчас в теме
(8)И да, вы правы, она возвращает значения параметров. дата до - 26.10.2021 12:00:08, дата после 26.10.2021 0:00:00.
Еще раз спасибо, времени бы точно уйму потерял.
9. comptr 33 28.01.22 08:55 Сейчас в теме
А выдаст ли ошибку код "Сообщить(Выборка.Дата);" ?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот