Разработка и оптимизация запросов в 1С:Предприятие 8.3 Общая информация и рекомендации по изучению курса Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С МОДУЛЬ 1 Хранение данных в информационных базах 1С:Предприятие 8. Принципы работы запросов Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Занятие 1. Принципы хранения данных • Клиент-серверная (трехзвенная) архитектура Клиентское приложение Сервер 1С Сервер СУБД База данных Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Базы данных • Для хранения данных 1С использует реляционные БД (от англ. relation – отношение, связь): • Данные представлены в виде таблиц со связями между ними • Таблица состоит из строк и колонок (столбцов) • Каждая колонка таблицы имеет определенный тип данных • Термины: строка таблицы – запись; колонка таблицы – поле • Базы данных, которые можно использовать для хранения информационных баз 1С: • Файловая СУБД • Microsoft SQL Server • PostgreSQL • IBM DB2 • Oracle Database Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Структура таблиц в базе данных • Разработчик не обращается к базе данных, к таблицам напрямую: • Описывает структуру данных в конфигураторе при помощи объектов метаданных • Реализует обработку данных при помощи объектов встроенного языка • Примеры: • При создании справочника в конфигураторе платформа создает в базе данных таблицу • При заполнении справочника данными в пользовательском режиме платформа выполняет запись в таблицу базы данных Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Ссылочные данные • Поле Ссылка – уникальный идентификатор записи (объекта) Курсы-по-1С.рф Ссылка Код Наименование Ссылка1 1 Контрагент1 Ссылка2 2 Контрагент2 Ссылка3 3 Контрагент3 Профессиональные курсы для тех, кто внедряет 1С Ссылочные данные • Объекты метаданных, обладающие полем Ссылка: o Справочник o Документ o Перечисление o План видов характеристик o План счетов o План видов расчета o Бизнес-процесс o Задача Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Иерархические справочники • Поле ЭтоГруппа принимает значение Истина для записей, являющихся группой • Поле Родитель – ссылка на родительскую запись Ссылка Код Наименование ЭтоГруппа Ссылка1 1 Покупатели Истина Ссылка2 2 Покупатель1 Ложь Ссылка1 Ссылка3 3 Покупатель2 Ложь Ссылка1 Курсы-по-1С.рф Родитель Профессиональные курсы для тех, кто внедряет 1С Подчиненные справочники • В таблицу подчиненного справочника платформа добавляет поле Владелец – ссылку на элемент справочника-владельца БанковскиеСчетаКонтрагентов Ссылка Код Наименование Владелец Ссылка1 1 12345678 Ссылка3 Контрагенты Курсы-по-1С.рф Ссылка Код Наименование Ссылка2 1 Контрагент1 Ссылка3 2 Контрагент2 Ссылка4 3 Контрагент3 Профессиональные курсы для тех, кто внедряет 1С Ссылочные поля • Добавление отдельного справочника позволяет: o Избежать избыточного хранения данных o Упростить обслуживание данных Города Ссылка Код Наименование Ссылка1 1 Москва Ссылка2 2 Санкт-Петербург Контрагенты Ссылка Код Наименование Город Ссылка3 1 Контрагент1 Ссылка1 Ссылка4 2 Контрагент2 Ссылка1 Ссылка5 3 Контрагент3 Ссылка2 Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Табличные части • Табличная часть связана по полю Ссылка с основной таблицей • В конфигураторе один справочник, в базе – несколько таблиц Контрагенты Направления деятельности Ссылка Код Наименование Ссылка Номер строки Направление деятельности Ссылка1 1 Контрагент1 Ссылка1 1 Строительство Ссылка2 2 Контрагент2 Ссылка1 2 Торговля Ссылка3 3 Контрагент3 Ссылка3 1 Производство Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Связь разных объектов при помощи ссылочных полей • Ссылочные типы данных появляются только при создании в конфигураторе объектов метаданных (пример – СправочникСсылка.Контрагенты) Приходная накладная Контрагенты Ссылка Код Наименование Ссылка2 1 Контрагент1 Номер Дата Проведен Контраген т Ссылка1 1 01.06.2022 Истина Ссылка2 Товары Номенклатура Ссылка Номер строки Номенклатура Колво Цена Сумма Товар1 Ссылка1 1 Ссылка3 1 100 100 Товар2 Ссылка1 2 Ссылка4 2 300 600 Ссылка Код Наименование Ссылка3 1 Ссылка4 2 Курсы-по-1С.рф Ссылка Профессиональные курсы для тех, кто внедряет 1С Нессылочные данные • Нет поля Ссылка • Пример: o Регистр сведений o Регистр накопления o Регистр бухгалтерии o Регистр расчета • Нет одного поля, однозначно идентифицирующего запись регистра • Используется другой подход к получению данных – получение набора записей при помощи отбора, обработка полученных записей в цикле Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Периодический независимый регистр сведений • Периодический регистр сведений может хранить историю изменения ресурсов в разрезе измерений Номенклатура Ссылка Код Наименование Ссылка1 1 Номенклатура1 Ссылка2 2 Номенклатура2 Цены номенклатуры Период Номенклатура Цена 01.01.2022 Ссылка1 100 01.01.2022 Ссылка2 300 01.06.2022 Ссылка1 200 Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Таблицы объектов метаданных Каждому объекту конфигурации соответствует одна или несколько таблиц в зависимости от вида объекта и его структуры Размещение данных 1С:Предприятия 8: https://its.1c.ru/db/metod8dev#content:1591:hdoc/ https://its.1c.ru/db/metod8dev#content:1798:hdoc/ Чтобы узнать, для чего предназначается та или иная таблица в базе данных, существует метод глобального контекста: • ПолучитьСтруктуруХраненияБазыДанных() Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Зачем нужно знать принципы хранения данных? • Выбор правильных объектов метаданных для решения поставленной задачи • Настройка свойств объектов метаданных в конфигураторе для получения требуемых полей в таблицах базы данных • Анализ технологического журнала, анализ планов запросов, выполняющихся на сервере СУБД • Оптимизация производительности запросов Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Занятие 2. Модели доступа к данным 2 способа обращения к данным, хранящимся в ИБ: Объектная модель Табличная модель • Возможна выборка данных, создание, изменение, удаление • База представляет собой взаимосвязанный набор таблиц • Ограничения при чтении данных: • Доступно только чтение данных o Нельзя использовать несколько источников o Нельзя применять произвольные фильтры (И, ИЛИ, НЕ) o Нельзя применять при ограничениях доступа на уровне записей (RLS) Курсы-по-1С.рф • Возможность получить только те данные, на которые есть права доступа • Запрещена запись – создание, изменение, удаление Профессиональные курсы для тех, кто внедряет 1С Принципы работы запросов • Для получения данных из таблиц БД используются запросы Встроенный язык Запрос 1С Трансляция запроса в язык SQL Выполнение SQLзапроса сервером СУБД Возврат результата запроса на сервер 1С Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Работа с различными СУБД • Разработчик не работает непосредственно с таблицами БД • Могут использоваться различные СУБД • В платформе реализован SDBL (Special Database Language): o Промежуточный язык работы с данными o Любое действие с базой – только через SDBL (запросы 1С, служебные запросы платформы, модификация данных объектов) Запрос 1С Курсы-по-1С.рф SDBL SQL-запрос конкретной СУБД Профессиональные курсы для тех, кто внедряет 1С Ошибки SDBL • Связаны со структурой хранения данных в базе Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Работа с различными СУБД • Любые манипуляции с данными (и чтение, и модификацию) платформа совершает с помощью запросов к СУБД • Запросы на языке запросов 1С транслируются в команды SQL Запрос 1С SDBL SQL-запрос конкретной СУБД • Методы получения данных для объектов встроенного языка также транслируются в команды SQL • Происходит неявно, на уровне платформы, скрыто от разработчика Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Реальные и виртуальные таблицы Таблицы языка запросов: Реальные таблицы Виртуальные таблицы • Хранятся в базе данных • Используются в запросах • Используются в запросах • В базе данных не хранятся • При выполнении преобразуются в запросы • Упрощают задачу разработчику Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Виртуальные таблицы Запрос к виртуальной таблице РегистрНакопления.ТоварныеЗапасы.Остатки Не хранятся в базе данных Сделаны для удобства разработчиков Таблица итогов регистра накопления ОБЪЕДИНЕНИЕ Таблица движений регистра накопления Формируются в момент выполнения запроса на основе реальных таблиц базы данных Выбранные данные Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С Внешние источники данных • Извлечение данных из сторонних реляционных БД • Используется механизм ODBC Драйвер ODBC База данных • При помощи внешних источников данных можно работать с данными, не хранящимися в базе, таким образом, как если бы они хранились в ней: o Использование в запросах o Чтение, редактирование Курсы-по-1С.рф Профессиональные курсы для тех, кто внедряет 1С