Преимущества использования консоли запросов в любой задаче Программиста 1С
В 1с Предприятии запустим обработку "Консоль запросов". консоль позволяет конструировать и отлаживать запросы прямо в режиме 1с Предприятие, без Конфигуратора. Это очень полезно. Любые разработки я начинаю с тестирования данных с помощью запросов. Это позволяет решить сразу несколько задач:
- Получить выборки данных по интересующим меня критериям
- Отладить запрос, сделать его рабочим, выполняющим возложенную задачу
- Быть уверенным в работе запроса, что он получает нужные данные от Базы Данных.
- Быть уверенным, что в базе данных нужные данные содержатся. Бывает так, что запрос работает, а данных для него просто нет. Вот такие ситуации сразу отслеживаются.
- После отладки запроса его можно сразу применить в отчете, модуле, в конфигураторе.
Отладка запросов и получение данных в режиме 1С:Предприятие
Итак, в консоли запросов я создаю новую строку, запускаю конструктор запросов (в последнее время иногда пишу руками - так проще) и формирую текст запроса. После задания параметров запроса прямо в консоли запросов, его можно выполнить и получить таблицу-результат.
Рис. 1. Запрос по юридическим и фактическим адресам Контрагентов. В результатах запроса мы видим таблицу с колонками "Контрагент", "Тип", "Вид", "Адрес".
Рис. 1.1. Запрос по юридическим и фактическим адресам - Параметры запроса
Текст запроса (УБРАЛ параметры, как просили комментаторы статьи):
ВЫБРАТЬ
КонтактнаяИнформация.Объект КАК Контрагент,
КонтактнаяИнформация.Тип КАК Тип,
КонтактнаяИнформация.Вид,
МАКСИМУМ(ПОДСТРОКА(КонтактнаяИнформация.Представление, 0, 500)) КАК Адрес
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
ПО КонтактнаяИнформация.Объект = Контрагенты.Ссылка
ГДЕ
КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
СГРУППИРОВАТЬ ПО
КонтактнаяИнформация.Объект,
КонтактнаяИнформация.Тип,
КонтактнаяИнформация.Вид
УПОРЯДОЧИТЬ ПО
Контрагент,
Тип
Рис. 2. Запрос по телефонам физических лиц
Рис. 2.1. Запрос по телефонам физических лиц - параметры запроса
Текст запроса (УБРАЛ параметры, как просили комментаторы статьи):
ВЫБРАТЬ
КонтактнаяИнформация.Представление,
КонтактнаяИнформация.Объект
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.телефон)
И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
И КонтактнаяИнформация.Объект ССЫЛКА Справочник.ФизическиеЛица
Рис. 3. Запрос Юр. и Факт. адрес контрагента + телефон
Рис. 3.1. Параметры Запроса Юр. и Факт. адрес контрагента + телефон
Текст запроса (УБРАЛ параметры, как просили комментаторы статьи):
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент,
ФактическийАдрес.Представление КАК ФактическийАдрес,
ЮридическийАдрес.Представление КАК ЮридическийАдрес,
Телефон.Представление КАК Телефон
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ФактическийАдрес
ПО (ФактическийАдрес.Объект = Контрагенты.Ссылка)
И (ФактическийАдрес.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
И (ФактическийАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресКонтрагента))
И (Контрагенты.Ссылка = &Контрагент)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ЮридическийАдрес
ПО (ЮридическийАдрес.Объект = Контрагенты.Ссылка)
И (ЮридическийАдрес.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
И (ЮридическийАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента))
И (Контрагенты.Ссылка = &Контрагент)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК Телефон
ПО (Телефон.Объект = Контрагенты.Ссылка)
И (Телефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
И (Телефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента))
И (Контрагенты.Ссылка = &Контрагент)
ГДЕ
Контрагенты.Ссылка = &Контрагент
УПОРЯДОЧИТЬ ПО
Контрагенты.Наименование
Рис. 4. Запрос Юр. Факт. Адрес Контрагента + телефон + Почт. Адрес
Текст запроса (УБРАЛ параметры, как просили комментаторы статьи):
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент,
МАКСИМУМ(ПОДСТРОКА(ФактическийАдрес.Представление, 0, 200)) КАК ФактическийАдрес,
МАКСИМУМ(ПОДСТРОКА(ЮридическийАдрес.Представление, 0, 200)) КАК ЮридическийАдрес,
МАКСИМУМ(ПОДСТРОКА(Телефон.Представление, 0, 50)) КАК Телефон,
МАКСИМУМ(ПОДСТРОКА(АдресЭлектроннойПочты.Представление, 0, 200)) КАК АдресЭлектроннойПочты
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ФактическийАдрес
ПО (ФактическийАдрес.Объект = Контрагенты.Ссылка)
И (ФактическийАдрес.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
И (ФактическийАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресКонтрагента))
И (Контрагенты.Ссылка = &Контрагент)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ЮридическийАдрес
ПО (ЮридическийАдрес.Объект = Контрагенты.Ссылка)
И (ЮридическийАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента))
И (Контрагенты.Ссылка = &Контрагент)
И (ЮридическийАдрес.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК Телефон
ПО (Телефон.Объект = Контрагенты.Ссылка)
И (Телефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
И (Телефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента))
И (Контрагенты.Ссылка = &Контрагент)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК АдресЭлектроннойПочты
ПО (АдресЭлектроннойПочты.Объект = Контрагенты.Ссылка)
И (АдресЭлектроннойПочты.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
И (АдресЭлектроннойПочты.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресЭлектроннойПочтыКонтрагентаДляОбменаДокументами))
ГДЕ
Контрагенты.ПометкаУдаления = ЛОЖЬ
И Контрагенты.ЭтоГруппа = ЛОЖЬ
И Контрагенты.Ссылка = &Контрагент
СГРУППИРОВАТЬ ПО
Контрагенты.Ссылка
УПОРЯДОЧИТЬ ПО
Контрагенты.Наименование
В запросе группировка по Контрагенту. Это сделано с целью выдавать одну строку вместо нескольких в результате запроса, на случай, если у Контрагента несколько адресов, телефонов и т.п.
В случае, если вам необходимо выбрать ВСЮ контактную информацию Контрагента, не используйте группировку.
Оформление запроса в виде отчета в консоли СКД
После этого запрос можно красиво оформить в виде отчета в Конфигураторе и предоставить в пользование. Чаще всего, я пользуюсь СКД (Система кмпоновки данных), для оформления простых запросов в виде отчетов. Я зашел в конфигуратор, написал простейший отчет на СКД, с использованием запроса, описанного выше.