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 156 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))";
      
            

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

Показать
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)