Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 17:39

Запись своего значения в поле табличной части документа

Автор exq, 13 мар 2013, 15:46

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

exq

Добрый день!
Нужно записать свое значение в поле табличной части документа Зарплата к выплате организации (не проведенного), через внешнюю обработку. Использую подключение к табличной части через экспортную процедуру Инициализировать. В отладчике проверял, что в процедуру заходит, объект определяется, ТЧ, содержит более 1 строки, ее поля считываются, но при записи
Объект.Зарплата[0].Начислено = 123;
мне пишет следующее: "Поле объекта недоступно для записи (...ИмяПоля...)"

Внимание вопрос, как (поменять атрибут только для чтения) можно записать значение в это поле? Желательно с примером.

П.С.: На вопросы "зачем/почему?" и т.д. сразу отвечаю: "Значит мне так надо и задача стоит намного шире". Но основное, это запись именно через внешнюю обработку значение в ТЧ этого документа, т.к. ТЧ определенным образом формируется в модуле обработки.
Спасибо!

MuI_I_Ika

Объект имеет тип Документ объект или документ ссылка?

exq

Цитата: MuI_I_Ika от 13 мар 2013, 15:56
Объект имеет тип Документ объект или документ ссылка?
Объект
ДокументСсылка.ЗарплатаКВыплатеОрганизаций

Перед тем как задать вопрос пробовал нечто подобное (но в решении не помогло):
Объект=Объект.Ссылка.ПолучитьОбъект();   
ДокументОбъект.ЗарплатаКВыплатеОрганизаций

Если создать другой объект, то в нем можно будет поменять всю ТЧ, но как потом заменить одну ТЧ другой, например:
Процедура Инициализировать (Объект, .....
ВремОбъект=Объект.Ссылка.ПолучитьОбъект();
ВремОбъект.Зарплата[0].Начислено = 123;
Объект.Зарплата=ВремОбъект.Зарплата; //опять же только для чтения...


Где-то я совсем рядом топчусь...

MuI_I_Ika

ДокументОбъект=Объект.ПолучитьОбъект();
ДокументОбъект.Зарплата[0].Начислено = 123;
ДокументОбъект.Зарплата=ВремОбъект.Зарплата;


Изменить можно только объект. Ссылку менять нельзя.

exq

Цитата: MuI_I_Ika от 13 мар 2013, 16:34Изменить можно только объект. Ссылку менять нельзя.
Так я тоже пробовал - "Поле объекта недоступно для записи (Зарплата) Объект.Зарплата=ВремОбъект.Зарплата;"
либо, если выполнить следующий код
Объект=Объект.ПолучитьОбъект();
то, ТЧ Зарплата очистится, как и весь объект.

MuI_I_Ika

Цитата: exq от 13 мар 2013, 17:02Объект.Зарплата=ВремОбъект.Зарплата;

Вот этой строкой вы что хотите заполнить?

exq

Цитата: MuI_I_Ika от 13 мар 2013, 17:27Вот этой строкой вы что хотите заполнить?
Обменять содержимое табличных частей, метод грубый и я не знаю пройдет ли он в 1С, но все что мне нужно это по своему заполнить:
Объект.Зарплата.поле1=123;
Объект.Зарплата.поле2=54321;
и т.д.
Если пишу так:
Объект=Объект.ПолучитьОбъект(); //до этой строки в ТЧ Объекта есть записи, после присвоения она пуста
Объект.Зарплата[0].Начислено = 123; //соответственно индекс 0 отсутствует.

MuI_I_Ika

Вы так пробовали писать?
ДокументОбъект=Объект.ПолучитьОбъект();
ДокументОбъект.Зарплата[0].Начислено = 123;

nddru

Я бы на вашем месте сделал следующее, по шагам.
1. Из полученного объекта выдернул бы табличную часть в таблицу значений.
2. Внес необходимые Вам изменения в таблицу значений.
3. Загрузил таблицу значений в табличную часть.

А присваивать табличной части другую табличную часть не получится, даже если она обсалютна сходна по структуре и типам реквизитов.

Dethmontt

Цитата: nddru от 14 мар 2013, 06:31А присваивать табличной части другую табличную часть не получится, даже если она обсалютна сходна по структуре и типам реквизитов.
Объект.МояТабличнаяЧпасть.Загрузить(Объект.ДругаяТабличнаяЧасть.Выгрузить());
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск