Собственные наработки и набитые шишки в моей практике по программированию в 1С.
Страницы
среда, 22 июня 2016 г.
Использование параметров связи. Ускоряем соединение наборов данных.
Добавляю в качестве заметочки по СКД, поскольку приходится делать не весьма часто и вспоминать как и где применял не очень просто. В итоге уходит время на поиски где это делал, а потом время на поиски, а как это сделать. И еще время опять-же проверить, правильно — ли сделал.
Так вот, для чего это надо:
Например есть несколько наборов данных. И вот как правило надо бы как-то использовтаь быстрый отбор из верхнего набора, но как. В СКД это вполне возможно.
На этой закладке можно указать, какие осуществляются связи между двумя и более наборами дан-ных, по каким параметрам и условиям.
1. «Источник связи» — указывается первый набор данных, от которого осуществляется связь
2. «Приемник связи» — набор данных, к которому осуществляется связь
3. «Выражение источник» — имя поля или выражение, по которому определяются значения ис-точника
4. «Выражение приемник» — имя поля или выражение на языке запросов, по которому определяются значения приемника
5. «Параметр» — имя параметра, в который помещается значение связи, может использоваться в запросе для набора данных приемника, при этом в этом параметры будут получаться данные источника соответствующие указанному значению приемника
6. «Список параметров» — указывает на допустимость использования списка параметров, очень полезно для условий использующих оператор «В»
7. «Условие связи» — перед назначением связи проверяется указанное условие и если данное выражение возвращает Истина, то связь источника и приемника устанавливается
8. «Начальное значение» — используется для указания начального значения источника связи, полезно, когда необходимо указать связь набора данных самого к себе.
Читайте также: Возврат товара при усн в 1с
Порой для получения определенного результата компоновки необходимо создать в СКД связи наборов данных. О том, когда это нужно и как это сделать мы и постараемся рассказать в нашей статье.
Схема компоновки данных, реализованная в 1С, поддерживает три типа источника данных (Рис.1)
Источники данных
Наиболее очевидным и часто используемым разработчиками источником данных является «Запрос».
Конструктор запросов, реализованный в 8 версии 1С очень удобен, и, в большинстве случаев, связать между собой несколько таблиц, сделать необходимые группировки и отборы можно прямо в нем.
В сложных случаях, когда требуется или целесообразней использовать выполнение некоторого кода (допустим, загрузка данных из стороннего файла) или когда нет возможности использовать запрос, на помощь приходит источник данных «Объект». Произвольный код, выполняемый в модуле, на выходе должен иметь некоторую структуру, к которой СКД сможет обратиться.
Третий источник данных «Объединение». Фактически, этот источник можно рассматривать как один из видов связи. Он объединяет (сводит в одну несколько таблиц), не сопоставляя, однако совпадение тех или иных полей. То есть, если в двух объединяемых таблицах 3 и 4 строки соответственно, то в результирующем источнике данных, будет 7 строк.
Постановка задачи
В качестве полигона для испытаний мы выберем базу УПП, версии 1.3.92.3, работающую в режиме обычного приложения.
Перед нами поставлена следующая задача: используя только СКД создать отчет, который бы выводил таблицу закупаемой номенклатуры из документа, с ценами, взятыми из файла, присланного контрагентом.
Таким образом, мы должны:
- Взять табличную часть документа поступления;
- Загрузить файл в источник данных «Объект»;
- Связать эти два источника по определенному параметру (в нашем случае это будет код);
- Вывести результирующую таблицу.
Процесс выполнения
Пройдем все перечисленные шаги:
- Создаем запрос к табличной части документа поступления (Рис.2)
- Создаем набор данных объект (Рис.3);
Здесь важно обратить внимание на «Имя объекта, содержащего данные», именно это имя нам придется указать в коде модуля отчета.
- Переходим в модуль отчета и создаем там процедуру «ПриКомпоновкеРезультата» (Рис.4);
Читайте также: Как зайти в библиотеку в компьютере
Саму процедуру получения данных из внешнего файла мы описывать не будем, обратим внимание на ту часть кода, которая обязательно должна присутствовать в компоновке для того, чтобы мы могли получить данные для «Набора данных 2» (Рис.5).
Важно! При создании «Объекта» в коде процедуры при компоновке, значение параметра СтандартнаяОбработка должно быть Ложь.
Переходим на закладку «Связи наборов данных».
Связываем наборы
Заходим на соответствующую закладку схемы (Рис.6).
Мы видим табличную часть, которая очень похожа на табличную часть, которая есть в конструкторе запросов, за некоторым исключением. Для набора источника и набора приемника связи нельзя установить галочку «Все», зато добавлены несколько дополнительных колонок.
В связях наборов данных можно установить только связь, подобную внешнему левому соединению конструктора запроса.
Прежде, чем создать связь, давайте определимся с назначением колонок:
- Источник связи – первый набор данных, из которого возьмутся все имеющиеся значения;
- Приемник связи – набор данных, из которого выберутся значения, соответствующие нашему условию;
- Выражение источник – поле или выражение первого набора данных, по которому будет происходить сопоставление;
- Выражение приемник – поле или выражение зависимого набора;
- Параметр – если в этом поле указать имя параметра, то связь с набором – приемником будет осуществляться только по указанному в параметре значению;
- Список параметров – определяет возможность использования списка значений в качестве параметра;
- Условие связи – указав здесь выражение с использованием полей источника, можно создать условие, выполнение которого будет служить сигналом к установлению связи;
- Начальное значение – показывает начальное значение связи;
- Обязательная связь – определяет, задействованы ли поля, используемые в источнике (установлено ЛОЖЬ) или в приемнике (установлено ИСТИНА) и на основании этого добавляет связь в макет.
- В качестве источника связи будет выступать результат нашего запроса;
- В качестве приемника будет выступать объект;
- Выражение источник будет «НоменклатураКод»;
- Выражение приемник «Номенклатура»;
- Связь будет обязательной (Рис.7).
Читайте также: Hp scanjet 2380 драйвер windows 7
Если бы мы в качестве условия связи указали наименование какой-либо номенклатуры, или её вид воспроизводства или еще что-то, мы могли бы получить более точную выборку для нашей задачи. Результат наших действий можно увидеть на рис.8
Для двух нижних строк отчета в файле с ценами не нашлось соответствия.