Как записать данные в документ без каких-либо движений по регистру

1. LastSoldier 256 29.08.24 12:21 Сейчас в теме
Все привет!
Есть задача записать данные в документ не делая по нему никаких движений, но заполняя пару колонок в табличной части.

У нас есть документ "Перемещение товаров", в нем в табличную часть добавлены два столбца: Цена и Сумма.
Документ уже проведен. Нужно при его открытии заполнять столбцы Цена и Сумма, а так же сохранять эти данные, чтобы при следующем открытии заново не заполнять их, так как они должны будут выводиться еще на печатной форме "Накладная на перемещение".

Я написал код в "Перемещение товаров"->"Форма документа"->"Модуль"->"Процедура ПриОткрытии". Табличная часть цены и суммы заполняется, все работает, но сами эти данные не сохраняются, так как при последующем открытии, они заполняются заново. Подскажите как сохранить эти данные, но не перепроводить документы?

	
Если НЕ Объект.Ссылка.Пустая() Тогда 
		Если Объект.Товары.Получить(0).ол_РозничнаяЦена = 0 Тогда       
	         ол_ЗаполнениеРозничнойЦеныКлиент.ЗаполнитьРозничныеЦены(, Объект);
	    КонецЕсли;
	КонецЕсли;



Столбцы эти были созданы в самом документе, а так же в общих модулях были добавлены два модуля для получения самой цены и суммы. Это все работает и заполнят данные правильно.
По теме из базы знаний
Найденные решения
7. user5300 1055 29.08.24 12:55 Сейчас в теме
(5)

Записать(Новый Структура("РежимЗаписи",РежимЗаписиДокумента.Запись));
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 29.08.24 12:27 Сейчас в теме
(1)
У нас есть документ "Перемещение товаров", в нем в табличную часть добавлены два столбца: Цена и Сумма.

"Столбцы" надо добавлять в табличную часть документа, а не на форме.

Чтобы данные сохранились, очевидно, надо записать документ.
Чтобы не перепроводить документ, надо писать в режиме Запись.
3. LastSoldier 256 29.08.24 12:30 Сейчас в теме
(2) Если мы их на форму не добавим, их и в самом документе не будет.
Я пробовал так
ЭтотОбъект.Записать(РежимЗаписиДокумента.Запись);
, но выдает ошибку.
Прикрепленные файлы:
4. Sashares 35 29.08.24 12:41 Сейчас в теме
(3)
Если мы их на форму не добавим, их и в самом документе не будет.

Неверно. Не все реквизиты табличной части предназначены для вывода на форму и интерактивного редактирования.

но выдает ошибку.

Мне надо догадаться какую?

Приведите полный код, приведите текст ошибки. Что за игры в партизанов то?
5. LastSoldier 256 29.08.24 12:42 Сейчас в теме
(4)
Этот код ошибки появляется если добавить Запись документа

Если НЕ Объект.Ссылка.Пустая() Тогда 
        Если Объект.Товары.Получить(0).ол_РозничнаяЦена = 0 Тогда       
             ол_ЗаполнениеРозничнойЦеныКлиент.ЗаполнитьРозничныеЦены(, Объект);
             ЭтотОбъект.Записать(РежимЗаписиДокумента.Запись);
        КонецЕсли;
    КонецЕсли;
Прикрепленные файлы:
6. Sashares 35 29.08.24 12:51 Сейчас в теме
(5) Подход не верный изначально.
Если в документ/справочник добавляются новые реквизиты, и требуется их заполнить у существующих документов/элементов справочника, делается обработчик обновления в котором запросом получаются ссылки, в которых реквизиты еще не заполнены. Далее по ссылке получается объект и в нем заполняются новые реквизиты и объект записывается.

Вместо Обработчика обновления можете сделать внешнюю обработку с одной кнопкой.

У вас же какая-то дичь - при открытии существующего документа - если не заполнена колонка - записываете. Пользователь должен все документы открыть что ли?

По поводу ошибки - синтакс-помощник по методу Запись формы:
Расширение формы клиентского приложения для документа (Client application form extension for documents)
Записать (Write)
Синтаксис:
Записать(<ПараметрыЗаписи>)
Параметры:
<ПараметрыЗаписи> (необязательный)
Тип: Структура.
Структура параметров записи, которые могут быть обработаны в обработчиках событий записи. Состав параметров произвольный. Содержит предопределенные параметры записи РежимЗаписи и РежимПроведения. Предопределенные параметры передаются в метод объекта Записать.
Параметры записи можно обработать в событиях формы ПередЗаписью, ПередЗаписьюНаСервере, ПриЗаписиНаСервере, ПослеЗаписиНаСервере, ПослеЗаписи.
8. LastSoldier 256 29.08.24 13:00 Сейчас в теме
(6) Я просто хотел сделать чтобы данные заполнялись и сохранялись только в тех документах, которые пользователь открывает уже созданные и проведенные.
Так как в программе около миллиона документов за более чем 10 лет и не вижу смысла делать это во всех документах в базе.
Прикрепленные файлы:
9. Sashares 35 29.08.24 13:07 Сейчас в теме
(8) Заполните за этот год например, или за этот и прошлый.
Добавьте кнопку на форму - Заполнить новые колонки, если надо - пользователь нажмет и запишет документ.

Такой подход - модифицирование документа при открытии и безусловная запись - это плохой вариант.
У пользователя может не быть прав на запись документа.
Может быть открыт документ из закрытого периода.
При записи документа закрытого периода будет ошибка.
10. LastSoldier 256 29.08.24 13:11 Сейчас в теме
(7) Данный вариант сработал.
Подскажите, при запись документа не происходил заново движение по Регистрам?
(9)
"У пользователя может не быть прав на запись документа.
Может быть открыт документ из закрытого периода."
Такое действительно возможно
11. user5300 1055 29.08.24 13:16 Сейчас в теме
(10)
Подскажите, при запись документа не происходил заново движение по Регистрам?

Нет
12. LastSoldier 256 29.08.24 13:24 Сейчас в теме
(9) (11) А есть в программе вариант чтобы сделать по типу "Группового проведения документов", только запись, а не проведение? Или запись доступна только напрямую из документа?
7. user5300 1055 29.08.24 12:55 Сейчас в теме
(5)

Записать(Новый Структура("РежимЗаписи",РежимЗаписиДокумента.Запись));
Оставьте свое сообщение

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