8.х Изменение реквизита в табличной части

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

  1. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Добрый день.
    Помогите с запросом. Точнее с простым запросом с которым я не могу справиться.
    Имею запрос, в котором хочу выбрать табличную часть из документа, и хочу изменить один из реквизитов в табличной части.
    Код:
    Запрос=Новый запрос;
    Запрос.Текст="ВЫБРАТЬ
    |	КвитанцииСписокЗаказов.СсылкаЗаказа,
    |	КвитанцииСписокЗаказов.Ссылка
    |ИЗ
    |	Документ.Квитанции.СписокЗаказов КАК КвитанцииСписокЗаказов
    |ГДЕ
    |	КвитанцииСписокЗаказов.Заказ = &номер
    |	И КвитанцииСписокЗаказов.Сумма = &Сумма
    |	И КвитанцииСписокЗаказов.ДатаВыезда = &ДатаВыезда";
    
    Запрос.УстановитьПараметр("Номер",Номер);
    Запрос.УстановитьПараметр("Сумма",Сумма);
    Запрос.УстановитьПараметр("ДатаВыезда",ДатаВыезда);
    
    В1=Запрос.Выполнить().Выбрать();
    
    Пока В1.Следующий() Цикл
    В1Объект=В1.Ссылка.ПолучитьОБЪЕКТ();	
    В1Объект.СсылкаЗаказа=СсылкаНаДокумент;
    В1Объект.Записать(режимЗаписиДокумента.Запись);
    
    КонецЦикла;
    
    
    Так вот у меня 1с ругается что типа Поле объекта не обнаружено (СсылкаЗаказа)
    А если
    Код:
    В1Объект=В1.СсылкаЗаказа.ПолучитьОБЪЕКТ();	
    В1Объект=СсылкаНаДокумент;
    В1Объект.Записать(режимЗаписиДокумента.Запись);
    
    
    Ошибка при вызове метода контекста (ПолучитьОбъект)
    Элемент не выбран!

    Вот и сижу у разбитого корыта с этой табличной частью.
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Так, "СсылкаЗаказа" - это у Вас реквизит (колонка) таб части, верно?
    И Вы хотите эту колонку заполнить определенным значением. И заполнить хотите во всех строках. Я правильно понял?
  3. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Да. СсылкаЗаказа это реквизит колонка в таб.части.
    Нет не во всех строках. А только в той строке которая удовлетворяет условию запроса. Номер=Номер, сумма=Сумма дата=Дата.
  4. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Правильный вариант - вот этот:
    Код:
    В1Объект=В1.Ссылка.ПолучитьОбъект();
    
    
    Но то, что дальше, т.е. вот это:
    Код:
    В1Объект.СсылкаЗаказа=СсылкаНаДокумент;
    
    
    не правильно.

    В переменной "В1Объект" вы получили ДокументОбъект.Квитанции. У этого документа нет реквизита "СсылкаЗаказа". Этот реквизит есть у табличной части "СписокЗаказов".
    Поэтому Вам надо для каждого документа из выборки обходить его табличную часть и присваивать ссылку на заказ.
    Примерно так:
    Код:
    Пока В1.Следующий() Цикл
    В1Объект = В1.Ссылка.ПолучитьОбъект();    
    Для Каждого СтрокаТЧ Из В1Объект.СписокЗаказов Цикл
    Если СтрокаТЧ.Заказ = Номер И СтрокаТЧ.Сумма = Сумма И СтрокаТЧ.ДатаВыезда = ДатаВыезда Тогда
    СтрокаТЧ.СсылкаЗаказа = СсылкаНаДокумент;
    КонецЕсли;
    КонецЦикла;
    В1Объект.Записать(РежимЗаписиДокумента.Запись);
    КонецЦикла;
    
    
Похожие темы
  1. alexnoviy
    Ответов:
    10
    Просмотров:
    1.311
  2. BimmerMK
    Ответов:
    2
    Просмотров:
    1.942
  3. Neon_tmn
    Ответов:
    14
    Просмотров:
    8.305
  4. John95103
    Ответов:
    3
    Просмотров:
    886
  5. Rad&K
    Ответов:
    2
    Просмотров:
    259
Загрузка...

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