Выводим новую колонку в списке 1С:УНФ без потери поддержки
Содержание
Самый быстрый способ добавить колонку в 1С УНФ — встать на нужный список (например, список заказов или справочник номенклатуры), нажать Еще → Изменить форму и включить галочку у реквизита, которого не хватает. Колонка появится сразу, менять конфигурацию не нужно.
Этот путь работает, пока вам нужен реквизит самого объекта — дата, сумма, статус, ответственный. Если колонка должна показывать данные из связанного объекта или вычисляемое значение, добавить её интерфейсом не выйдет: понадобится править форму в Конфигураторе, а правильнее — в расширении конфигурации.
Механизм общий для платформы 8.3, поэтому пути меню в УНФ, Бухгалтерии и Управлении торговлей совпадают. Ниже разберём оба уровня — пользовательский и через Конфигуратор — и когда какой выбирать.
Пользовательская настройка формы: колонка за минуту
Откройте список, в котором не хватает колонки. В командной панели нажмите Еще (три точки или слово «Еще» в правом верхнем углу списка) и выберите Изменить форму.
В открывшемся окне — дерево элементов формы с галочками. Дальше:
- Нажмите кнопку
Добавить полянад деревом — платформа покажет список реквизитов объекта, которые ещё не выведены. - Отметьте нужный реквизит и подтвердите. Он добавится в дерево новым элементом.
- Убедитесь, что галочка у нового поля стоит — это и есть признак «показывать колонку».
- Стрелками вверх/вниз поставьте колонку в нужное место относительно соседних.
- Нажмите
ОК.
Колонка появится в списке немедленно. Ширину потом можно поправить мышью прямо в шапке таблицы, перетащив границу.
Настройка формы сохраняется для вашего пользователя, а не для всех. Коллега у себя колонки не увидит, пока не повторит то же самое или пока настройку не раздадут централизованно.
Если кнопки Добавить поля в окне нет, значит все реквизиты объекта уже присутствуют в дереве — просто найдите нужный и поставьте галочку.
Тем же окном решается и обратная задача. Чтобы убрать лишний столбец, снимите у него галочку — данные при этом не меняются, прячется только отображение. А чтобы поменять порядок колонок, двигайте элементы стрелками: платформа запомнит и состав, и расположение, и ширину столбцов до следующей правки.
Что умеет пользовательская настройка, а что нет
У интерфейсной настройки есть чёткая граница. Через Изменить форму вы выводите только то, что у списка уже есть под рукой: собственные реквизиты объекта и его стандартные поля.
Чего таким способом сделать нельзя:
- 🚫 вывести реквизит связанного объекта (ИНН контрагента , артикул или единицу измерения номенклатуры), если его нет среди доступных полей;
- 🚫 посчитать значение на лету (остаток = сумма − оплата);
- 🚫 собрать колонку из нескольких реквизитов по условию.
Отдельно стоит команда Еще → Настроить список. Её часто путают с добавлением колонок, но она про другое — про отбор, сортировку, группировку и условное оформление. Колонку она не добавляет.
Зато Настроить список → Условное оформление закрывает частую задачу «подсветить строки»: например, заказы с долгом — красным. Это не новая колонка, но визуально нужный признак появляется без правки конфигурации.
Делается так: в Условное оформление добавляете правило, задаёте цвет (фона или текста), а в условии указываете, когда оно применяется — скажем, когда сумма оплаты меньше суммы документа. При желании оформление можно повесить не на всю строку, а на одну колонку. Для многих задач «покажи, где проблема» этого хватает, и Конфигуратор не нужен совсем.
Если реквизита, который вам нужен, среди доступных полей нет — дальше только Конфигуратор. Интерфейсом новый источник данных к списку не прицепить.
Колонка в списке и колонка в табличной части документа
Под «добавить колонку» в УНФ понимают две разные задачи, и путь к ним отличается.
Колонка в списке — это столбец в форме списка документов или справочника (журнал заказов, список номенклатуры). О нём и речь выше: собственные реквизиты выводятся интерфейсом, остальное — через запрос.
Колонка в табличной части документа — это столбец в таблице строк внутри конкретного документа (товары в накладной, услуги в счёте). Её интерфейсом не добавить в принципе: табличная часть и её реквизиты описаны в метаданных.
Чтобы появился новый столбец в табличной части:
- В Конфигураторе (лучше в расширении) найдите нужный документ и его табличную часть.
- Добавьте в табличную часть новый реквизит нужного типа.
- Откройте форму документа и выведите этот реквизит колонкой в таблицу строк.
- Обновите конфигурацию базы данных.
Если в табличной части нужно показать уже существующий реквизит, который просто не выведен на форму, хватит Еще → Изменить форму прямо в открытом документе — ровно как со списком.
Короткое правило: ищете столбец в журнале — это список; ищете столбец внутри открытого документа — это табличная часть, и почти всегда нужен Конфигуратор.
Правка формы через расширение конфигурации
Когда нужного поля в списке нет, форму приходится дорабатывать. Типовая УНФ стоит на поддержке с автообновлением, и прямая правка формы снимет её с автоматического обновления — потом каждый релиз придётся объединять вручную.
Правильный приём практика — расширение конфигурации . Оно появилось в платформе 8.3.6 и позволяет менять формы, не трогая саму типовую: обновления продолжают накатываться штатно.
Порядок такой:
- Откройте базу в Конфигураторе, меню
Конфигурация → Расширения конфигурации. - Создайте новое расширение, назначение — «Адаптация».
- Найдите в основной конфигурации нужную форму списка, через контекстное меню выберите
Добавить в расширение. - В заимствованной форме добавьте колонку в таблицу динамического списка и привяжите её к данным (как — в следующем разделе).
- Сохраните расширение и обновите конфигурацию базы данных (
F7).
Обновление конфигурации базы данных со структурными изменениями требует монопольного доступа — активные сеансы пользователей будут завершены. Делайте это после рабочего дня и сначала выгрузите резервную копию базы (Администрирование → Выгрузить информационную базу или средствами сервера).
В облачной 1С:УНФ (сервис 1cfresh) Конфигуратор обычно недоступен — там остаётся только пользовательская настройка формы. Если нужна колонка из связанных данных, задачу решают через доработку на стороне поставщика сервиса.
Перед тем как заходить в Конфигуратор, стоит убедиться, что доработка вообще оправдана и база к ней готова:
Привязка колонки к данным и путь к реквизиту
Колонка без привязки к данным пустая — ей нужно указать источник. В Конфигураторе у добавленного поля таблицы есть свойство ПутьКДанным: именно оно связывает колонку со значением.
Почти все журналы в УНФ построены на динамическом списке — он сам тянет данные из базы запросом. Поэтому состав доступных полей зависит от того, что возвращает этот запрос. Для динамического списка логика такая:
- Реквизит основной таблицы. Все собственные реквизиты объекта доступны автоматически. Достаточно перетащить реквизит из состава реквизитов формы в элементы и выставить
ПутьКДаннымна него. - Реквизит связанного объекта. Через точку (
Контрагент.ИНН) напрямую в колонку списка его не вытащить. Нужно переключить динамический список на произвольный запрос и добавить это поле в сам запрос.
Чтобы включить произвольный запрос, у динамического списка снимите флаг автоматического заполнения и задайте текст запроса. Схема запроса выглядит так:
ВЫБРАТЬ
Список.Ссылка КАК Ссылка,
Список.Дата КАК Дата,
Список.Контрагент КАК Контрагент,
Список.Контрагент.ИНН КАК ИННКонтрагента
ИЗ
Документ.ИмяВашегоДокумента КАК Список
Замените Документ.ИмяВашегоДокумента и имена реквизитов на те, что реально есть в вашей конфигурации, — точные имена видны в дереве метаданных Конфигуратора. После этого поле ИННКонтрагента станет доступным для колонки, и его можно вывести так же, как собственный реквизит.
У колонки задавайте не только ПутьКДанным, но и Заголовок — иначе пользователь увидит системное имя поля вместо понятного названия.
Вычисляемые колонки: считаем значение в запросе
Если колонка должна показывать не хранимое значение, а результат вычисления, считать удобнее прямо в запросе динамического списка. Это надёжнее, чем дополнять данные кодом в модуле формы.
Пример — колонка «Остаток к оплате»:
ВЫБРАТЬ
Список.Ссылка КАК Ссылка,
Список.Сумма КАК Сумма,
Список.СуммаОплачено КАК Оплачено,
Список.Сумма - Список.СуммаОплачено КАК ОстатокКОплате
ИЗ
Документ.ИмяВашегоДокумента КАК Список
Поле ОстатокКОплате вычисляется для каждой строки и становится обычной колонкой списка — его можно сортировать и использовать в отборе.
Для условных значений подойдёт конструкция ВЫБОР:
ВЫБОР
КОГДА Список.Сумма = Список.СуммаОплачено ТОГДА "Оплачен"
КОГДА Список.СуммаОплачено = 0 ТОГДА "Не оплачен"
ИНАЧЕ "Частично"
КОНЕЦ КАК СтатусОплаты
Складывать число со строкой в запросе не нужно — текст формируйте через ВЫБОР или готовые строковые значения, как выше.
Вычисляемое поле из запроса ведёт себя как обычная колонка: по нему работают сортировка и отбор. Это важное отличие от значений, досчитанных кодом на форме, — по тем сортировать уже не выйдет. Поэтому запрос почти всегда предпочтительнее.
Код в модуле формы (обработчики динамического списка) тоже умеет дополнять данные, но для простой вычисляемой колонки это избыточно: запрос и короче, и работает на сервере без лишних обращений. К обработчикам прибегают, когда значение нельзя получить запросом, — но это уже отдельная, более узкая задача.
Сохранение и сброс настроек отображения
Пользовательские настройки формы платформа хранит сама — отдельно сохранять ничего не надо. Закрыли список, открыли заново — колонки на месте.
Если состав колонок «поехал» или кто-то настроил лишнего, верните исходный вид: Еще → Изменить форму, затем в самом окне настроек Еще → Установить стандартные настройки. Форма вернётся к виду, заложенному в конфигурации.
Что полезно знать про хранение настроек:
| Уровень | Где живёт | На кого действует |
|---|---|---|
| Пользовательская настройка формы | привязана к пользователю базы | только на этого пользователя |
| Условное оформление списка | в настройках списка пользователя | только на этого пользователя |
| Колонка через расширение/Конфигуратор | в конфигурации (расширении) | на всех пользователей базы |
Если колонка нужна всем и одинаково — делайте её через расширение. Раздавать пользовательскую настройку каждому вручную дольше и ненадёжно.
Типичные ошибки при добавлении колонки
- Колонка добавлена, но пустая. Не задан
ПутьКДаннымлибо указано поле, которого нет в запросе динамического списка. Проверьте привязку. - Нужного реквизита нет в
Добавить поля. Это реквизит связанного объекта или вычисляемое значение — интерфейсом не получить, нужен произвольный запрос. - Правили форму прямо в типовой. Конфигурация снялась с поддержки, обновления теперь только вручную. Переносите доработку в расширение.
- Колонка пропала после обновления. Форму правили в основной конфигурации, релиз затёр изменения. То же лечение — расширение конфигурации.
- Обновление базы не проходит. Структурные изменения требуют монопольного доступа; завершите сеансы пользователей и повторите
F7. - Колонка есть, но по ней не сортируется. Значение досчитано кодом на форме, а не получено запросом. Перенесите расчёт в произвольный запрос динамического списка.
- Перепутали список и табличную часть. Пытаетесь добавить столбец в журнал, а нужен он внутри документа (или наоборот). Сверьтесь: журнал — это список, таблица строк внутри документа — табличная часть.
Частые вопросы
Можно ли добавить колонку без Конфигуратора?
Еще → Изменить форму → Добавить поля. Данные из связанных объектов и вычисления интерфейсом не выводятся.Чем `Изменить форму` отличается от `Настроить список`?
Изменить форму управляет составом колонок и элементов формы. Настроить список — это отбор, сортировка, группировка и условное оформление; колонки она не добавляет.Почему новая колонка видна только мне?
Как вернуть стандартный набор колонок?
Изменить форму выберите Еще → Установить стандартные настройки — форма вернётся к исходному виду из конфигурации.Можно ли сделать колонку с данными из другого объекта?
Список.Контрагент.ИНН) и выводите его как колонку.