Выводим новую колонку в списке 1С:УНФ без потери поддержки

· 9 мин

Содержание

Самый быстрый способ добавить колонку в 1С УНФ — встать на нужный список (например, список заказов или справочник номенклатуры), нажать Еще → Изменить форму и включить галочку у реквизита, которого не хватает. Колонка появится сразу, менять конфигурацию не нужно.

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

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

Пользовательская настройка формы: колонка за минуту

Откройте список, в котором не хватает колонки. В командной панели нажмите Еще (три точки или слово «Еще» в правом верхнем углу списка) и выберите Изменить форму.

В открывшемся окне — дерево элементов формы с галочками. Дальше:

  1. Нажмите кнопку Добавить поля над деревом — платформа покажет список реквизитов объекта, которые ещё не выведены.
  2. Отметьте нужный реквизит и подтвердите. Он добавится в дерево новым элементом.
  3. Убедитесь, что галочка у нового поля стоит — это и есть признак «показывать колонку».
  4. Стрелками вверх/вниз поставьте колонку в нужное место относительно соседних.
  5. Нажмите ОК.

Колонка появится в списке немедленно. Ширину потом можно поправить мышью прямо в шапке таблицы, перетащив границу.

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

Если кнопки Добавить поля в окне нет, значит все реквизиты объекта уже присутствуют в дереве — просто найдите нужный и поставьте галочку.

Тем же окном решается и обратная задача. Чтобы убрать лишний столбец, снимите у него галочку — данные при этом не меняются, прячется только отображение. А чтобы поменять порядок колонок, двигайте элементы стрелками: платформа запомнит и состав, и расположение, и ширину столбцов до следующей правки.

Что умеет пользовательская настройка, а что нет

У интерфейсной настройки есть чёткая граница. Через Изменить форму вы выводите только то, что у списка уже есть под рукой: собственные реквизиты объекта и его стандартные поля.

Чего таким способом сделать нельзя:

  • 🚫 вывести реквизит связанного объекта (ИНН контрагента , артикул или единицу измерения номенклатуры), если его нет среди доступных полей;
  • 🚫 посчитать значение на лету (остаток = сумма − оплата);
  • 🚫 собрать колонку из нескольких реквизитов по условию.

Отдельно стоит команда Еще → Настроить список. Её часто путают с добавлением колонок, но она про другое — про отбор, сортировку, группировку и условное оформление. Колонку она не добавляет.

Зато Настроить список → Условное оформление закрывает частую задачу «подсветить строки»: например, заказы с долгом — красным. Это не новая колонка, но визуально нужный признак появляется без правки конфигурации.

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

Если реквизита, который вам нужен, среди доступных полей нет — дальше только Конфигуратор. Интерфейсом новый источник данных к списку не прицепить.

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

Под «добавить колонку» в УНФ понимают две разные задачи, и путь к ним отличается.

Колонка в списке — это столбец в форме списка документов или справочника (журнал заказов, список номенклатуры). О нём и речь выше: собственные реквизиты выводятся интерфейсом, остальное — через запрос.

Колонка в табличной части документа — это столбец в таблице строк внутри конкретного документа (товары в накладной, услуги в счёте). Её интерфейсом не добавить в принципе: табличная часть и её реквизиты описаны в метаданных.

Чтобы появился новый столбец в табличной части:

  1. В Конфигураторе (лучше в расширении) найдите нужный документ и его табличную часть.
  2. Добавьте в табличную часть новый реквизит нужного типа.
  3. Откройте форму документа и выведите этот реквизит колонкой в таблицу строк.
  4. Обновите конфигурацию базы данных.

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

Короткое правило: ищете столбец в журнале — это список; ищете столбец внутри открытого документа — это табличная часть, и почти всегда нужен Конфигуратор.

Правка формы через расширение конфигурации

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

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

Порядок такой:

  1. Откройте базу в Конфигураторе, меню Конфигурация → Расширения конфигурации.
  2. Создайте новое расширение, назначение — «Адаптация».
  3. Найдите в основной конфигурации нужную форму списка, через контекстное меню выберите Добавить в расширение.
  4. В заимствованной форме добавьте колонку в таблицу динамического списка и привяжите её к данным (как — в следующем разделе).
  5. Сохраните расширение и обновите конфигурацию базы данных (F7).

Обновление конфигурации базы данных со структурными изменениями требует монопольного доступа — активные сеансы пользователей будут завершены. Делайте это после рабочего дня и сначала выгрузите резервную копию базы (Администрирование → Выгрузить информационную базу или средствами сервера).

В облачной 1С:УНФ (сервис 1cfresh) Конфигуратор обычно недоступен — там остаётся только пользовательская настройка формы. Если нужна колонка из связанных данных, задачу решают через доработку на стороне поставщика сервиса.

Перед тем как заходить в Конфигуратор, стоит убедиться, что доработка вообще оправдана и база к ней готова:

Перед правкой формы в Конфигураторе
Выполнено: 0 / 5
Что вы хотите вывести в колонку?

Привязка колонки к данным и путь к реквизиту

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

Почти все журналы в УНФ построены на динамическом списке — он сам тянет данные из базы запросом. Поэтому состав доступных полей зависит от того, что возвращает этот запрос. Для динамического списка логика такая:

  • Реквизит основной таблицы. Все собственные реквизиты объекта доступны автоматически. Достаточно перетащить реквизит из состава реквизитов формы в элементы и выставить ПутьКДанным на него.
  • Реквизит связанного объекта. Через точку (Контрагент.ИНН) напрямую в колонку списка его не вытащить. Нужно переключить динамический список на произвольный запрос и добавить это поле в сам запрос.

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

ВЫБРАТЬ
    Список.Ссылка           КАК Ссылка,
    Список.Дата             КАК Дата,
    Список.Контрагент       КАК Контрагент,
    Список.Контрагент.ИНН   КАК ИННКонтрагента
ИЗ
    Документ.ИмяВашегоДокумента КАК Список

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

У колонки задавайте не только ПутьКДанным, но и Заголовок — иначе пользователь увидит системное имя поля вместо понятного названия.

Вычисляемые колонки: считаем значение в запросе

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

Пример — колонка «Остаток к оплате»:

ВЫБРАТЬ
    Список.Ссылка                       КАК Ссылка,
    Список.Сумма                        КАК Сумма,
    Список.СуммаОплачено                КАК Оплачено,
    Список.Сумма - Список.СуммаОплачено КАК ОстатокКОплате
ИЗ
    Документ.ИмяВашегоДокумента КАК Список

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

Для условных значений подойдёт конструкция ВЫБОР:

ВЫБОР
    КОГДА Список.Сумма = Список.СуммаОплачено ТОГДА "Оплачен"
    КОГДА Список.СуммаОплачено = 0            ТОГДА "Не оплачен"
    ИНАЧЕ "Частично"
КОНЕЦ КАК СтатусОплаты

Складывать число со строкой в запросе не нужно — текст формируйте через ВЫБОР или готовые строковые значения, как выше.

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

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

Сохранение и сброс настроек отображения

Пользовательские настройки формы платформа хранит сама — отдельно сохранять ничего не надо. Закрыли список, открыли заново — колонки на месте.

Если состав колонок «поехал» или кто-то настроил лишнего, верните исходный вид: Еще → Изменить форму, затем в самом окне настроек Еще → Установить стандартные настройки. Форма вернётся к виду, заложенному в конфигурации.

Что полезно знать про хранение настроек:

УровеньГде живётНа кого действует
Пользовательская настройка формыпривязана к пользователю базытолько на этого пользователя
Условное оформление спискав настройках списка пользователятолько на этого пользователя
Колонка через расширение/Конфигураторв конфигурации (расширении)на всех пользователей базы

Если колонка нужна всем и одинаково — делайте её через расширение. Раздавать пользовательскую настройку каждому вручную дольше и ненадёжно.

Типичные ошибки при добавлении колонки

  • Колонка добавлена, но пустая. Не задан ПутьКДанным либо указано поле, которого нет в запросе динамического списка. Проверьте привязку.
  • Нужного реквизита нет в Добавить поля. Это реквизит связанного объекта или вычисляемое значение — интерфейсом не получить, нужен произвольный запрос.
  • Правили форму прямо в типовой. Конфигурация снялась с поддержки, обновления теперь только вручную. Переносите доработку в расширение.
  • Колонка пропала после обновления. Форму правили в основной конфигурации, релиз затёр изменения. То же лечение — расширение конфигурации.
  • Обновление базы не проходит. Структурные изменения требуют монопольного доступа; завершите сеансы пользователей и повторите F7.
  • Колонка есть, но по ней не сортируется. Значение досчитано кодом на форме, а не получено запросом. Перенесите расчёт в произвольный запрос динамического списка.
  • Перепутали список и табличную часть. Пытаетесь добавить столбец в журнал, а нужен он внутри документа (или наоборот). Сверьтесь: журнал — это список, таблица строк внутри документа — табличная часть.

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

Можно ли добавить колонку без Конфигуратора?
Да, если это собственный реквизит объекта: Еще → Изменить форму → Добавить поля. Данные из связанных объектов и вычисления интерфейсом не выводятся.
Чем `Изменить форму` отличается от `Настроить список`?
Изменить форму управляет составом колонок и элементов формы. Настроить список — это отбор, сортировка, группировка и условное оформление; колонки она не добавляет.
Почему новая колонка видна только мне?
Пользовательская настройка формы хранится для конкретного пользователя. Чтобы колонка была у всех, её выводят через расширение или в конфигурации.
Как вернуть стандартный набор колонок?
В окне Изменить форму выберите Еще → Установить стандартные настройки — форма вернётся к исходному виду из конфигурации.
Можно ли сделать колонку с данными из другого объекта?
Только через произвольный запрос динамического списка: добавляете нужное поле в запрос (например, Список.Контрагент.ИНН) и выводите его как колонку.