Не записываются программно реквизиты документа

1. studius 30.03.19 11:42 Сейчас в теме
Всем добрый день.
Пишу обработку для пакетного изменения реквизитов документов (старая конфигурация на обычных формах). Вроде бы простейшая задача, однако почему-то у меня не срабатывает замена. Вот код:
Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЗаявкаНаРасходДС.Ссылка КАК Документ,
	|	ЗаявкаНаРасходДС.ДатаПлатежа КАК ДатаПлатежа
	|	ИЗ
	|	Документ.ЗаявкаНаРасходДС КАК ЗаявкаНаРасходДС
	|ГДЕ
	|	ЗаявкаНаРасходДС.ДатаПлатежа МЕЖДУ &ДатаНачала И &ДатаОкончания
	|	И ЗаявкаНаРасходДС.Организация = &Организация";
	Запрос.УстановитьПараметр("ДатаНачала",НачПериода);
	Запрос.УстановитьПараметр("ДатаОкончания",КонПериода);
	Запрос.УстановитьПараметр("Организация",Организация);
	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	Пока Выборка.Следующий() ЦИкл
		ДокОбъект = Выборка.Документ.ПолучитьОбъект();
	        ДокОбъект.ДатаПлатежа = Дата;
		ДокОбъект.Записать();
	КонецЦикла;
    Предупреждение ("Замена произведена");
Показать

Проверяю после обработки - какой была дата до обработки, такой и осталась. Вручную все изменяется. Не могу понять, почему программно не изменяется. Обработка Групповое изменение справочников и реквизитов не нужна, моя обработка работает всего с одним видом документа и несколькими реквизитами.
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. Xershi 1484 30.03.19 14:22 Сейчас в теме
(1) не описано в каком контексте код выполняется.
Плюс нет вводных данных по переменным.
И затем нет кода который выполняется при записи документа. Гадать на кофейной гуще можно все что угодно.
kapibarich2000; +1
10. studius 30.03.19 15:10 Сейчас в теме
(9)Это обычное приложение,а не управляемое. С крдом при записи сейчас копаюсь. Тут почти десять функций используется. Ищу причину отказа записи.
+
11. Xershi 1484 30.03.19 16:49 Сейчас в теме
(10) в обычном приложении тоже есть контекст, если вы не знали.
Включай замер производительности и анализируй.
Скорее всего проверка перед записью отменяет запись, но тогда бы была бы ошибка.
+
12. studius 30.03.19 16:57 Сейчас в теме
(11) конечно не знаю. Я еще сильно плаваю в 1с. По поводу ошибки - тоже так думал, что выскочит. Насчет групповой обработки тоже был неправ - она также не меняет этот чертов реквизит. Вручную меняется все нормально, программно - не хочет и все. Срабатывает событие перед Записью и при Записи. Вроде бы все нормально, но не записывает программно. Отладчиком ни черта не могу отловить, в чем проблема.
+
13. Xershi 1484 30.03.19 16:59 Сейчас в теме
(12) как минимум проблема в контексте.
Используете клиентские процедуры возможно в серверном коде.
После того как запишет, что отладчик показывает?
+
15. studius 30.03.19 17:07 Сейчас в теме
(13) Простите за глупый вопрос, а что он должен показать? Я все еще ламер в программировании на 1с и не всегда эффективно использую инструменты разработки. Смотрел на стек вызовов. В вызываемых функциях и процедурах Отказ везде стоит в значении Ложь. По идее, должен документ записаться. Но, по ходу, я не там еще и смотрю
+
34. Xershi 1484 31.03.19 09:30 Сейчас в теме
(15) как минимум посмотреть что дата поменялась.
+
14. spacecraft 30.03.19 17:06 Сейчас в теме
(1) какое сообщение будет выведено?
Результат = Запрос.Выполнить();
Сообщить(Результат.Пустой());
Выборка = Результат.Выбрать();
+
16. studius 30.03.19 17:09 Сейчас в теме
(14)
Результат = Запрос.Выполнить();
Сообщить(Результат.Пустой());
Выборка = Результат.Выбрать();

Нет
+
18. spacecraft 30.03.19 17:12 Сейчас в теме
(16) хорошо. следующий код?
ДокОбъект.ДатаПлатежа = Дата;
ДокОбъект.Записать();
Сообщить("" + Дата + " = " + ДокОбъект.ДатаПлатежа" );
+
19. studius 30.03.19 17:19 Сейчас в теме
(18)
02.03.2019 0:00:00 = 07.09.2018 0:00:00
02.03.2019 0:00:00 = 07.09.2018 0:00:00
Два документа выбирал
+
26. spacecraft 30.03.19 17:32 Сейчас в теме
(19) а так?
ДокОбъект.ДатаПлатежа = Дата;
Сообщить("" + Дата + " = " + ДокОбъект.ДатаПлатежа" );
ДокОбъект.Записать();
+
28. studius 30.03.19 17:39 Сейчас в теме
(26)
ДокОбъект.ДатаПлатежа = Дата;
Сообщить("" + Дата + " = " + ДокОбъект.ДатаПлатежа" );
ДокОбъект.Записать();

(26)
01.03.2019 0:00:00 = 01.03.2019 0:00:00
01.03.2019 0:00:00 = 01.03.2019 0:00:00
+
17. studius 30.03.19 17:11 Сейчас в теме
(14), я тоже подумал вначале на выборку, но потом уже написал маленькую процедурку, изменяющую эту дату объектным способом. На одном документе проще было отслеживать. Но все тоже самое.
+
2. accounting_cons 755 30.03.19 12:04 Сейчас в теме
Посмотреть в отладчике нельзя? Чему равна дата, например? Из текста непонятно.
+
3. studius 30.03.19 12:07 Сейчас в теме
(2)В отладчике все нормально присваивается.
Дата берется из из одноименного поля на форме. На нее как раз и нужно менять
+
4. leosoft 165 30.03.19 12:38 Сейчас в теме
Программа контролирует и не дает записать дату по какой-то причине.
Если хотите без контроля записывать - надо включить режим записи "ПереносДанных"
+
5. leosoft 165 30.03.19 12:40 Сейчас в теме
Уточняю ДокОбъект.ОбменДанными.Загрузка = Истина
+
6. studius 30.03.19 12:52 Сейчас в теме
(5)
ДокОбъект.ОбменДанными.Загрузка = Истина

Не сработало (.
Уже и в Попытку заворачивал присваивание реквизита - все равно запись не срабатывает.
+
7. leosoft 165 30.03.19 12:55 Сейчас в теме
ну тогда можно посмотреть подписки на события или отладчиком смотреть
как происходит запись
+
8. studius 30.03.19 13:00 Сейчас в теме
(7)проверил стандартной обработкой группового изменения справочников и документов - она все изменяет как надо. Ладно, попробую отловить отладчиком событие записи. Спасибо за подсказку.
+
20. acanta 30.03.19 17:22 Сейчас в теме
Галочка дата платежа отличается от даты документа в конфигурации предусмотрена?
+
21. studius 30.03.19 17:26 Сейчас в теме
(20) ее нет вообще. Просто реквизит с типом дата. Вручную можно хоть 3000 год внести, программе все равно.
+
22. uriah 17 30.03.19 17:26 Сейчас в теме
А дата запрета редактирования не установлена случаем?
+
23. studius 30.03.19 17:29 Сейчас в теме
(22) в тестовой базе нет. Да и если бы стояла, то и когда вручную вносил бы изменения и записывал документ, он бы сразу и ругнулся, разве не так?
acanta; +1
24. studius 30.03.19 17:30 Сейчас в теме
Эти чертовы рарусовские конфигурации точно для любителей головоломок. На УТшке моя обработка работает как надо. На этой рарусовской - бесполезно
+
27. spacecraft 30.03.19 17:38 Сейчас в теме
(24) возможно где-то в подписке идет проверка на проведенный документ и не дает его изменять. Рарус это любит.
Можно попробовать так:
ДокОбъект = Выборка.Документ.ПолучитьОбъект();
ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
ДокОбъект.ДатаПлатежа = Дата;
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
acanta; +1
29. studius 30.03.19 17:44 Сейчас в теме
(27) Нет, ничего не дало. Не хочет изменять дату, хоть ты тресни.
+
30. spacecraft 30.03.19 17:46 Сейчас в теме
(29)тогда только по замеру производительности искать все подписки и их анализировать. И не просто на Отказ.
+
31. studius 30.03.19 17:47 Сейчас в теме
(30) хорошо, спасибо, попробую поискать.
+
32. uriah 17 30.03.19 18:12 Сейчас в теме
(24)А что за конфигурация?
+
35. studius 31.03.19 10:43 Сейчас в теме
(32) Альфа авто пятерка
+
25. acanta 30.03.19 17:32 Сейчас в теме
В таком случае нужен замер производительности.
+
33. leosoft 165 30.03.19 19:14 Сейчас в теме
Я же написал - ДокОбъект.ОбменДанными.Загрузка = Истина
снимает все проверки т.к. используется при переброске данных
из других программ.
Если это не срабатывает - значит запрос не те документы выдает!
А при групповой замене - Вы правильные выбираете. Так что это
проверить надо бы тоже.
+
36. studius 31.03.19 11:22 Сейчас в теме
(33) программно я отдельный документ получил через метод НайтиПоНомеру(Номер).ПолучитьОбъект();. Результат тот же самый.
Групповая обработка точно так же не изменяет этот чертов реквизит. Хотя вручную он спокойно меняется.
Подписок на события у этого документа нет. Через замер производительности все пересмотрел. Называется, сложно быть дураком.
+
37. studius 31.03.19 11:55 Сейчас в теме
Все, разобрался, что не давало этой заразе записываться. Спасибо всем за подсказки и советы. Вопрос решен
+
39. YannikAlx 43 01.04.19 09:29 Сейчас в теме
(37)Тут народ головы ломал вместе с вами, хоть бы слово написал о найденной причине.....
acanta; cherptat; CyberBob; alexcneo; +4
40. bimy22 01.04.19 13:23 Сейчас в теме
(39) Соглашусь, как проблему решили?
+
41. studius 01.04.19 14:07 Сейчас в теме
(39) в данном случае это называется, если дурак, то не лечится. Подписок на события на этот документ не было, уже голову всю сломал, что может быть. Пошел полностью гонять документ отладчиком, начиная с открытия. И тогда и нашел свой самый главный косяк. Форма документа по идиотски сделана, что этот реквизит взят из табличной части документа, а я пытался записывать реквизит документа. По алгоритму работы, реквизит документа перезаписывается реквизитом из товарной части. Поэтому все попытки записать программно в сам реквизит документа и заканчивался неудачей. Я мучал событие записи, а в голову даже не сразу пришло проверить события открытия формы. В итоге проблема сразу и решилась.
AsPin123; acanta; +2
42. xioxao 01.04.19 15:08 Сейчас в теме
(41) ахахаха у меня недавно такая же тема была, только не по записи документа по конструктуру движений. Создаю собственную конфигурацию для учета денежных средств, уже пополной веду ее и заполняю, однако столкнулся с таким же косяком.
+
38. meriferi 31.03.19 17:31 Сейчас в теме
Смотреть отладчиком
+
Внимание! Тема сдана в архив

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