Имя: Пароль:
1C
1С v8
Заполнить программно документ УстановкаЦенНоменклатуры
0 maestro-72
 
17.02.15
11:31
Собственно вопрос уже в теме. Нюанс следующий: хотел как-то облегчить себе жизнь, но поскольку я начинающий в восьмерке, запутался с запросами и ничего не получается. В общем при перекачке поступлений из 77 передается номенклатура и цена, и чтобы грамотно заполнить документ УстановкаЦенНоменклатуры хотелось бы не заполнять позиции цена которых не поменялась, а заполнять только те в которых либо были изменения, либо вообще цена не проставлялась. Думал как то с помощью левого соединения попробовать
Запрос собственно:
СпНомен = ТаблицаЦеныФайла.ВыгрузитьКолонку("Номенклатура");  //Массив
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("СпНомен", СпНомен);
    Запрос.УстановитьПараметр("ТаблицаЦеныФайла", ТаблицаЦеныФайла);
    Запрос.Текст = "ВЫБРАТЬ
        |    ТаблицаЦеныФайла.Номенклатура,
        |    ТаблицаЦеныФайла.Цена
        |ПОМЕСТИТЬ ВТ_ТаблицаЦеныФайла
        |ИЗ
        |    &ТаблицаЦеныФайла КАК ТаблицаЦеныФайла
        |;
        ///////////////////////////////////////////////////
        |ВЫБРАТЬ
        |   ВТ_ТаблицаЦеныФайла.Номенклатура,
        |   ВТ_ТаблицаЦеныФайла.Цена
        |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
        |    ЦеныНоменклатурыСрезПоследних.ВидЦены,
        |    ЦеныНоменклатурыСрезПоследних.Цена
        |ИЗ
        |    ВТ_ТаблицаЦеныФайла КАК ВТ_ТаблицаЦеныФайла
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        | ПО (ВТ_ТаблицаЦеныФайла.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура) И
        |    (ВТ_ТаблицаЦеныФайла.Цена = ЦеныНоменклатурыСрезПоследних.Цена);
        |
        |ГДЕ
        |    ЦеныНоменклатурыСрезПоследних.Номенклатура в &СпНомен
        |    И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены";
    
    Запрос.УстановитьПараметр("ВидЦены", ВидЦены);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(СокрЛП(ВыборкаДетальныеЗаписи.Номенклатура) + "  " + СокрЛП(ВыборкаДетальныеЗаписи.Цена));
    КонецЦикла;

Но не работает.
Может я вообще не в ту сторону копаю?
1 Timon1405
 
17.02.15
11:33
ждите, в (50) вам предложат купить мегапрайс
2 salvator
 
17.02.15
11:34
>> "заполнять только те в которых либо были изменения"

А что подразумевать под "были изменения"?
3 maestro-72
 
17.02.15
11:42
(2) ну к примеру требуют изменения цены - было 20.05 стало 40.50 т.е. цену надо устанавливать. а если изменения цены не произошло, то соответственно эту номенклатуру в документ не включаем
4 salvator
 
17.02.15
11:44
(3) Ну так укажи в условии соединения неравенство цен.
Кстати, как у тебя этот запрос ошибку-то не выдает?
5 maestro-72
 
17.02.15
12:23
(4) Выдает. Пока не смог исправить.
6 salvator
 
17.02.15
12:30
(5) Я три штуки минимум насчитал.
7 maestro-72
 
17.02.15
13:03
(6) Значит надо над этим работать!
8 FIXXXL
 
17.02.15
13:06
(0) не забудь про валюты и единицы измерения цен