Имя: Пароль:
1C
1С v8
Ошибка при записи реквизита
,
0 ipippu
 
19.04.16
14:58
Добрый день!
Необходимо изменить цену товара в документе поступление товаров и услуг. База бухгалтерия 2.0.
1 ipippu
 
19.04.16
14:59
вот код:
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПоступлениеТоваровУслуг.Контрагент,
        |    ПоступлениеТоваровУслуг.Дата,
        |    ПоступлениеТоваровУслуг.Ссылка,
        |    ПоступлениеТоваровУслуг.Товары.(
        |        Ссылка,
        |        НомерСтроки,
        |        ЕдиницаИзмерения,
        |        КоличествоМест,
        |        Количество,
        |        Коэффициент,
        |        Номенклатура,
        |        СтавкаНДС,
        |        Сумма,
        |        СуммаНДС,
        |        Цена,
        |        НомерГТД,
        |        СтранаПроисхождения,
        |        СчетУчета,
        |        СчетУчетаНДС,
        |        ОтражениеВУСН,
        |        ЦенаВРознице,
        |        СуммаВРознице,
        |        СтавкаНДСВРознице,
        |        Контрагент,
        |        ДоговорКонтрагента,
        |        СчетРасчетов
        |    )
        |ИЗ
        |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |    ПоступлениеТоваровУслуг.Дата >= &ДатаС
        |    И ПоступлениеТоваровУслуг.Дата <= &ДатаПО
        |    И ПоступлениеТоваровУслуг.Контрагент = &Контрагент1";
    
    Запрос.УстановитьПараметр("ДатаПО", ДатаПО);
    Запрос.УстановитьПараметр("ДатаС", ДатаС);
    Запрос.УстановитьПараметр("Контрагент1", Справочники.Контрагенты.НайтиПоНаименованию("Техпроммаркет ООО"));
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
        КолонкиТабличнойЧасти = ВыборкаДетальныеЗаписи.Ссылка.Товары;

        Для Каждого Строка из КолонкиТабличнойЧасти Цикл
            Строка.Цена = 10;
        КонецЦикла;
        Объект.Записать();
        
    КонецЦикла;
2 ipippu
 
19.04.16
15:01
Ошибка - поле объекта недоступно для записи
Хотя вроде бы объект захватываю
3 nordbox
 
19.04.16
15:01
Объект.Записать();
После цикла сделай
4 Лефмихалыч
 
19.04.16
15:02
(3) он после цикла и делает
5 Lexey_
 
19.04.16
15:02
(2) Строка.Цена получена из ссылки, а не из объекта
6 salvator
 
19.04.16
15:02
КолонкиТабличнойЧасти = ВыборкаДетальныеЗаписи.Ссылка.Товары;
заменить на
КолонкиТабличнойЧасти = Объект.Товары;
7 grigo
 
19.04.16
15:02
Строки надо получить из "Объект", а не из Выборкадетальныезаписи.
10 Лефмихалыч
 
19.04.16
15:03
ВыборкаДетаПока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

        Для Каждого Строка из Объект.Товары Цикл
            Строка.Цена = 10;
        КонецЦикла;
        Объект.Записать();
        
    КонецЦикла;льныеЗаписи.Ссылка.Товары
11 nordbox
 
19.04.16
15:05
И
Для Каждого Строка из Объект.Товары Цикл
я бы не стал делать переменную  с таким названием "Строка"
12 Sabbath
 
19.04.16
15:06
Получаешь объект, а перебираешь табчасть полученнубю по ссылке. Короче, тут уже написали

И переменная дурацки называется
КолонкиТабличнойЧасти - это не колонки, а таб часть и есть

Вот так и пиши

ТабЧасть = Объект.Товары;

И ее перебирай в цикле
13 salvator
 
19.04.16
15:07
Добью автора )) Да и вообще, это можно было сделать групповой обработкой справочников и документов.
14 grigo
 
19.04.16
15:08
(11,12,13) Набросились на мальца))
15 Лефмихалыч
 
19.04.16
15:09
только без соответствующей корректировки движений всему учету рано или поздно придут поезда
16 Sabbath
 
19.04.16
15:13
И нафига столько полей в запросе, если нужна только ссылка в итоге?

Запрос можно сократить

    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПоступлениеТоваровУслуг.Ссылка
        |ИЗ
        |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |    ПоступлениеТоваровУслуг.Дата >= &ДатаС
        |    И ПоступлениеТоваровУслуг.Дата <= &ДатаПО
        |    И ПоступлениеТоваровУслуг.Контрагент = &Контрагент1";

Еще не факт, что тебе нужны не проведенные документы кстати
17 Sabbath
 
19.04.16
15:14
(14) я просто даю полезные советы :)
18 Sabbath
 
19.04.16
15:15
Дата регистрации:    19 апреля 2016; сегодня

:)
19 ipippu
 
19.04.16
16:00
Спасибо всем большое.
А как пересчитать всю табличную часть?
А то данные по цене сохранились, а итоги не изменились((

А желательно еще и перепровести документ)
20 salvator
 
19.04.16
16:03
Объект.Записать(РежимЗаписиДокумента.Проведение)
21 salvator
 
19.04.16
16:06
Плюс в цикле по табличной части написать

ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(Строка, Объект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(Строка, Объект);