Имя: Пароль:
1C
1С v8
Расчет перцентилей по числовому массиву
,
0 Lepochkin
 
05.12.16
15:06
Всем доброго времени суток. Столкнулся с задачкой описанной в теме. Собственно в стандартных инструментах sql или Excel этот механизм реализован. В 1с никак не могу найти.
1 PLUT
 
05.12.16
15:11
(0) рассчитай перцентиль в Excele. 1C умеет Excel юзать
2 b_ru
 
05.12.16
15:17
Открой википедию, почитай, реализуй. Делов то на два часа.
3 Lepochkin
 
05.12.16
15:25
А никто случайно в скульный запрос не пихал таблицу значений 1совскую?
4 bolobol
 
05.12.16
15:33
(3) Регулярно так делаем.
5 Lepochkin
 
05.12.16
15:34
(4) Не поделитесь примерчиком?
6 bolobol
 
05.12.16
15:40
(5) А пожалуйста:

Запрос.УстановитьПараметр("ТЗ", ТЗ);

Всё, ТЗ в запросе! Ежели база скульная - ТЗ окажется в скульном запросе.
7 Lepochkin
 
05.12.16
15:42
Это то понятно. Мне нужно в родной sql запрос ее пихнуть. В нем есть готовая функция расчета перцентиля...
8 Lepochkin
 
05.12.16
17:33
Решил вопрос вот так.

    СсылкаНаОбъект = Справочники.ВнешниеОбработки.НайтиПоНаименованию("ADODB");
    ИмяФайла = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные = СсылкаНаОбъект.ХранилищеВнешнейОбработки.Получить();
    ДвоичныеДанные.Записать(ИмяФайла);
    ADODB = ВнешниеОбработки.Создать(ИмяФайла);
    
    ADODB.База = "PRICE_MANAGER_V2";
    ADODB.Сервер = "omega";
    ADODB.Пользователь = "sa";
    ADODB.Пароль = "Zwergnase2014";
    ADODB.MSSQL_Подключение();
    
    ТекстЗапроса = "select
       |    [tt].[kod],
       |    PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY [tt].[Price]) OVER (PARTITION BY [tt].[Kod]) AS MedianCont
       |from
       |(";

    Для Каждого Стр Из ТаблицаДанных Цикл
        Если Стр.НомерСтроки > 1 Тогда
            ТекстЗапроса = ТекстЗапроса + "
            |union
            |"
        КонецЕсли;    
        
        ТекстЗапроса = ТекстЗапроса + "select
               |"+формат(Стр.Код,"ЧГ=0")+" as [Kod],
               |"+?(Стр.Цена=0,"0",формат(Стр.Цена,"ЧГ=0"))+" as [Price]
            |";
    КонецЦикла;    
    ТекстЗапроса = ТекстЗапроса + ") [tt]";
    
    тзПерцентили = ADODB.MSSQL_ВыполнитьЗапросИВернутьТаблицуЗначений(ТекстЗапроса);
    тзПерцентили.ВыбратьСтроку();
9 b_ru
 
05.12.16
17:37
10 Lepochkin
 
05.12.16
17:38
покажи другое решение
Основная теорема систематики: Новые системы плодят новые проблемы.