Как из таблицы значений получить минимальное значение относительно заданного?
Всем доброго дня!
Не могу сообразить: как из таблицы значений получить минимальное значение относительно заданного? Например: имеется количество = 32, из ТЗ (скрин приложен) из колонки Процент нужно получить % = 19, т.е. по нижней границы диапазона. А если, например, количество будет больше 40, т.е. больше предельной величины, то % = 25.
Не могу сообразить: как из таблицы значений получить минимальное значение относительно заданного? Например: имеется количество = 32, из ТЗ (скрин приложен) из колонки Процент нужно получить % = 19, т.е. по нижней границы диапазона. А если, например, количество будет больше 40, т.е. больше предельной величины, то % = 25.
Прикрепленные файлы:
Найденные решения
(38)Соединения тоже лишние тут, достаточно выборки из одной таблицы.
ТЗ = Таблица.Выгрузить();
НужныйПроцент = 0;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Таблица.КоличествоУчеников КАК КоличествоУчеников,
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ПОМЕСТИТЬ ВТ_Таблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ Таблица.КоличествоУчеников <= &КолУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| ВТ_Таблица.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| ВТ_Таблица КАК ВТ_Таблица
|
|УПОРЯДОЧИТЬ ПО
| ВТ_Таблица.КоличествоУчеников УБЫВ";
Запрос.УстановитьПараметр("Таблица", ТЗ);
Запрос.УстановитьПараметр("КолУчеников", КолУчеников);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
НужныйПроцент = Выборка.ПроцентОплаты;
КонецЕсли; ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Через цикл можно, обходить все и сравнивать.
Через запрос, поместить ТЗ во временную и дальше гонять запросы меняя параметры.
И потом сгруппировать по максимуму и соединиться с изначальной.
Надо замеры провести какой вариант быстрее будет и выбрать его
Через запрос, поместить ТЗ во временную и дальше гонять запросы меняя параметры.
И потом сгруппировать по максимуму и соединиться с изначальной.
Надо замеры провести какой вариант быстрее будет и выбрать его
ВЫБРАТЬ
МАКСИМУМ(Таблица.Количество) КАК Количество
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
Таблица КАК Таблица
ГДЕ
Таблица.Количество <= &Количество
;
ВЫБРАТЬ
Таблица.Процент КАК Процент
ИЗ
Таблица КАК Таблица
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
ПО (Таблица.Количество = ВременнаяТаблица.Количество)
Показать
(3) А почему через соединение и ПОМЕСТИТЬ? Можно же как-то так: или так:
ВЫБРАТЬ
Таблица.Количество as Количество
,Таблица.Процент КАК Процент
ИЗ
Таблица КАК Таблица
where Таблица.Процент in (ВЫБРАТЬ
МАКСИМУМ(t.Процент) КАК Процент
ИЗ Таблица КАК t
ГДЕ t.Количество <= &Количество) ПоказатьВЫБРАТЬ
Таблица.Количество as Количество
,Таблица.Процент КАК Процент
ИЗ
Таблица КАК Таблица
where Таблица.Процент in (ВЫБРАТЬ первые 1
t.Процент КАК Процент
ИЗ Таблица КАК t
ГДЕ t.Количество <= &Количество
order by t.Процент desc) Показать
У меня почему-то в обоих предложенных вариантах выскакивает ошибка, хотя "Таблица" заполнена?
Прикрепленные файлы:
Таблица = ТипОбучения.ПроцентыОплаты.Выгрузить();
Таблица.Сортировать("КоличествоУчеников");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(Таблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|ВЫБРАТЬ
| Таблица.ПроцентОплатыОплаты КАК ПроцентОплатыОплаты
|ИЗ
| Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
| ПО (Таблица.КоличествоУчеников = ВременнаяТаблица.КоличествоУчеников)";
Запрос.УстановитьПараметр("КоличествоУчеников", КолУчеников);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ПроцентОплаты = Выборка.ПроцентОплаты;
КонецЦикла;
Показать
(18) Вы не установили и не задали параметр Таблица. И пытаетесь брать данные из неоткуда.
Таблица = ТипОбучения.ПроцентыОплаты.Выгрузить();
Таблица.Сортировать("КоличествоУчеников");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Таблица", Таблица);
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(Таблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|ВЫБРАТЬ
| Таблица.ПроцентОплатыОплаты КАК ПроцентОплатыОплаты
|ИЗ
| Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
| ПО (Таблица.КоличествоУчеников = ВременнаяТаблица.КоличествоУчеников)";
Запрос.УстановитьПараметр("КоличествоУчеников", КолУчеников);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ПроцентОплаты = Выборка.ПроцентОплаты;
КонецЦикла; Показать
(19) Я добавил строку Запрос.УстановитьПараметр("Таблица", Таблица); но та же ошибка
Таблица = ТипОбучения.ПроцентыОплаты.Выгрузить();
Таблица.Сортировать("КоличествоУчеников");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(Таблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
| ПО (Таблица.КоличествоУчеников = ВременнаяТаблица.КоличествоУчеников)";
Запрос.УстановитьПараметр("Таблица", Таблица);
Запрос.УстановитьПараметр("КоличествоУчеников", КолУчеников);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Таблица = ТипОбучения.ПроцентыОплаты.Выгрузить();
Таблица.Сортировать("КоличествоУчеников");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(Таблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
| ПО (Таблица.КоличествоУчеников = ВременнаяТаблица.КоличествоУчеников)";
Запрос.УстановитьПараметр("Таблица", Таблица);
Запрос.УстановитьПараметр("КоличествоУчеников", КолУчеников);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
(20) во второй части запроса так же нужно сделать
"ВЫБРАТЬ
| МАКСИМУМ(Таблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| &Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
| ПО (Таблица.КоличествоУчеников = ВременнаяТаблица.КоличествоУчеников)"; Показать
(20)
Я добавил строку Запрос.УстановитьПараметр("Таблица", Таблица); но та же ошибка
Вы издеваетесь? Где в тексте запроса учитывается ваш переданный параметр "ИЗ &Таблица"? Если нет, то какая разница сколько и каких параметров вы передали в запрос?
(23)я же вам написал выше. Код ниже скопируйте и вместо своего кода из вставьте (18)
Таблица = ТипОбучения.ПроцентыОплаты.Выгрузить();
Таблица.Сортировать("КоличествоУчеников");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Таблица", Таблица);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.КоличествоУчеников КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(ВременнаяТаблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВТМаксимум
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ПОМЕСТИТЬ ВТИтоговая
|ИЗ
| &Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТМаксимум КАК ВТМаксимум
| ПО Таблица.КоличествоУчеников = ВТМаксимум.КоличествоУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВТИтоговая.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| ВТИтоговая КАК ВТИтоговая";
Запрос.УстановитьПараметр("КоличествоУчеников", КолУчеников);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ПроцентОплаты = Выборка.ПроцентОплаты;
КонецЦикла; Показать
(24) Я сделал вот так:
Теперь ошибка:
Таблица = ТипОбучения.ПроцентыОплаты.Выгрузить(); //это таблица значений
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Таблица", Таблица);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.КоличествоУчеников КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(ВременнаяТаблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВТМаксимум
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ПОМЕСТИТЬ ВТИтоговая
|ИЗ
| &Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТМаксимум КАК ВТМаксимум
| ПО Таблица.КоличествоУчеников = ВТМаксимум.КоличествоУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВТИтоговая.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| ВТИтоговая КАК ВТИтоговая";
Запрос.УстановитьПараметр("КоличествоУчеников", КолУчеников);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ПроцентОплаты = Выборка.ПроцентОплаты;
КонецЦикла;
ПоказатьЗапрос = Новый Запрос;
Запрос.УстановитьПараметр("Таблица", Таблица);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.КоличествоУчеников КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(ВременнаяТаблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВТМаксимум
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
|;
|
|////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ПОМЕСТИТЬ ВТИтоговая
|ИЗ
| &Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТМаксимум КАК ВТМаксимум
| ПО Таблица.КоличествоУчеников = ВТМаксимум.КоличествоУчеников
|;
|
|////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТИтоговая.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| ВТИтоговая КАК ВТИтоговая";
Запрос.УстановитьПараметр("КоличествоУчеников", КолУчеников);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ПроцентОплаты = Выборка.ПроцентОплаты;
КонецЦикла;
Теперь ошибка:
Прикрепленные файлы:
(27)
"ВЫБРАТЬ
| Таблица.КоличествоУчеников КАК КоличествоУчеников
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(ВременнаяТаблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВТМаксимум
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты,
| Таблица.КоличествоУчеников КАК КоличествоУчеников
|ПОМЕСТИТЬ ВТПроценты
|ИЗ
| &Таблица КАК Таблица
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВТПроценты.ПроцентОплаты КАК ПроцентОплаты
|ПОМЕСТИТЬ ВТИтоговая
|ИЗ
| ВТПроценты КАК ВТПроценты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТМаксимум КАК ВТМаксимум
| ПО ВТПроценты.КоличествоУчеников = ВТМаксимум.КоличествоУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВТИтоговая.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| ВТИтоговая КАК ВТИтоговая"; Показать
(29) Если у Вас в таблице количество во всех строках разное, то можно через такую конструкцию нужное значение получить . Если есть строки с одинаковым количеством то . Попробуйте так, может проще окажется чем с запросами.
Таблица = ТипОбучения.ПроцентыОплаты.Выгрузить();
ИскомаяСтрока = Таблица.Найти(КолУчеников, "КоличествоУчеников");
Если Не ИскомаяСтрока = Неопределено Тогда
ПроцентОплаты = ИскомаяСтрока .ПроцентОплаты;
КонецЕсли;ИскомаяСтрока = Таблица.НайтиСтроки(Новый Структура("КоличествоУчеников, Ученик", КолУчеников, "Иванов Петров");
Если Не ИскомаяСтрока.Количество() = 0 Тогда
ПроцентОплаты = ИскомаяСтрока[0].ПроцентОплаты;
КонецЕсли;
(29) Так Вы в обработке передаете в качестве параметра &Таблица значение, имеющее тип ДанныеФормыКоллекция. Нужно передавать тип ТаблицаЗначений.
Прикрепленные файлы:
ПолучитьПроцент.epf
(33)Написано же почему ругается: ТЗ в качестве параметра передали один раз и во временную таблицу засунули один раз. Далее уже работайте с временной таблицей и забудьте про ТЗ.
В момент помещения данных из ТЗ во временную таблицу нельзя использовать соединения.
ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ПОМЕСТИТЬ ВТИтоговая
|ИЗ
| &Таблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТМаксимум КАК ВТМаксимум
| ПО Таблица.КоличествоУчеников = ВТМаксимум.КоличествоУчениковВ момент помещения данных из ТЗ во временную таблицу нельзя использовать соединения.
Да, я бестолковый! Безмозглому мозги вставлять - только напрасно время тратить, не получается у меня. Вот обработка, с заполненной таблицей, без кода, мне нужно чтобы она работала. Вознаграждение: 1 $m. Заранее спасибо!
Прикрепленные файлы:
ПолучитьПроцент.epf
(36)С учетом ограничения в 30 строк в таблице максимально, смысла тащить в запрос нет. Обычный цикл.
Прикрепленные файлы:
ПолучитьПроцент.epf
(37)Согласен, но метод нужно осваивать.
Таблица = ТипОбучения.ПроцентыОплаты.Выгрузить();
Таблица.Сортировать("КоличествоУчеников");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Таблица", Таблица);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.КоличествоУчеников КАК КоличествоУчеников,
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.КоличествоУчеников <= &КоличествоУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(ВременнаяТаблица.КоличествоУчеников) КАК КоличествоУчеников
|ПОМЕСТИТЬ ВТМаксимум
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Таблица.ПроцентОплаты КАК ПроцентОплаты
//|ПОМЕСТИТЬ ВТИтоговая
|ИЗ
| ВременнаяТаблица КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТМаксимум КАК ВТМаксимум
| ПО Таблица.КоличествоУчеников = ВТМаксимум.КоличествоУчеников
//|;
|
|//////////////////////////////////////////////////////////// ////////////////////
//|ВЫБРАТЬ
//| ВТИтоговая.ПроцентОплаты КАК ПроцентОплаты
//|ИЗ
//| ВТИтоговая КАК ВТИтоговая
|";
Запрос.УстановитьПараметр("КоличествоУчеников", КолУчеников);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ПроцентОплаты = Выборка.ПроцентОплаты;
КонецЦикла;
Показать
(38)Соединения тоже лишние тут, достаточно выборки из одной таблицы.
ТЗ = Таблица.Выгрузить();
НужныйПроцент = 0;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Таблица.КоличествоУчеников КАК КоличествоУчеников,
| Таблица.ПроцентОплаты КАК ПроцентОплаты
|ПОМЕСТИТЬ ВТ_Таблица
|ИЗ
| &Таблица КАК Таблица
|ГДЕ Таблица.КоличествоУчеников <= &КолУчеников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| ВТ_Таблица.ПроцентОплаты КАК ПроцентОплаты
|ИЗ
| ВТ_Таблица КАК ВТ_Таблица
|
|УПОРЯДОЧИТЬ ПО
| ВТ_Таблица.КоличествоУчеников УБЫВ";
Запрос.УстановитьПараметр("Таблица", ТЗ);
Запрос.УстановитьПараметр("КолУчеников", КолУчеников);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
НужныйПроцент = Выборка.ПроцентОплаты;
КонецЕсли; Показать
(44)В (37) я привел решение без запроса, собственно об этом и написал, что запрос тут не нужен. Потом в ответ на вариант с запросом ответил, что если уж решать запросом, то можно без всяких соединений и привел вариант с запросом:)
Сортировать по колонке "Количество"
затем
нашечисло = 32;
Пока не нашечисло = 0 цикл
нашечисло = нашечисло -1;
стр = ТЗ.Найти(нашечисло , "Количество");
Если не стр = неопределено тогда //нашли! данные в стр
прервать;
КонецЕсли;
КонецЦикла;
затем
нашечисло = 32;
Пока не нашечисло = 0 цикл
нашечисло = нашечисло -1;
стр = ТЗ.Найти(нашечисло , "Количество");
Если не стр = неопределено тогда //нашли! данные в стр
прервать;
КонецЕсли;
КонецЦикла;
(46) Поиск в цикле? Зачем?
А если условно так:
А если условно так:
МаксКоличество = 32;
МаксПроцент = -1;
Для каждого СтрокаТЗ Из ТЗ Цикл
Если СтрокаТЗ.Количество > МаксКоличество Тогда
Продолжить;
КонецЕсли;
МаксПроцент = Макс(МаксПроцент, СтрокаТЗ.Процент);
КонецЦикла;
Сообщить("Максимальный процент: "+ ?(МаксПроцент = -1, "не найден", МаксПроцент)); Показать
(53)Зависит от размера ТЗ, если десятки тысяч записей, а искомое в конце, с поиском наверно быстрее будет, надо сравнивать, и, конечно, отталкиваться от здравого смысла, работать будет и так и так, кода примерно одинаково
(54) Если количество с точностью до третьего знака, то весело будет в цикле искать....
(1) Необходимо просто одно значение по вилке найти или для какой-то табличной части и поиск для каждой строки?
Если для табличной части, то это классический запрос SQL, только в 1С через одно место пишется, но результат будет такой же.
(1) Необходимо просто одно значение по вилке найти или для какой-то табличной части и поиск для каждой строки?
Если для табличной части, то это классический запрос SQL, только в 1С через одно место пишется, но результат будет такой же.
Прикрепленные файлы:
(57) В таблице есть значения: 26, 30,35, 40 и соответствующие им проценты: 15, 19, 21, 25. Наше кол-во равно 32, нужно получить процент по нижней границе, т.е. "вилка" между 30 и 35. Т.е. наше любое число от 30 по 34 должно получить 19%.
P.S. Задача аналогичная, когда нужно получить процент на доплату за стаж по шкале стажа.
P.S. Задача аналогичная, когда нужно получить процент на доплату за стаж по шкале стажа.
Если вдруг кому-то придется решать подобную задачу, вот готовый образец-шаблон.
Прикрепленные файлы:
ПолучитьПроцент.epf
(62) Иногда бывает "короткое замыкание" и именно на мелочи, даже зная, что элементарное решение в несколько строчек кода, но.... А рейтинг тут совершенно ни при чем.
Эту задачу так же можно решить элементарным циклом в 5 строчек кода, просто в тот день произошло "кз".
Эту задачу так же можно решить элементарным циклом в 5 строчек кода, просто в тот день произошло "кз".
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
