Помощь - Поиск - Пользователи - Календарь
Полная версия: Как записать в записанный документ информацию из другого документа?
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
Medvedzhonok
Помогите пожалуйста.
У меня такая ситуация. Я создаю документ "Направление", записываю в него данные, сохраняю, но не провожу. Затем, в документе "Чек", выбираю данные из этого документа. При проведении чека мне необходимо сохранить пометки об оплате услуг в направлении.

Вот пример программного кода:

Код
ДокументНаправление.Направление.Получить(Счетчик1).Оплачено = Истина; 

В ответ я получаю ошибку, что поле "Оплачено" не доступно для записи

(Поле "Оплачено" находится в табличной части)
GvH
Цитата(Medvedzhonok @ 16.10.2008, 15:32) *

У меня такая ситуация.

Код

ОбъектНаправление = СсылкаНаДокументНаправление.ПолучитьОбъект();
ТабличнаяЧастьНаправления = ОбъектНаправление.ИмяТабличнойЧасти;
ТабличнаяЧастьНаправления[0].Оплачено = Истина;
ОбъектНаправление.Записать();


Примерно, так...
lazy
Кто такой ДокументНаправление в Вашем коде?

Попробую стелепатировать:

Вместо:
Код

ДокументНаправление.Направление.Получить(Счетчик1).Оплачено = Истина;


Пишем:
Код
 
ДокОбъект = ДокументНаправление.Направление.Получить(Счетчик1).Ссылка.ПолучитьОбъект();
ДокОбъект.Оплачено = Истина;
ДокОбъект.Записать(); // вот здесь нужно уточнить с режимом проведения


Если сеанс телепатии не удался - пишите код полностью.
Medvedzhonok
Код

Процедура ОКНажатие(Элемент)
//Объявляем строковую переменную для кода направления
КодНаправления = "";
//Пробегаем по всем услугам выбранным в нашем чеке
Для Счетчик = 0 По ТабличнаяЧастьЧек.Количество()-1 Цикл
//При оплате в чек вводят код направления и по этому коду будут отмечаться
//услуги, из этого направления, что они оплачены
Если ТабличнаяЧастьЧек.Получить(Счетчик).НаправлениеНомер <> Null Тогда
КодНаправления = ТабличнаяЧастьЧек.Получить(Счетчик).НаправлениеНомер;
КонецЕсли;
//ДокументНаправление - это тот документ, в который необходимо внести изменения
ДокументНаправление = Документы.ДокументНаправление.НайтиПоНомеру(КодНаправления);
Если ДокументНаправление <> Null Тогда
//Покупатель может оплатить не все услуги, поэтому пробегаем по оплаченным в чеке
//услугам и говорим, что они оплачены
//только проблема в том, что поле оплачено ДокументаНапавление доступно
//только для чтения
Для Счетчик1 = 0 По ДокументНаправление.Направление.Количество()-1 Цикл
Если ДокументНаправление.Направление.Получить(Счетчик1).Услуга =
ТабличнаяЧастьЧек.Получить(Счетчик).Услуга Тогда
ДокументНаправление.Направление.Получить(Счетчик1).Оплачено = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПровестиИРаспечататьЧек(Истина,Истина,ЭтаФорма);
КонецПроцедуры



Данный код находится в Документе ЧекККМ.

Я пробовал код, предложенный Вами,
Код

ДокОбъект = ДокументНаправление.Направление.Получить(Счетчик1).Ссылка.ПолучитьОбъект();
ДокОбъект.Оплачено = Истина;
ДокОбъект.Записать();


но к сожалению,
Код
ДокументНаправление.Направление.Получить(Счетчик1)
не имеет аттрибута Ссылка
Medvedzhonok
Цитата(lazy @ 16.10.2008, 19:02) *

Код
 
ДокОбъект = ДокументНаправление.Направление.Получить(Счетчик1).Ссылка.ПолучитьОбъект();
ДокОбъект.Оплачено = Истина;
ДокОбъект.Записать(); // вот здесь нужно уточнить с режимом проведения



Большое-пребольшое спасибо, код работает, оказывается, просто с типами напутал.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.