8.х Таблица значений.Поле не доступно для записи

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Alive, 31 янв 2011.

  1. TopicStarter Overlay
    Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток!!Подскажите пожалуйста, у меня есть табличная часть документа, там есть колонка договор контрагента. я пишу обработку.которая при определенном условии меняла бы значение этой колонки на другое, но когда я пытаюсь старому присвоить колонке новое значение, возникает ошибка Поле объекта не доступно для записи.. Подскажите как грамотно поменять значение колонки в строке?
  2. PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    код обработки в студию!!!
  3. TopicStarter Overlay
    Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    Код:
    ТабЧасть = ДокументВзаиморасчетов.РасчетыСКонтрагентами.Выгрузить();
    Для каждого Строка из ТабЧасть Цикл 
    Если Строка.ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам Тогда
    НовыйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    НовыйДоговор.Наименование = "перенос долга";
    НовыйДоговор.Владелец = Строка.Контрагент;
    НовыйДоговор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
    НовыйДоговор.Организация = ДокументВзаиморасчетов.Организация;
    НовыйДоговор.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
    НовыйДоговор.ВестиПоДокументамРасчетовСКонтрагентом = Ложь;
    НовыйДоговор.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
    НовыйДоговор.Записать();
    Строка.ДоговорКонтрагента = НовыйДоговор.Ссылка; 
    КонецЕсли;
    УчетПоСделкам.Вставить(Строка.ДоговорКонтрагента, НЕ Строка.ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом);
    УчетПоДокументамРасчетов.Вставить(Строка.ДоговорКонтрагента, Строка.ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом);
    КонецЦикла;
    
    
    
  4. TopicStarter Overlay
    Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    не много ошиблась,не тот вариант отправила, в первой строке я таб.часть не выгружаю..
    ТабЧасть = ДокументВзаиморасчетов.РасчетыСКонтрагентами;

    вот так вот
  5. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    Насколько я понимаю
    Код:
    ТабЧасть = ДокументВзаиморасчетов.РасчетыСКонтрагентами.Выгрузить();
    
    
    здесь вы выгружаете Табличную часть в таблицу значений. Не понимаю только зачем.
    Ведь ТабЧасть - это уже не Табличная часть документа.
    Можно проще
    Код:
    Для Каждого ТекущаяСтрока Из Документ.РасчетыСКонтрагентами Цикл
    
    // Действия со строкой табличной части.
    //	...
    
    КонецЦикла;  
    
    
  6. TopicStarter Overlay
    Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    да да. я так и делала, просто выслала ошибочный вариант..так вот когда я перебираю строка таб.части и пытаюсь в одной строке поменять значение, у меня выходит ошибка, что поле не доступно для записи!Подскажите пожалуйста, срочно надо!
  7. PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    Строка.ДоговорКонтрагента.Значение = НовыйДоговор.Ссылка;
  8. TopicStarter Overlay
    Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    ругается, говорит поле объекта Значение не обнаружено.
  9. PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    Для каждого Строка из ТабЧасть Цикл напиши не Строка а например ТекСтрока, у меня тоже так было, попробуй заменить Строка на ТекСтрока
  10. TopicStarter Overlay
    Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    так тоже не помогает(((((
  11. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    Для того, чтобы записывать обязательно необходимо
    Документ = ДокументВзаиморасчетов.РасчетыСКонтрагентами.ПолучитьОбъект();
    Если полученная переменная ...Ссылка() , то запись не произведется.
  12. TopicStarter Overlay
    Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    Спасибо...такая мелочь оказывается.. теперь то уж запомню наверно!!
  13. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    Пожалуйста.
    Но для "Спасибо" кнопочка есть ;)

Поделиться этой страницей