Скд связи наборов данных параметр

Скд связи наборов данных параметр

Войдите как ученик, чтобы получить доступ к материалам школы

Система компоновки данных 1С 8.3 для начинающих: делаем связь наборов данных

Автор уроков и преподаватель школы: Владимир Милькин

Ставим цель

Создаем новый отчет

Открываем базу «Гастроном» в конфигураторе и через главное меню создаём новый отчет:

В форме нового отчёта указываем имя «Урок6» и нажимаем кнопку «Открыть схему компоновки данных»:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Оставляем имя схемы по умолчанию:

Добавляем первый набор данных

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Добавился первый набор данных. Напишем запрос.

Вызываем конструктор запроса:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Указываем таблицу «Клиенты» и поля, которые требуется получить из запроса:

Получился такой текст запроса:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Добавляем второй набор данных

Выделяем мышкой пункт «Наборы данных».

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Выделяем его (НаборДанных2) и снова вызываем конструктор запроса:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Указываем таблицу справочника «Еда» и поля, которые требуется получить из запроса:

Получился такой текст запроса:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Обратите внимание, что у нас сейчас в отчёте присутствуют два набора данных: НаборДанных1 и НаборДанных2. У каждого свой текст запроса и свои данные.

Делаем имена более наглядными

Для наглядности, давайте переименуем НаборДанных1 в Клиенты, а НаборДанных2 в Еда.

Сделайте это двойным щелчком по каждому из наборов:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Данные каждого из наборов мы сможем использовать в нашем отчёте. К этим данным мы будем обращаться через поля.

В данный момент у набора «Клиенты» следующие поля: «Наименование» и «ЛюбимыйЦвет», а у набора «Еда»: «Наименование» и «Цвет».

Видим, что имена пересекаются и мы легко запутаемся. Поэтому давайте изменим имена полей на более говорящие.

Выделяем набор «Клиенты» и меняем имена полей так:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Затем выделяем набор «Еда» и меняем имена полей так:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Вызываем конструктор настроек

Наконец, переходим на закладку «Настройки» и нажимаем волшебную палочку, чтобы вызвать конструктор настроек:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Выбираем поля для отчета из обоих наборов:

Видите почему так важно было изменить имена полей? На этапе настроек компоновки данных мы не видим из каких наборов эти поля. Видим только их имена.

Проверяем отчёт

Сохраняем отчет и формируем в режиме пользователя:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Ага. Хорошо, но не совсем. Произошло так называемое перекрёстное соединение двух наборов (вам это должно быть хорошо знакомо по соединениям в запросах, которые мы изучали в прошлых модулях). Каждой записи из таблицы «Клиенты» сопоставлена запись из таблицы «Еда».

Но нам нужно из всех этих записей оставить только те у которых поле «ЛюбимыйЦветКлиента» равно полю «ЦветЕды»:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Осуществляем связь двух наборов данных

Для этого осуществим связь двух наборов данных (Клиенты и Еда) по полям ЛюбимыйЦветКлиента и ЦветЕды.

Переходим на закладку «Связи наборов данных» и нажимаем на кнопку-плюсик, чтобы добавить новую связь:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Настраиваем параметры как на рисунке ниже:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Источник и приёмник связи. Ну тут всё понятно. Указываем первый набор (Клиенты) и второй набор (Еда) данных. Хочу обратить особое внимание, что связь будет осуществляться по принципу внешнего левого соединения (мы его проходили в теме запросов в прошлых модулях). Исходя из этого и нужно выбирать какой набор будет источником, а какой приёмником.

Выражение источник. Указываем здесь выражение или просто поле из набора данных источника (мы здесь указали поле ЛюбимыйЦветКлиента из набора Клиенты).

Выражение приемник. Указываем здесь выражение или просто поле из набора данных приёмника (мы здесь указали поле ЦветЕды из набора Еда).

Таким образом данная связь оставит из прошлого списка только те строки, у которых поле ЛюбимыйЦветКлиента равно полю ЦветЕды.

Сохраним отчёт и запустим в режиме пользователя:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Сделаю пояснение про поле «Условие связи«, об которое так часто бьют свои копья начинающие программисты.

В этом случае для всех строк из источника связи перед осуществлением связи будет проверяться это выражение (условие связи). И если это выражение равно ИСТИНА, то будет предприниматься попытка установить связи этой строки со строками из приемника связи. Если же выражение равно ЛОЖЬ, то таких попыток предприниматься не будет.

Очень просто. Напишем в условии связи выражение ИмяКлиента = «Андрей»:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Сохраним отчёт и сформируем в режиме пользователя:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Войдите на сайт как ученик

Авторизуйтесь, чтобы получить доступ ко всем материалам школы

Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.

Войдите как ученик, чтобы получить доступ к материалам школы

Источник

Доброго времени суток.

Вступление
1. Подготовка и демонстрация

ВЫБРАТЬ
СпецификацииНоменклатурыВыходныеИзделия.Номенклатура КАК Продукция,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Комплектующая,
СРЕДНЕЕ(СпецификацииНоменклатурыИсходныеКомплектующие.Количество / ВЫБОР
КОГДА СпецификацииНоменклатурыВыходныеИзделия.Количество <> 0
ТОГДА СпецификацииНоменклатурыВыходныеИзделия.Количество
ИНАЧЕ 1
КОНЕЦ) КАК КоличествоНа1
ИЗ
Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ПО СпецификацииНоменклатурыВыходныеИзделия.Ссылка = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
ГДЕ
СпецификацииНоменклатурыВыходныеИзделия.Ссылка.Активная
И СпецификацииНоменклатурыВыходныеИзделия.Номенклатура В ИЕРАРХИИ(&Номенклатура)

СГРУППИРОВАТЬ ПО
СпецификацииНоменклатурыВыходныеИзделия.Номенклатура,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура

ВЫБРАТЬ
ТоварыНаСкладахОстатки.Склад КАК СкладКомплектующей,
ТоварыНаСкладахОстатки.Номенклатура КАК Комплектующая,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокКомплектующей
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(<(&КонецПериода)>, <(Склад).* КАК СкладОтбора, (Номенклатура).* КАК Комплектующая>) КАК ТоварыНаСкладахОстатки

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Ресурсы пока простые: Сумма(КоличествоНа1) и Сумма(ОстатокКомлектующей).

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Дальше была идея Склады в колонки, но тогда получается очень широко и почти не заполнено. Ну если одна комплектующая только на одном складе, то по всем остальным пусто. В общем не очень красиво выходит.

Проблема:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Тогда я еще не знал про «замену Левого на Внутреннее, если есть отбор».

2. Попытка выкрутиться

Но вот беда: в отборе по группировке, среди доступных полей, нет поля «СкладОтбора»:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Хорошо, попробую использовать СкладКомплектующей. Добавил отборы в каждую группировку, но выключенные и стал включать по очереди. Первым включаю у группировки Комплектующая. Результат такой же, как с отбором по отчету целиком. Отключаю.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

3. Хотелки и их исполнение.

ВЫБРАТЬ
ТоварыНаСкладахОстатки.Склад КАК СкладПродукции,
ТоварыНаСкладахОстатки.Номенклатура КАК Продукция,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокПродукции
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(<(&КонецПериода)>, <(Склад).* КАК СкладОтбора, (Номенклатура).* КАК Продукция>) КАК ТоварыНаСкладахОстатки

Ну и добавляем еще одну связь.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Ну и в ресурсах определяем ОстатокПродукции.

Тут на помощь пришла вторая статья Агрегатные функции СКД, о которых мало кто знает. Сначала использовал функцию ТаблицаЗначений. Но при простом повторении формирования отчета строки складов прыгают. Тогда добавил Упорядочить в итоге получилось так:

Для ОстаткаКомплектующих: Упорядочить(ТаблицаЗначений(Различные СкладКомплектующей Как Склад, ОстатокКомплектующей Как Остаток), «Склад Автоупорядочивание»)

Для ОстаткаПродукции: Упорядочить(ТаблицаЗначений(Различные СкладПродукции Как Склад, ОстатокПродукции Как Остаток), «Склад Автоупорядочивание»)

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Дальше немного «причесал» структуру: выключил детальные записи, сгруппировал поля, отключил «Общие Итоги по вертикали».

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Теперь влючаю отбор по складу и вижу результат, опять исчезли строки (что в прочем уже ожидаемо):

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

4. Поиск решения

ВЫБРАТЬ
ТоварыНаСкладахОстатки.Склад КАК СкладКомплектующей,
СпрНоменклатура.Ссылка КАК Комплектующая,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокКомплектующей
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(<(&КонецПериода)>, ) КАК ТоварыНаСкладахОстатки
ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
<ГДЕ
ТоварыНаСкладахОстатки.Склад.* КАК СкладОтбора>

Дальше экспериментировал с настройками. Работало долго. На каком-то этапе вообще получил от сервера отлуп по памяти. Бросил.

День бодался. На следующий день пошел по второму кугу. Только все создавал с нуля.

5. Решение

И начал снова с Левого соединения в запросе. Получился такой запрос (правильный):

ВЫБРАТЬ
ТоварыНаСкладахОстатки.Склад КАК СкладКомплектующей,
СпрНоменклатура.Ссылка КАК Комплектующая,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокКомплектующей
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(<(&КонецПериода)>, <(Склад).* КАК СкладОтбора, (Номенклатура).* КАК Комплектующая>) КАК ТоварыНаСкладахОстатки
ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура

Сформировал, посмотрел нормальный результат. Включил отбор и увидел это:

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Но самым удивительным для меня оказался такой результат (отбор по другому складу и еще одна продукция):

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

В общем дальше можно пытаться улучшить. Например, если основной запрос не сложный, то в НабореДанных2 связывать не со справочником номенклатуры, а поместить результат основного запроса во временную таблицу и связать с ним.

Конец

Прошу специалистов не смеяться над стилем изложения, я курсов не проходил. Общаюсь в большинстве своем с пользователями, которым надо объяснить понятно что, почему и как. Да и статья это первая, не потому что писать нечего, а потому, что большая часть уже написана Вами и надо только найти :).

Источник

Связи наборов данных в СКД и принципы их использования

Порой для получения определенного результата компоновки необходимо создать в СКД связи наборов данных. О том, когда это нужно и как это сделать мы и постараемся рассказать в нашей статье.

Схема компоновки данных, реализованная в 1С, поддерживает три типа источника данных (Рис.1)

Источники данных

Наиболее очевидным и часто используемым разработчиками источником данных является «Запрос».

Конструктор запросов, реализованный в 8 версии 1С очень удобен, и, в большинстве случаев, связать между собой несколько таблиц, сделать необходимые группировки и отборы можно прямо в нем.

В сложных случаях, когда требуется или целесообразней использовать выполнение некоторого кода (допустим, загрузка данных из стороннего файла) или когда нет возможности использовать запрос, на помощь приходит источник данных «Объект». Произвольный код, выполняемый в модуле, на выходе должен иметь некоторую структуру, к которой СКД сможет обратиться.

Третий источник данных «Объединение». Фактически, этот источник можно рассматривать как один из видов связи. Он объединяет (сводит в одну несколько таблиц), не сопоставляя, однако совпадение тех или иных полей. То есть, если в двух объединяемых таблицах 3 и 4 строки соответственно, то в результирующем источнике данных, будет 7 строк.

Постановка задачи

В качестве полигона для испытаний мы выберем базу УПП, версии 1.3.92.3, работающую в режиме обычного приложения.

Перед нами поставлена следующая задача: используя только СКД создать отчет, который бы выводил таблицу закупаемой номенклатуры из документа, с ценами, взятыми из файла, присланного контрагентом.

Таким образом, мы должны:

Процесс выполнения

Пройдем все перечисленные шаги:

Здесь важно обратить внимание на «Имя объекта, содержащего данные», именно это имя нам придется указать в коде модуля отчета.

Саму процедуру получения данных из внешнего файла мы описывать не будем, обратим внимание на ту часть кода, которая обязательно должна присутствовать в компоновке для того, чтобы мы могли получить данные для «Набора данных 2» (Рис.5).

Важно! При создании «Объекта» в коде процедуры при компоновке, значение параметра СтандартнаяОбработка должно быть Ложь.

Переходим на закладку «Связи наборов данных».

Связываем наборы

Заходим на соответствующую закладку схемы (Рис.6).

Мы видим табличную часть, которая очень похожа на табличную часть, которая есть в конструкторе запросов, за некоторым исключением. Для набора источника и набора приемника связи нельзя установить галочку «Все», зато добавлены несколько дополнительных колонок.

В связях наборов данных можно установить только связь, подобную внешнему левому соединению конструктора запроса.

Прежде, чем создать связь, давайте определимся с назначением колонок:

Если бы мы в качестве условия связи указали наименование какой-либо номенклатуры, или её вид воспроизводства или еще что-то, мы могли бы получить более точную выборку для нашей задачи. Результат наших действий можно увидеть на рис.8

Для двух нижних строк отчета в файле с ценами не нашлось соответствия.

Источник

Связи наборов данных в СКД

В СКД есть возможность соединять между собой разные наборы данных. Такая же возможность есть в Запросах. Какое соединение предпочтительнее: соединение наборов данных в СКД или соединение в Запросе внутри одного набора данных? Универсального алгоритма нет, но есть ключевые принципы, которые нужно учесть при выборе метода.

· Если есть возможность получить все данные в одном запросе, то это – более приоритетный вариант, чем соединение наборов данных в СКД:

— Запросы выполняются на сервере СУБД, а не на сервере 1С: Предприятие 8;

— У современных СУБД есть оптимизатор запросов, что способствует большей производительности при формировании отчета.

· Если нет возможности получить данные в одном запросе, то нужно использовать соединение наборов данных в СКД:

— Соединение разнородных наборов: Набор данных Запрос – Набор данных Объект, Набор данных Запрос – Набор данных Объединение, Набор данных Объект – Набор данных Объединение.

· Если текст запроса в одном наборе получается слишком длинным, сложным для отладки, то возможно лучше разбить этот запрос на несколько отдельных наборов данных. Иногда, когда это не критично, лучше пожертвовать производительностью для отладки и дальнейшего сопровождения системы.

1. Тип соединение наборов данных в СКД

Соединение наборов данных всегда левое внешнее. Что это значит? Предположим, у нас есть два набора данных: А и Б. Нам нужно соединить эти наборы по определенному условию и в результате получить 3 поля из набора А, и 1 поле из набора Б.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Пример соединения наборов данных

В результате внешнего левого соединения мы получим все строки из набора А. Из набора Б в результат попадут только те строки, которые соответствуют условию связей этих наборов. Таким образом из левого набора (Набор А) попадут все строки, а из правого (Набор Б) – только некоторые строки.

2. Чем соединение отличается от объединения набора данных?

Между объединением наборов данных и соединением есть большая разница. При объединении наборов данных в итоговую таблицу попадают все записи первого набора и все записи из второго набора данных в СКД. Это можно отобразить на схеме.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Объединение наборов данных

В отличии от Запросов, в объединении наборов данных количество полей может не совпадать. Например, в Наборе А всего 3 поля, а в Наборе Б – 4 поля. Такое объединение корректно отработает.

3. Настройка соединения наборов данных

Настройка связей наборов данных в СКД настраивается на вкладке «Связи наборов данных».

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Связи наборов данных

Источник связи – это первый набор данных, из которого будут отобраны все строки. Приемник связи – это второй набор данных, из которого будут присоединены только те строки, которые соответствуют условию связи. Выражение источник и Выражение приемник – это поля наборов данных, по которым будет установлена связь между наборами. В СКД есть возможность передавать параметры из левого набора данных в правый. Параметр – это параметр из второго (правого) набора данных, которому присваивается значение из поля Выражение источник.

Потребность в передаче параметра данных может возникнуть при выводе отчета по продажам за каждый день с конечным остатком на день продажи или отчета о продажах за каждый день с установленной ценой на этот день.

При использовании параметров в связях наборов данных фактически получается, что второй (правый) набор данных формируется в цикле. Для оптимизации в такой ситуации можно установить галочку «Список параметров». В этом случае данные из второго (правого) набор будут получаться порциями по 1000 строк. Благодаря этому можно оптимизировать вывод отчета.

Связи наборов данных в СКД – удобный инструмент, но важно хорошо понимать, в каком случае его использовать. Если у Вас возникли вопросы, будем рады помочь!

Источник

Разбираемся с параметрами редактирования СКД

Вступление

В конструкторе СКД на некоторых вкладках есть колонка Параметры редактирования (или Параметры ввода, что то же самое по сути).
Настройка этого значения выполняется через специальное окно с одноименным названием.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Некоторые элементы списка этих параметров не имеют конструкторов, а также имеют неочевидные названия.
Настройка этих параметров может вызывать трудности.
Достаточно подробного описания данного механизма с доступными примерами мне найти не удалось, поэтому разбирался самостояетельно.

Самые простые параметры редактирования

Наиболее простыми для использования являются следующие параметры: Формат редактирования, Быстрый выбор, Выбор групп и элементов. С ними все понятно, поэтому их пропустим.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Связи параметров выбора

Настраиваются через специальное окно Редактирование связей параметров выбора.
Рассмотрим на примере как заполнять поля этой формы.

Пример 1

Тогда достаточно в поле Параметр выбора указать имя реквизита из справочника Договоры контрагентов, в нашем случае это Владелец, поэтому запишем: Отбор.Владелец.
Зачем добавлять слово Отбор, опишу ниже.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Теперь, если у параметра Контрагент стоит флаг Использование и контрагент выбран, то при выборе договора, будет накладываться отбор по владельцу.
Если же Контрагент не выбран или флаг у контрагента не установлен, то при выборе договора будут отображаться все договоры.

Поле Изменение значения влияет на то, очищать ли договор, если пользователь выбрал другого контрагента или не очищать.

Параметры выбора

Настраиваются через специальное окно Редактирование параметров выбора.
Рассмотрим на примере как заполнять поля этой формы.

Пример 2

Поля Контрагент и Договор из первого примера.
Мы хотим, чтобы пользователь мог выбрать только договор с видом С покупателем или Прочее и не помеченный на удаление.
Добавляем два параметра:
1. Параметр выбора = Отбор.ПометкаУдаления; Значение = ЛОЖЬ
2. Параметр выбора = Отбор.ВидДоговора; Значение = список из двух элементов : С покупателем, Прочее
Эти два параметра будут устанавливаться всегда независимо от выбранности/невыбранности параметра Контрагент.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Зачем нужно слово Отбор?

Почему в поле Параметр выбора необходимо использовать приставку Отбор? Какие еще параметры можно указывать и на что это влияет?

Это один из ключевых вопросов данной статьи, который и стал поводом к ее написанию.

Для ответа на этот вопрос предположим, что у нас есть независимая обработка без СКД с реквизитами Контрагент и Договор.
Какой код нам потребовалось бы написать, чтобы при подборе в поле Договор на нашей обработке устанавливались нужные отборы и передавались параметры?
Один из вариантов этого кода выглядит следующим образом.

Чтобы получше разобраться поэкспериментируем

Пример 3

Добавим по два параметра в Параметры выбора и в Связи параметров выбора.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Поставим точку останова в форме выбора при создании на сервере

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Видим, что параметры, переданные без точек пришли как отдельные, а параметры, имеющие точки пришли в виде структуры.

Связь по типу

В настройке данного параметра сбивает с толку наличие поля Элемент связи с типом число.
Чтобы понять как его настраивать разберем два примера.

Пример 4

Создадим в СКД параметр Счет.
И еще три параметра Субконто1, Субконто2, Субконто3.
Мы хотим, чтобы если выбран Счет, то во параметре СубконтоN автоматически устанавливался отбор со значениями соответствующего субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = Счет (ПараметрыДанных.Счет), Элемент связи = 1 (номер субконто)
Для остальных двух параметров аналогично, только Элемент связи будет 2 и 3.

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Теперь при выбранном параметре Счет, в полях СубконтоN будут доступны только значения, соответствующие типу субконто

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Пример 5

Создадим в СКД параметры Вид субконто и Субконто.
Мы хотим, чтобы при выборе вида, были доступны только значения соответствующие виду субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = ВидСубконто (ПараметрыДанных.ВидСубконто), Элемент связи = 0 (не имеет значение в данном случае)

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Скд связи наборов данных параметр. Смотреть фото Скд связи наборов данных параметр. Смотреть картинку Скд связи наборов данных параметр. Картинка про Скд связи наборов данных параметр. Фото Скд связи наборов данных параметр

Заключение

Данный механизм в СКД аналогичен тому, который позволяет настраивать параметры реквизитов в справочниках, документах и т.д.

Но такие связи приходится настраивать довольно редко, и часто в таких случаях проще решить задачу с помощью кода, чем разбираться как это все настраивается.

Думаю, что данное описание поможет разобраться в этом механизме и начать его применять.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *