|   |   | 
| 
 | Как такое можно сделать запросом? | ☑ | ||
|---|---|---|---|---|
| 0
    
        VKS 27.03.25✎ 12:35 | 
        Добрый день. Подскажите, пожалуйста, как такой код можно сделать запросом? 
 Итого = 0; Для Сч = 1 По 1000 Цикл Если Сч <= 100 Тогда Сумма = 1; ИначеЕсли Сч <= 150 Тогда Сумма = 2; ИначеЕсли Сч <= 200 Тогда Сумма = 3; ИначеЕсли Сч <= 250 Тогда Сумма = 4; ИначеЕсли Сч >= 251 Тогда Сумма = 5; КонецЕсли; Итого = Итого + Сумма; КонецЦикла; Сообщить(Итого); | |||
| 1
    
        Волшебник 27.03.25✎ 12:39 | 
        зачем?     | |||
| 2
    
        Stepashkin 27.03.25✎ 12:40 | 
        (1) Такой же вопрос.     | |||
| 3
    
        2S 27.03.25✎ 12:41 | 
        Загнать в ВТ от 1 до 1000
 Потом выборка из ВТ через "Выбора когда" и просуммировать. | |||
| 4
    
        VKS 27.03.25✎ 12:42 | 
        Есть практическая задача, в которой все считается в запросе, кроме одного показателя, который рассчитывается по этому алгоритму. Не могу понять как его тоже засунуть в расчет, чтобы дальше уже рассчитанный показатель использовать в запросе     | |||
| 5
    
        KJlag 27.03.25✎ 12:47 | 
        *нет, ступил. можно удалить сообщение     | |||
| 6
    
        VKS 27.03.25✎ 12:47 | 
        Условно, у меня в запросе есть поле, которое показывает, к примеру 350. Пусть будет 350 яблок. За первые 100 собранных яблок я получил по 1 рублю за сборку. За яблоки с 101 по 150 я получаю по 2 рубля за сборку и т.д. Максимально начиная с 251 яблока я получаю по 5 рублей за каждое собранное яблоко. 
 Так я получил сумму за собранные яблоки. Дальше эта сумма в запросе считается по другим фруктам и овощам и в конце я прихожу к какой-то итоговой сумме | |||
| 7
    
        1Сергей 27.03.25✎ 12:47 | 
        ВЫБРАТЬ
 4300 КАК Итог | |||
| 8
    
        toypaul гуру 27.03.25✎ 12:53 | 
        100 * 1 + 50 * 2 + 50 * 3 + 50 * 4 + (N - 250) * 5     | |||
| 9
    
        Garykom гуру 27.03.25✎ 13:05 | 
        (6) Можно но сложно
 Извращение будет еще то и не гибкое Лучше отдельно кодом рассчитать таблицу коэффициентов Засунуть ее как ВТ в запрос и соединять Фактически тебе для некоего числа надо вычислить функцию от этого числа Т.к. функция интервальная то можно подготовить таблицу параметров для использования: 1|100|1 101|150|2 ... 251|NULL|5 Затем соединяешь хитрым образом (выбор когда.. тогда..) по условиям, получая в несколько колонок последовательно нужные цифры Например для 350: 350|100*1|50*2|...|(350-250) * 5 Ну и в конце просуммировать | |||
| 10
    
        Dmitrii гуру 27.03.25✎ 13:08 | 
        (6) Что-то типа такого
 
 | |||
| 11
    
        Garykom гуру 27.03.25✎ 13:09 | 
        (9)+ Если числа условно "небольшие"
 То можно как ВТ передавать (или даже хранить в базе) уже полностью рассчитанную таблицу 1 - 1 2 - 2 3 - 3 ... 100 - 100 101 - 102 102 - 104 ... тогда банальное соединение даст искомое число но табличка может быть великовата как и долгий ее расчет - заполнение | |||
| 12
    
        Garykom гуру 27.03.25✎ 13:10 | 
        (10) Совершенно негибко
 Параметры расчета хранить внутри запросов изврат Конечно может быть выходом текст запроса кодом формировать | |||
| 13
    
        Garykom гуру 27.03.25✎ 13:11 | 
        (12)+ Если кол-во скачков (добавляемых колонок) заранее известно проще (9)
 А сами пороги (от/до) и коэффициенты могут легко меняться и браться из ВТ | |||
| 14
    
        Мультук гуру 27.03.25✎ 13:12 | 
        (12) 
 Имхо, интервальная таблиц плюс код, который будет автоматом по этой таблице генерировать текст запроса из (10) P.S. Пока писал, все всё уже посоветовали :-( | |||
| 15
    
        VKS 27.03.25✎ 14:47 | 
        Идея понятна, всем спасибо     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |