3 628 800

1. scientes 288 30.11.22 17:23 Сейчас в теме
Десять цифр от 0 до 9 можно расположить 10! способами, что равно 3 628 800. Можно ли получить все перестановки с помощью запроса ?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. kuzev 47 30.11.22 17:31 Сейчас в теме
4. kuzev 47 30.11.22 18:13 Сейчас в теме
(1) на коленке:
SEL ECT T0.A0, T1.A1, T2.A2, T3.A3, T4.A4, T5.A5, T6.A6, T7.A7, T8.A8, T9.A9
FR OM
(SELECT 0 AS A9 UNI ON SELECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T9
LEFT JOIN (SELECT 0 AS A8 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T8
ON T8.A8 <> T9.A9
LEFT JOIN (SELECT 0 AS A7 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T7
ON T7.A7 <> T8.A8 AND T7.A7 <> T9.A9
LEFT JOIN (SELECT 0 AS A6 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T6
ON T6.A6 <> T7.A7 AND T6.A6 <> T8.A8 AND T6.A6 <> T9.A9
LEFT JOIN (SELECT 0 AS A5 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T5
ON T5.A5 <> T6.A6 AND T5.A5 <> T7.A7 AND T5.A5 <> T8.A8 AND T5.A5 <> T9.A9
LEFT JOIN (SELECT 0 AS A4 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T4
ON T4.A4 <> T5.A5 AND T4.A4 <> T6.A6 AND T4.A4 <> T7.A7 AND T4.A4 <> T8.A8 AND T4.A4 <> T9.A9
LEFT JOIN (SELECT 0 AS A3 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T3
ON T3.A3 <> T4.A4 AND T3.A3 <> T5.A5 AND T3.A3 <> T6.A6 AND T3.A3 <> T7.A7 AND T3.A3 <> T8.A8 AND T3.A3 <> T9.A9
LEFT JOIN (SELECT 0 AS A2 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T2
ON T2.A2 <> T3.A3 AND T2.A2 <> T4.A4 AND T2.A2 <> T5.A5 AND T2.A2 <> T6.A6 AND T2.A2 <> T7.A7 AND T2.A2 <> T8.A8 AND T2.A2 <> T9.A9
LEFT JOIN (SELECT 0 AS A1 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNI ON SEL ECT 9) T1
ON T1.A1 <> T2.A2 AND T1.A1 <> T3.A3 AND T1.A1 <> T4.A4 AND T1.A1 <> T5.A5 AND T1.A1 <> T6.A6 AND T1.A1 <> T7.A7 AND T1.A1 <> T8.A8 AND T1.A1 <> T9.A9
LEFT JOIN (SELECT 0 AS A0 UNI ON SEL ECT 1 UNI ON SEL ECT 2 UNI ON SEL ECT 3 UNI ON SEL ECT 4 UNI ON SEL ECT 5 UNI ON SEL ECT 6 UNI ON SEL ECT 7 UNI ON SEL ECT 8 UNION SEL ECT 9) T0
ON T0.A0 <> T1.A1 AND T0.A0 <> T2.A2 AND T0.A0 <> T3.A3 AND T0.A0 <> T4.A4 AND T0.A0 <> T5.A5 AND T0.A0 <> T6.A6 AND T0.A0 <> T7.A7 AND T0.A0 <> T8.A8 AND T0.A0 <> T9.A9
Показать
SlavaKron; +1
3. Fox-trot 157 30.11.22 17:45 Сейчас в теме
подумал, что тут играют в Бангладеш
+
5. scientes 288 01.12.22 11:55 Сейчас в теме
(2) Приведу свой код. Итоговый запрос строится с помощью схемы запроса.
В первом варианте берется декартовое произведение 10 таблиц с условием на неравенство входящих в выборку элементов.
Функция  ПерестановкиЗапросом1() экспорт
	        Текст="ВЫБРАТЬ
	              |	0 КАК Цифра
	              |ПОМЕСТИТЬ мРяд
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	1
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	2
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	3
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	4
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	5
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	6
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	7
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	8
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	9
	              |;
	              |
	              |////////////////////////////////////////////////////////////­////////////////////
	              |ВЫБРАТЬ
	              |	мРяд0.Цифра КАК Цифра0,
	              |	мРяд1.Цифра КАК Цифра1,
	              |	мРяд2.Цифра КАК Цифра2,
	              |	мРяд3.Цифра КАК Цифра3,
	              |	мРяд4.Цифра КАК Цифра4,
	              |	мРяд5.Цифра КАК Цифра5,
	              |	мРяд6.Цифра КАК Цифра6,
	              |	мРяд7.Цифра КАК Цифра7,
	              |	мРяд8.Цифра КАК Цифра8,
	              |	мРяд9.Цифра КАК Цифра9
	              |ИЗ
	              |	мРяд КАК мРяд0,
	              |	мРяд КАК мРяд1,
	              |	мРяд КАК мРяд2,
	              |	мРяд КАК мРяд3,
	              |	мРяд КАК мРяд4,
	              |	мРяд КАК мРяд5,
	              |	мРяд КАК мРяд6,
	              |	мРяд КАК мРяд7,
	              |	мРяд КАК мРяд8,
	              |	мРяд КАК мРяд9
	              |
	              |";
	  
			
			схема=новый СхемаЗапроса;
			схема.УстановитьТекстЗапроса(Текст);
			
			
			фильтр=схема.ПакетЗапросов[1].Операторы[0].Отбор;
			для i=0 по 8 цикл
				для j=i+1 по 9 цикл
					Т=СтрШаблон("мРяд%1.Цифра <> мРяд%2.Цифра",i,j);
					фильтр.Добавить(новый ВыражениеСхемыЗапроса(Т));
				конеццикла;
			конеццикла;	
	  
         запрос=новый запрос(схема.ПолучитьТекстЗапроса());
		 сообщить(запрос.Выполнить().Выбрать().Количество());
  КонецФункции
Показать

Во втором варианте последовательно соединяются вложенные запросы. Запрос выполняется быстрее.
Функция  ПерестановкиЗапросом2() экспорт
	        Текст="ВЫБРАТЬ
	              |	0 КАК Цифра
	              |ПОМЕСТИТЬ мРяд
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	1
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	2
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	3
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	4
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	5
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	6
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	7
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	8
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	9
	              |;
	              |
	              |////////////////////////////////////////////////////////////­////////////////////
	              |ВЫБРАТЬ
	              |	ВложенныйЗапрос.Цифра0 КАК Цифра0,
	              |	ВложенныйЗапрос.Цифра1 КАК Цифра1,
	              |	мРяд.Цифра КАК Цифра2
	              |ИЗ
	              |	(ВЫБРАТЬ
	              |		мРяд.Цифра КАК Цифра0,
	              |		мРяд1.Цифра КАК Цифра1
	              |	ИЗ
	              |		мРяд КАК мРяд,
	              |		мРяд КАК мРяд1
	              |	ГДЕ
	              |		мРяд.Цифра <> мРяд1.Цифра) КАК ВложенныйЗапрос,
	              |	мРяд КАК мРяд
	              |ГДЕ
	              |	мРяд.Цифра <> ВложенныйЗапрос.Цифра0
	              |	И мРяд.Цифра <> ВложенныйЗапрос.Цифра1";
	  
			
			схема=новый СхемаЗапроса;
			схема.УстановитьТекстЗапроса(Текст);
			
			
			для i=3 по 9 цикл
				схема.ПакетЗапросов[1].ПолучитьТекстЗапроса();
				схема.ПакетЗапросов[1].Операторы[0].Источники[0].Источник.Запрос.УстановитьТекстЗапроса(схема.ПакетЗапросов[1].ПолучитьТекстЗапроса());
				//добавить поле ВложенныйЗапрос.Цифраi в список полей запроса
				j=схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Количество()-1;
				Т="ВложенныйЗапрос.Цифра"+(i-1);
				схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Установить(j,новый ВыражениеСхемыЗапроса(Т));
				Т="мРяд.Цифра";
				схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Добавить(Т);
				схема.ПакетЗапросов[1].Колонки.Получить(i).Псевдоним="Цифра"+i;
			   //изменить отбор  
			   фильтр=сокрЛП(схема.ПакетЗапросов[1].Операторы[0].Отбор[0]);
			   //НЕ мРяд.Цифра В (ВложенныйЗапрос.Цифра0, ВложенныйЗапрос.Цифра1)
			   //фильтр=СтрЗаменить(фильтр,")",СтрШаблон(", ВложенныйЗапрос.Цифра%1)",i-1));
			   //схема.ПакетЗапросов[1].Операторы[0].Отбор.Установить(0,новый ВыражениеСхемыЗапроса(фильтр));
			   Т="мРяд.Цифра<>ВложенныйЗапрос.Цифра"+(i-1);
			   схема.ПакетЗапросов[1].Операторы[0].Отбор.Добавить(новый ВыражениеСхемыЗапроса(Т));
	        конеццикла;
            запрос=новый запрос(схема.ПолучитьТекстЗапроса());
		    сообщить(запрос.Выполнить().Выбрать().Количество());
  КонецФункции	
Показать
+
6. kuzev 47 01.12.22 12:01 Сейчас в теме
(5) первый вариант приводить не стал, т.к. SQL-сервер может "удивиться" при построении схемы запроса и, как следствие, не выдать результат.
+
7. scientes 288 01.12.22 17:42 Сейчас в теме
(6) Ну и вариант, когда условие включено во внутреннее соединение.
Функция  ПерестановкиЗапросом3() экспорт
	        Текст="ВЫБРАТЬ
	              |	0 КАК Цифра
	              |ПОМЕСТИТЬ мРяд
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	1
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	2
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	3
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	4
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	5
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	6
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	7
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	8
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	9
	              |;
	              |
	              |////////////////////////////////////////////////////////////­////////////////////
	              |ВЫБРАТЬ
	              |	ВложенныйЗапрос.Цифра0 КАК Цифра0,
	              |	ВложенныйЗапрос.Цифра1 КАК Цифра1,
	              |	мРяд.Цифра КАК Цифра2
	              |ИЗ
	              |	(ВЫБРАТЬ
	              |		мРяд.Цифра КАК Цифра0,
	              |		мРяд1.Цифра КАК Цифра1
	              |	ИЗ
	              |		мРяд КАК мРяд
	              |			ВНУТРЕННЕЕ СОЕДИНЕНИЕ мРяд КАК мРяд1
	              |			ПО мРяд.Цифра <> мРяд1.Цифра) КАК ВложенныйЗапрос
	              |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ мРяд КАК мРяд
	              |		ПО (мРяд.Цифра <> ВложенныйЗапрос.Цифра0)
	              |			И (мРяд.Цифра <> ВложенныйЗапрос.Цифра1)";
	  
			
			схема=новый СхемаЗапроса;
			схема.УстановитьТекстЗапроса(Текст);
			
			
			для i=3 по 9 цикл
				схема.ПакетЗапросов[1].ПолучитьТекстЗапроса();
				схема.ПакетЗапросов[1].Операторы[0].Источники[0].Источник.Запрос.УстановитьТекстЗапроса(схема.ПакетЗапросов[1].ПолучитьТекстЗапроса());
				//добавить поле ВложенныйЗапрос.Цифраi в список полей запроса
				j=схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Количество()-1;
				Т="ВложенныйЗапрос.Цифра"+(i-1);
				схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Установить(j,новый ВыражениеСхемыЗапроса(Т));
				Т="мРяд.Цифра";
				схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Добавить(Т);
				схема.ПакетЗапросов[1].Колонки.Получить(i).Псевдоним="Цифра"+i;
			   //добавить соединение
			   схема.ПакетЗапросов[1].Операторы[0].Источники[0].Соединения.Очистить();
			   для j=0 по (i-1) цикл
				 Т="мРяд.Цифра<>ВложенныйЗапрос.Цифра"+j;  
				 схема.ПакетЗапросов[1].Операторы[0].Источники[0].Соединения.Добавить("мРяд",Т);   
			   конеццикла;	   
			 
			   для j=0 по (i-1) цикл
				 схема.ПакетЗапросов[1].Операторы[0].Источники[0].Соединения[j].ТипСоединения=ТипСоединенияСхемыЗапроса.Внутреннее;
			   конеццикла;	   
	        конеццикла;
            запрос=новый запрос(схема.ПолучитьТекстЗапроса());
		    сообщить(запрос.Выполнить().Выбрать().Количество());
  КонецФункции
Показать
+
8. scientes 288 02.12.22 09:48 Сейчас в теме
Немного ускорил получение перестановок. Для последней выборки проверку на неравенство цифр можно не делать.
Функция  ПерестановкиЗапросом4() экспорт
	        Текст="ВЫБРАТЬ
	              |	0 КАК Цифра
	              |ПОМЕСТИТЬ мРяд
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	1
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	2
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	3
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	4
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	5
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	6
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	7
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	8
	              |
	              |ОБЪЕДИНИТЬ ВСЕ
	              |
	              |ВЫБРАТЬ
	              |	9
	              |;
	              |
	              |////////////////////////////////////////////////////////////­////////////////////
	              |ВЫБРАТЬ
	              |	мРяд.Цифра + ВложенныйЗапрос.Сумма КАК Сумма,
	              |	ВложенныйЗапрос.Цифра0 КАК Цифра0,
	              |	ВложенныйЗапрос.Цифра1 КАК Цифра1,
	              |	мРяд.Цифра КАК Цифра2
	              |ИЗ
	              |	(ВЫБРАТЬ
	              |		мРяд1.Цифра + мРяд.Цифра КАК Сумма,
	              |		мРяд.Цифра КАК Цифра0,
	              |		мРяд1.Цифра КАК Цифра1
	              |	ИЗ
	              |		мРяд КАК мРяд
	              |			ВНУТРЕННЕЕ СОЕДИНЕНИЕ мРяд КАК мРяд1
	              |			ПО мРяд.Цифра <> мРяд1.Цифра) КАК ВложенныйЗапрос
	              |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ мРяд КАК мРяд
	              |		ПО (мРяд.Цифра <> ВложенныйЗапрос.Цифра0)
	              |			И (мРяд.Цифра <> ВложенныйЗапрос.Цифра1)
	              |;
	              |
	              |////////////////////////////////////////////////////////////­////////////////////
	              |ВЫБРАТЬ
	              |	мВыборка.Цифра0 КАК Цифра0,
	              |	мВыборка.Цифра1 КАК Цифра1,
	              |	мВыборка.Цифра2 КАК Цифра2,
	              |	мВыборка.Цифра3 КАК Цифра3,
	              |	мВыборка.Цифра4 КАК Цифра4,
	              |	мВыборка.Цифра5 КАК Цифра5,
	              |	мВыборка.Цифра6 КАК Цифра6,
	              |	мВыборка.Цифра7 КАК Цифра7,
	              |	мВыборка.Цифра8 КАК Цифра8,
	              |	45 - мВыборка.Сумма КАК Цифра9
	              |ИЗ
	              |	мВыборка КАК мВыборка";

	  
			
			схема=новый СхемаЗапроса;
			схема.УстановитьТекстЗапроса(Текст);
			
			
			для i=3 по 8 цикл
				схема.ПакетЗапросов[1].ПолучитьТекстЗапроса();
				схема.ПакетЗапросов[1].Операторы[0].Источники[0].Источник.Запрос.УстановитьТекстЗапроса(схема.ПакетЗапросов[1].ПолучитьТекстЗапроса());
				//добавить поле ВложенныйЗапрос.Цифраi в список полей запроса
				j=схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Количество()-1;
				Т="ВложенныйЗапрос.Цифра"+(i-1);
				схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Установить(j,новый ВыражениеСхемыЗапроса(Т));
				Т="мРяд.Цифра";
				схема.ПакетЗапросов[1].Операторы[0].ВыбираемыеПоля.Добавить(Т);
				схема.ПакетЗапросов[1].Колонки.Получить(схема.ПакетЗапросов[1].Колонки.Количество()-1).Псевдоним="Цифра"+i;
			   //добавить соединение
			   //Т="мРяд.Цифра<>ВложенныйЗапрос.Цифра"+(i-1);
			   //T="ИСТИНА";
			   схема.ПакетЗапросов[1].Операторы[0].Источники[0].Соединения.Очистить();
			   для j=0 по (i-1) цикл
				 Т="мРяд.Цифра<>ВложенныйЗапрос.Цифра"+j;  
				 схема.ПакетЗапросов[1].Операторы[0].Источники[0].Соединения.Добавить("мРяд",Т);   
			   конеццикла;	   
			 
			   для j=0 по (i-1) цикл
				 схема.ПакетЗапросов[1].Операторы[0].Источники[0].Соединения[j].ТипСоединения=ТипСоединенияСхемыЗапроса.Внутреннее;
			   конеццикла;	   
		    конеццикла;
		   
		    схема.ПакетЗапросов[1].ТаблицаДляПомещения="мВыборка";
		   
		   
            запрос=новый запрос(схема.ПолучитьТекстЗапроса());
		    сообщить(запрос.Выполнить().Выбрать().Количество());
  КонецФункции	


Показать
+
9. scientes 288 04.12.22 09:50 Сейчас в теме
Ускорил получение перестановок, но в 1 секунду так и не уложился.
Функция  БыстрыеПерестановки() экспорт
            Текст="ВЫБРАТЬ
                  |	0 КАК Цифра
                  |ПОМЕСТИТЬ мРяд
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	1
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	2
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	3
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	4
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	5
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	6
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	7
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	8
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |	9
                  |;
                  |
                  |////////////////////////////////////////////////////////////­////////////////////
                  |ВЫБРАТЬ
                  |	мРядЛев.Цифра КАК Цифра0,
                  |	мРядПрав.Цифра КАК Цифра1,
                  |	мРядЛев.Цифра + мРядПрав.Цифра КАК Сумма
                  |ПОМЕСТИТЬ мРяд2
                  |ИЗ
                  |	мРяд КАК мРядЛев,
                  |	мРяд КАК мРядПрав
                  |ГДЕ
                  |	мРядЛев.Цифра <> мРядПрав.Цифра
                  |;
                  |
                  |////////////////////////////////////////////////////////////­////////////////////
                  |ВЫБРАТЬ
                  |	мРядЛев.Цифра0 КАК Цифра0,
                  |	мРядЛев.Цифра1 КАК Цифра1,
                  |	мРядПрав.Цифра0 КАК Цифра2,
                  |	мРядПрав.Цифра1 КАК Цифра3
                  |ПОМЕСТИТЬ мРяд4
                  |ИЗ
                  |	мРяд2 КАК мРядЛев
                  |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ мРяд2 КАК мРядПрав
                  |		ПО (НЕ мРядЛев.Цифра0 В (мРядПрав.Цифра0, мРядПрав.Цифра1))
                  |			И (НЕ мРядЛев.Цифра1 В (мРядПрав.Цифра0, мРядПрав.Цифра1))
                  |;
                  |
                  |////////////////////////////////////////////////////////////­////////////////////
                  |ВЫБРАТЬ
                  |	мРядЛев.Цифра0 КАК Цифра0,
                  |	мРядЛев.Цифра1 КАК Цифра1,
                  |	мРядЛев.Цифра2 КАК Цифра2,
                  |	мРядЛев.Цифра3 КАК Цифра3,
                  |	мРядПрав.Цифра0 КАК Цифра4,
                  |	мРядПрав.Цифра1 КАК Цифра5,
                  |	мРядПрав.Цифра2 КАК Цифра6,
                  |	мРядПрав.Цифра3 КАК Цифра7,
                  |	45 - (мРядПрав.Цифра0 + мРядПрав.Цифра1 + мРядПрав.Цифра2 + мРядПрав.Цифра3 + мРядЛев.Цифра0 + мРядЛев.Цифра1 + мРядЛев.Цифра2 + мРядЛев.Цифра3) КАК Сумма
                  |ПОМЕСТИТЬ мРяд8
                  |ИЗ
                  |	мРяд4 КАК мРядЛев
                  |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ мРяд4 КАК мРядПрав
                  |		ПО (НЕ мРядЛев.Цифра0 В (мРядПрав.Цифра0, мРядПрав.Цифра1, мРядПрав.Цифра2, мРядПрав.Цифра3))
                  |			И (НЕ мРядЛев.Цифра1 В (мРядПрав.Цифра0, мРядПрав.Цифра1, мРядПрав.Цифра2, мРядПрав.Цифра3))
                  |			И (НЕ мРядЛев.Цифра2 В (мРядПрав.Цифра0, мРядПрав.Цифра1, мРядПрав.Цифра2, мРядПрав.Цифра3))
                  |			И (НЕ мРядЛев.Цифра3 В (мРядПрав.Цифра0, мРядПрав.Цифра1, мРядПрав.Цифра2, мРядПрав.Цифра3))
                  |;
                  |
                  |////////////////////////////////////////////////////////////­////////////////////
                  |ВЫБРАТЬ
                  |	мРяд8.Цифра0 КАК Цифра0,
                  |	мРяд8.Цифра1 КАК Цифра1,
                  |	мРяд8.Цифра2 КАК Цифра2,
                  |	мРяд8.Цифра3 КАК Цифра3,
                  |	мРяд8.Цифра4 КАК Цифра4,
                  |	мРяд8.Цифра5 КАК Цифра5,
                  |	мРяд8.Цифра6 КАК Цифра6,
                  |	мРяд8.Цифра7 КАК Цифра7,
                  |	мРяд2.Цифра0 КАК Цифра8,
                  |	мРяд2.Цифра1 КАК Цифра9
                  |ИЗ
                  |	мРяд8 КАК мРяд8
                  |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ мРяд2 КАК мРяд2
                  |		ПО мРяд8.Сумма = мРяд2.Сумма
                  |			И (НЕ мРяд2.Цифра0 В (мРяд8.Цифра0, мРяд8.Цифра1, мРяд8.Цифра2, мРяд8.Цифра3, мРяд8.Цифра4, мРяд8.Цифра5, мРяд8.Цифра6, мРяд8.Цифра7)
                  |				И НЕ мРяд2.Цифра1 В (мРяд8.Цифра0, мРяд8.Цифра1, мРяд8.Цифра2, мРяд8.Цифра3, мРяд8.Цифра4, мРяд8.Цифра5, мРяд8.Цифра6, мРяд8.Цифра7))";
      
            

            запрос=новый запрос(Текст);
            сообщить(запрос.Выполнить().Выбрать().Количество());
  КонецФункции

Показать
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот