Язык запросов «1С:Предприятия 8». Издание 2, стереотипное
Запросы – это один из базовых механизмов «1С:Предприятия» наряду со встроенным языком, который позволяет читать и обрабатывать данные, хранящиеся в базе. Для составления запросов «1С:Предприятие» использует собственный язык, основанный на SQL.
Эта книга поможет начинающим разработчикам, не знакомым с SQL, освоить язык запросов «1С:Предприятия». Книга также будет полезна и тем, кто имеет опыт составления SQL-запросов в других средах разработки, поскольку язык запросов «1С:Предприятия» содержит значительное количество расширений, ориентированных на специфику финансово-экономических задач.
В книге рассматривается значительное количество практических примеров. Для создания примеров использована версия 8.3.3.687 платформы «1С:Предприятие».
К книге прилагаются демонстрационные конфигурации, иллюстрирующие эти примеры, и учебная версия платформы "1С:Предприятие 8" (ссылка для скачивания приведена в книге).
Глава 1. Механизм запросов
Как хранятся данные в «1С:Предприятии»
Исходные таблицы для запросов
- Реальные таблицы
- Виртуальные таблицы
Язык запросов «1С:Предприятия»
- Общая схема выполнения запросов
- Синтаксис текста запросов
- Примеры использования языка запросов для получения данных из одной таблицы
- Как получить все данные из таблицы
- Как получить только определенные поля для всех записей из таблицы
- Как расположить полученные записи в нужном порядке
- Как упорядочить записи таблицы по ссылочному полю
- Как получить текстовое представление ссылочного поля
- Как получить только первые несколько записей с наибольшими значениями некоторого поля
- Как получить записи, в которых определенные поля не содержат одинаковых значений
- Как получить общее количество записей в таблице и количество записей с различным значением некоторого поля
- Как получить записи из таблицы, отобранные по некоторому условию
- Как получить записи таблицы, содержащие строки, соответствующие заданному шаблону
- Как задать произвольное значение отбора записей из таблицы
- Как получить данные из табличной части некоторого документа
- Как получить данные из табличной части документа в качестве вложенной таблицы
- Как получить записи иерархической таблицы и расположить их в порядке иерархии
- Как отобрать записи иерархической таблицы по условию
- Как узнать среднюю цену, по которой продавался товар
- Как узнать общее количество и сумму продаж каждого товара в разрезе покупателей
- Как узнать среднюю цену поступления товара, не группируя сами записи
- Расчет итогов для иерархического справочника
- Расчет итогов по нескольким полям
- Расчет общих итогов
- Примеры использования выражений в списке полей выборки запроса
- Примеры использования языка запросов для получения данных из нескольких таблиц
- Как использовать данные одного запроса внутри другого запроса
- Как получить данные из разных таблиц для одного и того же поля
- Как получить данные из разных таблиц, связанных несколькими соединениями
- Как получить данные из таблицы, на которую ссылается поле другой таблицы
- Как получить данные из разных таблиц, не связывая, а дополняя их
- Временные таблицы и пакетные запросы
- Конструктор запроса
- Создание простого запроса
- Связи источников запроса
- Объединение запросов
- Создание пакетного запроса, использующего временную таблицу
Выполнение запросов из встроенного языка
- Создание запроса
- Передача параметров в запрос
- Получение выборки из результата запроса
- Обход выборки из результата запроса
- Линейный (прямой) порядок обхода
- Иерархический порядок обхода
- Обход по группировкам
- Обход выборки результата запроса, содержащего данные табличной части
- Обработка результатов запроса с помощью конструктора запроса
- Обход выборки
- Вывод в табличный документ
- Вывод в диаграмму
- Выгрузка результата запроса в таблицу или дерево значений
- Отладка запросов
- Использование временных таблиц с помощью встроенного языка
- Использование таблицы значений в качестве источника временной таблицы
- Примеры решения различных задач с использованием запросов
- Поиск всех родителей для элемента иерархического справочника
- Создание запроса из произвольного источника
- Создание кросс-отчета
- Вывод итогов по периодам с заданной периодичностью
Хранение информации
- Регистры сведений
- Получение данных из независимых непериодических регистров сведений
- Получение данных из периодических регистров сведений
- Получение данных из регистров сведений, подчиненных регистратору
- Планы видов характеристик
- Пример 1
- Пример 2
- Пример 3
- Получение значений характеристик из регистра сведений
Учет движения средств
- Регистры накопления
- Получение движений регистра накопления
- Получение остатков
- Получение оборотов
- Получение остатков и оборотов
Бухгалтерский учет
- Планы счетов
- Планы видов характеристик – виды субконто
- Регистры бухгалтерии
- Получение движений регистра бухгалтерии
- Получение остатков
- Получение оборотов
- Получение оборотов между корреспондирующими счетами
- Получение остатков и оборотов
- Получение движений с субконто
Сложные периодические расчеты
- Планы видов расчета
- Регистры расчета
- Получение данных из регистра расчета
- Получение данных о фактическом периоде действия записи для расчета
- Получение данных графика для расчета записи
- Получение базы для расчета записей
- Перерасчеты
Индексирование таблиц
- Способы индексирования таблиц
- Эффективное использование индексов
- Пример 1
- Пример 2
- Пример 3
- Пример 4
- Пример 5
- Общие рекомендации
- Общие рекомендации
- Не использовать запросы в цикле
- Не использовать в запросе функции от параметров
- Использовать параметры виртуальных таблиц
- Соответствие индексов и условий запроса
- Не использовать соединения с вложенными запросами и с виртуальными таблицами
- Соединения с вложенными запросами
- Соединения с виртуальными таблицами
- Не использовать вложенные запросы в условиях соединения
- Исключить получение поля «Ссылка» через точку
- Ограничить получение данных через точку от полей составного ссылочного типа
- Исключить вывод ссылочных полей в отчет
[ParseError] syntax error, unexpected ''a:2:{s:7:"CONTENT";s:0:"";s:4' (T_ENCAPSED_AND_WHITESPACE) (0) /home/bitrix/tlink.ru/bitrix/managed_cache/MYSQL/b_file/6f/6f03ebbd608d7b6131822c1241637512.php:5 #0: Bitrix\Main\Data\CacheEngineFiles->read(array, string, string, string, integer) /home/bitrix/tlink.ru/bitrix/modules/main/lib/data/cache.php:285 #1: Bitrix\Main\Data\Cache->initCache(integer, string, string, string) /home/bitrix/tlink.ru/bitrix/modules/main/lib/data/managedcache.php:52 #2: Bitrix\Main\Data\ManagedCache->read(integer, string, string) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/file.php:445 #3: CAllFile::GetFromCache(string) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/file.php:619 #4: CAllFile::GetFileArray(string) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/file.php:1584 #5: CAllFile::ResizeImageGet(string, array, integer, boolean) /home/bitrix/tlink.ru/bitrix/templates/aspro_next/components/bitrix/menu/left_front_catalog/result_modifier.php:19 #6: include(string) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component_template.php:877 #7: CBitrixComponentTemplate->__IncludeMutatorFile(array, array) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component_template.php:784 #8: CBitrixComponentTemplate->IncludeTemplate(array) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:735 #9: CBitrixComponent->showComponentTemplate() /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:683 #10: CBitrixComponent->includeComponentTemplate() /home/bitrix/tlink.ru/bitrix/components/bitrix/menu/component.php:386 #11: include(string) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:594 #12: CBitrixComponent->__includeComponent() /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:102 #13: CBitrixComponent->executeComponent() /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:638 #14: CBitrixComponent->includeComponent(string, array, boolean) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/main.php:1043 #15: CAllMain->IncludeComponent(string, string, array, boolean, array) /home/bitrix/tlink.ru/include/left_block/menu.left_menu.php:18 #16: include(string) /home/bitrix/tlink.ru/bitrix/components/bitrix/main.include/templates/.default/template.php:17 #17: include(string) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component_template.php:720 #18: CBitrixComponentTemplate->__IncludePHPTemplate(array, array, string) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component_template.php:815 #19: CBitrixComponentTemplate->IncludeTemplate(array) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:735 #20: CBitrixComponent->showComponentTemplate() /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:683 #21: CBitrixComponent->includeComponentTemplate() /home/bitrix/tlink.ru/bitrix/components/bitrix/main.include/component.php:280 #22: include(string) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:594 #23: CBitrixComponent->__includeComponent() /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/component.php:653 #24: CBitrixComponent->includeComponent(string, array, boolean) /home/bitrix/tlink.ru/bitrix/modules/main/classes/general/main.php:1043 #25: CAllMain->IncludeComponent(string, string, array, boolean) /home/bitrix/tlink.ru/bitrix/templates/aspro_next/page_blocks/left_block_1.php:12 #26: include_once(string) /home/bitrix/tlink.ru/bitrix/modules/aspro.next/classes/general/CNext.php:119 #27: CNext::ShowPageType(string) /home/bitrix/tlink.ru/bitrix/templates/aspro_next/footer.php:28 #28: include_once(string) /home/bitrix/tlink.ru/bitrix/modules/main/include/epilog_before.php:93 #29: require(string) /home/bitrix/tlink.ru/bitrix/modules/main/include/epilog.php:2 #30: require_once(string) /home/bitrix/tlink.ru/bitrix/footer.php:4 #31: require(string) /home/bitrix/tlink.ru/catalog/index.php:566 #32: include_once(string) /home/bitrix/tlink.ru/bitrix/modules/main/include/urlrewrite.php:159 #33: include_once(string) /home/bitrix/tlink.ru/bitrix/urlrewrite.php:2