Имя: Пароль:
1C
1С v8
получить количество клиентов по продажам бухгалтерия 3.0
,
0 Новый1сник2
 
13.01.22
18:11
Доброго дня коллеги!
подскажите если это возможно, как получить количество клиентов, которому  были продажи.
делаю на СКД, запрос такой:

ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1.Артикул КАК Артикул,
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК Продано,
    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК Остаток,
    30 КАК ДнейЗапаса,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт / 30 - ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК ТребуетсяЗаказать,
    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт <> 0
    И ХозрасчетныйОстаткиИОбороты.Счет.Код = "41.01"

УПОРЯДОЧИТЬ ПО
    Продано УБЫВ
1 Злопчинский
 
13.01.22
18:14
ну, то что уходит с 41 - это не всегда продажи
2 Новый1сник2
 
13.01.22
18:18
(1) поле регистратор в запросе не доступно, хотя для начала достаточно бы было количество реализаций по номенклатуре
3 Новый1сник2
 
13.01.22
18:21
поясню, смысл в том что какой то товар продался в количестве 100 шт. и очень хотелось бы знать или это один клиент разово закупил все эти 100 шт. или это десять клиентов купили по 10 шт., другими словами нужна статистика для закупа
4 Новый1сник2
 
13.01.22
18:21
(1) этот момент пока можно пропустить
5 Новый1сник2
 
13.01.22
18:25
в общих модулях видел, что регистратор доступен, в моем запросе его просто нет, а если добавлять вручную, ругается
6 Базис
 
naïve
13.01.22
18:25
Зафиксируй требования. Попробуй в консоли построить запрос по этим требованиям. Получится - будешь изменять требования.
7 Новый1сник2
 
13.01.22
18:32
(6) расшифруй, там нет ни каких требований или я не увидел
8 Dmitrii
 
гуру
13.01.22
18:43
Каким боком запрос в (0) относится к вопросу ветки?
Обороты по контрагенту (кому сколько продали) получить можно. Но какой смысл в остатках?
10 покупателей купили товар в количестве 100 штук (каждый по 10 шт.). На складе осталось 10 шт. Что должен показать твой отчёт?

(5) >> регистратор доступен, в моем запросе его просто нет.

Таблицы регистра бухгалтерии (с поддержкой корреспонденции).
Таблица остатков и оборотов.
Параметры.
Периодичность (необязательный).
Конструкция языка запросов. Указывается дополнительный разворот оборотов по периодичности. Задается один из следующих вариантов:
Период (Period) - только за период (не разворачивать);
Запись (Record) - разворачивать по записям;
Регистратор (Recorder) - разворачивать по регистратору;
УточнениеПериода (PeriodAdjustment) - разворачивать по значениям уточнения периода (только для регистров с поддержкой уточнения периода);
Секунда (Second) - разворачивать по секундам;
Минута (Minute) - разворачивать по минутам;
Час (Hour) - разворачивать по часам;
День (Day) - разворачивать по дням;
Неделя (Week) - разворачивать по неделям;
Декада (TenDays) - разворачивать по декадам;
Месяц (Month) - разворачивать по месяцам;
Квартал (Quarter) - разворачивать по кварталам;
Полугодие (HalfYear) - разворачивать по полугодиям;
Год (Year) - разворачивать по годам;
Авто (Auto) - периодичность определяется автоматически по используемым в запросе полям периодов.
Значение по умолчанию: Период.
9 Михаил Козлов
 
13.01.22
18:45
Периодичность в параметрах виртуальной таблицы установите: Регистратор.
10 Базис
 
naïve
13.01.22
18:51
Ты меняешь условия задачи, код твой вообще не о том, не хочешь ли ты поучиться?
11 Dmitrii
 
гуру
13.01.22
18:53
(7) >>  нет ни каких требований или я не увидел.

Речь о требованиях к отчету.
Сформулировать требования должен ты или твой заказчик.
Начинать надо не с написания запросов, а с того, чтобы взять лист бумаги и карандашом нарисовать таблицу с результатами того, что должно получится.
Подписать каждую колонку этой таблице.
У каждой колонки указать источник данных (таблицу), откуда берутся данные для её заполнения.
Выписать все источники данных (таблицы), получившиеся на предыдущем шаге.
Описать связи (соединения) между источниками данных.
Определить тип связи (один к одному, один ко многим, многие ко многим).
Определить необходимость группировок данных в источниках и в результирующей таблице.
Описать условия отборов данных для таблиц-источников (для секций ГДЕ, ИМЕЮЩИЕ и параметров виртуальных таблиц).

Посмотрев на этот листок, открыть в конфигураторе конструктор запросов и в нём все это накидать.
12 Новый1сник2
 
14.01.22
08:53
(8) "Обороты по контрагенту (кому сколько продали) получить можно. Но какой смысл в остатках?
10 покупателей купили товар в количестве 100 штук (каждый по 10 шт.). На складе осталось 10 шт. Что должен показать твой отчёт?"

как раз с таблицей все понятно, продано, остаток, сколько нужно заказать (исходя из дней запаса), не хватает колонки сколько контрагентов купили. Отчет должен показать сколько нужно докупить исходя из статистики продаж, и показатель количество клиентов нужен чтобы понимать, что под одного разового клиента, держать на складе товар который он купил не имеет смысла (даже если снова обратиться можно сделать под заказ), а вот если этот товар десять клиентов купили, то такой товар ходовой, и должен быть в наличии на складе.
13 craxx
 
14.01.22
08:57
62 счет, причем тут 41?
14 Новый1сник2
 
14.01.22
09:04
(13) на 62 номенклатуры нет, и обороты нужны не по сумме а по количеству проданного
15 hhhh
 
14.01.22
09:08
(14) наверно тебе нужен счет 90.01. Там идет в разрезе номенклатуры.

то есть проводка Дт 62 Кт 90.01
16 tgu82
 
14.01.22
09:12
(14)То есть планирование закупок делаете?
17 Новый1сник2
 
14.01.22
09:15
(16) да
18 hhhh
 
14.01.22
09:22
(17) а зачем там количество клиентов? Оно же ни о чем не говорит. Наоборот суммы важны, один клиент набрал товара на сотни тысяч, а другой на 50 рублей. И мы напишем, количество клиентов 2. И что это даст?
19 ChMikle
 
14.01.22
09:24
Если опт , имхо, проще выбрать реализации проведенные за период и из табличной части выбрать клиентов и товар .
20 Новый1сник2
 
14.01.22
09:51
(19) да, других вариантов пока не вижу
21 Новый1сник2
 
14.01.22
09:56
(18) задача держать на складе ликвидный товар. а количество клиентов анализировать, один-два, это одно, если их больше десяти совсем другое.
22 ChMikle
 
14.01.22
10:21
(20)  а что смущает ?
23 Новый1сник2
 
14.01.22
10:24
(22) да так наверно и сделаю, посмотрим, просто по регистру уже сделал отчет.
24 Злопчинский
 
14.01.22
10:41
(2) вообще-то есть корреспонденция счетов, которая позволяет без регистратора понимать что это - продажа или списание.
25 Злопчинский
 
14.01.22
10:45
(12) "а вот если этот товар десять клиентов купили, то такой товар ходовой, и должен быть в наличии на складе."
- вы заблуждаетесь. товар купили 10 клиентов. остальные товары покупают 100 клиентов. Очевидно, что товар, который покупают 10 клиентов - нихера не ходовой. Посмотрите в сторону ABC-XYZ для начала хотя бы.
26 Злопчинский
 
14.01.22
10:47
ну и анализировать в терминах количеств - это для склада нормально. а для фин показателей и что лучше закупать - ну... закупайте товар который покупают почти все клиенты, но доля которого в выручке/прибыли - очень мала...
27 Новый1сник2
 
14.01.22
10:49
(25) я не заблуждаюсь, и у меня есть опыт оптимизации склада, как раз по планированию закупок. статистика показывает сколько товаров продано, сколько на остатках и сколько нужно докупить. это по складу, а финансовые и прочие показатели анализируются отдельно
28 Новый1сник2
 
14.01.22
10:57
(26) что выгоднее закупать и продавать, это отдельная работа с ассортиментом, так же если появились новые позиции по которым еще нет статистики. т.е закупки не возможно полностью автоматизировать, работу делает человек, отчет только упрощает немного ее.
29 Анцеранана
 
14.01.22
11:02
(23) можно хоть по регистру хоть по регистру бух, я тупо делаю такие задачи: Номенклатура, Контрагент, 1 ; потом можно свернуть и соединить с первой таблицей. Или КОЛИЧЕСТВО (РАЗЛИЧНЫЕ
https://helpme1s.ru/yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-gruppirovka
30 Dmitrii
 
гуру
14.01.22
11:21
Что-то типа такого получилось.
Это заготовка с нужными данными. Дальше сам дорисуешь то, что тебе надо.


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ХозрасчетныйСубконто.Регистратор КАК Регистратор,
|    ХозрасчетныйСубконто.Значение КАК Контрагент
|ПОМЕСТИТЬ ПродажиКонтрагентамПоДокументам
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
|        ПО Хозрасчетный.Период = ХозрасчетныйСубконто.Период
|            И Хозрасчетный.Регистратор = ХозрасчетныйСубконто.Регистратор
|            И Хозрасчетный.НомерСтроки = ХозрасчетныйСубконто.НомерСтроки
|ГДЕ
|    Хозрасчетный.Активность
|    И Хозрасчетный.СчетДт В(&СчетаУчетасВзаиморасчетовСПокупателями)
|    И ХозрасчетныйСубконто.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет)
|    И ХозрасчетныйСубконто.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)
|    И Хозрасчетный.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
|    И Хозрасчетный.Организация = &Организация
|
|ИНДЕКСИРОВАТЬ ПО
|    Регистратор
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    Хозрасчетный.Регистратор КАК Регистратор,
|    СУММА(Хозрасчетный.КоличествоКт) КАК КоличествоКт,
|    ХозрасчетныйСубконтоНоменклатура.Значение КАК Номенклатура,
|    ХозрасчетныйСубконтоСклады.Значение КАК Склад
|ПОМЕСТИТЬ ОборотыКтПоНоменклатуреИСкладамПоДокументам
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконтоНоменклатура
|        ПО Хозрасчетный.Период = ХозрасчетныйСубконтоНоменклатура.Период
|            И Хозрасчетный.Регистратор = ХозрасчетныйСубконтоНоменклатура.Регистратор
|            И Хозрасчетный.НомерСтроки = ХозрасчетныйСубконтоНоменклатура.НомерСтроки
|            И (ХозрасчетныйСубконтоНоменклатура.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))
|            И (ХозрасчетныйСубконтоНоменклатура.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура))
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконтоСклады
|        ПО Хозрасчетный.НомерСтроки = ХозрасчетныйСубконтоСклады.Период
|            И Хозрасчетный.Регистратор = ХозрасчетныйСубконтоСклады.Регистратор
|            И Хозрасчетный.НомерСтроки = ХозрасчетныйСубконтоСклады.НомерСтроки
|            И (ХозрасчетныйСубконтоНоменклатура.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))
|            И (ХозрасчетныйСубконтоНоменклатура.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады))
|ГДЕ
|    Хозрасчетный.Активность
|    И Хозрасчетный.СчетКт = &СчетаУчетаТоваров
|    И Хозрасчетный.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
|    И Хозрасчетный.Организация = &Организация
|
|СГРУППИРОВАТЬ ПО
|    Хозрасчетный.Регистратор,
|    ХозрасчетныйСубконтоСклады.Значение,
|    ХозрасчетныйСубконтоНоменклатура.Значение
|
|ИНДЕКСИРОВАТЬ ПО
|    Регистратор
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиКонтрагентамПоДокументам.Контрагент) КАК КоличествоПокупателей,
|    ОборотыКтПоНоменклатуреИСкладамПоДокументам.Номенклатура КАК Номенклатура,
|    ОборотыКтПоНоменклатуреИСкладамПоДокументам.Склад КАК Склад,
|    СУММА(ОборотыКтПоНоменклатуреИСкладамПоДокументам.КоличествоКт) КАК КоличествоКт
|ПОМЕСТИТЬ ПродажиПоКонтрагентамИТоварам
|ИЗ
|    ПродажиКонтрагентамПоДокументам КАК ПродажиКонтрагентамПоДокументам
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОборотыКтПоНоменклатуреИСкладамПоДокументам КАК ОборотыКтПоНоменклатуреИСкладамПоДокументам
|        ПО ПродажиКонтрагентамПоДокументам.Регистратор = ОборотыКтПоНоменклатуреИСкладамПоДокументам.Регистратор
|
|СГРУППИРОВАТЬ ПО
|    ОборотыКтПоНоменклатуреИСкладамПоДокументам.Номенклатура,
|    ОборотыКтПоНоменклатуреИСкладамПоДокументам.Склад
|
|ИНДЕКСИРОВАТЬ ПО
|    Номенклатура,
|    Склад
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ПродажиКонтрагентамПоДокументам
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ОборотыКтПоНоменклатуреИСкладамПоДокументам
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ЕСТЬNULL(ПродажиПоКонтрагентамИТоварам.Номенклатура, ХозрасчетныйОстатки.Субконто1) КАК Номенклатура,
|    ЕСТЬNULL(ПродажиПоКонтрагентамИТоварам.Склад, ХозрасчетныйОстатки.Субконто2) КАК Склад,
|    ЕСТЬNULL(ПродажиПоКонтрагентамИТоварам.КоличествоПокупателей, 0) КАК КоличествоПокупателей,
|    ЕСТЬNULL(ПродажиПоКонтрагентамИТоварам.КоличествоКт, 0) КАК КоличествоПродано,
|    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстаток
|ИЗ
|    ПродажиПоКонтрагентамИТоварам КАК ПродажиПоКонтрагентамИТоварам
|        ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОкончания, Счет В (&СчетаУчетаТоваров), &СубконтоНоменклатураСклад, Организация = &Организация) КАК ХозрасчетныйОстатки
|        ПО ПродажиПоКонтрагентамИТоварам.Номенклатура = ХозрасчетныйОстатки.Субконто1
|            И ПродажиПоКонтрагентамИТоварам.Склад = ХозрасчетныйОстатки.Субконто2";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Запрос.УстановитьПараметр("Организация", Организация);
СубконтоНоменклатураСклад = Новый Массив;
СубконтоНоменклатураСклад.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
СубконтоНоменклатураСклад.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
Запрос.УстановитьПараметр("СубконтоНоменклатураСклад", СубконтоНоменклатураСклад);
СчетаУчетасВзаиморасчетовСПокупателями = Новый Массив;
СчетаУчетасВзаиморасчетовСПокупателями.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПокупателями); // 62.01
СчетаУчетасВзаиморасчетовСПокупателями.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиВал); // 62.21
СчетаУчетасВзаиморасчетовСПокупателями.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиУЕ); // 62.31
Запрос.УстановитьПараметр("СчетаУчетасВзаиморасчетовСПокупателями", СчетаУчетасВзаиморасчетовСПокупателями);
СчетаУчетаТоваров = Новый Массив;
СчетаУчетаТоваров.Добавить(ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
Запрос.УстановитьПараметр("СчетаУчетаТоваров", СчетаУчетаТоваров);
РезультатЗапроса = Запрос.Выполнить();
31 Aleksey
 
14.01.22
11:21
1 регистратор = 1 клиент.
Иначе получиться что если один клиент берет 10 раз по 10 штук то типа заказывать не надо, это же один клиент брал
32 Новый1сник2
 
14.01.22
11:50
(31) согласен, только хотелось бы в свой запрос этот регистратор выбрать, это возможно?
33 Dmitrii
 
гуру
14.01.22
11:54
(32) Тебе уже несколько раз ответили в (8) и в (9). В (30) альтернативный пример. Ты вообще читаешь что тебе пишут?

>> 1 регистратор = 1 клиент.

Очередное переобувание в воздухе.
Тебе же не просто так сказали - определись с требованиями. А то ты их меняешь каждые два часа пребывания на форуме.
34 Новый1сник2
 
14.01.22
11:58
благодарю за ответы, дальше сам посмотрю
35 Aleksey
 
14.01.22
12:55
(33) все начинают с малого. Завтра доростут до среднеквадриточного отклонения чтобы сгладить пики продаж
36 Новый1сник2
 
14.01.22
13:25
господа, подскажите еще вопрос, регистратор добавил, но строчки в отчете стали задваиваться
37 Новый1сник2
 
14.01.22
13:25
ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1.Артикул КАК Артикул,
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК Продано,
    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК Остаток,
    30 КАК ДнейЗапаса,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт / 30 - ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК ТребуетсяЗаказать,
    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
    КОЛИЧЕСТВО(ХозрасчетныйОстаткиИОбороты.Регистратор) КАК Регистратор
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт <> 0
    И ХозрасчетныйОстаткиИОбороты.Счет.Код = "41.01"

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстаткиИОбороты.Субконто1.Артикул,
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.Субконто2

УПОРЯДОЧИТЬ ПО
    Продано УБЫВ
38 Новый1сник2
 
14.01.22
13:26
+ если добавляю в общую группировку, то в отчет выходят сами документы
39 Новый1сник2
 
14.01.22
15:19
всем спасибо, вроде разобрался
40 Злопчинский
 
14.01.22
15:25
(27) Еще раз, в том числе по оптимизации закупок по складу:
""а вот если этот товар десять клиентов купили, то такой товар ходовой, и должен быть в наличии на складе."
- вы заблуждаетесь. товар купили 10 клиентов. остальные товары покупают 100 клиентов. Очевидно, что товар, который покупают 10 клиентов - нихера не ходовой.
.
оптимизация закупок по складу - складские показатели являются всего лишь ограничивающими факторами/условиями для планирования закупок (доступность текущих и прогнозируемых объемов склада, возможность своевременной обработки входящего товаропотока и т.п. чисто складские показатели).
41 Новый1сник2
 
14.01.22
15:26
по отчету все равно записи задваиваются, может подскажите, что то затупил с этим вопросом
42 Новый1сник2
 
14.01.22
15:27
(40) да я не спорю, просто клиент попросил сделать такой отчет
43 Новый1сник2
 
14.01.22
16:11
так ни кто и не подскажет почему строки задваиваются ?
44 Новый1сник2
 
14.01.22
16:26
благодарю вроде получилось
Ошибка? Это не ошибка, это системная функция.