Имя: Пароль:
1C
1С v8
1с8.1 УТ 10.3 Не могу придумать как запросом получить цену до проведения докта
0 Uragan_a
 
27.07.14
16:41
ВЫБРАТЬ
    УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен + 1 КАК НомерСтроки,
    УстановкаЦенНоменклатуры.Номенклатура,
    УстановкаЦенНоменклатуры.Номенклатура.НаименованиеПолное КАК Товар,
    УстановкаЦенНоменклатуры.ХарактеристикаНоменклатуры КАК Характеристика,
    NULL КАК Серия,
    УстановкаЦенНоменклатуры.ТипЦен КАК ТипЦен,
    УстановкаЦенНоменклатуры.Цена,
    УстановкаЦенНоменклатуры.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияПредставление,
    УстановкаЦенНоменклатуры.Валюта,
    УстановкаЦенНоменклатуры.Валюта.Представление КАК ВалютаПредставление,
    УстановкаЦенНоменклатуры.ПроцентСкидкиНаценки,
    ЦеныНоменклатуры.Цена КАК Цена1
    ИЗ
    Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатуры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        ПО УстановкаЦенНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
            И УстановкаЦенНоменклатуры.ТипЦен = ЦеныНоменклатуры.ТипЦен
            И УстановкаЦенНоменклатуры.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
            И УстановкаЦенНоменклатуры.ЕдиницаИзмерения = ЦеныНоменклатуры.ЕдиницаИзмерения
            И УстановкаЦенНоменклатуры.Валюта = ЦеныНоменклатуры.Валюта
ГДЕ
    УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент


УПОРЯДОЧИТЬ ПО
    УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен,
    ТипЦен,
    Период УБЫВ
ИТОГИ ПО
    УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен
1 Uragan_a
 
27.07.14
16:42
Выдает все записи из РС Цен, а нужно только предпоследнюю
2 Бешеная Нога
 
27.07.14
16:54
мсье не слышал про СрезПоследних и Граница.Исключая?
3 Rlogin
 
27.07.14
16:57
Не соединяй объекты и Регистры в одоном запросе
4 Бешеная Нога
 
27.07.14
17:06
(3) таки почему?
5 Rlogin
 
27.07.14
17:12
(4) К решению данной проблемы не относится, а в целом влияет на скорость )
6 Uragan_a
 
28.07.14
02:57
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("МомВремени", ЭтотОбъект.Ссылка.МоментВремени());

    Запрос.Текст =
    "ВЫБРАТЬ
    |    УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен + 1 КАК НомерСтроки,
    |    УстановкаЦенНоменклатуры.Номенклатура,
    |    УстановкаЦенНоменклатуры.Номенклатура.НаименованиеПолное КАК Товар,
    |    УстановкаЦенНоменклатуры.ХарактеристикаНоменклатуры КАК Характеристика,
    |    NULL КАК Серия,
    |    УстановкаЦенНоменклатуры.ТипЦен КАК ТипЦен,
    |    УстановкаЦенНоменклатуры.Цена,
    |    УстановкаЦенНоменклатуры.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияПредставление,
    |    УстановкаЦенНоменклатуры.Валюта,
    |    УстановкаЦенНоменклатуры.Валюта.Представление КАК ВалютаПредставление,
    |    УстановкаЦенНоменклатуры.ПроцентСкидкиНаценки,
    |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
    |    ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен1,
    |    ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаПредыдущая,
    |    ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки1,
    |    ЦеныНоменклатурыСрезПоследних.Валюта КАК Валюта1,
    |    ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
    |ИЗ
    |    Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатуры
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&МомВремени, ) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО УстановкаЦенНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |            И УстановкаЦенНоменклатуры.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
    |            И УстановкаЦенНоменклатуры.Валюта = ЦеныНоменклатурыСрезПоследних.Валюта
    |            И УстановкаЦенНоменклатуры.ЕдиницаИзмерения = ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения
    |ГДЕ
    |    УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |    УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен,
    |    ТипЦен
    |ИТОГИ ПО
    |    УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен";
7 Uragan_a
 
28.07.14
02:57
не работает(
8 Uragan_a
 
28.07.14
03:03
ГраницаПериода = Новый Граница(ЭтотОбъект.Ссылка.МоментВремени(), ВидГраницы.Исключая);
    Запрос.УстановитьПараметр("МомВремени", ГраницаПериода);
9 Uragan_a
 
28.07.14
03:04
и так не хочет
10 Uragan_a
 
28.07.14
03:04
выводит срез последних и все
11 alle68
 
28.07.14
03:24
(10) Период - это дата, а не МВ. Время надо сдвигать или движения документа удалить предварительно.
12 MiniMuk
 
28.07.14
03:42
(3) А как надо, на сколько отличается производительность? Как делались замеры?
13 Uragan_a
 
28.07.14
04:24
(11), понял. спс.
Получается МВ нельзя использовать в РС?
14 Rlogin
 
28.07.14
07:46
ЭтотОбъект.Ссылка.МоментВремени() - Ты обращаешься к ссылке, т.е. к старой дате документа. Если в доке поменяли дату, то в запросе будет старая дата.

Запрос к регистру сведений выбирает все записи по всей номенклатуре. Так нельзя. Нагрузка на сервер большаяю
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший