Упорядочить временную таблицу 1с
Временные таблицы - хранятся на сервере и позволяют писать более простые запросы.
Временные таблицы хранятся в объекте типа МенеджерВременныхТаблиц. Когда этот объект уничтожается, уничтожаются и временные таблицы.
Чтобы создать временную таблицу, используется ключевое слово "ПОМЕСТИТЬ В", например:
Код 1C v 8.х
Временная таблица создается при выполнении запроса, если повторно выполнить запрос, то выдастся ошибка, что таблица уже существует.
Описания временных таблиц хранятся в свойстве запроса МенеджерВременныхТаблиц. К сожалению, нельзя получить список временных таблиц, которые хранятся в запросе.
Пример 1: Как можно выгрузить временную таблицу в таблицу значений и как использовать менеджер временных таблиц:
Код 1C v 8.х
Вместо перечисления списка полей можно использовать "ВЫБРАТЬ * ".
Если есть ТЗ, в каждой колонке которой значения всего одного типа, для типизации колонок, можно воспользоваться функцией:
Код 1C v 8.х
Пример 2: Нужно в отчете СКД Связать Данные из Регистра Накопления ВзаиморасчетыСРаботниками и Табличной Части Документа ЗарплатаКВыплате по Ссылке на Документ и ФизЛицу! И вывести полученные данные за указанный Период(с ДатаН по ДатаК) - Запрос будет такой:
Код 1C v 8.х
Похожие FAQ
Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне Внешние источники данных 0
Почему данная возможность вызывает такой интерес? Любой человек, который программировал в 1С при этом достаточно неплохо знаком с SQL и хотя бы в общих чертах знаком с архитектурой и принципами разработки других технологических платформ для бизнес пр Временные таблицы 0
Не помню уже с какого релиза в запросах стало можно использовать временные таблицы. Для этого используется объект «Менеджер временных таблиц». Фактически менеджер временных таблиц описывает пространство имен временных таблиц и отвечает за их создание Временные таблицы в отчетах СКД 0
Нужно в отчете СКД Связать Данные из Регистра Накопления ВзаиморасчетыСРаботниками и Табличной Части Документа ЗарплатаКВыплате по Ссылке на Документ и ФизЛицу! И вывести полученные данные за указанный Период(с ДатаН по ДатаК) - Запрос будет такой: Временные таблицы, как проверить в отладчике? 0
// Функция для просмотра Временных Таблиц в отладчике Функция ЛукВТ(Запрос, ИмяВнутреннейТаблицы) Экспорт Перем ЗапросТМП, Р; //Получаем таблицу из менеджера временных таблиц запроса ЗапросТМП=Новый Запрос(" ВЫБРАТЬ * ИЗ " +ИмяВнутреннейТаблицы) Посмотреть все результаты поиска похожих
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
Временная таблица создается при выполнении запроса, если повторно выполнить запрос, то выдастся ошибка, что таблица уже существует.
Описания временных таблиц хранятся в свойстве запроса МенеджерВременныхТаблиц. К сожалению, в духе 1С, нельзя получить список временных таблиц, которые хранятся в запросе.
Пример, как можно выгрузить временную таблицу в таблицу значений, а заодно и как использовать менеджер временных таблиц:
Готовую таблицу значений из памяти можно выгружать в менеджер временных таблиц запроса. Единственное условие - колонки таблицы значений должны быть типизированными, т.е. иметь тип. Вот пример, демонстрирующий это (спасибо Чепелевич А.А., раньше я думал что это невозможно):
Вместо перечисления списка полей можно использовать "ВЫБРАТЬ *".
От zag2art
Если есть ТЗ, в каждой колонке которой значения всего одного типа, для типизации колонок, можно воспользоваться функцией:
[1с]
Процедура ТипизацияТЗ(ТЗ) Экспорт
РезультатТЗ = новый ТаблицаЗначений;
Для Каждого Колонка из ТЗ.Колонки Цикл
Имя = Колонка.Имя;
МассивТипов = новый Массив(1);
МассивТипов[0] = ТипЗнч(ТЗ[0][Имя]);
Описатель = новый ОписаниеТипов(МассивТипов);
РезультатТЗ.Колонки.Добавить(Имя, Описатель);
КонецЦикла;
Для каждого Строка из ТЗ Цикл
СтрокаРез = РезультатТЗ.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРез, Строка);
КонецЦикла;
ТЗ = РезультатТЗ.Скопировать();
КонецПроцедуры
[/1с]
Функция для просмотра ВТ в отладчике
Вот как получить список всех ВТ, не знаю. Видимо никак.
Как удалить временную таблицу
Недостатки временных таблиц:
1. Если в тексте запроса есть временная таблица, то этот запрос не разбирается конструктором запроса (это ограничение можно обойти нештатно, используя объявление подзапроса Книга знаний: v8: Конструирование сложных запросов для 1С). В релизе 8.1.11 можно использовать конструктор
2. Нельзя выполнить запрос над временной таблицей и поместить данные в нее же саму.
3. Нельзя получить список временных таблиц из менеджера временных таблиц.
Примечание: В последних версиях платформы больше 8.1.8 используется синтаксис "ПОМЕСТИТЬ" без предлога "В".
Есть у меня справочник с реквизитами: Р1 и Р2.
Хочу получить уникальные значения Р2 упорядоченные по значениям Р1.
(5) dmt, Сортировать по P1, чтобы убрать дубли по P2. В запросе. Во временной таблице.
Чо-то мозг пошел вразнос на холостых оборотах. Пойду лучше поработаю.
(5) dmt, сначала выбрать различные Р1 во врем табл, затем внутр соединение со справочником по Р1 и упорядочивание по Р2
Исходная таблица из двух элементов с реквизитами:
Р1 = "А"
Р2 = 1
Шаг 1: Выбор различных
Р2 = 1
Шаг 2: Внутр соед
Р1 = "А"
Р2 = 1
Вернулись к исходной таблице.
(23) dmt, для примера из (17)
результат в скрине ниже
(27) vovan_victory, в результате всегда будет первая таблица.
(28) herfis, вывести только один. Первый.
(29) tarassov, я слышал про эту специальную фразу.
(31) herfis, наверное всётаки "с минимальным P1" которому есть соответствие P2, а не из всей таблицы.
для случая
Р1 = "А"
Р2 = 1
вернётся
Р1 = "А" Р2 = 1
Р1 = "А" Р2 = 2
а должна исходная таблица :)
(34) dmt, Да не за что :) Как-то не верилось, что задача такая простая, учитывая нечеткую ее постановку.
(35) herfis, вроде старался в (3) как можно проще описать ситуацию.
Аж самому интересно стало как ее можно было описать более понятно.
(36) dmt, Не, в (3) нормально. Если б ты с "сортировки временных таблиц" сначала не зашел :) Такая формулировка сама по себе недоумение вызывает, плюс слабо относится к сути проблемы - в итоге ищешь какой-то подвох.
Внезапно сейчас обнаружил, что при помещении данных во временную таблицу с индексированием по полю, платформа сортирует эти данные по этому полю. Также, теперь есть функция АВТОНОМЕРЗАПИСИ() которая нумерует данные по порядку при помещении во временную таблицу, что даёт возможность нам независимо отсортировать поля таблицы и связать их потом по номеру. Вот пример:
при помещении данных во временную таблицу с индексированием по полю, платформа сортирует эти данные по этому полю
(39)Внезапно наткнулся на этот эффект. Так что это не точно. Я выполнял индексирование, а потом просматривал содержимое временной таблицы. И данные там реально были отсортированы. Проверял это только на числовых данных. И в файловой базе. Не уверен, что на SQL сервере эффект повторится.
(40) Эффект существует, но похоже что это не совсем сортировка, а какое-то побочное явление при создании индекса. Когда записей немного - на вид они отсортированы, но когда их несколько тысяч то начинают встречаться "недосортированные" вставки. Так что создать индекс не значит отсортировать саму временную таблицу в запросе.
Имея некоторый опыт разработки, не раз приходилось видеть, насколько нерационально и громоздко порой строятся запросы начинающими разработчиками к информационным базам 1С. Существует достаточно простой и удобный механизм временных таблиц, при использовании которого можно разбить большой и плохо читаемый запрос на несколько небольших. Можно так же по некоторому алгоритму сформировать таблицу значений, поместить ее во временную таблицу и выполнить по ней запрос.
В данной публикации на примере процедуры проведения документа Реализация, не вникая в детали алгоритма проведения, описываются некоторые приемы использования временных таблиц в запросах к информационной базе на платформе 8.2. Автор публикации не претендует на полноту освещения вопроса или методическую безупречность.
Рассмотрим пример работы с временными таблицами в конкретном запросе.
1. Создается таблица значений с указанием типов колонок. Типы колонок для таблицы значений, которая будет использоваться в запросе, обязательно должны быть определены (в тексте программного модуля номера и краткое описание разделов указаны в комментарии).
2. Таблица значений заполняется по некоторому произвольному алгоритму. В данном примере она дублирует движения документа.
3. Копируются отдельные таблицы значений для использования в условиях запроса.
4. Создается объект менеджер временных таблиц. Менеджер временных таблиц предназначен для хранения информации о временных таблицах, которые участвуют в запросе. При уничтожении объекта временные таблицы, находящиеся в нем, удаляются. Для временных таблиц, участвующих в одном запросе, должен использоваться единый менеджер временных таблиц.
5. Свойствам МенеджерВременныхТаблиц всех запросов, где участвуют временные таблицы, присваивается значение созданного ранее менеджера временных таблиц.
6. Формируются временные таблицы. При необходимости можно сформировать требуемое количество временных таблиц путем выполнения запросов к заполненной ранее таблице значений. Важной особенностью является то, что таблица значений непосредственно не может участвовать в запросах, где используются соединения с другими таблицами или агрегатные функции (Сумма, Среднее, Максимум, Минимум и др.). Для этого предварительно следует простым запросом, где в качестве параметра используется ссылка на таблицу значений, поместить ее во временную таблицу.
7. Временные таблицы используются в запросе. В приведенном запросе они используются в условии виртуальной таблицы регистра накопления в виде небольших вложенных запросов, а так же временная таблица связана внутренним соединением с виртуальной таблицей регистра.
Временные таблицы - хранятся на сервере и позволяют писать более простые запросы.
Временные таблицы хранятся в объекте типа МенеджерВременныхТаблиц. Когда этот объект уничтожается, уничтожаются и временные таблицы.
Чтобы создать временную таблицу, используется ключевое слово "ПОМЕСТИТЬ В", например:
Код 1C v 8.х
Временная таблица создается при выполнении запроса, если повторно выполнить запрос, то выдастся ошибка, что таблица уже существует.
Описания временных таблиц хранятся в свойстве запроса МенеджерВременныхТаблиц. К сожалению, нельзя получить список временных таблиц, которые хранятся в запросе.
Пример 1: Как можно выгрузить временную таблицу в таблицу значений и как использовать менеджер временных таблиц:
Код 1C v 8.х
Вместо перечисления списка полей можно использовать "ВЫБРАТЬ * ".
Если есть ТЗ, в каждой колонке которой значения всего одного типа, для типизации колонок, можно воспользоваться функцией:
Код 1C v 8.х
Пример 2: Нужно в отчете СКД Связать Данные из Регистра Накопления ВзаиморасчетыСРаботниками и Табличной Части Документа ЗарплатаКВыплате по Ссылке на Документ и ФизЛицу! И вывести полученные данные за указанный Период(с ДатаН по ДатаК) - Запрос будет такой:
Код 1C v 8.х
Похожие FAQ
Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне Веб браузер в 1С используя поле HTML документа 3
Настраивал клиенту CRM, он захотел - чтобы панель управления сайтом была в 1С. Хочет - делаем: Обработка Веб браузер проста, состоит из поля HTML документа и 20 строчек кода: Код команд: НаКлиенте Процедура Команда1(Команда) Объект.HTML = Внешние источники данных 0
Почему данная возможность вызывает такой интерес? Любой человек, который программировал в 1С при этом достаточно неплохо знаком с SQL и хотя бы в общих чертах знаком с архитектурой и принципами разработки других технологических платформ для бизнес пр Временные таблицы 0
Не помню уже с какого релиза в запросах стало можно использовать временные таблицы. Для этого используется объект «Менеджер временных таблиц». Фактически менеджер временных таблиц описывает пространство имен временных таблиц и отвечает за их создание Временные таблицы в отчетах СКД 0
Нужно в отчете СКД Связать Данные из Регистра Накопления ВзаиморасчетыСРаботниками и Табличной Части Документа ЗарплатаКВыплате по Ссылке на Документ и ФизЛицу! И вывести полученные данные за указанный Период(с ДатаН по ДатаК) - Запрос будет такой: Посмотреть все результаты поиска похожих
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
Читайте также: