Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же утрачен.
На сегодня облачные хранилища часто заменяют физические носители информации. Как правило, облачные хранилища предоставляют бесплатно от 2 до 15 ГБ дискового пространства, кому-то этого будет вполне достаточно.
ПО Effector Saver позволяет настроить периодичное резервное копирование информационной базы 1С в облако. И задать количество хранения файлов резервной копии, отдельно для каждого хранилища.
Таким образом, вы можете установить удобное время для бэкапа и управлять количеством копий базы данных.
Далее в статье рассмотрим как с помощью Effector Saver настроить бэкап информационной базы 1С:Предприятия в облако Яндекс.Диск.
На компьютере где производится настройка, должна быть установлена программа 1С:Предприятие и подключена необходимая база данных.
Запускаем файл инсталляции Мастера установки. На последнем этапе Мастера установки, соглашаемся с запуском программы и нажимаем «Завершить».
На панели инструментов нажимаем «Задачи»«Добавить задачу».
Выбираем тип новой задачи «Резервное копирование 1С:Предприятие 8», нажмите «Создать».
Во вкладке «Подключение к 1С» нажимаем «Выбрать базу 1С:Предприятия из списка и заполнить основные параметры».
В открывшемся окне «Выбор базы 1С:Предприятия» указываем необходимую базу и нажимаем «Выбрать».
Поля «Наименование:», «Исполняемый файл:», «Вариант базы:» и «Каталог базы:» автоматически заполнятся в соответствии с выбранной базой.
Необходимо только заполнить имя и пароль пользователя указанной базы, под которым будет запускаться резервное копирование средствами Конфигуратора 1С:Предприятия.
Если используете программную лицензию 1С, то установите флаг «Использовать программную лицензию 1С».
На вкладке «Отключение пользователей», устанавливаем флаг «Завершить работу пользователей 1С:Предприятия».
В Effector Saver доступно два варианта завершения работы пользователей:
- если у вас файловой база выберите «Вызвать штатное завершение работы пользователей»;
- если у вас клиент-серверная база выберите «Завершить сеансы на сервер 1С:Предприятие». Если в кластере 1С:Предприятия создан пользователь «администратор кластера», установите флажок «Кластер требует авторизации». Заполните поля: «Имя администратора кластера:» и «Пароль администратора кластера:». Если порт подключения к Агенту сервера отличный от стандартного, установите флажок «Используется нестандартный порт агента сервера». Заполните поле «Порт агента сервера:» (по умолчанию 1540).
На следующей вкладке «Хранилище архивов» указываем, где следует хранить создаваемые архивы.
Для добавления нового хранилища архива, нажимаем на кнопку «+». В открывшемся окне, нажимаем «Создать новое хранилище».
Из выпадающего списка, выберите, «Яндекс.Диск». Доступны и другие варианты: Локальная/сетевая папка, FTP/FTPS, WebDAV, Google Диск, Dropbox, OneDrive, Облако Mail.Ru.
Поле «Название:», оставим как есть. Нажимаем «Авторизация».
Откроется окно браузера, в котором необходимо ввести логин и пароль для доступа к Яндекс.Диску. Затем нажмите «Разрешить», после этого окно браузера автоматически закроется.
Далее укажем папку для хранения бэкапа базы 1С, нажимаем на кнопку с тремя точками и выбираем папку, (если папки нет, создайте ее).
Для управления количеством копий базы данных, устанавливаем флаг «Автоматически удалять устаревшие резервные копии», и заполняем параметр «Хранить количество копий», например 3. Нажимаем «ОК».
На следующей вкладке назначим расписание. В поле «Назначить задание:», выберите нужный интервал времении заполните параметр «Время начала:».
В верхней части окна настройки устанавливаем флажок «Выполнять задачу по расписанию» и нажимаем кнопку «Сохранить».
Резервное копирование информационной базы 1С на Яндекс.Диск будет осуществляться автоматически в соответствии с установленным расписанием.
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же утрачен.
На сегодня облачные хранилища часто заменяют физические носители информации. Как правило, облачные хранилища предоставляют бесплатно от 2 до 15 ГБ дискового пространства, кому-то этого будет вполне достаточно.
ПО Effector Saver позволяет настроить периодичное резервное копирование информационной базы 1С в облако. И задать количество хранения файлов резервной копии, отдельно для каждого хранилища.
Таким образом, вы можете установить удобное время для бэкапа и управлять количеством копий базы данных.
Далее в статье рассмотрим как с помощью Effector Saver настроить бэкап информационной базы 1С:Предприятия в облако Яндекс.Диск.
На компьютере где производится настройка, должна быть установлена программа 1С:Предприятие и подключена необходимая база данных.
Запускаем файл инсталляции Мастера установки. На последнем этапе Мастера установки, соглашаемся с запуском программы и нажимаем «Завершить».
На панели инструментов нажимаем «Задачи» & «Добавить задачу».
Выбираем тип новой задачи «Резервное копирование 1С:Предприятие 8», нажмите «Создать».
Во вкладке «Подключение к 1С» нажимаем «Выбрать базу 1С:Предприятия из списка и заполнить основные параметры».
В открывшемся окне «Выбор базы 1С:Предприятия» указываем необходимую базу и нажимаем «Выбрать».
Поля «Наименование:», «Исполняемый файл:», «Вариант базы:» и «Каталог базы:» автоматически заполнятся в соответствии с выбранной базой.
Необходимо только заполнить имя и пароль пользователя указанной базы, под которым будет запускаться резервное копирование средствами Конфигуратора 1С:Предприятия.
Если используете программную лицензию 1С, то установите флаг «Использовать программную лицензию 1С».
На вкладке «Отключение пользователей», устанавливаем флаг «Завершить работу пользователей 1С:Предприятия».
В Effector Saver доступно два варианта завершения работы пользователей:
- если у вас файловой база выберите «Вызвать штатное завершение работы пользователей»;
- если у вас клиент-серверная база выберите «Завершить сеансы на сервер 1С:Предприятие». Если в кластере 1С:Предприятия создан пользователь «администратор кластера», установите флажок «Кластер требует авторизации». Заполните поля: «Имя администратора кластера:» и «Пароль администратора кластера:». Если порт подключения к Агенту сервера отличный от стандартного, установите флажок «Используется нестандартный порт агента сервера». Заполните поле «Порт агента сервера:» (по умолчанию 1540).
На следующей вкладке «Хранилище архивов» указываем, где следует хранить создаваемые архивы.
Для добавления нового хранилища архива, нажимаем на кнопку «+». В открывшемся окне, нажимаем «Создать новое хранилище».
Из выпадающего списка, выберите, «Яндекс.Диск». Доступны и другие варианты: Локальная/сетевая папка, FTP/FTPS, WebDAV, Google Диск, Dropbox, OneDrive, Облако Mail.Ru.
Поле «Название:», оставим как есть. Нажимаем «Авторизация».
Откроется окно браузера, в котором необходимо ввести логин и пароль для доступа к Яндекс.Диску. Затем нажмите «Разрешить», после этого окно браузера автоматически закроется.
Далее укажем папку для хранения бэкапа базы 1С, нажимаем на кнопку с тремя точками и выбираем папку, (если папки нет, создайте ее).
Для управления количеством копий базы данных, устанавливаем флаг «Автоматически удалять устаревшие резервные копии», и заполняем параметр «Хранить количество копий», например 3. Нажимаем «ОК».
На следующей вкладке назначим расписание. В поле «Назначить задание:», выберите нужный интервал времении заполните параметр «Время начала:».
В верхней части окна настройки устанавливаем флажок «Выполнять задачу по расписанию» и нажимаем кнопку «Сохранить».
Резервное копирование информационной базы 1С на Яндекс.Диск будет осуществляться автоматически в соответствии с установленным расписанием.
Есть два справочника Штатное и Подразделения. В справочнике Штатное есть автоматически генерируемое поле Наименование. Как программно сделать так чтобы в поле Наименование справочника Штатное выводились списком значений из поля Наименование справочника Подразделения? Я только начал изучать программирование в 1С. Вариант с добавлением в код модуля списка выбора я уже реализовал. Но сами понимаете что это не то. Посмотрите код. Может у кого то решение есть лучше.
Effector saver - это специализированная программа для автоматического резервного копирования 1С:Предприятия.Программа позволяет создавать резервные копии баз данных 1С:Предприятия, баз Microsoft SQL или PostgreSQL серверов, пользовательских папок и файлов.Сохранять же резервные копии можно на внешние, сетевые и локальные диски, FTP сервер.Effector saver вмещает большое количество расширенных функций, которые значительно упрощают резервное копирование: планирование и автоматический запуск задач, удобное заполнение настроек и тестирование баз 1С, автоотключение пользователей 1С:Предприятия 8.
Наша цель - создание ежедневных архивов. На компьютере где производится настройка, должна быть установлена программа 1С:Предприятие и подключена необходимая база данных.Скачаем программу с официального сайта https://efsaver.ru/download.htmlЗапускаем файл инсталляции Мастера установки.
На последнем этапе Мастера установки, соглашаемся с запуском программы и нажимаем "Завершить".
Настроим параметры автозапуска "Агента". Для этого в Панели инструментов выбераем "Сервис" & "Параметры программы" & "Параметры запуска".
Выбираем "Запускать агент как приложение" (выбор зависит от установки программы на рабочую станцию или на сервер).
Нажимаем кнопку "Запустить агента" - "Сохранить".
Создаем задачу резервного копирования
Выбираем "Задачи" - "Добавить задачу".
Выбираем чем архивироватьПоле "Наименование" оставим по умолчанию, оно автоматически изменится на имя выбранной базы 1С.
Из выпадающего списка "Вид задачи" выбираем "Архивирование средствами 1С:Предприятие 8".
Указываем базу для архивацииВ закладке "Подключение" нажимаем "Выбрать и заполнить". В открывшемся окне "Выбор базы 1С:Предприятия" указываем нужную нам базу и нажимаем "Выбрать".
Поля "Исполняемый файл", "Вариант базы" и "Каталог базы" автоматически заполнятся значениями в соответствии с выбранной базой или же их можно заполнить вручную.
Заполняем имя и пароль пользователя выбранной базы, под которым будет запускаться резервное копирование средствами конфигуратора 1С:Предприятия.У этого пользователя в базе должны быть соответствующие права. Обратите внимание, имя задачи автоматически изменилось на имя выбранной базы.
Если для защиты 1С используется USB ключ, то не нужно устанавливать флаг "Использовать программную лицензию 1С".
Указываем место размещения архивированной базыПереходим на вкладку "Настройка архивов". Указываем каталог для хранения архивов: нажимаем на кнопку с тремя точками в конце поля "Каталог архивов" и выбераем в диалоговом окне каталог, или, если потребуется, создайте новый каталог с помощью кнопки "Создать папку".
В параметре "Количество одновременно хранимых архивов" установим 10. Effector saver будет удалять более старые резервные копии данной задачи, как только их количество превысит 10 штук.
Выбираем когда производить архивированиеЧтобы установить время выполнения задачи, переходим на вкладку "Расписание".
В нашем примере резервное копирование производится на рабочей станции, поэтому выбираем в поле "Назначить задание", пункт "Ежедневно после загрузки системы".
Если необходимо чтобы между стартом программы и архивированием прошла небольшая пауза, установите "Время задержки" в формате "чч:мм".
В поле "Время начала" установите произвольное время в формате "чч:мм" в тот период, когда последний пользователь прекращает работу с базой и до момента начала работы первого пользователя. Например ночь, 01:00.
Активация и сохранение настройки задачиУстанавливаем флаг "Выполнять задачу" в верхней части окна настройки.
Жмём кнопку "Сохранить".
{}{}
Проверка работы задачиПосле выбора и настройки всех параметров резервного копирования, приступаем непосредственно к проведению самого копирования.
Удостоверьтесь, что пользователи вышли из базы 1С:Предприятия.
В главном окне "Менеджера" кликнув мышкой делаем активной строку со своей задачей.
В меню "Задачи" нажимаем "Выполнить сейчас" и ждём, пока закончится процесс. Ранее мы запустили "Агент", поэтому задача будет выполнена немедленно.{}{}
{}{}
Всё, готово. Резервная копия успешно создана.
Просмотр результатов работы задачиПосле завершения процесса резервного копирования во вкладке "Журнал" мы увидим дату и результат выполнения задачи по созданию бэкапа.
Для подробного просмотра результата выполнения задачи, выберите в меню "Журнал" - "Открыть запись", или сделайте двойной клик мышкой по записи выполнения задачи.
Во вкладке "Файлы" можно просмотреть список файлов бэкапа, которые были созданы в результате выполнения задачи.
Для просмотра файла бэкапа, выбираем в меню "Файлы" - "Открыть файл", или правый клик мыши по записи выполнения задачи - "Открыть файл".
{}{}{}{}{}{}
Таким вот образом, за считанные минуты, можно создать автоматическую задачу резервного копирования 1С:Предприятия, и тем самым обезопасить себя от потери важных данных. С резервными копиями, сбой жесткого диска или непреднамеренное удаление пройдет менее болезненно.
Часто клиенты просят включить при записи контрагента проверку на дублирование, в некоторых конфигурациях это встроенный функционал, а если этого нет, то:
1. Создаем общий модуль
и помещаем в него процедуру:
2. в форме контрагента в процедуру перед записью добавляем:
Доброго времени суток. Имеется самописная конфигурация. В ней имеется документ "комплектовка" с табличной частью "материалы" (реквизиты: наименование материала, код, количество, цена, сумма). Позиций в табличной части очень много.
После заполнения документа, он проводится. Проведенный документ изменять нельзя. Спустя какое-то время может возникнуть ситуация, что нужно внести изменения в данный документ. Как реализовать механизм корректировки, если в базе нет типового решения? На основании проведенного документа формируются отчеты.
при разработке на обычных формах было удобно выводить результат запроса используя метод СоздатьКолоки():
В управляемом приложении метод СоздатьКолоки() не доступен, ниже представлена процедура, которая отображает на управляемой форме содержимое таблицы значений переданное ей в качестве параметра:
Пример формы:
Код вывода результата запроса на управляемую форму:
Для добавления отчета или обработки нужно в модуле добавить Функцию СведенияОВнешнейОбработке()
После сохранения приступим к добавлению в программу:
Ставим галку Дополнительные отчеты и обработки
Открываем дополнительные отчеты и обработки и жмем создать, появляется окно выбора файла, после выбора:
Укажите Размещение (в каком разделе отображать данный отчет/обработку) и в списке в колонке Быстрый доступ выберите пользователей, которым будет доступен данный отчет/обработка.
Если при добавлении вы получаете ошибку:
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(2621)}: Поле объекта не обнаружено (ХранилищеВариантов)
Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда
То нужно заменить в модуле объекта, в функции СведенияОВнешнейОбработке():
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. Запрос удобно использовать, когда требуется получить сложную выборку данных, сгруппированную и отсортированную необходимым образом. Классический пример применения запроса - получение сводки по состоянию регистра накопления на определенный момент времени. Так же, механизм запросов позволяет легко получать информацию в различных временных разрезах.
Текст запроса – это инструкция, в соответствии с которой должен быть выполнен запрос. В тексте запроса описывается:
таблицы информационной базы, используемые в качестве источников данных запроса;
поля таблиц, которые требуется обрабатывать в запросе;
правила группировки;
сортировки результатов;
и т. д.
Инструкция составляется на специальном языке – языке запросов и состоит из отдельных частей – секций, предложений, ключевых слов, функций, арифметических и логических операторов, комментариев, констант и параметров.
Язык запросов платформы 1С очень похож на синтаксис других SQL-языков, но имеются отличия. Основными преимуществами встроенного языка запросов являются: разыменование полей, наличие виртуальных таблиц, удобная работа с итогами, нетипизированные поля в запросах.
Рекомендации по написанию запросов к базе данных на языке запросов платформы 1С:
1) Текст запроса может содержать предопределенные данные конфигурации, такие как:
значения перечислений;
предопределенные данные:
справочников;
планов видов характеристик;
планов счетов;
планов видов расчетов;
пустые ссылки;
значения точек маршрута бизнес-процессов.
Также текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии. Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа ЗНАЧЕНИЕ. Данный литерал позволяет повысить удобочитаемость запроса и уменьшить количество параметров запроса.
Пример использования литерала ЗНАЧЕНИЕ:
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.Москва)
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.ПустаяСсылка)
ГДЕ ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)
ГДЕ ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
ГДЕ ТочкаМаршрута = ЗНАЧЕНИЕ(БизнесПроцесс.БизнесПроцесс1.ТочкаМаршрута.Действие1
2) Использование инструкции АВТОУПОРЯДОЧИВАНИЕ в запросе может сильно время выполнения запроса, поэтому, если сортировка не требуется, то лучше вообще ее не использовать. Во большинстве случаях лучше всего применять сортировку с помощью инструкции УПОРЯДОЧИТЬ ПО.
Автоупорядочивание работает по следующим принципам:
Если в запросе было указано предложение УПОРЯДОЧИТЬ ПО, то каждая ссылка на таблицу, находящаяся в этом предложении, будет заменена полями, по которым по умолчанию сортируется таблица (для справочников это код или наименование, для документов – дата документа). Если поле для упорядочивания ссылается на иерархический справочник, то будет применена иерархическая сортировка по этому справочнику.
Если в запросе отсутствует предложение УПОРЯДОЧИТЬ ПО, но есть предложение ИТОГИ, тогда результат запроса будет упорядочен по полям, присутствующим в предложении ИТОГИ после ключевого слова ПО, в той же последовательности и, в случае если итоги рассчитывались по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
Если в запросе отсутствуют предложения УПОРЯДОЧИТЬ ПО и ИТОГИ, но есть предложение СГРУППИРОВАТЬ ПО, тогда результат запроса будет упорядочен по полям, присутствующим в предложении, в той же последовательности и, в случае если группировка велась по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
В случае же, если в запросе отсутствуют предложения и УПОРЯДОЧИТЬ ПО, ИТОГИ и СГРУППИРОВАТЬ ПО, результат будет упорядочен по полям сортировки по умолчанию для таблиц, из которых выбираются данные, в порядке их появления в запросе.
В случае, если запрос содержит предложение ИТОГИ, каждый уровень итогов упорядочивается отдельно.
3) Что бы избежать повторного запроса к базе данных при выводе результата запроса пользователю (например, построение запроса или отображение результата запроса с помощью табличного документа) полезно использовать инструкцию ПРЕДСТАВЛЕНИЕССЫЛКИ, которая позволяет получать представление ссылочного значения. Пример:
Так же возможно использование инструкции ПРЕДСТАВЛЕНИЕ - предназначена для получения строкового представления значения произвольного типа. Отличие этих инструкций в том, что в первом случае, если инструкции передать ссылку, результатом будет строка, В остальных случаях результатом будет значение переданного параметра. Во втором случае, результатом инструкции всегда будет строка!
4) Если в запросе имеется поле с составным типом, то для таких полей возникает необходимость привести значения поля к какому-либо определенному типу с помощью инструкции ВЫРАЗИТЬ, что позволит убрать лишние таблицы из левого соединения с полем составного типа данных и ускорить выполнение запроса. Пример:
Имеется регистра накопления ОстаткиТоваров, у которого поле Регистратор имеет составной тип. В запросе выбираются Дата и Номер документов ПоступлениеТоваров, при этом при обращении к реквизитам документа через поле Регистратор не происходит множество левых соединений таблицы регистра накопления с таблицами документов-регистраторов.
Если приведение типа считается не осуществимым, то результатом приведения типа будет значение NULL.
5) Не стоит забывать про инструкцию РАЗРЕШЕННЫЕ, которая означает, что запрос выберет только те записи, на которые у текущего пользователя есть права. Если данное слово не указать, то в случае, когда запрос выберет записи, на которые у пользователя нет прав, запрос отработает с ошибкой.
6) В случае, если в запросе используется объединение, и в некоторых частях объединения присутствуют вложенные таблицы (документ с табличной частью), а в некоторых нет, возникает необходимость дополнения списка выборки полями – пустыми вложенными таблицами. Делается это при помощи ключевого слова ПУСТАЯТАБЛИЦА, после которого в скобках указываются псевдонимы полей, из которых будет состоять вложенная таблица. Пример:
7) Что бы в результат запроса не попали повторяющиеся строки, следует использовать инструкцию РАЗЛИЧНЫЕ, потому что так нагляднее и понятнее, а инструкция СГРУППИРОВАТЬ ПО применяется для группировки с помощью агрегатных функций. Ксати, при использовании агрегатных функций предложение СГРУППИРОВАТЬ ПО может быть и не указано совсем, при этом все результаты запроса будут сгруппированы в одну единственную строку. Пример:
8) Инструкция СГРУППИРОВАТЬ ПО позволяет обращаться к полям верхнего уровня, без группировки результатов по этим полям, если агрегатные функции применены к полям вложенной таблицы. Хотя в справке 1С написано, при группировке результатов запроса в списке полей выборки обязательно должны быть указаны агрегатные функции, а помимо агрегатных функций в списке полей выборки допускается указывать только поля, по которым осуществляется группировка. Пример:
9) Инструкция ЕСТЬNULL предназначена для замены значения NULL на другое значение, но не забываем, что второй параметр будет преобразован к типу первого в случае, если тип первого параметра является строкой или числом.
10) При обращении к главной таблице можно в условии обратиться к данным подчиненной таблицы. Такая возможность называется разыменование полей подчиненной таблицы.
Пример (поиск документов, содержащих в табличной части определенный товар):
Преимущество этого запроса перед запросом к подчиненной таблице Приходная.Товары в том, что если есть дубли в документах, результат запроса вернет только уникальные документы без использования ключевого слова РАЗЛИЧНЫЕ.
11) Интересный вариант оператора В - это проверка вхождения упорядоченного набора в множество таких наборов (Поле1, Поле2, ... , ПолеN) В (Поле1, Поле2, ... , ПолеN).
Пример:
12) При любой возможности используйте виртуальные таблицы запросов. При создании запроса система предоставляет в качестве источников данных некоторое количество виртуальных таблиц - это таблицы, которые так же являются результатом запроса, который система формирует в момент выполнения соответствующего участка кода.
Разработчик может самостоятельно получить те же самые данные, которые система предоставляет ему в качестве виртуальных таблиц, однако алгоритм получения этих данных не будет оптимизирован, так как:
Все виртуальные таблицы параметризованы, т. е. разработчику предоставляется возможность задать некоторые параметры, которые система будет использовать при формировании запроса создания виртуальной таблицы. В зависимости от того, какие параметры виртуальной таблицы указаны разработчиком, система может формировать РАЗЛИЧНЫЕ запросы для получения одной и той же виртуальной таблицы, причем они будут оптимизированы с точки зрения переданных параметров.
Не всегда разработчик имеет возможность получить доступ к тем данным, к которым имеет доступ система.
13) В клиент-серверном варианте работы функция ПОДСТРОКА() реализуется при помощи функции SUBSTRING() соответствующего оператора SQL, передаваемого серверу баз данных SQL Server, который вычисляет тип результата функции SUBSTRING() по сложным правилам в зависимости от типа и значений ее параметров, а так же в зависимости от контекста, в котором она используется. В большинстве случаев эти правила не оказывают влияния на выполнение запроса, но бывают случаи, когда для выполнения запроса существенна максимальная длина строки результата, вычисленная SQL Server. Важно иметь в виду, что в некоторых контекстах использования функции ПОДСТРОКА() максимальная длина ее результата может оказаться равной максимальной длине строки ограниченной длины, которая в SQL Server равна 4000 символам. Это может привести к неожиданному аварийному завершению выполнения запроса:
Microsoft OLE DB Provider for SQL Server: Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes.
HRESULT=80040E14, SQLSTATE=42000, native=8618
Чтобы избежать такой ошибки, не рекомендуют использовать функцию ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ().
14) С осторожностью используйте ИЛИ в конструкции ГДЕ, так как использование условия с ИЛИ может значительно "утяжелить" запрос. Решить проблему можно конструкцией ОБЪЕДИНИТЬ ВСЕ. Пример:
15) Условие НЕ В в конструкции ГДЕ увеличивает время исполнения запроса, так как это своего рода НЕ (ИЛИ1 ИЛИ2 ... ИЛИn), поэтому для больших таблиц старайтесь использовать ЛЕВОЕ СОЕДИНЕНИЕ с условием ЕСТЬ NULL. Пример:
16) При использовании Временных таблиц нужно индексировать поля условий и соединений в этих таблицах, НО, при использовании индексов запрос может выполняться еще медленнее. Поэтому необходимо анализировать каждый запрос с применением индекса и без, замерять скорость выполнения запроса и принимать окончательное решение.
Если вы помещаете во временную таблицу данные, которые изначально индексированы по некоторым полям, то во временной таблице индекса по этим полям уже не будет.
17) Если вы не используете Менеджер временных таблиц, то явно удалять временную таблицу не требуется, она будет удалена после завершения выполнения пакетного запроса, иначе следует удалить временную таблицу одним из способов: командой УНИЧТОЖИТЬ в запросе, вызвать метод МенеджерВременныхТаблиц.Закрыть().