Имя: Пароль:
1C
1С v8
Подредактируйте запрос для получение цены себестоимости
,
0 KIraA
 
15.06.17
05:00
Доброго времени суток. Задача стоит...чтобы на событии(при изменении количества) в табличную часть прилетала цена себестоимости, только на эту строку номенклатуры.

Запрос = новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ЦеныНоменклатурыСрезПоследних.Цена,
                 |    ЦеныНоменклатурыСрезПоследних.Номенклатура
                 |ИЗ
                 |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                 |            &Дата,
                 |            ТипЦен = &ТипЦен
                 |                И Организация = &Организация) КАК ЦеныНоменклатурыСрезПоследних";
    
    Запрос.УстановитьПараметр("ТипЦен",ОБъект.ТипЦен);
    Запрос.УстановитьПараметр( "Дата", Объект.Дата);
    Запрос.УстановитьПараметр("Организация",Объект.Склад);
    
     ТЗ = Запрос.Выполнить().Выгрузить();
     рез = Объект.Товары.Выгрузить().Колонки.Номенклатура;    
    СтрокаТЗ = ТЗ.Найти(рез, "Номенклатура");
    Если СтрокаТЗ = Неопределено Тогда
        
    иначе
        стрОс = Объект.Товары.Добавить();
        стрОс.Себестоимость = СтрокаТЗ.Цена;
    КонецЕсли;
1 sFAQer
 
15.06.17
05:19
Держи в курсе..
2 Metman
 
15.06.17
05:39
У вас себестоимость в типах цен? Через ПолучитьПоследнее красивее будет.
3 Metman
 
15.06.17
05:49
Зачем выбирать все данные? В параметры добавьте нужную номенклатуру. А зачем Объект.Товары.Добавить()?
4 Metman
 
15.06.17
05:53
Запрос.УстановитьПараметр("Организация",Объект.Склад);

Это как?
5 Metman
 
15.06.17
05:56
какая конфа? В каком документе количество редактируете?
6 KIraA
 
15.06.17
06:02
Документ Смета. Регистр назван Склад, а не организация)) поэтому Запрос.УстановитьПараметр("Организация",Объект.Склад);

Составляется таблица с номенклатурой, кол-м и себестоимостью  которую установили в документе ЦеныНоменклатуры., дальше идут пересчеты по этим параметрам.
7 Dmitry1c
 
15.06.17
06:09
Походу диплом пишется
8 AneJIbcuH
 
15.06.17
06:11
(7) очень похоже
9 KIraA
 
15.06.17
06:27
дельное что нибудь может кто сказать?

проблема вот тут

  рез = Объект.Товары.Выгрузить().Колонки.Номенклатура;    
    СтрокаТЗ = ТЗ.Найти(рез, "Номенклатура");
    Если СтрокаТЗ = Неопределено Тогда
        
    иначе
        стрОс = Объект.Товары.Добавить();
        стрОс.Себестоимость = СтрокаТЗ.Цена;
    КонецЕсли;

по отладчику до сюда все прекрасно отрабатывает
10 Metman
 
15.06.17
06:31
ну и редактируйте текущую строку
ТекСтрока.Себестоимость = СтрокаТЗ.Цена
а вы добавляете строку
11 Metman
 
15.06.17
06:32
Посмотрите как в типовых сделано, что при изменении количества меняется сумма.
12 Metman
 
15.06.17
06:36
СтрокаТЗ = ТЗ.Найти(ТекСтрока.Номенклатура, "Номенклатура");
13 KIraA
 
15.06.17
06:48
ТЗ = Запрос.Выполнить().Выгрузить();
    ТекСтрока = Объект.Товары.Выгрузить();
    СтрокаТЗ = ТЗ.Найти(ТекСтрока.Номенклатура, "Номенклатура");    
    ТекСтрока.Себестоимость = СтрокаТЗ.Цена

{Документ.Смета.Форма.ФормаДокумента.Форма(336)}: Поле объекта не обнаружено (Номенклатура)
           СтрокаТЗ = ТЗ.Найти(ТекСтрока.Номенклатура, "Номенклатура");
14 Metman
 
15.06.17
06:51
В ПриИзменении на текущую строку какой параметр с данными строки передается? Вместо ТекСтрока подставьте этот параметр.
15 Redkiy
 
15.06.17
07:02
(13) ТекСтрока = Объект.Товары.Выгрузить();
У тебя ТекСтрока - таблица значений
Почитай СП по работе с ТЗ.
16 KIraA
 
15.06.17
07:02
все разобралась, спасибо Metman
17 Metman
 
15.06.17
07:03
Пожалуйста
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший