Для набора данных «Объект» используется для передачи в СКД внешних данных, таких как таблица значений, результат запроса. Для этого набора данных доступны описания полей, а также название объекта, которые будет передан в СКД:
Описание полей набора данных
После определения, какого вида мы набор данных используем, следует внести описание полей для данных, выводимых в отчет:
В таблице «Поля» заполняются свойства:
1. «Поле» - имя поля, в случае запроса заполняется автоматически, в случае набора данных «Объект» определяется вручную.
2. «Путь» - указывается путь к данным из набора. Именно это название, указанное в этом поле будет фигурировать во всех дальнейших настройках СКД.
3. «Заголовок» - строка с заголовком поля, которые выводится в отчет или в настройках
4. «Ограничение доступности поля» - ряд галочек – настроек, служит для указания того, как данное поле не может быть использовано в настройках. Возможно, указать такие ограни-чения
a. «Поле» - поле нельзя использовать в выборках СКД
b. «Условие» - поле нельзя использовать как условие
c. «Группа» - запрет на использование поля в группировках
d. «Упорядочивание» - запрет использовать поле в сортировках
5. «Ограничение доступности полей-реквизитов» - ряд галочек ниже, указывает на ограничения для реквизитов поля, смысл установки данных ограничений такой же что и в для поля
6. «Роль» - обозначает дополнительные свойства поля и его взаимоотношения с другими полями. Для редактирования ролей открывается специальный диалог:
a. «Без роли» - никаких особых «нагрузок» на поле не накладывается, режим по умолчанию для большинства полей
b. «Период» - содержит номер периода, если поле имеет тип периода. Самый младший период должен иметь тип 1. Например, в запросе рассчитываем итоги по различным периодам: ПериодСекунда = 1, ПериодДень=2, ПериодНеделя=3 и т.д. Данный номер будет указывать, как в СКД рассчитывается итоги по полям остатка.
c. «Дополнительный» – указывает на то, что поле–период не является обязательным
d. «Счет» - указывает на то, что поля является бухгалтерским счетом, используется для рас-чета бухгалтерских итогов.
e. «Вид» - строка выражение, с помощью которого рассчитывается вид счета. Результатом выражения должно быть значение перечисления ВидСчета (Активный, Пассивный, Активно/Пассивный), либо число. Значение числа 0 соответствует активному счету, 1 – пассивному, 2 – активно-пассивному. Выражение записывается на языке выражений системы компоновки данных. Данная информация используется при расчете по полям бухгалтерских остатков;
f. «Остатки» – признак того, что поле является полем остатка;
g. «Имя» – строка, содержащая имя группы полей остатка. Например: "Сумма", "Количест-во";
h. «Тип» – тип остатка (НачальныйОстаток, КонечныйОстаток, Нет (поле не является остат-ком));
i. «Бух. Тип» – тип бухгалтерского остатка (Дебет, Кредит, Нет (поле не является бухгалтерским остатком));
j. «Поле счета» – имя поля-счета, для которого рассчитываются остатки;
k. Игнорировать значения NULL – если установлено, то в результат не нужно включать групповые записи по данному полю в случае, если поле содержит значение NULL.
l. «Обязательное» - при выполнении запроса поле с указанным флажком будут присутствовать всегда, даже если не были выбраны в выборке.
7. «Выражение представления» - содержит выражение, которое используется при выводе зна-чений поля в отчет.
Например нужно преобразовать дату в особый формат для этого указываем такое выражение «Формат(ПериодПолугодие,"ДФ = """Полугодие с"" дд.ММ.гггг"""")» или ссылку на документ преобразовать к произвольному виду: ««Дата: »+Ссылка.Дата+«Номер: »+Ссылка.Номер».
8. «Выражение упорядочивания» - как упорядочивать это поле. При редактировании открывается диалог:
В диалоге можно указать, как данное поле упорядочивать. «Выражение» - как упорядочива-ется это поле, «Тип упорядочивания» - «по возрастанию» или «по убыванию», «Необходи-мость автоупорядочивания» – автоматическое определение полей, по которым необходимо упорядочивать результат компоновки данных.
9. «Проверка иерархии» - используется, в случае если нужно формировать нестандартные отборы.
a. «Набор данных» – набор данных для проверки иерархии;
b. «Параметр» – параметр, в который будет подставляться значение, для которого нужно получить дочерние элементы;
10. «Тип значения» - уточнение типа значения поля набора данных, полезно использховать для уточнения полей составного типа
11. «Оформление» - параметры оформления поля набора данных. При редактировании открывается диалог:
Можно задавать следующие параметры:
Цвет фона - Определяет цвет фона в ячеках
Цвет текста - Определяет цвет текст в ячейках
Цвет в диаграмме - Определяет цвет линий в диа-грамме
Цвет границы - Цвет линий границы
Стиль границы - Типы линий границы
Стиль границы слева - слева
Стиль границы сверху - сверху
Стиль границы справа - справа
Стиль границы снизу - снизу
Шрифт - Вид шрифта, толщина, наклон и т.д.
Отступ - Количество знаков отступа
Авто отступ - Количество знаков отступа, применяется в группировках
Горизонтальное положение - Положение текста в ячейке по горизонтали
Вертикальное положение - Положение текста в ячейке по вертикале
Размещение - Размещение текста который не помещается в ячейку
Ориентация текста - Ориентация текст в градусах (90-поворот перпендикулярно)
Формат - Форматная строка значения
Выделять отрицательные - Признак того чтобы выделять отрицательные значения
Минимальная ширина - Минимальная ширина ячейки в пунктах
Минимальная высота - Минимальная высота ячеки
Максимальная высота - Максимальная высота
Текст - Текст который выводится вместо значения
Далее, эти параметры используются для настройки условного оформления при выводе полей в отчет.
Кроме элементов полей в описании могут присутствовать папки, которые служат для организации расположения полей в доступных полях.
Для того чтобы поместить поле в папку, нужно создать папку, например «Отбор», далее для полей помещаемых в папку указать путь через точку: «Отбор.Организация», «Отбор.Подразделения». После этого в доступных полях при настройке мы увидим папку, содержащую указанные нами элементы.
1. Вычислить (Eval) - предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение.
Синтаксис
:
Вычислить(Выражение, Группировка, ТипРасчета)
Параметры :
Синтаксис
:
ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)
Параметры :
В данном примере вычисляется значение текущей иерархии:
Выбор
Когда Уровень() > 0
Тогда ВычислитьВыражение("Ссылка", "Иерархия")
Иначе Null
Конец
Примечания
:
Функция учитывает отбор группировок, но не учитывает иерархические отборы. Функция не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение("Сумма(СуммаОборот)", "ОбщийИтог") > 1000 . Но такое выражение можно использовать в иерархическом отборе. Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют. При расчете интервальных выражений для общего итога (параметр Группировка имеет значение "ОбщийИтог") считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют. Компоновщик макета при генерации выражения функции ВычислитьВыражение, в случае если выражение упорядочивания содержит поля, которые не могут быть использованы в группировке, заменяет функцию ВычислитьВыражение на NULL.
3. ВычислитьВыражениеСГруппировкойМассив (EvalExpressionWithGroupArray) - функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Синтаксис
:
ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
Параметры :
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функция ВычислитьМассивСГруппировкой генерирует выводимое выражение таким образом, чтобы данные выводить представления и данные были упорядочены.
Например, для пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Представление(Сумма(НаборДанных.СуммаОборот)), Сумма(НаборДанных.СуммаОборот)", "НаборДанных.Контрагент"), "2")))
4. ВычислитьВыражениеСГруппировкойТаблицаЗначений (EvalExpressionWithGroupValueTable) - функция возвращает таблицу значений, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Синтаксис
:
ВычислитьВыражениеСГруппировкойТаблицаЗначений (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
Параметры :
Результатом работы данной функции будет таблица значений с колонками Контрагент и ОбъемПродаж, в которых будут находиться контрагенты с их объемами продаж.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Например, пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент, Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(ПолучитьЧасть(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("НаборДанных.Контрагент, НаборДанных.КонтрагентПредставление, Сумма(НаборДанных.СуммаОборот), Представление(НаборДанных.СуммаОборот), НаборДанных.ПолеУпорядочивание", "НаборДанных.Контрагент"), "5, 1, 3"), "2, 4"))
5. Уровень (Level) - функция предназначена для получения текущего уровня записи.
Синтаксис
:
Уровень()
Пример
:
Уровень()
6. НомерПоПорядку (SequenceNumber) - получить следующий порядковый номер.
Синтаксис
:
НомерПоПорядку()
Пример
:
НомерПоПорядку()
7. НомерПоПорядкуВГруппировке (SequenceNumberInGrouping) - возвращает следующий порядковый номер в текущей группировке.
Пример
:
НомерПоПорядкуВГруппировке()
8. Формат (Format) - получить отформатированную строку переданного значения.
Синтаксис
:
Формат(Значение, ФорматнаяСтрока)
Параметры :
9. НачалоПериода (BeginOfPeriod)
Синтаксис
:
НачалоПериода(Дата, ТипПериода)
Параметры :
10. КонецПериода (EndOfPeriod) - функция предназначена для выделения определенной даты из заданной даты.
Синтаксис
:
КонецПериода(Дата, ТипПериода)
Параметры :
11. ДобавитьКДате (DateAdd) - функция предназначена для прибавления к дате некоторой величины.
Синтаксис
:
ДобавитьКДате(Выражение, ТипУвеличения, Величина)
Параметры :
12. РазностьДат (DateDifference) - функция предназначена для получения разницы между двумя датами.
Синтаксис
:
РазностьДат(Выражение1 , Выражение2 , ТипРазности)
Параметры :
13. Подстрока (Substring) - данная функция предназначена для выделения подстроки из строки.
Синтаксис
:
Подстрока(Строка, Позиция, Длина)
Параметры :
14. ДлинаСтроки (StringLength) - функция предназначена для определения длины строки.
Синтаксис
:
ДлинаСтроки(Строка)
Параметр :
15. Год (Year) - данная функция предназначена для выделения года из значения типа Дата.
Синтаксис
:
Год(Дата)
Параметр :
16. Квартал (Quarter) - данная функция предназначена для выделения номера квартала из значения типа Дата. Номер квартала в норме находится в диапазоне от 1 до 4.
Синтаксис
:
Квартал(Дата)
Параметр :
17. Месяц (Month) - данная функция предназначена для выделения номера месяца из значения типа Дата. Номер месяца в норме находится в диапа-зоне от 1 до 12.
Синтаксис
:
Месяц(Дата)
Параметр :
18. ДеньГода (DayOfYear) - данная функция предназначена для получения дня года из значения типа Дата. День года в норме находится в диапазоне от 1 до 365(366).
Синтаксис
:
ДеньГода(Дата)
Параметр :
19. День (Day) - данная функция предназначена для получения дня месяца из значения типа Дата. День месяца в норме находится в диапазоне от 1 до 31.
Синтаксис
:
День(Дата)
Параметр :
20. Неделя (Week) - данная функция предназначена для получения номера недели года из значения типа Дата. Недели года нумеруются, начиная с 1.
Синтаксис
:
Неделя(Дата)
Параметр :
21. ДеньНедели (WeekDay) - данная функция предназначена для получения дня недели из значения типа Дата. День недели в норме находится в диапазоне от 1 (понедельник) до 7(воскресенье).
Синтаксис
:
ДеньНедели(Дата)
Параметр :
22. Час (Hour) - данная функция предназначена для получения часа суток из значения типа Дата. Час суток находится в диапазоне от 0 до 23.
Синтаксис
:
Час(Дата)
Параметр :
23. Минута (Minute) - данная функция предназначена для получения минуты часа из значения типа Дата. Минута часа находится в диапазоне от 0 до 59.
Синтаксис
:
Минута(Дата)
Параметр :
24. Секунда (Second) - данная функция предназначена для получения секунды минуты из значения типа Дата. Секунда минуты находится в диапазоне от 0 до 59.
Синтаксис
:
Секунда(Дата)
Параметр :
25. Выразить (Cast) - данная функция предназначена для выделения типа из выражения, которое может содержать составной тип. В случае, если выражение будет содержать тип, отличный от требуемого типа, будет возвращено значение NULL.
Синтаксис
:
Выразить(Выражение, УказаниеТипа)
Параметры :
26. ЕстьNull (IsNull) - данная функция возвращает значение второго параметра в случае, если значение первого параметра NULL. В противном случае будет возвращено значение первого параметра.
Синтаксис
:
ЕстьNull(Выражение1, Выражение2)
Параметры :
27. ACos - вычисляет арккосинус в радианах.
Синтаксис
:
ACos(Выражение)
Параметр :
Синтаксис
:
ASin(Выражение)
Параметр :
Синтаксис
:
ATan(Выражение)
Параметр :
Синтаксис
:
Cos(Выражение)
Параметр :
Синтаксис
:
Exp(Выражение)
Параметр :
Синтаксис
:
Log(Выражение)
Параметр :
Синтаксис
:
Log10(Выражение)
Параметр :
Синтаксис
:
Pow(Основание, Показатель)
Параметры :
Синтаксис
:
Sin(Выражение)
Параметр :
Синтаксис
:
Sqrt(Выражение)
Параметр :
Синтаксис
:
Tan(Выражение)
Параметр :
Синтаксис
:
Окр(Выражение, Разрядность)
Параметры :
Синтаксис
:
Цел(Выражение)
Параметр :
Выражение механизма компоновки данных может содержать вызовы функций глобальных общих модулей конфигурации. Никакого дополнительно синтаксиса для вызова таких функций не требуется.
Пример
:
СокращенноеНаименование(Документы.Ссылка, Документы.Дата, Документы.Номер)
В данном примере будет осуществлен вызов функции "СокращенноеНаименование" из общего модуля конфигурации.
Отметим, что использование функций общих модулей разрешено только при указании соответствующего параметра процессора компоновки данных.
Кроме того, функции общих модулей не могут быть использованы в выражениях пользовательских полей.
41. Представление (Resentation) - данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.
<Пустое значение>".
Пример
:
Представление(Контрагент)
42. Строка (String) - данная функция преобразует переданное значение в строку.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами "; ". Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка "<Пустое значение>".
Пример
:
Строка(ДатаПродажи)
43. ЗначениеЗаполнено (ValueIsFilled)
Для значений NULL, Неопределено всегда возвращает Ложь.
Для значений Булево всегда возвращает Истину.
Для остальных типов возвращает Истину, если значение отличается от значения по умолчанию для данного типа.
Пример
:
ЗначениеЗаполнено(ДатаДоставки)
44. УровеньВГруппировке (LevelInGroup) - данная функция получает текущий уровень записи относительно группировки.
Может быть использована для получения уровня вложенности записи в иерархической группировке.
Пример
:
УровеньВГруппировке()
45. ТипЗначения(ValueType)
Синтаксис
:
ТипЗначения(Выражение)
Параметр :
Грамотное использование схемы компоновки данных (СКД) позволяет:
Но далеко не все разработчики по максимуму используют возможности схемы, так как не все её настройки очевидны и интуитивно понятны. В частности многие знают, что в 1С в СКД есть вычисляемые поля, однако, не до конца представляют область их использования и методы работы с ними.
В большинстве случаев в качестве источника данных в схеме компоновки выступает запрос. В принципе, внутри самого запроса уже можно использовать различные формулы, конструкции и выражения. Возникает закономерный вопрос, зачем же нужен дублирующий функционал?
Дело в том, что СКД – это нечто большее, нежели просто отображение результата выполнения запроса и это прекрасно видно из формы создания схемы (Рис.1).
Вычисляемые поля позволяют выполнять определенные действия со сформированным набором данных:
Давайте по этому списку и пойдем.
Смоделируем ситуацию, когда необходимо получить в отдельную ячейку все номера документов поступления по контрагенту:
таким образом, мы в нашей схеме создали дополнительное расчетное поле;
Как видно из приведенного примера, никаких сложностей в добавлении и обработке вычисляемых полей нет. Мы использовали две функции: Массив() и СоединитьСтроки().
Несколько слов о последней. Помимо первого параметра, указывающего на идентификатор массива, значений или значения, в ней могут быть установлены еще два:
В качестве источника данных для заполнения вычисляемого поля могут выступать функции общего модуля.
Несколько важных моментов:
В качестве примера использования мы возьмем тот же самый запрос к документам поступления и выведем в отдельную колонку. Сам запрос мы описывать не будем, перейдем непосредственно к вычисляемым полям:
Таким образом, мы видим, что практически любой обработчик данных может быть инициализирован из СКД, что значительно расширяет возможности использования схемы.
Достаточно часто в работе разработчика возникает ситуация, когда в поле СКД необходимо вывести результат деления:
Во избежание проблем, в этих случаях желательно в вычисляемое поле ввести проверку на деление на 0.
Сделать это можно с помощью конструкции «Выбор Когда ….Тогда… Иначе… Конец».
В конце несколько слов о достаточно новой функции ВычислитьВыражение(). С её помощью, в частности можно вычислять отклонения в стоимости между текущей и предыдущей строкой, накопительный остаток и т.д.
Допустим, получить СуммуДокумента из предыдущей строки нашего запроса можно указав в поле «Выражение» значение ВычислитьВыражение(«СуммаДокумента», «ПредыдущаяСумма»).
В данной небольшой заметке хочу показать, как можно произвести суммирование значений на различных уровнях группировки, в отчете с использованием системы компоновки данными.
Как показано на изображении, только на уровне группировки «Группы номенклатуры», рассчитывается ресурс «Заказать», в нем отображается, сколько нужно заказать по текущей группе номенклатуры исходя из определенных условий:
Соответственно, теперь необходимо рассчитать итоги, по выше находящимся группировкам («Склады», «ТипыСкладов») и общий итог.
Для этого используется функция ВычислитьВыражениеСГруппировкойМассив:
ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ (EVALEXPRESSIONWITHGROUPARRAY)
Синтаксис:
ВычислитьВыражениеСГруппировкойМассив(,)
Описание:
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет преобразовано в НаборДанных.Контрагент.
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функцияВычислитьМассивСГруппировкойМассив(), генерирует выводимое выражение таким образом, чтобы выводимая информация была упорядочена. Например, для пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений("Представление(Сумма(НаборДанных.СуммаОборот)),Сумма(НаборДанных.СуммаОборот)","НаборДанных.Контрагент"),"2")))
Параметры:
Тип: Строка. Выражение, которое нужно вычислить. Строка, например, Сумма(СуммаОборот).
Тип: Строка. Выражения полей группировки – выражения полей группировки, перечисленные через запятую. Например, Контрагент, Партия.
Тип: Строка. Выражение, описывающее отбор, применяемый к детальным записям. В выражении не поддерживается использование агрегатных функций. Например,ПометкаУдаления = Ложь.
Тип: Строка. Выражение, описывающее отбор, применяемый к групповым записям. Например, Сумма(СуммаОборот) > &Параметр1.
Пример:
Максимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));
Подробное описание синтаксиса функции можно найти по адресу http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Теперь для расчета, продублируем поле «Заказать», с различными значениями «Рассчитывать по…», используя следующие выражения, обратите внимание, что в каждом выше стоящем уровне используются значения уровней ниже стоящих группировок.
В итоге получаем следующую конструкцию:
Приветствую вас, дорогие мои читатели! Давайте продолжим рассматривать основы системы компоновки. Во этой серии статей вы узнали различия набора данных — запрос от обычного запроса. Также вы рассмотрели параметры виртуальных таблиц и и познакомились с расширением языка запросов. А теперь посмотрите в содержании, что вы узнаете здесь. Успехов!
Когда в компоновке строится запрос, то внутри него используются штатные функции языка запросов. Но СКД позволяет определять дополнительные функции. Некоторые функции похожи на функции из языка запросов, но используется другой синтаксис. Например функция «НачалоПериода»:
НачалоПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), "Месяц")
Эта функция отличается от функции языка запросов вторым параметром. Здесь используется строка «Месяц», тогда как в функции языка запросов литерал МЕСЯЦ.
Описание функций можно найти, открыв Конфигуратор: Справка -> Содержание -> Система компоновки данных -> Язык выражений системы компоновки данных -> Функции языка выражений системы компоновки данных .
Где можно применять функции языка выражений СКД, если в языке запросов их использовать нельзя?
При использовании набора данных запрос существует ряд особенностей, которые появляются
при оптимизации СКД.
Могут ли эти особенности нести какие-то негативные последствия? Да, так как в некоторых случаях будет формироваться не тот запрос, который мы хотели. Поэтому нужно учитывать эти особенности при построении сложных запросов.
На закладке «Наборы данных» при создании набора данных типа запрос происходит автозаполнение полей компоновки. Как видим, поля содержат большое количество настроек.
Колонка «Поле»
содержит название поля, которое получается из информационной базы (ИБ).
Неизменяемое значение, которое жёстко связано с запросом. Оно соответствует псевдониму запроса.
Но есть одна особенность. Если мы поменяем псевдоним, например «Номенклатура», в Конструкторе запроса на вкладке «Объединения/Псевдонимы» в колонке «Имя поля», на «Товар», тогда на закладке «Наборы данных» компоновки появиться новое поле «Товар», но при этом осталось и поле «Номенклатура». Это связано с тем, что установлен флаг «Автозаполнение». При такой настройке система не может понять, что поле «Товар» то же самое, что и поле «Номенклатура», поэтому, на всякий случай, поле добавляется дважды.
Может ли такая конструкция повредить работе пользователя? Да. Ведь в настройках варианта отчета появится два поля «Товар» и «Номенклатура». Для пользователя будет непонятно, чем они отличаются, хотя эти отборы идентичны.
Хотя можно исключить появление поля «Номенклатура», поставив галочки в колонках «Ограничение поля»-«Условие» и «Ограничение реквизитов»-«Условие» на закладке «Наборы данных» в настройках полей. Кроме того, можно убрать галочку с флага «Автозаполнение» и в Конструкторе запроса на вкладке «Компоновка данных» заполнить все поля.
Колонка «Путь» указывает, как мы будем обращаться к полю на всех закладках компоновки данных. Значение, которое можно изменить по своему усмотрению. Допускаются пробелы в названии пути, но при этом такое название заключается в квадратные скобки. Но лучше, чтобы путь был без пробелов, так как это служебное поле. Лучше изменить заголовок, поставив галочку в колонке «Заголовок».
Зачем нужно было создавать два разных поля «Поле» и «Путь», если их названия почти всегда совпадают? Потому что используется множество наборов данных. Например, если второй набор данных будет объединение, то для того, чтобы сопоставить поля нужно иметь одинаковые пути. В остальных случаях пути можно оставить без изменения, если их названия понятны.
Можно применять следующий способ для работы с колонкой «Путь». С помощью указания пути можно создавать вложенные виртуальные реквизиты элемента. Например, поместим реквизит «Качество» внутрь реквизита «Товар». Изменим поле «Путь» реквизита «Качество» на «Товар.Качество». Теперь на закладке «Настройки» во вкладке «Выбранные поля» мы не найдём поле «Качество», но оно появится в внутри поля «Товар».
Рассмотрим подробнее настройки ограничения доступности. Как видим, существуют две строки для ограничения доступности в колонках «Ограничение поля» и «Ограничение реквизитов» .
Колонки ограничения полей СКД
Колонка «Ограничение поля» означает, что ограничения будут наложены на само поле. Колонка «Ограничение реквизитов» означает, что ограничения будут наложены на вложенные реквизиты этого поля, если поле относится к сложному типу данных, такому как справочник или документ.
Каждая строка разбита ещё на четыре колонки. Если для поля или реквизитов этого поля установлен флаг:
Колонка «Выражение представления» нужна для изменения представление поля в результате отчёта. Например, нужно выводить не только наименование товара, но и его артикул. Поэтому в этой колонке можно написать следующее:
Товар. Артикул + "-" + Товар. Наименование
В этом поле мы можем использовать все возможности языка СКД и обращаться к функциям общих модулей.
Если в конфигурации существует общий модуль с названием «ДляСКД» и в этом модуле определена общая (с ключевым словом «Экспорт») функция «ПолучитьПредставление» с параметром «Ссылка», тогда в поле «Выражение представления» мы запишем:
ДляСКД. ПолучитьПредставление(Товар)
Но пользоваться такой возможностью нужно осторожно, особенно, если в функции общего модуля идёт обращение к базе данных, так как это обращение происходит после того, как получены все данные для отчёта. По сути для каждой строки запрос будет выполняться ещё раз.
Колонка «Выражение упорядочивания» нужна для определения нестандартной сортировки. Здесь можно использовать такие же конструкции, что и в поле «Выражение представления».
Ну вот, рассказал всё, как и обещал. Если есть вопросы, то пишите их в комментариях. Чтобы материал закрепился у вас в уме, подготовлю тест.