Имя: Пароль:
1C
1С v8
УТ 11 Намудрила немного с запросом
0 Мисти
 
18.11.13
16:19
Надо переделать обработку "подбор номенклатуры", чтобы она работала без документа. Ну, т.е. нужен не просто справочник, а с остатками.
Споткнулась на ценах!
1 Мисти
 
18.11.13
16:19
ВЫБРАТЬ
    СправочникНоменклатура.Артикул КАК Артикул,
    СправочникНоменклатура.Код КАК Код,
    СправочникНоменклатура.Наименование КАК Наименование,
    СправочникНоменклатура.Ссылка КАК Номенклатура,
    СправочникНоменклатура.Ссылка КАК ЭлементСписка,
    СправочникНоменклатура.ИспользованиеХарактеристик КАК ИспользованиеХарактеристик,
    СправочникНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    СправочникНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
    СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
    СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ВЫРАЗИТЬ(ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) * ВЫБОР
            КОГДА &Валюта <> ЦеныНоменклатуры.Валюта
                ТОГДА ВЫБОР
                        КОГДА ЕСТЬNULL(КурсыСрезПоследнихВалютаЦены.Кратность, 0) > 0
                                И ЕСТЬNULL(КурсыСрезПоследнихВалютаЦены.Курс, 0) > 0
                                И ЕСТЬNULL(КурсыСрезПоследнихВалютаДокумента.Кратность, 0) > 0
                                И ЕСТЬNULL(КурсыСрезПоследнихВалютаДокумента.Курс, 0) > 0
                            ТОГДА КурсыСрезПоследнихВалютаЦены.Курс * КурсыСрезПоследнихВалютаДокумента.Кратность / (КурсыСрезПоследнихВалютаДокумента.Курс * КурсыСрезПоследнихВалютаЦены.Кратность)
                        ИНАЧЕ 0
                    КОНЕЦ
            ИНАЧЕ 1
        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Цена,
    ВЫБОР
        КОГДА СправочникНоменклатура.ЭтоГруппа
            ТОГДА ВЫБОР
                    КОГДА СправочникНоменклатура.ПометкаУдаления
                        ТОГДА 13
                    ИНАЧЕ 12
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА СправочникНоменклатура.ЕстьТоварыДругогоКачества
                    ТОГДА 4 + ВЫБОР
                            КОГДА СправочникНоменклатура.ПометкаУдаления
                                ТОГДА 1
                            ИНАЧЕ 0
                        КОНЕЦ + ВЫБОР
                            КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                                ТОГДА 0
                            ИНАЧЕ 2
                        КОНЕЦ
                ИНАЧЕ -1 + ВЫБОР
                        КОГДА СправочникНоменклатура.ПометкаУдаления
                            ТОГДА 1
                        ИНАЧЕ 0
                    КОНЕЦ + ВЫБОР
                        КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                            ТОГДА 1
                        ИНАЧЕ 3
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК ИндексКартинки,
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.Родитель КАК Родитель,
    ВЫБОР
        КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ХарактеристикиИспользуются,
    ВЫБОР
        КОГДА СправочникНоменклатура.ВидНоменклатуры.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЭтоТовар,
    ВЫБОР
        КОГДА СправочникНоменклатура.ВидНоменклатуры.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЭтоУслуга,
    СправочникНоменклатура.ПометкаУдаления,
    СправочникНоменклатура.ЦеноваяГруппа,
    СправочникНоменклатура.Качество
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                &Дата,
                ВидЦены В (&ВидыЦен)
                    И Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК ЦеныНоменклатуры
        ПО (ЦеныНоменклатуры.Номенклатура = СправочникНоменклатура.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыСрезПоследнихВалютаЦены
        ПО (КурсыСрезПоследнихВалютаЦены.Валюта = ЦеныНоменклатуры.Валюта)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &Валюта) КАК КурсыСрезПоследнихВалютаДокумента
        ПО (ИСТИНА)
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СвободныеОстатки.Номенклатура КАК Номенклатура,
            СУММА(СвободныеОстатки.ВНаличииОстаток) КАК ВНаличии,
            СУММА(СвободныеОстатки.ВНаличииОстаток - ВЫБОР
                    КОГДА ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомРезерва)
                        ТОГДА СвободныеОстатки.ВРезервеОстаток
                    КОГДА ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика)
                        ТОГДА ЕСТЬNULL(График.Количество, 0)
                    ИНАЧЕ 0
                КОНЕЦ) КАК Доступно
        ИЗ
            РегистрНакопления.СвободныеОстатки.Остатки(, Склад В (&Склад) {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК СвободныеОстатки
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаХарактеристика
                ПО СвободныеОстатки.Склад = НастройкаХарактеристика.Склад
                    И СвободныеОстатки.Номенклатура = НастройкаХарактеристика.Номенклатура
                    И СвободныеОстатки.Характеристика = НастройкаХарактеристика.Характеристика
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаНоменклатура
                ПО СвободныеОстатки.Склад = НастройкаНоменклатура.Склад
                    И СвободныеОстатки.Номенклатура = НастройкаНоменклатура.Номенклатура
                    И (НастройкаНоменклатура.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
                    И (НастройкаХарактеристика.Склад ЕСТЬ NULL )
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаСклад
                ПО СвободныеОстатки.Склад = НастройкаСклад.Склад
                    И (НастройкаСклад.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
                    И (НастройкаСклад.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
                    И (НастройкаХарактеристика.Склад ЕСТЬ NULL )
                    И (НастройкаНоменклатура.Склад ЕСТЬ NULL )
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    График.Склад КАК Склад,
                    График.Номенклатура КАК Номенклатура,
                    График.Характеристика КАК Характеристика,
                    ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) КАК ВариантКонтроля,
                    -МИНИМУМ(График.КоличествоКонечныйОстаток) КАК Количество
                ИЗ
                    РегистрНакопления.ГрафикДвиженияТоваров.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), , День, ДвиженияИГраницыПериода, Склад В (&Склад) {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК График
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаХарактеристика
                        ПО График.Склад = НастройкаХарактеристика.Склад
                            И График.Номенклатура = НастройкаХарактеристика.Номенклатура
                            И График.Характеристика = НастройкаХарактеристика.Характеристика
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаНоменклатура
                        ПО График.Склад = НастройкаНоменклатура.Склад
                            И График.Номенклатура = НастройкаНоменклатура.Номенклатура
                            И (НастройкаНоменклатура.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
                            И (НастройкаХарактеристика.Склад ЕСТЬ NULL )
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаСклад
                        ПО График.Склад = НастройкаСклад.Склад
                            И (НастройкаСклад.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
                            И (НастройкаСклад.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
                            И (НастройкаХарактеристика.Склад ЕСТЬ NULL )
                            И (НастройкаНоменклатура.Склад ЕСТЬ NULL )
                ГДЕ
                    ВЫБОР
                            КОГДА ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика)
                                ТОГДА ВЫБОР
                                        КОГДА НЕ НастройкаХарактеристика.ВариантКонтроля ЕСТЬ NULL
                                            ТОГДА ВЫБОР
                                                    КОГДА НастройкаХарактеристика.ГраницаГрафикаДоступности >= НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
                                                        ТОГДА График.Период <= НастройкаХарактеристика.ГраницаГрафикаДоступности
                                                    КОГДА НастройкаХарактеристика.СрокПоставки > 0
                                                        ТОГДА График.Период <= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ДЕНЬ, НастройкаХарактеристика.СрокПоставки - 1)
                                                    ИНАЧЕ ЛОЖЬ
                                                КОНЕЦ
                                        КОГДА НЕ НастройкаНоменклатура.ВариантКонтроля ЕСТЬ NULL
                                            ТОГДА ВЫБОР
                                                    КОГДА НастройкаНоменклатура.ГраницаГрафикаДоступности >= НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
                                                        ТОГДА График.Период <= НастройкаНоменклатура.ГраницаГрафикаДоступности
                                                    КОГДА НастройкаНоменклатура.СрокПоставки > 0
                                                        ТОГДА График.Период <= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ДЕНЬ, НастройкаНоменклатура.СрокПоставки - 1)
                                                    ИНАЧЕ ЛОЖЬ
                                                КОНЕЦ
                                        ИНАЧЕ ВЫБОР
                                                КОГДА НастройкаСклад.ГраницаГрафикаДоступности >= НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
                                                    ТОГДА График.Период <= НастройкаСклад.ГраницаГрафикаДоступности
                                                КОГДА НастройкаСклад.СрокПоставки > 0
                                                    ТОГДА График.Период <= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ДЕНЬ, НастройкаСклад.СрокПоставки - 1)
                                                ИНАЧЕ ЛОЖЬ
                                            КОНЕЦ
                                    КОНЕЦ
                            ИНАЧЕ ЛОЖЬ
                        КОНЕЦ
                    И График.КоличествоКонечныйОстаток < 0
                
                СГРУППИРОВАТЬ ПО
                    График.Номенклатура,
                    График.Характеристика,
                    График.Склад,
                    ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля))) КАК График
                ПО СвободныеОстатки.Склад = График.Склад
                    И СвободныеОстатки.Номенклатура = График.Номенклатура
                    И СвободныеОстатки.Характеристика = График.Характеристика
        
        СГРУППИРОВАТЬ ПО
            СвободныеОстатки.Номенклатура) КАК ВсеОстатки
        ПО (СправочникНоменклатура.Ссылка = ВсеОстатки.Номенклатура)
ГДЕ
    НЕ СправочникНоменклатура.ЭтоГруппа
{ГДЕ
    (1 В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                1
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Номенклатура = СправочникНоменклатура.Ссылка
                И Сегменты.Сегмент = &СегментНоменклатуры)) КАК Поле2}
2 Мисти
 
18.11.13
16:20
Это практически типовой запрос, из которого я выкинула таблицу  по соглашению с клиентам - без документа у меня ее нет.
Показывает мне цены, но без остатков. Не могу понять, почему?
3 patapum
 
18.11.13
16:22
(0) а зачем?
4 patapum
 
18.11.13
16:23
(0) возьми обработку "помощник продаж". укажешь соглашение - будут цены. не укажешь - не будет цен.
5 SUA
 
18.11.13
16:23
(0)насколько я помню там в пользовательском интерфейсе настройка - с остатками или без
6 SUA
 
18.11.13
16:25
хотя нет... там про цены, а тут не вижу в запросе остатков вообще
7 Мисти
 
18.11.13
16:28
(6)
ИЗ
            РегистрНакопления.СвободныеОстатки.Остатки(, Склад В (&Склад) {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК СвободныеОстатки
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаХарактеристика
                ПО СвободныеОстатки.Склад = НастройкаХарактеристика.Склад
                    И СвободныеОстатки.Номенклатура = НастройкаХарактеристика.Номенклатура
                    И СвободныеОстатки.Характеристика = НастройкаХарактеристика.Характеристика
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаНоменклатура
                ПО СвободныеОстатки.Склад = НастройкаНоменклатура.Склад

а это что??
8 Мисти
 
18.11.13
16:28
(3) Ну вот так они хотят - просто открывать как бы номенклатуру, безо всяких документов и соглашений и чтоб там были остатки.
9 Мисти
 
18.11.13
16:29
(5) Это в подборе! А если просто открыть справочник "номенклатура", то никаких остатков там не бывает.
10 patapum
 
18.11.13
16:30
(8) см. (4)
11 CHerypga
 
18.11.13
16:31
(9) Не знаю как4 в УТ, а в УПП прямо в справочнике Номенклатура можно включить остатки на складе
12 Мисти
 
18.11.13
16:40
(10) Не хотят помощник продаж!
Ну, кроме того, там много других изменений.
Что в запросе не так?
13 Мисти
 
18.11.13
16:42
И еще! запрос вроде как пересчитывается раз в минуту (т.е. у меня раз в минуту ошибка выскакивает), а данные не меняются в списке номенклатуры ( и до ошибки не менялись!)
14 patapum
 
18.11.13
16:46
(12) выдерни оттуда только запрос. лень разбираться, как грамотно отрезать цены из запроса подбора.
(13) считаешь это странным?
15 Мисти
 
18.11.13
16:50
Ну да! срециально провела документ, меняющий количество на складе - а в списке это никак не отразилось и через 5 минут.
Ключевое слово "грамотно".
Я в этом запросе вообще не могу понять, что происходит. В конструкторе убрала оттуда таблицу "соглашение" и всё.
16 patapum
 
18.11.13
16:53
(15) а при повторном открытии отобразилось? а то может документ не поменял количество на складе?
17 SUA
 
18.11.13
17:00
(7)а где они в блоке "ВЫБРАТЬ..."?
не вижу поля в результирующем запросе типа "свободныеостатки.доступно"
18 Мисти
 
18.11.13
17:03
(16) При повторном - да.
А вот этот запрос выдает остатки, но не дает цен:
"ВЫБРАТЬ
        |    СправочникНоменклатура.Ссылка КАК Ссылка,
        |    СправочникНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
        |    СправочникНоменклатура.Родитель КАК Родитель,
        |    СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
        |    СправочникНоменклатура.Код КАК Код,
        |    СправочникНоменклатура.Наименование КАК Наименование,
        |    СправочникНоменклатура.Артикул КАК Артикул,
        |    СправочникНоменклатура.Ссылка КАК Номенклатура,
        |    СправочникНоменклатура.Ссылка КАК ЭлементСписка,
        |    СправочникНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
        |    СправочникНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
        |    СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        |    СправочникНоменклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
        |    СправочникНоменклатура.Качество КАК Качество,
        |    СправочникНоменклатура.ИспользованиеХарактеристик КАК ИспользованиеХарактеристик,
        |    ВЫБОР
        |        КОГДА СправочникНоменклатура.ВидНоменклатуры.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ КАК ЭтоТовар,
        |    ВЫБОР
        |        КОГДА СправочникНоменклатура.ВидНоменклатуры.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ КАК ЭтоУслуга,
        |    ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) КАК Упаковка,
        |    0 КАК Цена,
        |    ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) КАК ВидЦены,
        |    ВЫРАЗИТЬ(ЕСТЬNULL(ВсеОстатки.ВНаличии, 0) КАК ЧИСЛО(15, 3)) КАК ВНаличииОстаток,
        |    ВЫРАЗИТЬ(ЕСТЬNULL(ВсеОстатки.Доступно, 0) КАК ЧИСЛО(15, 3)) КАК Доступно,
        |    ВЫБОР
        |        КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
        |            ТОГДА ЛОЖЬ
        |        ИНАЧЕ ИСТИНА
        |    КОНЕЦ КАК ХарактеристикиИспользуются,
        |    ВЫБОР
        |        КОГДА СправочникНоменклатура.ЭтоГруппа
        |            ТОГДА ВЫБОР
        |                    КОГДА СправочникНоменклатура.ПометкаУдаления
        |                        ТОГДА 13
        |                    ИНАЧЕ 12
        |                КОНЕЦ
        |        ИНАЧЕ ВЫБОР
        |                КОГДА СправочникНоменклатура.ЕстьТоварыДругогоКачества
        |                    ТОГДА 4 + ВЫБОР
        |                            КОГДА СправочникНоменклатура.ПометкаУдаления
        |                                ТОГДА 1
        |                            ИНАЧЕ 0
        |                        КОНЕЦ + ВЫБОР
        |                            КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
        |                                ТОГДА 0
        |                            ИНАЧЕ 2
        |                        КОНЕЦ
        |                ИНАЧЕ -1 + ВЫБОР
        |                        КОГДА СправочникНоменклатура.ПометкаУдаления
        |                            ТОГДА 1
        |                        ИНАЧЕ 0
        |                    КОНЕЦ + ВЫБОР
        |                        КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
        |                            ТОГДА 1
        |                        ИНАЧЕ 3
        |                    КОНЕЦ
        |            КОНЕЦ
        |    КОНЕЦ КАК ИндексКартинки
        |ИЗ
        |    Справочник.Номенклатура КАК СправочникНоменклатура
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            СвободныеОстатки.Номенклатура КАК Номенклатура,
        |            СУММА(СвободныеОстатки.ВНаличииОстаток) КАК ВНаличии,
        |            СУММА(СвободныеОстатки.ВНаличииОстаток - ВЫБОР
        |                    КОГДА ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомРезерва)
        |                        ТОГДА СвободныеОстатки.ВРезервеОстаток
        |                    КОГДА ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика)
        |                        ТОГДА ЕСТЬNULL(График.Количество, 0)
        |                    ИНАЧЕ 0
        |                КОНЕЦ) КАК Доступно
        |        ИЗ
        |            РегистрНакопления.СвободныеОстатки.Остатки(, Склад В (&Склад) {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК СвободныеОстатки
        |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаХарактеристика
        |                ПО СвободныеОстатки.Склад = НастройкаХарактеристика.Склад
        |                    И СвободныеОстатки.Номенклатура = НастройкаХарактеристика.Номенклатура
        |                    И СвободныеОстатки.Характеристика = НастройкаХарактеристика.Характеристика
        |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаНоменклатура
        |                ПО СвободныеОстатки.Склад = НастройкаНоменклатура.Склад
        |                    И СвободныеОстатки.Номенклатура = НастройкаНоменклатура.Номенклатура
        |                    И (НастройкаНоменклатура.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
        |                    И (НастройкаХарактеристика.Склад ЕСТЬ NULL )
        |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаСклад
        |                ПО СвободныеОстатки.Склад = НастройкаСклад.Склад
        |                    И (НастройкаСклад.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
        |                    И (НастройкаСклад.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
        |                    И (НастройкаХарактеристика.Склад ЕСТЬ NULL )
        |                    И (НастройкаНоменклатура.Склад ЕСТЬ NULL )
        |                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |                    График.Склад КАК Склад,
        |                    График.Номенклатура КАК Номенклатура,
        |                    График.Характеристика КАК Характеристика,
        |                    ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) КАК ВариантКонтроля,
        |                    -МИНИМУМ(График.КоличествоКонечныйОстаток) КАК Количество
        |                ИЗ
        |                    РегистрНакопления.ГрафикДвиженияТоваров.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), , День, ДвиженияИГраницыПериода, Склад В (&Склад) {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК График
        |                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаХарактеристика
        |                        ПО График.Склад = НастройкаХарактеристика.Склад
        |                            И График.Номенклатура = НастройкаХарактеристика.Номенклатура
        |                            И График.Характеристика = НастройкаХарактеристика.Характеристика
        |                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаНоменклатура
        |                        ПО График.Склад = НастройкаНоменклатура.Склад
        |                            И График.Номенклатура = НастройкаНоменклатура.Номенклатура
        |                            И (НастройкаНоменклатура.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
        |                            И (НастройкаХарактеристика.Склад ЕСТЬ NULL )
        |                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаСклад
        |                        ПО График.Склад = НастройкаСклад.Склад
        |                            И (НастройкаСклад.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
        |                            И (НастройкаСклад.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
        |                            И (НастройкаХарактеристика.Склад ЕСТЬ NULL )
        |                            И (НастройкаНоменклатура.Склад ЕСТЬ NULL )
        |                ГДЕ
        |                    ВЫБОР
        |                            КОГДА ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика)
        |                                ТОГДА ВЫБОР
        |                                        КОГДА НЕ НастройкаХарактеристика.ВариантКонтроля ЕСТЬ NULL
        |                                            ТОГДА ВЫБОР
        |                                                    КОГДА НастройкаХарактеристика.ГраницаГрафикаДоступности >= НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
        |                                                        ТОГДА График.Период <= НастройкаХарактеристика.ГраницаГрафикаДоступности
        |                                                    КОГДА НастройкаХарактеристика.СрокПоставки > 0
        |                                                        ТОГДА График.Период <= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ДЕНЬ, НастройкаХарактеристика.СрокПоставки - 1)
        |                                                    ИНАЧЕ ЛОЖЬ
        |                                                КОНЕЦ
        |                                        КОГДА НЕ НастройкаНоменклатура.ВариантКонтроля ЕСТЬ NULL
        |                                            ТОГДА ВЫБОР
        |                                                    КОГДА НастройкаНоменклатура.ГраницаГрафикаДоступности >= НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
        |                                                        ТОГДА График.Период <= НастройкаНоменклатура.ГраницаГрафикаДоступности
        |                                                    КОГДА НастройкаНоменклатура.СрокПоставки > 0
        |                                                        ТОГДА График.Период <= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ДЕНЬ, НастройкаНоменклатура.СрокПоставки - 1)
        |                                                    ИНАЧЕ ЛОЖЬ
        |                                                КОНЕЦ
        |                                        ИНАЧЕ ВЫБОР
        |                                                КОГДА НастройкаСклад.ГраницаГрафикаДоступности >= НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
        |                                                    ТОГДА График.Период <= НастройкаСклад.ГраницаГрафикаДоступности
        |                                                КОГДА НастройкаСклад.СрокПоставки > 0
        |                                                    ТОГДА График.Период <= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ДЕНЬ, НастройкаСклад.СрокПоставки - 1)
        |                                                ИНАЧЕ ЛОЖЬ
        |                                            КОНЕЦ
        |                                    КОНЕЦ
        |                            ИНАЧЕ ЛОЖЬ
        |                        КОНЕЦ
        |                    И График.КоличествоКонечныйОстаток < 0
        |                
        |                СГРУППИРОВАТЬ ПО
        |                    График.Номенклатура,
        |                    График.Характеристика,
        |                    График.Склад,
        |                    ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля))) КАК График
        |                ПО СвободныеОстатки.Склад = График.Склад
        |                    И СвободныеОстатки.Номенклатура = График.Номенклатура
        |                    И СвободныеОстатки.Характеристика = График.Характеристика
        |        
        |        СГРУППИРОВАТЬ ПО
        |            СвободныеОстатки.Номенклатура) КАК ВсеОстатки
        |        ПО СправочникНоменклатура.Ссылка = ВсеОстатки.Номенклатура
        |ГДЕ
        |    НЕ СправочникНоменклатура.ЭтоГруппа
        |{ГДЕ
        |    (1 В
        |            (ВЫБРАТЬ ПЕРВЫЕ 1
        |                1
        |            ИЗ
        |                РегистрСведений.НоменклатураСегмента КАК Сегменты
        |            ГДЕ
        |                Сегменты.Номенклатура = СправочникНоменклатура.Ссылка
        |                И Сегменты.Сегмент = &СегментНоменклатуры))}";
    КонецЕсли;
19 Мисти
 
18.11.13
17:14
|    ВЫРАЗИТЬ(ЕСТЬNULL(ВсеОстатки.ВНаличии, 0) / ЕСТЬNULL(СоглашениеТовары.Упаковка.Коэффициент, 1) КАК ЧИСЛО(15, 3)) КАК ВНаличииОстаток,
        |    ВЫРАЗИТЬ(ЕСТЬNULL(ВсеОстатки.Доступно, 0) / ЕСТЬNULL(СоглашениеТовары.Упаковка.Коэффициент, 1) КАК ЧИСЛО(15, 3)) КАК Доступно,
вот строчки, которых мне не хватало, только как бы из них соглашение исключить?
20 patapum
 
18.11.13
17:16
(19) ну как бы, нет соглашения, нет СоглашениеТовары.Упаковка.Коэффициент. значит пихаем вместо него 1, как будто оно было null
21 Мисти
 
18.11.13
17:19
|    ВЫРАЗИТЬ(ЕСТЬNULL(ВсеОстатки.ВНаличии, 0) / ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Коэффициент, 1) КАК ЧИСЛО(15, 3)) КАК ВНаличииОстаток,
        |    ВЫРАЗИТЬ(ЕСТЬNULL(ВсеОстатки.Доступно, 0) / ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Коэффициент, 1) КАК ЧИСЛО(15, 3)) КАК Доступно,
- выдрала этот кусочек, вроде получилось.
22 Мисти
 
18.11.13
18:10
Новая беда!
Всё бы уже хорошо - есть и остатки и цены, но остаток идет за минусом обособленных резервов!
А где взять полный остаток?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.