Имя: Пароль:
1C
 
Классификация номенклатуры, для наглядности
,
0 Margo95
 
26.11.20
07:48
Добрый день, такой вопрос, сделан был запрос, для того, чтобы определять класс номенклатуры по важности, исходя из его % продаж, так вот у меня весь товар по какой-то причине приобретает 1 класс (С), подскажите пожалуйста, с чем это связано?


ВЫБРАТЬ
    ПродажаТовараОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот
ПОМЕСТИТЬ ОбщаяСумма
ИЗ
    РегистрНакопления.ПродажаТовара.Обороты КАК ПродажаТовараОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПродажаТовара.СуммаПродажи / ОбщаяСумма.СуммаПродажиОборот * 100 КАК Сумма,
    ПродажаТовара.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ втИтоги
ИЗ
    РегистрНакопления.ПродажаТовара КАК ПродажаТовара,
    ОбщаяСумма КАК ОбщаяСумма
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втИтоги.Номенклатура КАК Номенклатура,
    ВЫБОР
        КОГДА втИтоги.Сумма >= 80
            ТОГДА "А"
        КОГДА втИтоги.Сумма >= 20
            ТОГДА "Б"
        КОГДА втИтоги.Сумма < 20
            ТОГДА "С"
    КОНЕЦ КАК КлассНоменклатуры,
    втИтоги.Сумма КАК Сумма
ИЗ
    втИтоги КАК втИтоги
1 ДенисЧ
 
26.11.20
07:55
Посмотри в свою вт глазами. Видишь где-то сумму > 20?
2 Margo95
 
26.11.20
07:57
(1) Для этого я и вывела сумму, чтобы посмотреть, но нигде не увидела, поэтому я подразумеваю, что где-то в запросе ошибка или я ошибаюсь?
3 Margo95
 
26.11.20
07:58
(1) нигде не увидела сумму больше 20* не правильно написала выше
4 Ненавижу 1С
 
гуру
26.11.20
08:00
Abc анализ не так считается. Там идёт упорядочивание товара по показателю продаж, накопительная сумма и процент от него
5 Margo95
 
26.11.20
08:08
(4) не совсем понимаю, как это будет в запросе смотреться? мне нужно просто накопительный итог сделать, а после уже в втИтог засунуть и последним запросом так же всё сравнивать?
6 Мимохожий Однако
 
26.11.20
08:26
Неправильно считаешь процент
7 Margo95
 
26.11.20
08:27
(6) не пойму тогда, а как процент считать? нужно же сумму одной нмк разделить на Общую сумму и * 100?
8 Малыш Джон
 
26.11.20
08:31
(0) Так во второй вт тоже обороты надо брать. Сейчас считается не процент продаж по номенклатуре, а процент по каждой конкретной продаже.
9 Галахад
 
гуру
26.11.20
08:31
Хм, а интересно, эту задачу можно вообще запросом решить.
10 Малыш Джон
 
26.11.20
08:33
(9) "Запрос может всё" (с)
11 Margo95
 
26.11.20
08:33
(8) Пробовала, и обороты взять во второй вт, но все равно получается одно и тоже, вот пример



ВЫБРАТЬ
    ПродажаТовараОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот
ПОМЕСТИТЬ ОбщаяСумма
ИЗ
    РегистрНакопления.ПродажаТовара.Обороты КАК ПродажаТовараОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПродажаТовараОбороты.СуммаПродажиОборот / ОбщаяСумма.СуммаПродажиОборот * 100 КАК Сумма,
    ПродажаТовараОбороты.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ втИтоги
ИЗ
    РегистрНакопления.ПродажаТовара.Обороты КАК ПродажаТовараОбороты,
    ОбщаяСумма КАК ОбщаяСумма
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втИтоги.Номенклатура КАК Номенклатура,
    ВЫБОР
        КОГДА втИтоги.Сумма >= 80
            ТОГДА "А"
        КОГДА втИтоги.Сумма >= 20
            ТОГДА "Б"
        КОГДА втИтоги.Сумма < 20
            ТОГДА "С"
    КОНЕЦ КАК КлассНоменклатуры,
    втИтоги.Сумма КАК Сумма
ИЗ
    втИтоги КАК втИтоги
12 Галахад
 
гуру
26.11.20
08:37
(10) Покажи как из этого:
Товар1 100
Товар2 90
Товар3 50

Как получить это:
Товар1 100 240
Товар2 90 140
Товар3 50 50
13 Margo95
 
26.11.20
08:38
Я же правильно понимаю, что в колонке Сумма, которую я дополнительно вывела, для просмотра результата, у меня по всей номенклатуре должно быть 100%, но у меня таких цифр что-то там не наблюдается и я не могу понять, с чем это связанно
14 Margo95
 
26.11.20
08:39
(12) Не совсем поняла, что именно нужно сделать и к чему этот пример
15 Margo95
 
26.11.20
08:41
(12) 50+90 = 140, 100+140 = 240, но что-то все равно не особо понимаю, накопительный итог? уже писала выше про это (5)
16 Галахад
 
гуру
26.11.20
08:42
(14) Я вроде для (10) писал.
17 Margo95
 
26.11.20
08:43
(16) Упс, извиняюсь, сообщения перепутала .-.
18 Малыш Джон
 
26.11.20
08:47
(12)

ВЫБРАТЬ
    "Товар1" КАК Товар,
    100 КАК Сумма
ПОМЕСТИТЬ втТовар

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Товар2",
    90

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Товар3",
    50
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втТовар.Товар КАК Товар,
    втТовар.Сумма КАК Сумма,
    СУММА(втТовар1.Сумма) КАК Сумма1
ИЗ
    втТовар КАК втТовар
        ЛЕВОЕ СОЕДИНЕНИЕ втТовар КАК втТовар1
        ПО втТовар.Товар <= втТовар1.Товар

СГРУППИРОВАТЬ ПО
    втТовар.Товар,
    втТовар.Сумма

УПОРЯДОЧИТЬ ПО
    Товар
19 Малыш Джон
 
26.11.20
08:49
(13) возможно в регистре кроме продаж есть ещё и обратные операции?
20 Margo95
 
26.11.20
08:53
(19) Если вы именно про расход и приход по движению, то нет, регистр оборотный и изменения в нём происходят только при продаже товара
21 Малыш Джон
 
26.11.20
08:54
(20) это я понимаю, что оборотный. Может отрицательные суммы есть?
22 Галахад
 
гуру
26.11.20
08:56
(18) Прикольно.

(20) В колонке "Сумма" не не сумма, а процент.
23 Margo95
 
26.11.20
09:03
(21) Проверяла, нет, по сумма все положительные
(22) Да, я знаю, что там выводятся проценты, а не сумма
24 Малыш Джон
 
26.11.20
09:08
(23) А у тебя есть номенклатура, которая дает больше, чем 20%-ный вклад в общие продажи?
25 Margo95
 
26.11.20
09:11
(24) да, 3 номенклатура, у которых самые большие продажи 45, 41 и 60%, у них класс проставляется Б, который и должен, но я не понимаю, почему в колонке "Сумма" у меня нет общего значения 100%
26 Margo95
 
26.11.20
09:14
(24) Вспомнила про вчерашнюю ошибку, когда код не отрабатывал, перезапустила, убрала параметры из запроса, и сделала итоги общие, проценты стали совсем другие и теперь код отрабатывает как нужно с параметрами и без них, проблема решена, всем спасибо большое, кто откликнулся
27 Margo95
 
26.11.20
10:47
Такой вопрос возник, есть обработка, мне нужно перед выполнением Выборки(Запроса), узнать какие у меня значения 3х реквизитов у Товара, но если я Ставлю условие Если Справочники.Товары.НайтиПоРеквизиту("...", ЗначениеРеквизита) Тогда, то у меня выскакивает ошибка, Преобразование значения к типу Булево не может быть выполнено, как мне можно произвести проверку Реквизита? то-есть если у меня значение реквизита установлено (какое-то) , то Возврат, Иначе Пока Выборка.Следующий() ....?
28 Малыш Джон
 
26.11.20
10:51
(27) НайтиПоРеквизиту() - это используется не для того, чтобы узнать, какие значения у реквизитов
29 Margo95
 
26.11.20
10:53
(28) А можно подсказку, как я могу узнать изначальное значение реквизита товара?
30 arsik
 
гуру
26.11.20
10:54
(29) Товар.ИмяРеквизита
31 Margo95
 
26.11.20
10:57
(30) В обработке всё происходит, не в форме самого справочника
32 arsik
 
гуру
26.11.20
11:00
(31) И чего?
33 arsik
 
гуру
26.11.20
11:01
+ (32) Открой отладчик и посмотри свойства своего товара в момент исполнения кода (27). Все станет ясно.
34 Margo95
 
26.11.20
11:08
(33) Проблема в том, что у меня запрос построен не на всей номенклатуре, а только на той, которая продаётся и не совсем понимаю, как после цикла Выборка.Следующий(), ставить условие Допустим, Если Выборка.Товар ... , чтобы узнать значение Реквизита
35 arsik
 
гуру
26.11.20
11:10
(34) Выборка.Товар.ИмяРеквизита
36 Margo95
 
26.11.20
11:12
(35) Посмотрите (11) пожалуйста, у меня такой запрос, вот из-за того, что я не вижу прямого доступа к Номенклатуре в Запросе, а только к её наименованию, поэтому и возникли проблемы с правильностью написания условия для проверки
37 Margo95
 
26.11.20
12:34
Пытаюсь записать данные по нажатию на кнопку в реквизит справочника, ошибок нет, в отладчике посмотрела, все данные находит, а класс почему-то не меняет по итогу в справочнике


Для каждого Элемент из ТЗ Цикл
        НайденныйЭлемент = Справочник.НайтиПоНаименованию(Элемент.Номенклатура);
        ТекущийОбъект = НайденныйЭлемент.ПолучитьОбъект();
        ТекущийОбъект.Класс = Элемент.Класс;
        ТекущийОбъект.Записать();
    КонецЦикла;
38 Малыш Джон
 
26.11.20
12:36
(37) Справочник.НайтиПоНаименованию(Элемент.Номенклатура);

А какой справочник-то?
39 Margo95
 
26.11.20
12:39
(38) Справочник, Это переменная, Справочник = Справочники.НаименованиеСправочника
40 Margo95
 
26.11.20
12:59
Так что, сможет кто-то подсказать, с чем возможно проблема возникает? по какой причине код отрабатывает, но ничего не записывает
41 Малыш Джон
 
26.11.20
13:00
(40) Отладчик же) он всё знает
42 Margo95
 
26.11.20
13:01
(41) Так, я посмотрела через отладчик и он находит нужные Товары, он находит нужные значения, но по какой-то причине он не записывает их в карточку товара
43 Margo95
 
26.11.20
13:10
Я не пойму почему, но если данные будут в реквизитах, он после нажатия, просто очищает данные все, с нужных реквизитов
44 Archer08
 
26.11.20
17:43
Смотри в отладчике Типзначения переменных.

Для каждого Элемент из ТЗ Цикл
Если Элемент.Номенклатура.Класс<>Элемент.Класс Тогда
        ТекущийОбъект = Элемент.Номенклатура.ПолучитьОбъект();
        ТекущийОбъект.Класс = Элемент.Класс;
        ТекущийОбъект.Записать();
КонецЕсли;
    КонецЦикла;