Расчет медианы и квартилей для дискретного ряда запросом

Публикация № 1157774

Разработка - Практика программирования

медиана квартиль квантиль перцентиль статистические показатели

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

Что такое медиана и квартили?

Медиана — числовое значение признака, которое делит упорядоченную по возрастанию совокупность на две равных части.

Квартили — числовые значения признака, которые делят упорядоченную по возрастанию совокупность на четыре равных части. 
Раз квартили делят совокупность на четыре части, то квартилей бывает три варианта: первый (нижний), второй(средний), третий (верхний). Второй квартиль это и есть медиана.

Пример

Имеем числовой ряд [1,3,5,7,9,11,13]:

  • Медиана = 7 (делит исходный ряд пополам [1,3,5] + [9,11,13]);
  • Квартиль1 = 3 (делит ряд [1,3,5] пополам);
  • Квартиль2 = Медиана = 7;
  • Квартиль3 = 11 (делит ряд [9,11,13] пополам).

Все становится немного сложнее, когда элементов, например, нечетное количество — выбрать конкретный элемент уже не получится.

Зачем все это нужно?

Медиана

Такой показатель как "среднее" знаком всем и ни у кого не возникает вопросов о его необходимости. Проблема со средним в том, что оно хорошо описывает данные, если они распределены нормально. Иначе, как правило, разумнее использовать медиану. 

Самый простой пример: средняя зарплата в России. Показатель в некотором смысле отражает "среднюю температуру по больнице", так как на него оказывают сильное влияние выбросы — условно, слишком большие зарплаты олигархов. В то же время, медиана показывает такой размер зарплаты, который делит население пополам — половина получает меньше этой суммы, половина больше. В итоге, медиана почти в 1.5 раза меньше средних показателей зарплаты.

Более близкий пример к 1С: средний чек. Если хочется оценить динамику этого показателя, то лучше использовать медиану. Причина: на среднее сильно влияют выбросы — очень маленькие покупки или наоборот очень большие.

Квартили

Например, есть задача оценки адекватности закупочной цены на товар на текущий момент. 

Один из вариантов — посмотреть по каким ценам продавался этот товар ранее и исходя из наценки рассчитать целевую закупочную цену. Но смотреть на среднее, как было сказано выше, плохая затея. Можно, например, попытаться определить такую цену, что 75% товара продавалось по ней или выше — это и будет 1-й квартиль. Все это, правда, будет работать, если у нас достаточно наблюдений — например, товар продавался хотя бы раз 30, чтобы было на основе чего все рассчитывать.
Безусловно, все это не может быть единственным критерием для определения разумной закупочной цены и нужно использоваться что-то еще.

Формулы

В общем случае можно посчитать порядковый номер медианы и квартилей:

  • порядковый номер медианы = (n+1)/2;
  • порядковый номер квартиля = номер квартиля*(n+1)/4.

В нашем примере:

  • порядковый номер медианы = (7+1)/2 = 4;
  • порядковый номер первого квартиля = 1*(7+1)/4 = 2;
  • порядковый номер первого квартиля = 2*(7+1)/4 = 4;
  • порядковый номер первого квартиля = 3*(7+1)/4 = 6.

В общем случае, все эти порядковые номера могут быть нецелыми (например, если количество элементов нечетно).
Если номер квартиля – нецелое число, то значением квартиля будет сумма, состоящая из значения элемента, для которого порядковый номер равен целому значению номера квартиля, и указанной части (нецелая часть номера квартиля) разности между значением этого элемента и значением следующего элемента.

Так же в общем случае, не всегда есть порядковый номер: один и тот же признак может встречаться в выборке несколько раз и пронумеровать их можно будет только условно. Например, в статье //1c.taxpravo.ru/public/539316/ рассматривается как раз такой вариант решения.

В общем случае, можно использовать понятие накопленной частоты для каждого уникального элемента ряда. Подробнее про теорию можно почитать, например, тут: https://studfile.net/preview/5316597/page:3/#9. Там же есть хорошие примеры расчета.

Запрос

Постарался прокомментрировать все действия в самом запросе

//готовим саму выборку данных
//Значение — значение признака
//Частота — сколько раз данный признак встречается в выборке
ВЫБРАТЬ
    Продажи.Номенклатура КАК Группировка,
    СУММА(Продажи.КоличествоОборот) КАК Частота,
    ВЫРАЗИТЬ(Продажи.СтоимостьОборот / Продажи.КоличествоОборот КАК ЧИСЛО(15, 0)) КАК Значение
ПОМЕСТИТЬ врВыборка
ИЗ
    (ВЫБРАТЬ
        ПродажиОбороты.Номенклатура КАК Номенклатура,
        ПродажиОбороты.Регистратор КАК Регистратор,
        ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
        ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
    ИЗ
        РегистрНакопления.Продажи.Обороты(, , Регистратор, ) КАК ПродажиОбороты
    ГДЕ
        ПродажиОбороты.КоличествоОборот > 0
        И ПродажиОбороты.СтоимостьОборот > 0) КАК Продажи
 
СГРУППИРОВАТЬ ПО
    Продажи.Номенклатура,
    ВЫРАЗИТЬ(Продажи.СтоимостьОборот / Продажи.КоличествоОборот КАК ЧИСЛО(15, 0))
;
 
////////////////////////////////////////////////////////////////////////////////
//рассчитываем порядковые номера квартилей и медианы, отдельно целые части, отдельно дробные
//попутно рассчитываем средние, минимальные и максимальные значения
ВЫБРАТЬ
    врВыборка.Группировка,
    СУММА(врВыборка.Частота) КАК РазмерВыборки,
    ВЫРАЗИТЬ(СУММА(врВыборка.Частота * врВыборка.Значение) / СУММА(врВыборка.Частота) КАК ЧИСЛО(15, 2)) КАК СреднееЗначениеПоВыборке,
    МИНИМУМ(врВыборка.Значение) КАК МинимальноеЗначениеПоВыборке,
    МАКСИМУМ(врВыборка.Значение) КАК МаксимальноеЗначениеПоВыборке,
    ВЫРАЗИТЬ((СУММА(врВыборка.Частота) + 1) / 2 - 0.5 КАК ЧИСЛО(15, 0)) КАК ПорядковыйНомерМедианы,
    (СУММА(врВыборка.Частота) + 1) / 2 - (ВЫРАЗИТЬ((СУММА(врВыборка.Частота) + 1) / 2 - 0.5 КАК ЧИСЛО(15, 0))) КАК СмещениеМедианыВправо,
    ВЫРАЗИТЬ(1 * (СУММА(врВыборка.Частота) + 1) / 4 - 0.5 КАК ЧИСЛО(15, 0)) КАК ПорядковыйНомерКвартиля1,
    1 * (СУММА(врВыборка.Частота) + 1) / 4 - (ВЫРАЗИТЬ(1 * (СУММА(врВыборка.Частота) + 1) / 4 - 0.5 КАК ЧИСЛО(15, 0))) КАК СмещениеКвартиля1Вправо,
    ВЫРАЗИТЬ(3 * (СУММА(врВыборка.Частота) + 1) / 4 - 0.5 КАК ЧИСЛО(15, 0)) КАК ПорядковыйНомерКвартиля3,
    3 * (СУММА(врВыборка.Частота) + 1) / 4 - (ВЫРАЗИТЬ(3 * (СУММА(врВыборка.Частота) + 1) / 4 - 0.5 КАК ЧИСЛО(15, 0))) КАК СмещениеКвартиля3Вправо
ПОМЕСТИТЬ врСвойстваВыборки
ИЗ
    врВыборка КАК врВыборка
 
СГРУППИРОВАТЬ ПО
    врВыборка.Группировка
;
 
////////////////////////////////////////////////////////////////////////////////
//рассчитываем порядковые номера для каждого признака
//при этом т.к. признак может повторяться, то рассчитываем и первые (левый) номер для данном значения признака и последний (правый)
//по сути это и есть накопленная частота
ВЫБРАТЬ
    врВыборка.Группировка,
    врВыборка.Частота,
    врВыборка.Значение,
    СУММА(врВыборкаВспомогательная.Частота) КАК НакопленнаяЧастотаПравогоЭлемента,
    СУММА(ВЫБОР
            КОГДА врВыборкаВспомогательная.Значение = врВыборка.Значение
                ТОГДА 0
            ИНАЧЕ врВыборкаВспомогательная.Частота
        КОНЕЦ) + 1 КАК НакопленнаяЧастотаЛевогоЭлемента
ПОМЕСТИТЬ врВыборкаСНакопленнойЧастотой
ИЗ
    врВыборка КАК врВыборка
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ врВыборка КАК врВыборкаВспомогательная
        ПО врВыборка.Группировка = врВыборкаВспомогательная.Группировка
            И врВыборка.Значение >= врВыборкаВспомогательная.Значение
 
СГРУППИРОВАТЬ ПО
    врВыборка.Группировка,
    врВыборка.Частота,
    врВыборка.Значение
;
 
////////////////////////////////////////////////////////////////////////////////
//следующие два запроса выполняют сам расчет, их стоит рассматривать как одно целое
//разделены они для наглядности и простоты отладки
ВЫБРАТЬ
    врВыборкаСНакопленнойЧастотой.Группировка,
    врВыборкаСНакопленнойЧастотой.Частота,
    врВыборкаСНакопленнойЧастотой.Значение,
    ВЫБОР
        КОГДА врСвойстваВыборки.ПорядковыйНомерМедианы >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерМедианы <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА врВыборкаСНакопленнойЧастотой.Значение
        ИНАЧЕ 0
    КОНЕЦ КАК МедианаЦелаяЦасть,
    ВЫБОР
        КОГДА врСвойстваВыборки.ПорядковыйНомерМедианы >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерМедианы <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерМедианы + 1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерМедианы + 1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА 0
        КОГДА врСвойстваВыборки.ПорядковыйНомерМедианы + 1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерМедианы + 1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА врВыборкаСНакопленнойЧастотой.Значение
        КОГДА врСвойстваВыборки.ПорядковыйНомерМедианы >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерМедианы <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА -врВыборкаСНакопленнойЧастотой.Значение
        ИНАЧЕ 0
    КОНЕЦ * врСвойстваВыборки.СмещениеМедианыВправо КАК МедианаДробнаяЧасть,
    ВЫБОР
        КОГДА врСвойстваВыборки.ПорядковыйНомерКвартиля1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА врВыборкаСНакопленнойЧастотой.Значение
        ИНАЧЕ 0
    КОНЕЦ КАК Квартиль1ЦелаяЦасть,
    ВЫБОР
        КОГДА врСвойстваВыборки.ПорядковыйНомерКвартиля1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля1 + 1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля1 + 1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА 0
        КОГДА врСвойстваВыборки.ПорядковыйНомерКвартиля1 + 1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля1 + 1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА врВыборкаСНакопленнойЧастотой.Значение
        КОГДА врСвойстваВыборки.ПорядковыйНомерКвартиля1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА -врВыборкаСНакопленнойЧастотой.Значение
        ИНАЧЕ 0
    КОНЕЦ * врСвойстваВыборки.СмещениеКвартиля1Вправо КАК Квартиль1ДробнаяЧасть,
    ВЫБОР
        КОГДА врСвойстваВыборки.ПорядковыйНомерКвартиля3 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля3 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА врВыборкаСНакопленнойЧастотой.Значение
        ИНАЧЕ 0
    КОНЕЦ КАК Квартиль3ЦелаяЦасть,
    ВЫБОР
        КОГДА врСвойстваВыборки.ПорядковыйНомерКвартиля3 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля3 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля3 + 1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля3 + 1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА 0
        КОГДА врСвойстваВыборки.ПорядковыйНомерКвартиля3 + 1 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля3 + 1 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА врВыборкаСНакопленнойЧастотой.Значение
        КОГДА врСвойстваВыборки.ПорядковыйНомерКвартиля3 >= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента
                И врСвойстваВыборки.ПорядковыйНомерКвартиля3 <= врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента
            ТОГДА -врВыборкаСНакопленнойЧастотой.Значение
        ИНАЧЕ 0
    КОНЕЦ * врСвойстваВыборки.СмещениеКвартиля3Вправо КАК Квартиль3ДробнаяЧасть,
    врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаПравогоЭлемента,
    врВыборкаСНакопленнойЧастотой.НакопленнаяЧастотаЛевогоЭлемента,
    врСвойстваВыборки.РазмерВыборки,
    врСвойстваВыборки.СреднееЗначениеПоВыборке,
    врСвойстваВыборки.МинимальноеЗначениеПоВыборке,
    врСвойстваВыборки.МаксимальноеЗначениеПоВыборке,
    врСвойстваВыборки.ПорядковыйНомерМедианы,
    врСвойстваВыборки.СмещениеМедианыВправо,
    врСвойстваВыборки.ПорядковыйНомерКвартиля1,
    врСвойстваВыборки.СмещениеКвартиля1Вправо,
    врСвойстваВыборки.ПорядковыйНомерКвартиля3,
    врСвойстваВыборки.СмещениеКвартиля3Вправо
ПОМЕСТИТЬ врИтоговаяТаблица
ИЗ
    врВыборкаСНакопленнойЧастотой КАК врВыборкаСНакопленнойЧастотой
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ врСвойстваВыборки КАК врСвойстваВыборки
        ПО врВыборкаСНакопленнойЧастотой.Группировка = врСвойстваВыборки.Группировка
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    врИтоговаяТаблица.Группировка,
    врИтоговаяТаблица.РазмерВыборки,
    врИтоговаяТаблица.СреднееЗначениеПоВыборке,
    врИтоговаяТаблица.МинимальноеЗначениеПоВыборке,
    врИтоговаяТаблица.МаксимальноеЗначениеПоВыборке,
    СУММА(врИтоговаяТаблица.МедианаЦелаяЦасть) + СУММА(врИтоговаяТаблица.МедианаДробнаяЧасть) КАК Медиана,
    СУММА(врИтоговаяТаблица.Квартиль1ЦелаяЦасть) + СУММА(врИтоговаяТаблица.Квартиль1ДробнаяЧасть) КАК Квартиль1,
    СУММА(врИтоговаяТаблица.Квартиль3ЦелаяЦасть) + СУММА(врИтоговаяТаблица.Квартиль3ДробнаяЧасть) КАК Квартиль3
ИЗ
    врИтоговаяТаблица КАК врИтоговаяТаблица
 
СГРУППИРОВАТЬ ПО
    врИтоговаяТаблица.Группировка,
    врИтоговаяТаблица.РазмерВыборки,
    врИтоговаяТаблица.СреднееЗначениеПоВыборке,
    врИтоговаяТаблица.МинимальноеЗначениеПоВыборке,
    врИтоговаяТаблица.МаксимальноеЗначениеПоВыборке

Квантили

Рассмотрен расчет медианы и квартилей, но запрос легко доработать для расчета любых других квантилей, в частности децилей и перцентилей.

Ссылки

Немного теории (кривой сайт, но все понятно написано и хорошие примеры): https://studfile.net/preview/5316597/page:3/#9

Похожая разработка (но требующая уникальности): //1c.taxpravo.ru/public/539316/

Видео-курс "Основы статистики": https://stepik.org/course/76/

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 22.11.19 17:38 Сейчас в теме
решения интересные, но смущает монстроидальность.
в 1С83+ есть мощные средства работы со статистикой "АнализДанных" и т.п.
по крайней мере медианы через них можно вычислять намного проще.

теорию вероятностей преподают в уважающих себя технических вузах и по
видо-курсу ее изучить маловероятно.
Решение задачек по ТВ и комбинаторике очень увлекательное занятие, а когда наступит эра
квантовых компьютеров, то эти навыки будут необходимы чтобы остаться востребованным программистом.
wowik; bahtiyar_sharipov; trickster; +3 Ответить
3. starik-2005 2176 22.11.19 21:00 Сейчас в теме
(1)
теорию вероятностей преподают в
А при чем тут тервер? Здесь социальная статистика - не более...
relines; rpashkovsky; +2 Ответить
2. MarryJane 25 22.11.19 17:50 Сейчас в теме
Спасибо возьмем на заметку
4. user604727 25.11.19 09:21 Сейчас в теме
Это очень важно, но для моих клиентов из числа бухгалтеров была бы очень полезна также возможность рассчитывать в запросе тангенсы и арктангенсы, а также интегралы и ранги матриц.
uzhelas; KazanKokos; user774630; wowik; EMelihoff; +5 1 Ответить
5. MikhailDr 26.11.19 07:48 Сейчас в теме
Было бы неплохо в конце статьи привести примеры использования данного инструмента. В таком случае выше вероятность, что прочитавший потом вернется сюда за решением своей проблемы.
6. relines 36 26.11.19 14:48 Сейчас в теме
(5) Спасибо за замечание. В ближайшее время постараюсь привести примеры, для чего это можно использовать в реальной жизни. Так же, возможно, по мере развития этого механизма у нас, буду добавлять дополнительные показатели для расчета.
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    4533    23    Infostart    2    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    18969    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    18411    0    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    13332    0    kuzyara    33    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    35438    0    unichkin    45    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    14570    0    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    6718    0    Sibars    19    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    28107    0    Yashazz    45    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    27875    0    tormozit    100    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    39492    0    rpgshnik    62    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    41649    0    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    24334    0    YPermitin    24    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    75369    0    tormozit    129    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    23057    0    YPermitin    80    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    28181    0    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    64927    0    ids79    40    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    46249    0    tormozit    38    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    29218    0    avalakh    22    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    19650    0    json    12    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    48649    0    ids79    11    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    42234    0    tormozit    74    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    31393    0    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    23767    0    YPermitin    13    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    17648    0    SeiOkami    50    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    15350    0    m-rv    2    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    38312    0    ids79    10    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    45838    0    ids79    22    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    22782    0    dmurk    144    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    19126    0    m-rv    17    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    38327    0    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    26515    0    Eret1k    23    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    31982    0    ellavs    126    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    28769    0    m-rv    21    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    25216    0    ellavs    88    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    28795    0    YPermitin    53    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    20076    0    Vladimir Litvinenko    27    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    26813    0    itriot11    34    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    34518    0    ids79    9    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    73342    0    Serginio    108    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    24735    0    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    37783    0    ids79    72    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    34175    0    ids79    40    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32352    0    ids79    40    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Публикация представляет из себя краткие примеры того, как можно заполнять параметры СКД программно так, чтобы все параметры и отборы были доступны в быстрых настройках и в обычных (типовых) настройках параметров и отборов СКД.

13.11.2018    41214    0    Unk92    21    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    27465    0    grumagargler    26