Имя: Пароль:
1C
 
Запрос:Стоимость номенклатуры: последняя себестоимость из документов поступления
, ,
0 Novi4ek2015
 
23.03.15
13:45
Добрый день!Есть документ, в котором при выборе номенклатуры, автоматически устанавливается стоимость. Надо, что бы стоимость=Себестоимость из последнего поступления.Пример: поступление 1.01.15- ручка=100 руб.
02.01.15 - ручка=200 руб.
При выборе номенклатуры: ручка, стоимость в документе должна= 200 руб.
1с 8.2 УТ 10.3. В документе при выборе номенклатуры, автоматически заполняется поле цена. Есть запрос, который запрашивает цену.Как изменить запрос, что бы цена ставилась самая последняя(например, есть несколько поступлений 1 января и 2 января), надо чтобы он ставил последнюю цену-(2 января).
ТекстЗапроса = "
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    ЦеныПродажные.Цена КАК Себестоимость,
    |    ЦеныПродажные.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения
    |ИЗ
    |    РегистрНакопления.ПартииТоваровНаСкладах.СрезПоследних(&Дата, Склад В (&Склад)
    |       И Номенклатура = &Номенклатура
    |       И ХарактеристикаНоменклатуры В (&Характеристики)) КАК ЦеныПродажные
    |УПОРЯДОЧИТЬ ПО
    |    ЦеныПродажные.ХарактеристикаНоменклатуры УБЫВ
    |";

Помогите, составить правильный запрос.
1 butterbean
 
23.03.15
13:47
очевидно, что упорядочивать нужно по убыванию даты документов поступления
2 Novi4ek2015
 
23.03.15
14:14
Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |СпрНоменклатура.Ссылка КАК Номенклатура,
    |ВложенныйЗапросЦена.ЦенаПоследнейЗакупки
    |ИЗ
       |Справочник.Номенклатура КАК СпрНоменклатура
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |   ЦеныПоступлений.Номенклатура КАК Номенклатура,
    |   ЦеныПоступлений.Цена КАК ЦенаПоследнейЗакупки
    |  ИЗ
    |     РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, ) КАК ЦеныПоступлений
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |           Периоды.Номенклатура КАК Номенклатура,
    |           МАКСИМУМ(Периоды.Период) КАК ДатаПоследнегоПоступления
    |      ИЗ
    |          РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, ) КАК Периоды
    |      СГРУППИРОВАТЬ ПО
    |         Периоды.Номенклатура) КАК Даты
    |     ПО (Даты.ДатаПоследнегоПоступления = ЦеныПоступлений.Период)
    |        И (Даты.Номенклатура = ЦеныПоступлений.Номенклатура)) КАК ВложенныйЗапросЦена
    |  ПО (ВложенныйЗапросЦена.Номенклатура = СпрНоменклатура.Ссылка)
    |    ЦеныПродажные.Цена КАК Цена,
    |    ЦеныПродажные.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения
    |ИЗ
    |    РегистрСведений.ПартииТоваровНаСкладах.СрезПоследних(&Дата, Склад В (&Склад)
    |       И Номенклатура = &Номенклатура
    |       И ХарактеристикаНоменклатуры В (&Характеристики)) КАК ЦеныПродажные
    |УПОРЯДОЧИТЬ ПО
    |    ЦеныПродажные.Дата УБЫВ";
    
    Запрос.УстановитьПараметр("Ссылка",    СтрокаТабличнойЧасти.Ссылка);    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
3 Novi4ek2015
 
23.03.15
14:14
Все равно не работает
4 John83
 
23.03.15
14:32
ВЫБРАТЬ
    ЗакупкиОбороты.Период,
    ЗакупкиОбороты.Номенклатура,
    ВЫБОР
        КОГДА ЗакупкиОбороты.СтоимостьОборот <> 0
            ТОГДА ЗакупкиОбороты.СтоимостьОборот / ЗакупкиОбороты.КоличествоОборот
        ИНАЧЕ 0
    КОНЕЦ КАК Цена
ПОМЕСТИТЬ Данные
ИЗ
    РегистрНакопления.Закупки.Обороты(, , Регистратор, Номенклатура = &Номенклатура) КАК ЗакупкиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(Данные.Период) КАК Период,
    Данные.Номенклатура
ПОМЕСТИТЬ Последнее
ИЗ
    Данные КАК Данные

СГРУППИРОВАТЬ ПО
    Данные.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Данные.Период,
    Данные.Номенклатура,
    МАКСИМУМ(Данные.Цена) КАК Цена
ИЗ
    Данные КАК Данные
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Последнее КАК Последнее
        ПО Данные.Период = Последнее.Период
            И Данные.Номенклатура = Последнее.Номенклатура

СГРУППИРОВАТЬ ПО
    Данные.Период,
    Данные.Номенклатура
5 John83
 
23.03.15
14:33
с вас триста рублев
6 Novi4ek2015
 
23.03.15
14:56
ВЫБРАТЬ
   СпрНоменклатура.Ссылка КАК Номенклатура,
   ВложенныйЗапросЦена.ЦенаПоследнейЗакупки
ИЗ
   Справочник.Номенклатура КАК СпрНоменклатура
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЦеныПоступлений.Номенклатура КАК Номенклатура,
           ЦеныПоступлений.Цена КАК ЦенаПоследнейЗакупки
       ИЗ
           РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, ) КАК ЦеныПоступлений
               ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   Периоды.Номенклатура КАК Номенклатура,
                   МАКСИМУМ(Периоды.Период) КАК ДатаПоследнегоПоступления
               ИЗ
                   РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, ) КАК Периоды
              
               СГРУППИРОВАТЬ ПО
                   Периоды.Номенклатура) КАК Даты
               ПО (Даты.ДатаПоследнегоПоступления = ЦеныПоступлений.Период)
                   И (Даты.Номенклатура = ЦеныПоступлений.Номенклатура)) КАК ВложенныйЗапросЦена
       ПО (ВложенныйЗапросЦена.Номенклатура = СпрНоменклатура.Ссылка)
7 Novi4ek2015
 
23.03.15
14:57
Ругается на строку :  РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, ) КАК Периоды.
Не соответствие типов ('1')
8 nordbox
 
23.03.15
15:17
John83, ты бы для начала уточнил у него какие цены он делает. ЦеныНоменклатуры или ЦеныНоменклатурыКонтрагентов.
со словом/Типом  Дата нужно бы поаккуратнее.

Дата (Date)
Описание:
Значения данного типа содержит дату григорианского календаря (с 01 января 0001 года) и время с точностью до секунды.
9 Novi4ek2015
 
23.03.15
15:19
nordbox, И как мне указать Дату лучше?
10 nordbox
 
23.03.15
15:19
+8
Встроенные функции языка (Script functions)
Дата (Date)
Вариант синтаксиса: По строке

Синтаксис:

Дата(<Значение>)
11 nordbox
 
23.03.15
15:20
Ну назови как нибудь, как тебе удобно
Например: НужнаяДата
Где она у тебя будет параметром
Ты параметр запросу указал?
12 John83
 
23.03.15
15:23
(8) вроде написано - стоимость из последнего поступления.
Если нужна стоимость именно по этому контрагенту, то добавить в параметрах
13 Novi4ek2015
 
23.03.15
15:24
Мне не важно, какой контрагент,главное с последнего поступления.
14 nordbox
 
23.03.15
15:38
(12)Ему цены последнего дока установки цен надо
Ему Цены контриков не нужны
15 Novi4ek2015
 
23.03.15
15:39
Назвал ДатаСреза, и задал параметр, но все равно не работает.
16 nordbox
 
23.03.15
15:40
(15) Что у тебя не работает?
17 Novi4ek2015
 
23.03.15
15:41
Еще такой вопрос, сейчас попробую в консоле запросов отладить, вместо &ДатаСреза, задать число?
18 hhhh
 
23.03.15
15:42
(17) отсыпь
19 nordbox
 
23.03.15
15:44
(18) ))))))))

(0)Тебе ехать надо или шашечки?
Если ехать? то не мудри, за тебя там уже написано
в Общих модулях есть мудуль Ценообразование
Открывай читай и думай
Там все уже сеть
20 nordbox
 
23.03.15
15:44
*Там все уже есть
21 nordbox
 
23.03.15
15:46
(0) Еще раз тебе говорю:
// Функция возвращает цену номенклатуры для требуемой номенклатуры в указанном типе цен,
// на заданную дату, за заданную единицу измерения, пересчитанную в требуемую валюту по заданному курсу.
//
// Параметры:
//  Номенклатура         - ссылка на элемент справочника "Номенклатура", для которого надо получить цену,
//  ХарактеристикаНоменклатуры - ссылка на элемент справочника "ХарактеристикаНоменклатуры",
//  ТипЦен               - ссылка на элемент справочника "Типы цен", опредедяет цену какого типа надо получить,
//  Дата                 - дата, на которую надо получить цену, если не заполнено, то берется рабочая дата
//  ЕдиницаИзмерения     - ссылка на элемент справочника "Единицы измерения", определяет для какой единицы надо получить
//                         цену, если не заполнен, то заполняется единицей цены
//  Валюта               - ссылка на элемент справочника "Валюты", определяет валюту. в которой надо вернуть цену,
//                         если не заполнен, то заполняется валютой цены
//  Курс                 - число, курс требуемой валюты, если не заполнен, берется курс из регистра
//                         сведений "Курсы валют",
//  Кратность            - число, кратность требуемой валюты, если не заполнена, берется курс из регистра
//                         сведений "Курсы валют",
//  ПроцентСкидкиНаценки - число, процент наценки (скидки) на базовый тип цен, заполняется процентом
//                         наценки (скидки) цены для цен, которые не рассчитываются автоматически.
// Возвращаемое значение:
//  Число, рассчитанное значение цены.
//
Функция ПолучитьЦенуНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Знач ТипЦен, ДатаПараметр = Неопределено, ЕдиницаИзмерения = Неопределено,
                                 Валюта = Неопределено, Курс = 0, Кратность = 1, ПроцентСкидкиНаценки = 0, ДоговорКонтрагента = Неопределено,
                                 УсловиеПродаж = Неопределено) Экспорт
22 Novi4ek2015
 
23.03.15
15:55
Я хочу разобраться с этим запросом. ввел в консоль запросов, выводит номенклатуру, а последняя стоимость NULL