Два способа реализации ABC-анализа контрагентов для БП 3.0

17.03.20

Задачи пользователя - Адаптация типовых решений

В данной статье рассматриваются 2 способа реализации ABC анализа контрагентов для конфигурации Бухгалтерия предприятия 3.0 (версия  3.0.75.109).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ABC анализа контрагентов (на основе алгоритма).
.erf 9,47Kb
4
4 Скачать (1 SM) Купить за 1 850 руб.
ABC анализа контрагентов (на основе функции СКД).
.erf 8,68Kb
9
9 Скачать (1 SM) Купить за 1 850 руб.

ABC анализ является довольно распространенным методом классификации различных ресурсов. На просторах сети мы скорее всего найдем описание применения этого метода для классификации номенклатуры, чуть реже - контрагентов. Основан на знаменитом правиле Паретто, aka 80/20, который как известно позволяет разделить рассматриваемый ресурс на 2 группы: более значимая часть, требующая меньше затрат на обслуживание и менее значимая часть, требующая больше затрат на обслуживание. ABC анализ чаще всего применяют для разделения на большее количество категорий, например 3 или 4. Рассмотрим классификацию контрагентов по признаку доли выручки. Классифицировать будем на 3 группы:

  • в первую группу будут входить контрагенты, суммарная доля выручки которых составляет 80%. На основании правила Паретта мы можем ожидать, что количество контрагентов в данной группе составит 20% от общего числа.
  • во вторую группу войдут контрагенты, суммарная доля выручки которых составляет 15%,
  • в третью группу - все остальные контрагенты. Суммарная доля их выручки составит 5%.

Классификационные группы по традиции обозначают заглавными буквами английского алфавита: A, B, C.

Для выборки первоначальных данных мы обратимся к оборотам бухгалтерского регистра Хозрасчетный, и получим из него данные запросом. Выбирать будем по условию Счет равно Счет выручки 90.01. Причем рассмотрим 2 случая: когда корр. счет равен счету кассы 50.01 и когда нет. Тем самым мы выберем данные по оптовым и розничным продажам. Продажи по сертификатам и прочее для простоты рассматривать не будем.

Ниже приведен листинг запроса:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ОптоваяПродажа.СуммаОборотКт КАК Сумма,
    ВЫРАЗИТЬ(ОптоваяПродажа.КорСубконто1 КАК Справочник.Контрагенты) КАК Контрагент,
    ОптоваяПродажа.Счет КАК Счет,
    ОптоваяПродажа.КорСчет КАК КорСчет,
    ОптоваяПродажа.Организация КАК Организация,
    ЛОЖЬ КАК РозничныйПокупатель,
    ОптоваяПродажа.Регистратор КАК Документ,
    ОптоваяПродажа.ПериодДень КАК Период,
    ОптоваяПродажа.КоличествоОборотКт КАК Количество
ПОМЕСТИТЬ ВТ_Продажи
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, Счет В ИЕРАРХИИ (&СчетаВыручки), , , НЕ КорСчет В (&СчетаКассы), ) КАК ОптоваяПродажа

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

ВЫБРАТЬ
    РозничнаяПродажа.СуммаОборотКт,
    РозничнаяПродажа.Субконто1,
    РозничнаяПродажа.Счет,
    РозничнаяПродажа.КорСчет,
    РозничнаяПродажа.Организация,
    ИСТИНА,
    РозничнаяПродажа.Регистратор,
    РозничнаяПродажа.ПериодДень,
    РозничнаяПродажа.КоличествоОборотКт
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, Счет В ИЕРАРХИИ (&СчетаВыручки), , , КорСчет В (&СчетаКассы), ) КАК РозничнаяПродажа;

    
Поместив результат данного запроса во временную таблицу и выполнив на её основании еще ряд запросов мы в итоге получим результирующий запрос, который будет содержать следующие данные:

  • Контрагент,
  • Выручка,
  • Общая выручка,
  • Доля в выручке,
  • Доля в выручке в процентах.

 
Итак, на данном этапе мы располагаем исходными данными. Следующая задача - присвоение контрагентам классификационных групп. Ниже представлен листинг алгоритма присвоения классификационных групп:

категорияA = "A";
категорияB = "B";
категорияC = "C";

ДоляКатегории_A = 0.8;
ДоляКатегории_B = 0.15;
ДоляКатегории_C = 0.05;

текущаяКатегория = катA; 
суммаДоли = 0;
        
ИсходныеДанныеКонтрагентов.Сортировать("ДоляВВыручке Убыв");

Для Каждого контр ИЗ ИсходныеДанныеКонтрагентов Цикл

    суммаДоли = суммаДоли + контр.ДоляВВыручке;
    контр.Категория1 = текущаяКатегория;

    Если текущаяКатегория = катA Тогда
        Если суммаДоли > ДоляКатегории_A Тогда
            текущаяКатегория     = категорияB;
            ДоляКатегории_A     = суммаДоли;
            ДоляКатегории_B     = 1 - ДоляКатегории_A - ДоляКатегории_C;
            суммаДоли             = 0;
        КонецЕсли;

    ИначеЕсли текущаяКатегория = катB Тогда
        Если суммаДоли > ДоляКатегории_B Тогда
            текущаяКатегория     = категорияC; 
            ДоляКатегории_B     = суммаДоли;
            ДоляКатегории_C     = 1 - ДоляКатегории_A - суммаДоли;
            суммаДоли             = 0;
        КонецЕсли;

    КонецЕсли;

КонецЦикла;

Настроив в СКД условное оформление для разных категорий, а также обозначение категорий привычными символами A, B и C (через настройку макетов), мы получаем примерно следующий результат:

Рис. 1. Отчет ABC Классификация контрагентов по признаку доли в выручке.

 

Попытки найти способ получения классификации в самом запросе привели меня к более короткому и более профессиональному пути решения данной задачи. Сам механизм СКД имеет встроенную функцию КлассификацияABC, которая может быть применена для написания выражения ресурса. Синтаксис данной функции:

КлассификацияABC(<Выражение>, <КоличествоГрупп>, <ПроцентыГрупп>, <ГруппировкиПрименения>)

Параметры:

<Выражение> - тип Строка, выражение вычисления классификации,
<КоличествоГрупп> - тип Число,
<ПроцентыГрупп> - тип Строка, распределение процентов по группам. Обратите внимание - записывается нарастающим итогом, проценты последней группы не указываются,
<ГруппировкиПрименения> - тип Строка, наименование группировки, в которой нужно вычислять классификацию.

В нашем случае вызов данной функции выглядит следующим образом:

КлассификацияABC("Сумма(ДоляВВыручке)", 3, "80,95", "Контрагент")

 

Рис. 2. Настройка функции КлассификацияABC в СКД отчета.

 


В итоге получаем следующий результат:

 


Рис. 3. Отчет ABC Классификация контрагентов по признаку доли в выручке с помощью функции СКД.

 

Предлагаемые отчеты могут подключены к программе как внешние, через механизм БСП Дополнительные отчеты и обработки. Функционал тестировался на версии 3.0.75.109 конфигурации Бухгалтерия предприятия.

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    5682    14    5    

24

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3930    12    0    

29

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5114    dimanich70    15    

21

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    5582    dimanich70    9    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 21.03.20 16:48
Сообщение было скрыто модератором.
...
2. user1272849 23.03.20 13:11 Сейчас в теме
здравствуйте, скачала вашу обработку. есть ли какая-нибудь возможность переделать под номенклатуру? пытаюсь заменить контрагент в скд на номенклатуру, выводить лишь номенклатурные группы. вероятно стоит вообще иначе делать?
3. Астиг 19 23.03.20 13:51 Сейчас в теме
(2) Добрый день! Я попробую сегодня-завтра и напишу вам. Вообще-то я думаю да, должно все получиться.
4. Астиг 19 23.03.20 15:43 Сейчас в теме
(2) Посмотрел. Да, в таком исполнении анализировать номенклатуру не получится. Потому что 90.01 не имеет субконто Номенклатура, только Номенклатурные группы. Что можно предпринять? Брать не 90.01, а 90.01.1 - там 3-е субконто как раз номенклатура, но непонятно совершаются ли вообще такие проводки. Ну и запрос в компоновке конечно придется переделать. Другой вариант - добавить в счет 90.01 3-м субконто номенклатуру, перепровести несколько документов и посмотреть - может быть заработает (запрос все равно переделать).
5. user1272849 23.03.20 16:40 Сейчас в теме
(4) самое забавное, что у меня стал выводить номенклатуру, без настроек по 90.0.1 счету, но видимо не всю, что есть в базе. окончательно запуталась
Прикрепленные файлы:
6. Астиг 19 23.03.20 16:44 Сейчас в теме
(5) Посмотрите в плане счетов - у 90.01 есть субконто номенклатура? И какое оно по счету?
7. user1272849 23.03.20 16:49 Сейчас в теме
(6) ага, третье, у меня подключено. и правда
8. user1272849 21.04.20 09:52 Сейчас в теме
прошу прощения. возник вопрос. можно прикрутить сюда прибыль?
9. Астиг 19 21.04.20 10:40 Сейчас в теме
(8) Добрый день! Вопрос только в том, как и откуда мы будем её брать. Если есть идеи - намекните - я постараюсь изобразить.
10. Lina_Buh 19.10.21 10:57 Сейчас в теме
Добрый день. Подскажите, пожалуйста, как вывести значение функции КлассификацияABC буквами?
11. Lina_Buh 19.10.21 14:37 Сейчас в теме
Вопрос снят) Для тех кто изучает скд как я, параметр нужно делать во вкладке "Вычисляемы поля" и там же прописывать соответствие букв в "доступные значения".
12. Touch_Of_Soul 30 10.02.23 18:02 Сейчас в теме
ABC по номенклатуре в иерархии есть?
ABC по контрагентам?
Для топ релиза БП 3.0
Оставьте свое сообщение