Имя: Пароль:
1C
1С v8
Определить количество комплектов
0 lamme
 
20.12.16
15:45
1С8
Есть справочник - комплекты. В него входят товары
Товар1 = 10шт
Товар2 = 8шт
Товар3 = 8шт

Есть документ с ТЧ - товары и количеством.
Как из документа определить - сколько комплектов сформировано

те если в документе
Товар1 = 11шт
Товар2 = 7шт
Товар3 = 9шт
то комплектов = 0

и если

Товар1 = 21шт
Товар2 = 16шт
Товар3 = 18шт
то комплектов 2
1 lamme
 
20.12.16
15:46
товар может входить только в 1 комплект.
2 lamme
 
20.12.16
15:47
как вариант вижу
находим все комплекты - куда входит товар.
целое от деления кол-ва в документе на кол-во в комплекте - и есть кол-во сфомированных комплектов
3 lamme
 
20.12.16
15:48
а не ... минимальное целое от кол-ва деления ...
4 lamme
 
20.12.16
16:12
продолжаем ... ))
5 lamme
 
20.12.16
16:12
вот запрос


"ВЫБРАТЬ
    |    ВложенныйЗапрос.Ссылка,
    |    ВложенныйЗапрос.КоличествоВЗаказе,
    |    ВложенныйЗапрос.КоличествоКомплектов
    |ИЗ
    |    (ВЫБРАТЬ
    |        Коллекции.Номенклатура КАК Номенклатура,
    |        Коллекции.Количество КАК Количество,
    |        Коллекции.Ссылка КАК Ссылка,
    |        ТЧЗаказа.Количество КАК КоличествоВЗаказе,
    |        ВЫБОР
    |            КОГДА Коллекции.Количество = 0
    |                ТОГДА 0
    |            ИНАЧЕ ВЫРАЗИТЬ(ТЧЗаказа.Количество / Коллекции.Количество КАК ЧИСЛО(10, 0))
    |        КОНЕЦ КАК КоличествоКомплектов
    |    ИЗ
    |        (ВЫБРАТЬ
    |            рбхКоллекцииТовары.Номенклатура КАК Номенклатура,
    |            рбхКоллекцииТовары.Количество КАК Количество,
    |            рбхКоллекцииТовары.Ссылка КАК Ссылка
    |        ИЗ
    |            Справочник.рбхКоллекции.Товары КАК рбхКоллекцииТовары) КАК Коллекции
    |            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |                ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
    |                ЗаказПокупателяТовары.Количество КАК Количество
    |            ИЗ
    |                Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
    |            ГДЕ
    |                ЗаказПокупателяТовары.Ссылка = &Ссылка) КАК ТЧЗаказа
    |            ПО Коллекции.Номенклатура = ТЧЗаказа.Номенклатура) КАК ВложенныйЗапрос";
6 lamme
 
20.12.16
16:13
в итоге такая таблица
Ссылка    КоличествоВЗаказе    КоличествоКомплектов
Комплект2        
Комплект1        
Комплект1    10    2
Комплект2    1    0
Комплект3    1    1


Как в этом запросе выбрать минимальное значение по всем комплектам
7 Михаил Козлов
 
20.12.16
16:17
Пусть i-номер комплекта, j-номер товара, Kij - количество товара j в комплекте i, Tj - общее количество товара j в накладной, Xi - количество полных комплектов, Ci - стоимость комплекта i.
Можно попробовать решить такую задачу (о ранце):
СУММА(j) Xi*Kij<=Tj, Xi>=0 - целое.
СУММА(i) Xi*Ci -> MAX
8 lamme
 
20.12.16
16:29
прочитал ...
чую себя тупицйей
9 Михаил Козлов
 
20.12.16
16:53
(8) Виноват, описался: в (7) первая сумма по i.
В Вашем случае (товар может входить только в 1 комплект) ситуация проще. Если не запросом, то число комплектов вида i = минимум целых частей от деления количества товара j на его количество в соответствующем комплекте. Минимум - по всем товарам, входящим в комплект.
10 lamme
 
20.12.16
17:06
(9)
ну вот то что минимум - это я допер.
как это программно в запросе седалть?
11 lamme
 
20.12.16
17:09
Сделал так
ВЫБРАТЬ
    ВложенныйЗапрос.Ссылка,
    СУММА(ВложенныйЗапрос.КоличествоВЗаказе) КАК КоличествоВЗаказе,
    СУММА(ВложенныйЗапрос.Количество) КАК КоличествоВКоллекции,
    СУММА(ВложенныйЗапрос.КоличествоКомплектов) КАК КоличествоКомплектов,
    МИНИМУМ(ВложенныйЗапрос.СравнительноеПолеАнализа) КАК СравнительноеПолеАнализа
ИЗ
    (ВЫБРАТЬ
        Коллекции.Номенклатура КАК Номенклатура,
        Коллекции.Количество КАК Количество,
        Коллекции.Ссылка КАК Ссылка,
        ЕСТЬNULL(ТЧЗаказа.Количество, 0) КАК КоличествоВЗаказе,
        ВЫРАЗИТЬ(ЕСТЬNULL(ТЧЗаказа.Количество, 0) / Коллекции.Количество КАК ЧИСЛО(10, 0)) КАК КоличествоКомплектов,
        ВЫБОР
            КОГДА (ВЫРАЗИТЬ(ЕСТЬNULL(ТЧЗаказа.Количество, 0) / Коллекции.Количество КАК ЧИСЛО(10, 0))) = 0
                ТОГДА ЛОЖЬ
            ИНАЧЕ ИСТИНА
        КОНЕЦ КАК СравнительноеПолеАнализа
    ИЗ
        (ВЫБРАТЬ
            рбхКоллекцииТовары.Номенклатура КАК Номенклатура,
            рбхКоллекцииТовары.Количество КАК Количество,
            рбхКоллекцииТовары.Ссылка КАК Ссылка
        ИЗ
            Справочник.рбхКоллекции.Товары КАК рбхКоллекцииТовары) КАК Коллекции
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
                ЗаказПокупателяТовары.Количество КАК Количество
            ИЗ
                Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
            ГДЕ
                ЗаказПокупателяТовары.Ссылка = &Ссылка) КАК ТЧЗаказа
            ПО Коллекции.Номенклатура = ТЧЗаказа.Номенклатура) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Ссылка
12 aleks_default
 
20.12.16
17:10
(0)Ты че задачник прорешиваешь? Так есть ведь уже решения. Иди на форум к Чистову.
13 lamme
 
20.12.16
17:10
те сделал новое поле - СравнительноеПолеАнализа
куда пишется Да-Нет в результате определения количества комплектов.
И группируем по минимуму по этому полю.

вроде работает
14 lamme
 
20.12.16
17:10
(12)
нет .. сижу туплю...
15 aleks_default
 
20.12.16
17:11
Там есть точно такая задача на комплекты.
16 lamme
 
20.12.16
17:12
мог б показать )
17 lamme
 
20.12.16
17:17
закрыли вопрос.
работает
18 aleks_default
 
20.12.16
17:19
неуч
19 lamme
 
20.12.16
17:26
да... я такой
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан