Урок 2. Источники данных и поля
Как объявить источники данных в блоке data, выбрать поля через fields и что из этого попадает в запрос модуля формы.
Перед чтением
- Урок 1. Каркас: spec1c и report Обучение
На этой странице
Блок data { } — главное, ради чего пишут спецификацию: он описывает, из каких объектов конфигурации читать данные и какие поля выбрать. По нему при сборке генерируется текст запроса.
Цель урока#
После урока вы сможете:
- объявить источник данных и выбрать его поля;
- предсказать, какой запрос будет сгенерирован;
- найти источник, который Studio молча не распознала.
Что нужно знать#
- Каркас спецификации и
target— Урок 1. Каркас: spec1c и report. В примерах урокаtarget: ordinary. - Имена объектов и полей в примерах взяты из типовой конфигурации. В вашей конфигурации они должны существовать; Studio в облаке их не проверяет — опечатка обнаружится только в 1С при выполнении запроса.
Объяснение#
Внутри data { } каждый источник объявляется отдельной строкой:
<идентификатор> = <Вид>.<Имя>
fields: <Поле1>, <Поле2>, …- Идентификатор — локальное имя источника в спецификации, только латиница, цифры и
_, первым символом — буква или_:sales,items_2. Кириллический идентификатор не распознаётся. В сгенерированном коде идентификатор не появляется: псевдоним таблицы в запросе — последняя часть пути объекта (РеализацияТоваровУслуг). - Путь объекта начинается с вида метаданных:
Справочник,Документ,РегистрСведений,РегистрНакопления,РегистрБухгалтерии,Перечисление,Обработка,Отчет. Подробнее — Ссылки на метаданные. fields:— список полей через запятую на отдельной строке. Он относится к последнему источнику, объявленному выше. Внутри строки можно оставить комментарий/* … */.
Как поля превращаются в запрос:
- Поля всех источников идут в
ВЫБРАТЬв порядке объявления, каждое —Таблица.Поле КАК Поле. - Одинаковое имя поля в двух источниках попадёт в запрос один раз — из первого источника.
- В
ИЗпопадает первый источник. Второй и следующие попадают в запрос только через соединение — Урок 4. Соединения и период.
Полный пример#
spec1c {
report sales
title: "Реализации"
target: ordinary
data {
sales = Документ.РеализацияТоваровУслуг
fields: Ссылка, Номер, Дата, Контрагент /* покупатель */
}
}Разбор примера#
| Строка | Что происходит |
|---|---|
data { … } | Блок источников данных |
sales = Документ.РеализацияТоваровУслуг | Источник с идентификатором sales, вид — документ |
fields: Ссылка, Номер, Дата, Контрагент | Четыре поля источника sales |
/* покупатель */ | Комментарий внутри строки полей, вырезается |
Сгенерированный запрос в процедуре Сформировать:
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка,
| РеализацияТоваровУслуг.Номер КАК Номер,
| РеализацияТоваровУслуг.Дата КАК Дата,
| РеализацияТоваровУслуг.Контрагент КАК Контрагент
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|";Ожидаемый результат#
После «Ещё» → «Применить без сборки» — уведомление «Spec1C → модель · источников 1». На этапе Intent на вкладке «Данные» появится карточка источника с полями-флажками. При сборке Studio попросит подтверждение (источников: 1).
| Уровень | Что получится |
|---|---|
| Разбор | Ошибок и предупреждений нет |
| Модель | Один источник sales с путём Документ.РеализацияТоваровУслуг и четырьмя полями |
| Проверка | «Проверить модель Spec1C» даёт замечание об отсутствии конфигурации — в облаке оно есть всегда и сборке не мешает. Если у первого источника нет полей, появится замечание «У первого источника нет полей». Существование объекта и полей не проверяется |
| Код BSL | Запрос, как выше, и подсчёт строк |
| Работа в 1С | Не проверялась. Если документа или поля нет в конфигурации, 1С сообщит об ошибке при выполнении запроса |
Типичные ошибки#
| Что видно | Причина | Что сделать |
|---|---|---|
| Уведомление «Spec1C: не найден report и источники data» | Источник не распознан, а report в тексте нет | Проверьте строку источника по пунктам ниже |
| Источник есть в тексте, но его нет на вкладке «Данные» и в запросе | Кириллический идентификатор (договоры = …), источник и fields в одной строке, опечатка в виде объекта (Справочники.…) | Латинский идентификатор; источник и fields: — на разных строках; вид — из списка выше |
| В уведомлении «· 1 предупр.», источников не прибавилось | Не закрыта фигурная скобка } блока data или корня — блок не распознан целиком | Проверьте парность скобок |
| Поля не попали в запрос | Строка fields: стоит выше строки источника | Пишите fields: сразу под своим источником |
| Удалили источник из текста, а он остался в модели | Если в новом тексте нет ни одного источника, старые не удаляются | Замените источник другим, а не удаляйте блок целиком; подробнее — Добавить или удалить источник данных |
| В 1С ошибка в запросе про поле второго источника | Второй источник объявлен без соединения: его поля есть в ВЫБРАТЬ, а таблицы нет в ИЗ | Добавьте соединение — Урок 4. Соединения и период |
Упражнение#
- Добавьте к примеру поле
Складв строкуfields:, примените и соберите. Найдите новое поле в тексте запроса. - Замените идентификатор
salesнареализациии примените. Ошибки не будет, а уведомление покажет прежнее число источников: в модели остался источникsalesиз прошлого применения, а новый не распознан. Верните латинское имя. - Замените документ на справочник из вашей конфигурации, например
Справочник.Контрагентыс полямиСсылка, Наименование. Примените, соберите и сравните запрос.
Следующий урок#
Урок 3. Параметры — блок params.
См. также
- data Справочник
- fields Справочник
- Ссылки на метаданные Справочник
- Добавить или удалить источник данных Руководство
- Соответствие конструкций и BSL Справочник
Сверено с продуктом: 27.10.2026