Имя: Пароль:
1C
1С v8
бухгалтерия 3.0 прайс с остатками
,
0 Новый1сник2
 
26.10.22
15:32
Доброго дня!
подскажите по запросу, делаю прайс с остатками на СКД.
если цена номенклатуры есть в регистре, заполняю ее, если нет то нужна цена последней продажи
номенклатуры по контрагенту. как в запросе указать чтобы заполнялась последняя цена ?
1 Новый1сник2
 
26.10.22
15:33
ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1.Артикул КАК Артикул,
    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстатки.КоличествоОстатокДт КАК Остаток,
    ЦеныНоменклатурыДокументов.Цена КАК ЦенаНоменклатуры,
    ВЫБОР
        КОГДА ЦеныНоменклатурыДокументов.Цена > 0
            ТОГДА ЦеныНоменклатурыДокументов.Цена
        ИНАЧЕ ВЫБОР
                КОГДА РеализацияТоваровУслугТовары.Количество = 0
                    ТОГДА 0
                ИНАЧЕ РеализацияТоваровУслугТовары.Сумма / РеализацияТоваровУслугТовары.Количество
            КОНЕЦ
    КОНЕЦ КАК Цена
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, , , ) КАК ХозрасчетныйОстатки
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыДокументов КАК ЦеныНоменклатурыДокументов
            ПО ХозрасчетныйОстатки.Субконто1 = ЦеныНоменклатурыДокументов.Номенклатура
        ПО РеализацияТоваровУслугТовары.Номенклатура = ХозрасчетныйОстатки.Субконто1
ГДЕ
    ХозрасчетныйОстатки.Счет = "41.01"
    И ХозрасчетныйОстатки.Субконто2 = &Склад
    И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
    И РеализацияТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
    И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
2 НафНаф
 
26.10.22
15:55
ГДЕ
    ХозрасчетныйОстатки.Счет = "41.01"

так работать не будет
3 НафНаф
 
26.10.22
15:56
а вообще ошибок очень много логических
4 Новый1сник2
 
26.10.22
16:00
(2) соррян, исправил на И ХозрасчетныйОстатки.Счет.Код = "41.01"
5 Новый1сник2
 
26.10.22
16:02
(3) может реализацию вложенным запросом сделать ?
6 Новиков
 
26.10.22
17:54
Если ты делаешь прайс, то почему первая и основная таблица, откуда идет выборка, это внезапно - документ реализации? А если я купил, и пока ничего не продал - это типа в прайсе уже не считается, так что ли?

В целом, у тебя подход не верный. Ты сначала разберись, как из всей номенклатуры, ты пофильтришь ту, которую нужно показывать в твоем прайсе? Что это - папка номенклатуры и там всё, или это то что пришло на 41 счет за последний год/два, или это счет учета для номенклатуры, или это остатки номенклатуры. Может быть такое, что у меня остатков нет - а в прайсе я это показываю и т.д. Вот когда п.1 - основная таблица - у тебя просветлеет, тогда есть смысл дальше тебе что-то посоветывать, а щас у тебя какое-то странновато-диковатое решение. Я б его завернул.
7 Aleksey
 
26.10.22
17:59
Чемтиповой не устраивает?

Руководителю - Продажи - Прайс-лист;
Справочники - Товары и услуги - Номенклатура - Основное - кнопка Прайс-лист.
8 Новый1сник2
 
27.10.22
08:28
(6) Основная таблица остатки, если цена номенклатуры есть в регистре, заполняю ее, если нет то нужна цена последней продажи. переписал запрос
9 Новый1сник2
 
27.10.22
08:29
ВЫБРАТЬ
    ВложенныйЗапрос1.Субконто1Код КАК Код,
    ВложенныйЗапрос1.Субконто1Артикул КАК Артикул,
    ВложенныйЗапрос1.Субконто1 КАК Номенклатура,
    ВложенныйЗапрос1.КоличествоОстатокДт КАК Остаток,
    ВложенныйЗапрос.ЦенаРеализации КАК ЦенаРеализации,
    ВложенныйЗапрос1.Цена КАК Цена
ИЗ
    (ВЫБРАТЬ
        ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
        ХозрасчетныйОстатки.Субконто1.Артикул КАК Субконто1Артикул,
        ХозрасчетныйОстатки.Субконто1.Код КАК Субконто1Код,
        ХозрасчетныйОстатки.КоличествоОстатокДт КАК КоличествоОстатокДт,
        ЦеныНоменклатурыДокументов.Цена КАК Цена
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыДокументов КАК ЦеныНоменклатурыДокументов
            ПО ХозрасчетныйОстатки.Субконто1 = ЦеныНоменклатурыДокументов.Номенклатура
    ГДЕ
        ХозрасчетныйОстатки.Счет.Код = "41.01"
        И ХозрасчетныйОстатки.Субконто2 = &Склад) КАК ВложенныйЗапрос1
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
            РеализацияТоваровУслугТовары.Количество КАК Количество,
            РеализацияТоваровУслугТовары.Сумма КАК Сумма,
            ВЫБОР
                КОГДА РеализацияТоваровУслугТовары.Количество = 0
                    ТОГДА 0
                ИНАЧЕ РеализацияТоваровУслугТовары.Сумма / РеализацияТоваровУслугТовары.Количество
            КОНЕЦ КАК ЦенаРеализации,
            РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
            РеализацияТоваровУслугТовары.Цена КАК Цена,
            РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата
        ИЗ
            Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ГДЕ
            РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
            И РеализацияТоваровУслугТовары.Ссылка В
                    (ВЫБРАТЬ ПЕРВЫЕ 1
                        РеализацияТоваровУслугТоварыУсловие.Ссылка
                    ИЗ
                        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТоварыУсловие
                    ГДЕ
                        РеализацияТоваровУслугТоварыУсловие.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура
                    УПОРЯДОЧИТЬ ПО
                        РеализацияТоваровУслугТоварыУсловие.Ссылка.Дата УБЫВ)
            И РеализацияТоваровУслугТовары.Ссылка.Контрагент = &Контрагент) КАК ВложенныйЗапрос
        ПО ВложенныйЗапрос1.Субконто1 = ВложенныйЗапрос.Номенклатура
10 Новый1сник2
 
27.10.22
08:31
работает, но не которые строки дублируются, как доработать запрос чтобы корректно выводило ?
11 ПросТак
 
27.10.22
08:31
(7) Гений, продолжение...
12 Новый1сник2
 
27.10.22
08:50
добавил условие
ЦеныНоменклатурыДокументов.СпособЗаполненияЦены = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияЦен.ПоПродажнымЦенам),
сейчас вроде корректно выводит
13 Новый1сник2
 
27.10.22
09:02
(7) определенный формат нужен, и в типовом варианте нужно чтобы тип цен был установлен, а в моем случае цена берется из регистра (цена заполняется в карточке номенклатуры) или из реализации если в регистре нет цены
14 Новый1сник2
 
27.10.22
10:32
ВЫБРАТЬ
    ВложенныйЗапрос1.Субконто1Код КАК Код,
    ВложенныйЗапрос1.Субконто1.Родитель КАК Бренд,
    ВложенныйЗапрос1.Субконто1Артикул КАК Артикул,
    ВложенныйЗапрос1.Субконто1 КАК Номенклатура,
    ВложенныйЗапрос1.КоличествоОстатокДт КАК Остатки,
    ВложенныйЗапрос.ЦенаРеализации КАК ЦенаРеализации,
    ВложенныйЗапрос1.Цена КАК ЦенаИзРегистра,
    ВЫБОР
        КОГДА ВложенныйЗапрос1.Цена > 0
            ТОГДА ВложенныйЗапрос1.Цена
        ИНАЧЕ ВЫБОР
                КОГДА ВложенныйЗапрос.ЦенаРеализации > 0
                    ТОГДА ВложенныйЗапрос.ЦенаРеализации
                ИНАЧЕ 0
            КОНЕЦ
    КОНЕЦ КАК Цена
ИЗ
    (ВЫБРАТЬ
        ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
        ХозрасчетныйОстатки.Субконто1.Артикул КАК Субконто1Артикул,
        ХозрасчетныйОстатки.Субконто1.Код КАК Субконто1Код,
        ХозрасчетныйОстатки.КоличествоОстатокДт КАК КоличествоОстатокДт,
        ЦеныНоменклатурыДокументов.Цена КАК Цена
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.Остатки(&КонДата, , , ) КАК ХозрасчетныйОстатки
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыДокументов КАК ЦеныНоменклатурыДокументов
            ПО ХозрасчетныйОстатки.Субконто1 = ЦеныНоменклатурыДокументов.Номенклатура
    ГДЕ
        ХозрасчетныйОстатки.Счет.Код = "41.01"
        И ХозрасчетныйОстатки.Субконто2 = &Склад
        И ЦеныНоменклатурыДокументов.СпособЗаполненияЦены = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияЦен.ПоПродажнымЦенам)
        И ХозрасчетныйОстатки.КоличествоОстатокДт > 0
        И ХозрасчетныйОстатки.Организация = &Организация) КАК ВложенныйЗапрос1
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
            РеализацияТоваровУслугТовары.Количество КАК Количество,
            РеализацияТоваровУслугТовары.Сумма КАК Сумма,
            ВЫБОР
                КОГДА РеализацияТоваровУслугТовары.Количество = 0
                    ТОГДА 0
                ИНАЧЕ РеализацияТоваровУслугТовары.Сумма / РеализацияТоваровУслугТовары.Количество
            КОНЕЦ КАК ЦенаРеализации,
            РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
            РеализацияТоваровУслугТовары.Цена КАК Цена,
            РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата
        ИЗ
            Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ГДЕ
            РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
            И РеализацияТоваровУслугТовары.Ссылка В
                    (ВЫБРАТЬ ПЕРВЫЕ 1
                        РеализацияТоваровУслугТоварыУсловие.Ссылка
                    ИЗ
                        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТоварыУсловие
                    ГДЕ
                        РеализацияТоваровУслугТоварыУсловие.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура
                    УПОРЯДОЧИТЬ ПО
                        РеализацияТоваровУслугТоварыУсловие.Ссылка.Дата УБЫВ)
            И РеализацияТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
            И РеализацияТоваровУслугТовары.Ссылка.Организация = &Организация) КАК ВложенныйЗапрос
        ПО ВложенныйЗапрос1.Субконто1 = ВложенныйЗапрос.Номенклатура

УПОРЯДОЧИТЬ ПО
    Номенклатура
15 Новый1сник2
 
27.10.22
10:32
некоторые позиции дублируются, некоторые не попадают в отчет, подскажите по запросу
16 Новый1сник2
 
27.10.22
11:36
подскажите почему не выводит все остатки, а только те у которых есть цена

ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1.Код КАК Код,
    ХозрасчетныйОстаткиИОбороты.Субконто1.Артикул КАК Артикул,
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК КоличествоКонечныйОстатокДт,
    ЦеныНоменклатурыДокументов.Цена КАК Цена
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , , , , , ) КАК ХозрасчетныйОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыДокументов КАК ЦеныНоменклатурыДокументов
        ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = ЦеныНоменклатурыДокументов.Номенклатура
ГДЕ
    ХозрасчетныйОстаткиИОбороты.Счет.Код = "41.01"
    И ХозрасчетныйОстаткиИОбороты.Субконто2 = &Склад
    И ЦеныНоменклатурыДокументов.СпособЗаполненияЦены = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияЦен.ПоПродажнымЦенам)
    И ХозрасчетныйОстаткиИОбороты.Организация = &Организация
17 mikecool
 
27.10.22
12:02
(16) условие на цены в соединение перенеси, двоечник
18 Новый1сник2
 
27.10.22
12:22
(17) разобрался уже, немного по другому сделал, спасибо за подсказки
19 Krendel
 
27.10.22
12:30
Рекомендую взять с ут-ерп
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший