Добавление колонок в 1С — в списках, отчётах, табличных частях и печатных формах

· 9 мин

Содержание

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

Ниже пять сценариев от простого к сложному. Все описаны для 1С 8.3 с интерфейсом «Такси». Сначала определите, какой из них ваш, и не лезьте в Конфигуратор там, где хватит настроек.

Что нужноКто делаетНужен ли Конфигуратор
Показать скрытую колонку в спискеПользовательНет
Добавить поле в готовый отчётПользовательНет
Добавить поле в отчёт на СКД, которого нет в набореРазработчикДа
Новая колонка в табличной частиРазработчикДа
Колонка в динамическом спискеРазработчикДа
Колонка в печатной формеРазработчикДа

Какие колонки можно включить без программиста

Перед тем как что-то разрабатывать, проверьте, нет ли нужной колонки в списке скрытых. Большинство типовых журналов и справочников содержат больше полей, чем показывают по умолчанию.

Список документов или справочника

Откройте нужный список. В командной панели над таблицей найдите меню «Ещё» и в нём команду изменения формы. В открывшемся окне настройки формы есть дерево элементов. Колонки списка лежат внутри таблицы «Список», рядом с каждой стоит флажок.

  1. Откройте список, например «Поступление (акты, накладные)».
  2. Вызовите «Ещё» и выберите команду изменения формы.
  3. Раскройте в дереве таблицу «Список» и отметьте нужные колонки.
  4. Нажмите «ОК» и проверьте результат.

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

Сначала поищите колонку в списке доступных. Часто «Ответственный», «Комментарий» или «Организация» уже есть, просто отключены.

Ширина, порядок и сортировка

Порядок колонок меняется перетаскиванием заголовка. Ширину тянут за границу заголовка. Сортировка по колонке включается кликом по заголовку.

Если нужной колонки в дереве нет, она не входит в состав данных списка. Тогда переходите к разработке.

Как добавить поле в отчёт через настройки

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

  1. Сформируйте отчёт.
  2. Нажмите кнопку «Настройки» в командной панели отчёта.
  3. Перейдите на вкладку выбранных полей.
  4. Нажмите «Добавить» и выберите поле из списка доступных, либо перетащите его.
  5. Нажмите «Закрыть и сформировать».

Доступные поля группируются в дерево: поля самого набора данных и вложенные реквизиты. Если нужный реквизит лежит внутри ссылки, например «Контрагент → ИНН», раскройте ссылочное поле и берите вложенное.

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

Удобный приём: сохраните настроенный вариант отчёта под своим именем, чтобы не собирать колонки каждый раз заново.

Колонка в отчёте через Конфигуратор: схема компоновки

Когда поля нет в списке доступных, его добавляют в схему компоновки данных отчёта. Для собственного отчёта или внешнего файла .erf это делается напрямую. Типовой отчёт трогать не нужно: его правят в расширении.

Шаги

  1. Откройте Конфигуратор и найдите объект «Отчёты» в дереве конфигурации. Для внешнего отчёта откройте файл через меню «Файл».
  2. Откройте схему компоновки данных.
  3. На вкладке «Наборы данных» откройте запрос набора.
  4. Добавьте в ВЫБРАТЬ новое поле и при необходимости соединение с нужной таблицей.
  5. Перейдите на вкладку «Настройки», раздел выбранных полей, и добавьте новое поле туда.

Пример. В запросе есть выборка продаж, а нужен ИНН покупателя:

ВЫБРАТЬ
    Продажи.Контрагент КАК Контрагент,
    Продажи.Контрагент.ИНН КАК ИНН,
    Продажи.СуммаДокумента КАК Сумма
ИЗ
    Документ.РеализацияТоваровУслуг КАК Продажи

Поле ИНН после изменения запроса появится в списке полей набора. Если оно не появилось, обновите список полей из запроса: это отдельное действие в редакторе набора данных.

Менять типовой отчёт напрямую нельзя без снятия с поддержки. Получите «зависшие» обновления и ручное объединение при каждом релизе. Используйте расширение конфигурации.

Заголовок колонки можно переименовать в свойствах поля набора. Формат вывода (число, дата, количество знаков) задаётся на вкладке оформления.

Перед выгрузкой нового поля в отчёт
Выполнено: 0 / 4

Как расширить табличную часть документа или справочника

Здесь два разных действия, и их часто путают: добавить реквизит в структуру данных и вывести его на форму. Если сделать только первое, колонка в базе есть, а пользователь её не видит.

Реквизит в структуре

  1. В Конфигураторе откройте объект, например документ, и перейдите на вкладку «Данные».
  2. Выберите нужную табличную часть и добавьте в её реквизиты новый.
  3. Задайте имя, синоним (его пользователь увидит в заголовке колонки) и тип.

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

Вывод на форму

  1. Откройте форму документа и найдите дерево реквизитов объекта.
  2. Раскройте табличную часть. Новый реквизит появится среди её полей.
  3. Перетащите его в таблицу на форме, в дерево элементов.
  4. Задайте заголовок, ширину и условия видимости.

Для типового документа добавить реквизит в табличную часть можно только в расширении. Расширения конфигурации появились в платформе 8.3.6. Заимствуйте объект в расширение, добавьте реквизит и форму, затем загрузите расширение в базу. Это два отдельных шага: загрузить файл .cfe и применить изменения к конфигурации базы данных.

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

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

Как добавить колонку в динамический список

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

Простой случай

  1. Откройте нужную форму списка в Конфигураторе.
  2. Выберите реквизит «Список» и нажмите кнопку настройки списка в его свойствах.
  3. Если используется основная таблица, отметьте нужные поля.
  4. Перетащите появившееся поле из реквизитов формы в таблицу.

Произвольный запрос

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

Для наложения служебных данных динамический список использует свойства «Основная таблица» и «Динамическое считывание данных». Если они настроены неверно, колонка пустая, а сортировка по ней работает медленно или вообще не работает .

Из кода

Колонку на форме можно создать программно, например при открытии. Поле данных при этом должно уже быть в запросе списка:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Колонка = Элементы.Добавить("СписокИНН", Тип("ПолеФормы"), Элементы.Список);
    Колонка.Вид = ВидПоляФормы.ПолеВвода;
    Колонка.ПутьКДанным = "Список.ИНН";

КонецПроцедуры

Код выполняется на сервере при создании формы: к этому моменту элементы ещё не показаны, поэтому добавление колонки не мигает на экране. Поле ИНН в запросе списка должно называться ровно так, иначе путь к данным не найдётся.

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

Если колонка нужна лишь части пользователей, управляйте её видимостью свойством Видимость по роли, а не создавайте разные формы.

Колонка в печатной форме

Печатная форма устроена иначе. Это макет, табличный документ с именованными областями, и модуль, который выводит эти области и подставляет значения в параметры.

Чтобы добавить колонку, нужны оба действия:

  1. Откройте макет печатной формы. Добавьте столбец в область строки табличной части. Область заголовка тоже расширьте, иначе шапка окажется короче строк.
  2. Запишите в ячейку нового столбца параметр, например ИНН, и в ячейку заголовка текст.
  3. В модуле, который формирует форму, найдите место, где область строки заполняется данными, и добавьте присвоение значения параметру.

Если в макете параметр есть, а в модуле значение не передано, при печати ячейка останется пустой. Это самая частая причина «колонка есть, а данных нет».

Для типовой печатной формы лучший путь — собственная копия макета в расширении либо дополнительная печатная форма через раздел Администрирование → Печатные формы, отчёты и обработки. Правка типового макета на поддержке слетит при обновлении.

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

Как выбрать способ и не переделывать дважды

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

Где нужна новая колонка?

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

Что проверить после добавления колонки

  • Тип данных и формат вывода: числа выровнены вправо, даты в привычном виде.
  • Права ролей: если поле скрыто от роли, пользователь увидит пустую колонку или не увидит её вовсе.
  • Производительность: колонка с вычислением по другому регистру в большом списке замедляет открытие. Проверьте на реальном объёме данных.
  • Выгрузка в Excel и печать списка: колонка должна попасть и туда, если она нужна.
  • Копия базы: тестируйте на копии, а не на рабочей базе, особенно если меняли структуру данных.

Если колонка не появилась

Разберём типичные причины по частоте.

СимптомВероятная причинаПроверка
Реквизит есть в дереве, на форме его нетНе перетащен в элементы формыДерево элементов формы
В отчёте поле есть в запросе, но не в настройкахНе добавлено в выбранные поляВкладка «Настройки» схемы
Колонка пустая в спискеПоле не заполнено или не попало в запросТекст запроса списка
Колонка в печатной форме пустаяПараметр не заполнен в модулеМодуль формирования печати
После обновления изменения исчезлиПравка сделана в типовом объекте на поддержкеСостояние поддержки объекта
Диагностика: выберите симптом

Частые вопросы

Можно ли добавить колонку в типовую конфигурацию без расширения?
Технически можно, но объект будет снят с поддержки. При обновлении придётся вручную сливать изменения. Безопаснее расширение.
Почему другие пользователи не видят добавленную колонку?
Настройка списка действует только для вашего пользователя. Каждый включает колонки у себя, либо администратор задаёт настройки формы для всех.
Нужно ли перезапускать 1С после добавления колонки в отчёт?
Для пользовательских настроек отчёта перезапуск не нужен. После изменения схемы в Конфигураторе перезапустите клиент или обновите конфигурацию базы.
Как сохранить набор колонок отчёта для следующего раза?
Сохраните вариант отчёта под своим именем. Он запомнит и выбранные поля, и отбор, и группировку.
Колонка добавлена в табличную часть, но старые документы пустые. Это нормально?
Да. Реквизит новый, в старых строках значение не задано. Для массового заполнения потребуется обработка.