Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 окт 2021, 15:08

Вопрос по оптимизации и циклам

Автор Ричард, 14 янв 2017, 17:41

0 Пользователей и 1 гость просматривают эту тему.

Ричард

Кто-нибудь может подсказать как на такой вопрос ответить? Только начал изучать 1С, не могу никак разобраться. Спасибо за понимание.

В форме некоей обработки создан реквизит Заказ типа ДокументСсылка.ЗаказПокупателя. В этой же форме создана команда ИзменитьЦеныВЗаказе, в процедуре-обработчике которой написано следующее:
Для каждого ТекСтрокаТЧ из Заказ.Товары Цикл
   ТекСтрокаТЧ.Цена = ТекСтрокаТЧ.Цена * 2;
   ТекСтрокаТЧ.Сумма = ТекСтрокаТЧ.Цена * ТекСтрокаТЧ.Количество;
КонецЦикла;
Объясните, почему этот код будет приводить лишь к ошибкам и посоветуйте,  как исправить ситуацию.

Artjomrgv

Я правильно понял ты хочешь выбрать какой то конкретный документ, и в этом конкретном документе изменить данные в табличной части?

Ричард

Цитата: Artjomrgv от 15 янв 2017, 15:21
Я правильно понял ты хочешь выбрать какой то конкретный документ, и в этом конкретном документе изменить данные в табличной части?
Да все верно. Что тут не правильно? Я так понимаю, в данном случае будут возникать ошибки связанные
с невозможностью записать данные? Как исправить данную ситуацию?

sertak

Тип реквизита - ДокументСсылка, там хранится идентификатор нужного документа, а чтобы изменить сам документ нужно по имеющейся ссылке получить тип ДокументОбъект:

ЗаказОбъект = Заказ.ПолучитьОбъект();
Для Каждого ТекСтрокаТЧ из ЗаказОбъект.Товары Цикл
   ТекСтрокаТЧ.Цена = ТекСтрокаТЧ.Цена * 2;
   ТекСтрокаТЧ.Сумма = ТекСтрокаТЧ.Цена * ТекСтрокаТЧ.Количество;
КонецЦикла;

Dethmontt

Цитата: sertak от 15 янв 2017, 20:36получить тип ДокументОбъект:
Код: [Выделить]
Ричард, и делать это на сервере
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

LexaK

:D
и самое главное, после изменения не забудьте записать ваш документ,


ЗаказОбъект = Заказ.ПолучитьОбъект();
Для Каждого ТекСтрокаТЧ из ЗаказОбъект.Товары Цикл
   ТекСтрокаТЧ.Цена = ТекСтрокаТЧ.Цена * 2;
   ТекСтрокаТЧ.Сумма = ТекСтрокаТЧ.Цена * ТекСтрокаТЧ.Количество;
КонецЦикла;

//обязательно надо записать документ после изменений
ЗаказОбъект.Записать();

ответ Понравился? (в смысле пригодился?)

Ричард

Спасибо за ответы. Вопрос исчерпан.

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск