По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(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
Показать
(2) Приведу свой код. Итоговый запрос строится с помощью схемы запроса.
В первом варианте берется декартовое произведение 10 таблиц с условием на неравенство входящих в выборку элементов.
Во втором варианте последовательно соединяются вложенные запросы. Запрос выполняется быстрее.
В первом варианте берется декартовое произведение 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) Ну и вариант, когда условие включено во внутреннее соединение.
Функция ПерестановкиЗапросом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].ТипСоединения=ТипСоединенияСхемыЗапроса.Внутреннее;
конеццикла;
конеццикла;
запрос=новый запрос(схема.ПолучитьТекстЗапроса());
сообщить(запрос.Выполнить().Выбрать().Количество());
КонецФункции
Показать
Немного ускорил получение перестановок. Для последней выборки проверку на неравенство цифр можно не делать.
Функция ПерестановкиЗапросом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].ТаблицаДляПомещения="мВыборка";
запрос=новый запрос(схема.ПолучитьТекстЗапроса());
сообщить(запрос.Выполнить().Выбрать().Количество());
КонецФункции
Показать
Ускорил получение перестановок, но в 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))";
запрос=новый запрос(Текст);
сообщить(запрос.Выполнить().Выбрать().Количество());
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот