Используеться если нужно получить таблицу значений на основании выходных колонок запроса, но без выгрузки таблицы из результат запроса.
Функция ТаблицаЗначенийИзКолонокЗапроса(РезультатЗапроса)
ТаблицаЗначений = Новый ТаблицаЗначений;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ТаблицаЗначений.Колонки.Добавить(Колонка.Имя, Новый ОписаниеТипов(Колонка.ТипЗначения,, "Null"));
КонецЦикла;
Возврат ТаблицаЗначений;
КонецФункции
Функция ОставитьТолькоНужныеСимволы(
ИсходнаяСтрока = "",
Кириллица = Ложь,
Латиница = Ложь,
Числа = Ложь,
Знач НужныеСимволы = "",
ПервыйСимволТолькоБуква = Ложь)
Результат = "";
СимволыКириллицы = "";
Для НомерСимвола = 1040 По 1103 Цикл
СимволыКириллицы = СимволыКириллицы + Символ(НомерСимвола);
КонецЦикла;
СимволыЛатиницы = "";
Для НомерСимвола = 65 По 90 Цикл
СимволыЛатиницы = СимволыЛатиницы + Символ(НомерСимвола);
КонецЦикла;
Для НомерСимвола = 97 По 122 Цикл
СимволыЛатиницы = СимволыЛатиницы + Символ(НомерСимвола);
КонецЦикла;
НужныеСимволы = НужныеСимволы + ?(Кириллица, СимволыКириллицы, "");
НужныеСимволы = НужныеСимволы + ?(Латиница, СимволыЛатиницы, "");
НужныеСимволы = НужныеСимволы + ?(Числа, "0123456789", "");
Для НомерСимвола = 1 По СтрДлина(ИсходнаяСтрока) Цикл
ТекущийСимвол = Сред(ИсходнаяСтрока, НомерСимвола, 1);
Если Найти(НужныеСимволы, ТекущийСимвол) = 0 Тогда
Продолжить;
КонецЕсли;
Если ПервыйСимволТолькоБуква
И Результат = ""
И Найти(СимволыКириллицы + СимволыЛатиницы, ТекущийСимвол) = 0 Тогда
Продолжить;
КонецЕсли;
Результат = Результат + ТекущийСимвол;
КонецЦикла;
Возврат Результат;
КонецФункции
ОписаниеТипа = Новый ОписаниеТипов("Число");
КоличествоДнейРазрешения = ОписаниеТипа.ПривестиЗначение(Значение);
Функция ПолучитьТаблицуДат(НачалоПериода, КонецПериода, Тип = "")
#Область ТекстЗапросаТаблицыДат
ТекстЗапроса =
"ВЫБРАТЬ
| ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, РазностьДат.НомерДняИзДиапазона) КАК ДатаТабеля
|ПОМЕСТИТЬ ВТ_ДатыТабеля
|ИЗ
| (ВЫБРАТЬ
| aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК НомерДняИзДиапазона
| ИЗ
| (ВЫБРАТЬ 0 КАК a
| ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3
| ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6
| ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa
| ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК b
| ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3
| ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6
| ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb
| ПО (ИСТИНА)
| ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК c
| ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3
| ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6
| ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc
| ПО (ИСТИНА)
| ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК d
| ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3
| ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6
| ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd
| ПО (ИСТИНА)
| ГДЕ
| aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК РазностьДат
|
|СГРУППИРОВАТЬ ПО
| ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, РазностьДат.НомерДняИзДиапазона)
|";
#КонецОбласти
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Если ЗначениеЗаполнено(Тип) Тогда
СтрокаПоиска = "ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, РазностьДат.НомерДняИзДиапазона)";
СтрокаЗамены = "ДОБАВИТЬКДАТЕ(&НачалоПериода, " + Тип + ", РазностьДат.НомерДняИзДиапазона)";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, СтрокаПоиска, СтрокаЗамены);
СтрокаПоиска = "aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)";
СтрокаЗамены = "aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, " + Тип + ")";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, СтрокаПоиска, СтрокаЗамены);
КонецЕсли;
Результат = Запрос.Выполнить();
Возврат Результат.Выгрузить();
КонецФункции
Функция ТаблицаЗначенийИзКолонокЗапроса(РезультатЗапроса)
ТаблицаЗначений = Новый ТаблицаЗначений;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ТаблицаЗначений.Колонки.Добавить(Колонка.Имя, Новый ОписаниеТипов(Колонка.ТипЗначения,, "Null"));
КонецЦикла;
Возврат ТаблицаЗначений;
КонецФункции