(с) Статья может свободно копироваться, цитироваться и размещаться, при условии некоммерческого использования и сохранения ссылки на сайт автора.
Этой статьей я начинаю цикл, который будет посвящен описанию механизмов реализации, которые нужно уметь реализовывать при сдаче экзамена 1С:Специалист по платформе 8.1
Согласно требованиям фирмы 1С, основной перечень механизмов, которые нужно уметь реализовывать, следующий:
1) организация контроля остатка по регистру остатков;
2) работа с себестоимостью;
3) организация средневзвешенного списания;
4) организация партионного списания;
5) работа с оборотными показателями;
6) запросы по регистрам накопления и регистрам сведений;
7) работа с регистрами сведений;
8) валютные пересчеты через кросс-курс
9) использование характеристик объектов (план видов характеристик)
10) работа с измерениями в регистрах бухгалтерии;
11) работа с небалансовыми измерениями и ресурсами регистра бухгалтерии;
12) средневзвешенное списание себестоимости по данным бух регистра;
13) работа с субконто (включая оборотные);
14) запросы по таблицам бухгалтерских регистров;
15) организация валютного учета;
16) организация количественного учета в бухгалтерии;
17) организация учета авансов;
18) работа с данными графиков по фактическому периоду действия;
19) работа с данными графиков по периоду регистрации;
20) работа с базовыми видами расчета - получение базы;
21) работа с вытесняющими расчетами - получение дополнения;
22) работа с ведущими видами расчетов - использование перерасчетов;
23) построение запросов по регистрам расчетов;
24) работа со сводной таблицей;
25) работа с построителем отчета;
26) работа с системой компоновки данных;
27) работа с механизмом бизнес-процессов;
28) использование временных таблиц в запросах;
Начну, пожалуй, с новых:
Использование временных таблиц в запросах
Как заявляет фирма «1С» в технической документации: «..Использование временных таблиц помогает повысить производительность запросов и сделать текст сложных запросов более легким для восприятия…». Что касается первого утверждения (сравнение скорости выполнения запросов с использованием временных таблиц приводилось мною в статье «Сравнение производительности различных техник проведения документов в 1С:Предприятие 8.1, с выборкой из табличной части и регистра накопления»), то повышение наблюдается только при значительных объемах количества введенных документов одного типа, в остальных случаях быстрее работают все-таки вложенные запросы. Что касается второго утверждения, то не берусь его оспаривать, как говорят - на любителя, мне, например, так не показалось (кроме того, при работе с временными таблицами практически не возможно использовать конструктор запросов, временные таблицы он не понимает и выдает постоянно ошибки, хотя это может относиться только к моей версии платформы - 8.1.8.76).
Ну, перейдем сразу к сути. Для описания техники работы с временными запросами рассмотрим небольшой сквозной пример, из которого, я думаю, всем будет все ясно.
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; //создаем новый менеджер временных таблиц
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; //указываем запросу созданный менеджер временных таблиц
Запрос.Текст= "ВЫБРАТЬ
| РасходнаяТовары.Номенклатура,
| РасходнаяТовары.Количество,
| РасходнаяТовары.Сумма
|ПОМЕСТИТЬ ВременнаяТаблица //ключевое слово для помещения нашей выборки во временную таблицу
|ИЗ
| &РасходнаяТовары КАК РасходнаяТовары //используем внешний источник данных"
;
Сделаю небольшое отступление. В качестве исходных данных для временной таблицы, также может быть использован внешний источник данных: табличная часть документа, таблица значений, результат запроса. В этом случае в запросе нельзя использовать объединения и соединения.
Запрос.УстановитьПараметр("РасходнаяТовары",Товары); //внешним источником данных у нас будет табличная часть "Товары документа"
Запрос.Выполнить();
Запрос2 = Новый Запрос; //создаем новый запрос
Запрос2.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; //указываем новому запросу наш менеджер временных таблиц
Запрос2.Текст= "ВЫБРАТЬ
| ВременнаяТаблица.Номенклатура,
| ВременнаяТаблица.Количество,
| ВременнаяТаблица.Сумма
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица //используем выборку из временной таблицы"
;
Выборка = Запрос2.Выполнить();
МенеджерВременныхТаблиц.Закрыть(); //удаляем менеджер временных таблиц
Итак, я привел пример использования временных таблиц в запросах. Вроде все должно быть понятно. В примере первым запросом мы создали временную таблицу, а во втором выбирали поля уже из нее. Стоит ли использовать временные таблицы в запросах, покажет только время.