Содержание:
1. Что такое временные таблицы в запросе 1С и с помощью чего их можно создавать
2. Создание временной таблицы в тексте запроса
3. Создание временной таблицы с помощью встроенного языка программирования 1С
Что такое временные таблицы в запросе 1С и с помощью чего их можно создавать
Временные таблицы в запросе 1С - таблица, которая временно хранится в некоторой области памяти компьютера. Таким же образом, как и при создании переменной встроенного языка. Временные таблицы повышают производительность запросов, дают возможность делать текст сложного запроса более понятным.
Временные таблицы можно создавать с помощью встроенного языка программирования 1С и в тексте запроса.
Создание временной таблицы в тексте запроса
Создание временной таблицы в тексте запроса имеет смысл, когда одну таблицу нужно использовать более одного раза.
Предположим нужно получить данные по контрагентам и договорам: наименование контрагента, ИНН, КПП, Юридический адрес, наименование договора, дополнительного сведение договора. С отбором по организации.
Думаю, будет удобнее, для более лучшего понимания материала воспользоваться обработкой «Консоль запросов». Обработка «Консоль Запросов» может уже быть в какой-нибудь типовой конфигурации сервера 1С или её можно скачать с сайта ИТС фирмы 1С. Я воспользуюсь внешней обработкой «Консоль запросов», которую скачал с сайта ИТС.
Если кому-то это не знакомо можно на платформе 1С: создать внешнюю обработку или внешний отчет и там воспроизвести текст запроса. Будет достаточно, после написания кода установить точку останова на методе Выгрузить(), нажать клавиши клавиатуры «Shift+F9». В открывшемся окне отладчика нажать клавишу клавиатуры ««F2».
Открываем обработку «Консоль Запросов». Наводим курсор в поле для ввода текста запроса и нажимаем правой клавишей мыши. В выпадающем контекстном меню выбираем «Конструктор запроса».
Создадим временную таблицу в запросе 1С. Выбираем справочник «ДоговорыКонтрагентов», как источник данных. Выбираем поля из источника данных справочника «ДоговорыКонтрагентов».
Переходим на закладку «Условия», устанавливаем условия для источника данных справочника «Договоры контрагентов». Сделаем отбор договоров по организации и по не помеченным на удаление.
Переходим на закладку «Дополнительно», выбираем тип запроса – «Создание временной таблицы». Вводим имя в поле «Имя временной таблицы».
Переходим на закладку «Пакет запросов». Нажимаем на кнопку «Добавить». В выпадающем меню выбираем «Добавить запрос».
Переходим на закладку «Таблицы и поля». Будем создавать ещё временную таблицу в запросе 1С. Выбираем табличную часть «КонтактнаяИнформация» справочника Контрагенты в 1С, как источник данных. Выбираем поля из источника данных «КонтрагентыКонтактнаяИнформация».
Переходим на закладку «Условия», устанавливаем условия для источника данных справочника «КонтрагентыКонтактнаяИнформация».
Сделаем отбор, как показано на иллюстрации выше, одно условие не поместилось поэтому показал его виде всплывающей подсказки.
Переходим на закладку «Дополнительно», выбираем тип запроса – «Создание временной таблицы». Вводим имя в поле «Имя временной таблицы».
Переходим на закладку «Пакет запросов». Нажимаем на кнопку «Добавить». В выпадающем меню выбираем «Добавить запрос», как было показано раньше.
Переходим на закладку «Таблицы и поля». Создадим последнюю временную таблицу в запросе 1С. Выбираем регистр сведений «ДополнительныеСведения», как источник данных. Выбираем поля из источника данных «ДополнительныеСведения».
Переходим на закладку «Условия», устанавливаем условия для источника данных справочника «ДополнительныеСведения». Сделаем отбор, как показано на иллюстрации выше. Первое условие консоль запросов обрезал, развернул условие запроса в окне «Произвольное выражение».
Переходим на закладку «Дополнительно», выбираем тип запроса – «Создание временной таблицы». Вводим имя в поле «Имя временной таблицы».
Переходим на закладку «Пакет запросов». Нажимаем на кнопку «Добавить». В выпадающем меню выбираем «Добавить запрос».
Переходим на закладку «Таблицы и поля». Теперь выбираем все временные таблицы в запросе 1С, которые были созданы, как источник данных. Чтобы их выбрать нужно развернуть «Временные таблицы» (выделено красным).
Переходим на закладку «Связи». Соединяем таблицу ВТДоговоры с таблицей ВТКонтактнаяИнформация по левому соединению т.е. в результат запроса попадают все записи временной таблицы ВТДоговоры, а записи таблицы ВТКонтактнаяИнформация попадут только в случае выполнения условия равенства контрагентов. Аналогично соединяем таблицу ВТДоговоры с таблицей ВТДополнительныеСведения, где записи таблицы ВТДополнительныеСведения попадут в результат запроса только в случае выполнения условия равенства по договору.
Теперь остается установить значение для параметра «Организация» и нажать кнопку «Выполнить».
Итак, в созданном выше тексте запроса временная таблица ВТДоговоры использовалась дважды. При создании временных таблиц: ВТКонтактнаяИнформация, ВТДополнительныеСведения.
При формировании текста запроса может использоваться много временных таблиц, что может привести к перегрузке памяти. Поэтому есть возможность удалять временные таблицы в запросе 1С. Например, в процессе формирования отчета в 1С временная таблица выполнила промежуточный расчет, стала не нужной и осталась в памяти пока запрос не завершился. Чтобы удалить временную таблицу в запросе 1С, нужно открыть конструктор запроса, перейти на вкладку «Дополнительно», выбрать тип запроса «Уничтожение временной таблицы», задать имя временной таблицы.
Создание временной таблицы с помощью встроенного языка программирования 1С
Бывает есть необходимость или просто удобно использовать результаты запроса в запросах. Для примера изменим текст запроса, который был приведен выше.
На иллюстрации показано использование объекта встроенного языка МенеджерВременныхТаблиц.
Сначала создается объект встроенного языка МенеджерВременныхТаблиц. Который помещается в свойство объекта встроенного языка Запрос. Текст запроса формируется также, как было описано выше в статье.
После выполнения запроса, объект встроенного языка МенеджерВременныхТаблиц хранит результат запроса. Дальше, объект встроенного языка МенеджерВременныхТаблиц помещается в новый объект встроенного языка Запрос.
Чтобы использовать временную таблицу в запросе 1С, которая была создана ранее нужно в поле «Таблицы» нажать кнопку с пиктограммой, которая появилась на рисунке рядом с временной таблицей ВТДоговоры. После нажатия на специальную кнопку нужно добавить поля так как они были созданы в первом запросе.
Если указать тип значения, то конструктор запросов — будет это учитывать при дальнейшей работе в нем, но если завершить работу в конструкторе запросов, а потом снова в него зайти, то типы значения пропадут. Поэтому типы значения указывать не обязательно.
Специалист компании ООО "Кодерлайн"