Поиск чисел, формирующих нужную сумму в запросе

28.04.15

Разработка - Запросы

Под впечатлением статьи http://infostart.ru/public/350311/ захотел сделать задачу в запросе

Скачать файл

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

Наименование По подписке [?] Купить один файл
ОбработкаПоискЧиселНаСумму
.epf 7,35Kb ver:FindNumber
3
3 Скачать (1 SM) Купить за 1 850 руб.

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

 

Пример:

Входные данные 1, 2, 3, 4, 5

Где сумма = 9

 

ВЫБРАТЬ
	ВТ_01.Поле1
ПОМЕСТИТЬ BT_Булево
ИЗ
	(ВЫБРАТЬ
		0 КАК Поле1
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		1) КАК ВТ_01
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	BT_1.Поле1,
	BT_2.Поле1 КАК Поле2,
	BT_3.Поле1 КАК Поле3,
	BT_4.Поле1 КАК Поле4,
	BT_5.Поле1 КАК Поле5
ПОМЕСТИТЬ ВТ_Коэф
ИЗ
	BT_Булево КАК BT_1,
	BT_Булево КАК BT_2,
	BT_Булево КАК BT_3,
	BT_Булево КАК BT_4,
	BT_Булево КАК BT_5
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТ_Коэф.Поле1 * &Число1 + ВТ_Коэф.Поле2 * &Число2 + ВТ_Коэф.Поле3 * &Число3 + ВТ_Коэф.Поле4 * &Число4 + ВТ_Коэф.Поле5 * &Число5 КАК Результат,
	ВТ_Коэф.Поле1 * &Число1 КАК Число1,
	ВТ_Коэф.Поле2 * &Число2 КАК Число2,
	ВТ_Коэф.Поле3 * &Число3 КАК Число3,
	ВТ_Коэф.Поле4 * &Число4 КАК Число4,
	ВТ_Коэф.Поле5 * &Число5 КАК Число5
ИЗ
	ВТ_Коэф КАК ВТ_Коэф
ГДЕ  ВТ_Коэф.Поле1 * &Число1 + ВТ_Коэф.Поле2 * &Число2 + ВТ_Коэф.Поле3 * &Число3 + ВТ_Коэф.Поле4 * &Число4 + ВТ_Коэф.Поле5 * &Число5 = 9 

Во втором пакете запроса идет декартовое произведение бинарного множества. Тут мы получаем ограничение по количеству входных данных:

для 20 чисел мы получим (2 в степени 20) = 1 048 576 строке

Пробовал для 23 чисел, но уже нужно подождать...

Во вложении - поиск с произвольным количеством входных данных.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    184743    1029    403    

968

Обновление 1С Запросы Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

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

2 стартмани

06.02.2025    2201    17    XilDen    26    

36

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    5734    artemusII    11    

23

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    13140    sergey279    18    

66

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    8220    XilDen    36    

90

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    3193    PROSTO-1C    0    

23

Запросы Программист Запросы Бесплатно (free)

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

16.08.2024    10802    user1840182    5    

29
Оставьте свое сообщение