Не записываются программно реквизиты документа
Всем добрый день.
Пишу обработку для пакетного изменения реквизитов документов (старая конфигурация на обычных формах). Вроде бы простейшая задача, однако почему-то у меня не срабатывает замена. Вот код:
Проверяю после обработки - какой была дата до обработки, такой и осталась. Вручную все изменяется. Не могу понять, почему программно не изменяется. Обработка Групповое изменение справочников и реквизитов не нужна, моя обработка работает всего с одним видом документа и несколькими реквизитами.
Пишу обработку для пакетного изменения реквизитов документов (старая конфигурация на обычных формах). Вроде бы простейшая задача, однако почему-то у меня не срабатывает замена. Вот код:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаявкаНаРасходДС.Ссылка КАК Документ,
| ЗаявкаНаРасходДС.ДатаПлатежа КАК ДатаПлатежа
| ИЗ
| Документ.ЗаявкаНаРасходДС КАК ЗаявкаНаРасходДС
|ГДЕ
| ЗаявкаНаРасходДС.ДатаПлатежа МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ЗаявкаНаРасходДС.Организация = &Организация";
Запрос.УстановитьПараметр("ДатаНачала",НачПериода);
Запрос.УстановитьПараметр("ДатаОкончания",КонПериода);
Запрос.УстановитьПараметр("Организация",Организация);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() ЦИкл
ДокОбъект = Выборка.Документ.ПолучитьОбъект();
ДокОбъект.ДатаПлатежа = Дата;
ДокОбъект.Записать();
КонецЦикла;
Предупреждение ("Замена произведена");
ПоказатьПроверяю после обработки - какой была дата до обработки, такой и осталась. Вручную все изменяется. Не могу понять, почему программно не изменяется. Обработка Групповое изменение справочников и реквизитов не нужна, моя обработка работает всего с одним видом документа и несколькими реквизитами.
По теме из базы знаний
- Выгрузка-загрузка любых данных (и измененных) между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Дополнительные реквизиты документов и справочников
- Неочевидные нюансы записи управляемой формы
- Обмен 1С с Честным Знаком для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
- Использование дополнительных реквизитов и сведений в отчетах
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(11) конечно не знаю. Я еще сильно плаваю в 1с. По поводу ошибки - тоже так думал, что выскочит. Насчет групповой обработки тоже был неправ - она также не меняет этот чертов реквизит. Вручную меняется все нормально, программно - не хочет и все. Срабатывает событие перед Записью и при Записи. Вроде бы все нормально, но не записывает программно. Отладчиком ни черта не могу отловить, в чем проблема.
(13) Простите за глупый вопрос, а что он должен показать? Я все еще ламер в программировании на 1с и не всегда эффективно использую инструменты разработки. Смотрел на стек вызовов. В вызываемых функциях и процедурах Отказ везде стоит в значении Ложь. По идее, должен документ записаться. Но, по ходу, я не там еще и смотрю
Программа контролирует и не дает записать дату по какой-то причине.
Если хотите без контроля записывать - надо включить режим записи "ПереносДанных"
Если хотите без контроля записывать - надо включить режим записи "ПереносДанных"
Эти чертовы рарусовские конфигурации точно для любителей головоломок. На УТшке моя обработка работает как надо. На этой рарусовской - бесполезно
(24) возможно где-то в подписке идет проверка на проведенный документ и не дает его изменять. Рарус это любит.
Можно попробовать так:
Можно попробовать так:
ДокОбъект = Выборка.Документ.ПолучитьОбъект();
ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
ДокОбъект.ДатаПлатежа = Дата;
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Я же написал - ДокОбъект.ОбменДанными.Загрузка = Истина
снимает все проверки т.к. используется при переброске данных
из других программ.
Если это не срабатывает - значит запрос не те документы выдает!
А при групповой замене - Вы правильные выбираете. Так что это
проверить надо бы тоже.
снимает все проверки т.к. используется при переброске данных
из других программ.
Если это не срабатывает - значит запрос не те документы выдает!
А при групповой замене - Вы правильные выбираете. Так что это
проверить надо бы тоже.
(33) программно я отдельный документ получил через метод НайтиПоНомеру(Номер).ПолучитьОбъект();. Результат тот же самый.
Групповая обработка точно так же не изменяет этот чертов реквизит. Хотя вручную он спокойно меняется.
Подписок на события у этого документа нет. Через замер производительности все пересмотрел. Называется, сложно быть дураком.
Групповая обработка точно так же не изменяет этот чертов реквизит. Хотя вручную он спокойно меняется.
Подписок на события у этого документа нет. Через замер производительности все пересмотрел. Называется, сложно быть дураком.
Все, разобрался, что не давало этой заразе записываться. Спасибо всем за подсказки и советы. Вопрос решен
(39) в данном случае это называется, если дурак, то не лечится. Подписок на события на этот документ не было, уже голову всю сломал, что может быть. Пошел полностью гонять документ отладчиком, начиная с открытия. И тогда и нашел свой самый главный косяк. Форма документа по идиотски сделана, что этот реквизит взят из табличной части документа, а я пытался записывать реквизит документа. По алгоритму работы, реквизит документа перезаписывается реквизитом из товарной части. Поэтому все попытки записать программно в сам реквизит документа и заканчивался неудачей. Я мучал событие записи, а в голову даже не сразу пришло проверить события открытия формы. В итоге проблема сразу и решилась.
(41) ахахаха у меня недавно такая же тема была, только не по записи документа по конструктуру движений. Создаю собственную конфигурацию для учета денежных средств, уже пополной веду ее и заполняю, однако столкнулся с таким же косяком.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот