Перейти к содержанию

Лента в шапке — диагностика

1. Сначала уточнить, какая «Лента» пропала

В интерфейсе обычно путают два разных элемента:

  1. Лента в основной панели навигации (верхняя/боковая панель).
  2. Блок "Лента корп. сети" в левом меню.

Это разные настройки и разные поля в БД.

2. Приоритеты, по которым собирается UI

Логика видимости строится в таком порядке:

  1. Глобальные настройки приложения (SettingsCustom), включая ключи UI.
  2. Рабочее место группы (UserGroupSettings) с учётом Priority при нескольких группах.
  3. Персональные пользовательские настройки (для части параметров интерфейса).
  4. Дефолты новых пользователей (UsersNewDefaultSettings) для параметров, отмеченных как «только для новых».

Ключевой нюанс из group_start.md: если пользователь состоит в нескольких группах, решает рабочее место с более высоким приоритетом.

3. Что проверять для «Ленты» в верхней шапке

3.1 Поля РМГ

Основное поле: - dbo.UserGroupSettings.LentaVisible.

Сопутствующие поля (элемент может «исчезнуть визуально», если меняется способ показа панели): - NavigationPanelVisible; - NavigationPanelPosition; - NavigationPanelColor.

3.2 Проверка по группам пользователя

declare @user_id int = 0; -- TODO: подставить user id

select
        ug.UserID,
        ug.GroupID,
        g.Name as GroupName,
        ugs.ID as GroupWorkspaceId,
        ugs.Priority,
        ugs.LentaVisible,
        ugs.NavigationPanelVisible,
        ugs.NavigationPanelPosition,
        ugs.NavigationPanelColor
from dbo.UserGroups ug
join dbo.Groups g
        on g.GroupID = ug.GroupID
left join dbo.UserGroupSettings ugs
        on ugs.GroupId = ug.GroupID
where ug.UserID = @user_id and
      isnull(ug.IsDeleted, cast(0 as bit)) = cast(0 as bit)
order by
        case when ugs.Priority is null then -1 else ugs.Priority end desc;

Что смотреть: - есть ли вообще РМГ у группы; - какое РМГ победит по Priority; - какое значение LentaVisible у победившего РМГ.

4. Что проверять для «Ленты корп. сети»

4.1 Поля и источники

  • dbo.UserGroupSettings.CorporateNetworkFeedVisibleType;
  • dbo.UsersNewDefaultSettings.IsCorporateNetworkFeedVisible.

Важно: для этого блока в group_start.md есть пометка «применяется только для новых пользователей», и для существующих используется отдельный сброс через UI.

4.2 SQL-проверка

declare @user_id int = 0; -- TODO: подставить user id

select
        ug.UserID,
        ug.GroupID,
        g.Name as GroupName,
        ugs.Priority,
        ugs.CorporateNetworkFeedVisibleType
from dbo.UserGroups ug
join dbo.Groups g
        on g.GroupID = ug.GroupID
left join dbo.UserGroupSettings ugs
        on ugs.GroupId = ug.GroupID
where ug.UserID = @user_id and
      isnull(ug.IsDeleted, cast(0 as bit)) = cast(0 as bit)
order by
        case when ugs.Priority is null then -1 else ugs.Priority end desc;

select top (1)
        unds.IsCorporateNetworkFeedVisible
from dbo.UsersNewDefaultSettings unds;

5. Глобальные ключи, которые часто проверяют ошибочно

TopMenuItemsHidingSettings скрывает: - Contacts; - Create; - History; - ProfileLinks; - Reports; - SearchPanel.

Пункта Lenta в этом ключе нет.

Проверить актуальные значения:

select
        sc.[Key],
        sc.[Value]
from dbo.SettingsCustom sc
where lower(sc.[Key]) in (
        'topmenuitemshidingsettings',
        'socialnetworkssettings',
        'spacesettings'
);

5.1 Прочие CustomSettings UI

Ключ Тип / Default Эффект
HelperCustomLink string / "" Если задан непустой URL — иконка Help (правый верхний угол) ведёт на эту ссылку вместо стандартной справки
HideOldGantt bool Скрывает в проектной задаче кнопку перехода к старому интерфейсу проектного управления (остаётся только переход к новому)
HideUserInfoButton bool / false Скрывает пункт «Инфо пользователя» в контекстном меню при клике на имя в комментариях, в ДП «Выбор пользователя» и «Адресаты Email»
HideUserVoipToken bool Скрывает VoipToken в API-ответах данных о пользователях (для интеграций без необходимости передавать токен)
HideDefaultTags bool / false Скрывает в ленте комментариев теги по умолчанию (название категории и статус задачи)
HideEmptyEpOnNtf bool / true Включает на всю систему настройку «Скрыть на NTF при пустом значении» для ДП. При false — управление переходит на уровень категории
highCharts bool Если true — графики и диаграммы рендерятся через HighCharts; иначе — через ApexCharts
BrandSettings JSON Настройки корпоративного стиля. Генерируется автоматически из общих настроек приложения при сохранении логотипов и параметров (горизонтальный/вертикальный, светлая/тёмная тема, ширина панели). Прямое редактирование не рекомендуется — обновлять через UI
CKEditorCustomConfigPath string Путь к пользовательскому конфигу CKEditor для ДП «Большой текст с форматированием» (своя панель кнопок, плагины и т. п.)
IsFeedsViewOnly bool Если true — в Избранном по клику на категорию открывается Лента (Таблица скрыта); в дереве «Мои задачи» отображаются только Заказчик/Исполнитель/Подписка, скрываются Согласования и Задачи подчинённых. Используется для упрощённых рабочих мест
EmptyFeedPlaceholderURL string (URL) Картинка-заглушка пустой ленты (задач, чатов, категории). Если не задана — стандартная иконка
EnableAllTabsNotifications bool / null Управление push-уведомлениями: true — во все вкладки браузера, включая фоновые; false — только в активную; не указано — show всегда (default-поведение)
ToDoListSettings JSON Конфигурация ДП Multilookup со схемой «Чек-лист»: соответствие ID категории шаблонов и ID ДП с шаблоном ({"TaskNotesExtParamId":N,"TemplateTasksExtParamId":N,"TemplatesSubcatId":N})

6. API-снимок для задач разработчикам

Чтобы разработчик быстро локализовал причину, в задаче фиксировать ответы:

  1. GET /api/user/settings
  2. GET /api/user/group-workspace-inserts
  3. POST /api/favorite/menu
  4. (для админ-валидации) GET /api/admin/user-group-settings/{id}/user-ui-settings

7. Мини-чеклист для тикета «не видна Лента в верхней шапке»

  1. Уточнить, какая именно лента пропала: основная Лента или Лента корп. сети.
  2. Собрать effective РМГ пользователя по Priority.
  3. Проверить LentaVisible (для основной ленты) или CorporateNetworkFeedVisibleType (для корп. ленты).
  4. Проверить, не изменено ли положение/видимость панели (NavigationPanelVisible, NavigationPanelPosition).
  5. Для корп. ленты подтвердить, применялся ли сброс настроек для текущих пользователей.
  6. Приложить API-снимок и SQL-выгрузку в задачу разработчикам.

8. Брендирование и сниппеты стилей

8.1 Веб-реализация брендирования

При инициализации SPA загружается файл ui.json. Затем ThemeService генерирует CSS-переменные и устанавливает их в :root. Имена переменных соответствуют токенам из ui.json и макетов; при переключении темы значения переменных перезаписываются.

Группа Переменные / правило Назначение
Текст --onsurface-primary, --onsurface-secondary, --onsurface-tertiary Основной, вторичный текст и подсказки
Контейнеры --container-primary, --oncontainer-primary Фон контейнера и текст на нём
Разделители --outline-base, --outline-shallow, --outline-deep Рамки и разделители
Transition --vh-transition-duration, --vh-transition-timing-function, --vh-transition-all, --vh-transition-bg, --vh-transition-colors Плавность анимаций
Тени --shadow-{color} Генерируются, если для цвета в ui.json задан shadowMode
Состояния {color}-hover, {color}-click, {color}-selected Генерируются через color-mix() из базового цвета и цветов состояний
Отступы и радиусы tokens spacing и radius Значения считаются от базового space-100 / radius-100 = 8px

⚠️ Если у элемента при изменении состояния меняются размеры или отступы, не используйте общий --vh-transition-all: задавайте transition на конкретные свойства, иначе анимация может выглядеть некорректно.

8.2 Сниппеты стилей

В настройках, где используется строковый стиль, поддерживаются типовые значения:

Значение CSS-эффект
Default Нет стиля
Success background-color:#dff0d8
Info background-color:#d9edf7
Warning background-color:#fcf8e3
Danger background-color:#f2dede
TotalsRow font-weight: bold
BackRed background-color: pink
BackGreen background-color: lightgreen
BackBlue background-color: lightblue
BackYellow background-color: gold
TextRed color: red
TextGreen color: green

Дополнительно можно задавать цвет текста и фон в формате Color#ХХХХХХ и Background#ХХХХХХ, а высоту строки — в формате HeightXXXpx.

Color#ff0000,Background#00ff00
Color#ff0000,Height40px

⚠️ Если нужно задать несколько CSS-атрибутов, перечисляйте их через пробел. Если нужно задать несколько snippet-значений, перечисляйте их через запятую.

Используется для построения ссылок из писем, виджетов, отчётов, публикаций и сторонних систем в конкретные представления 1Формы. Полный исходный справочник: admin-manual/pages/querystring_spa.md.

9.1 Общий формат

https://{адрес_1Формы}/{модуль}?{parameters}
https://{адрес_1Формы}/{endpoint_with_params}?{parameters}

Несколько параметров соединяются &. Все основные параметры обязательны (исключение — взаимоисключающие TasksForExtParamID и TasksForLookupColumnId для lookup'а). Дополнительные параметры можно задавать выборочно.

⚠️ Если ссылка строится для контекстов, где ?, & и пр. служебные символы интерпретируются интерфейсом (например, ~/spa/link?url=...), их нужно URL-кодировать:

Символ Код Символ Код
? %3F = %3D
& %26 пробел %20
$ %24 [ %5B
/ %2F ] %5D

% сам по себе передаётся как %25 (используется в фильтрах вида f_task=%25{текст}%25).

9.2 Переадресация на API-метод

~/spa/entry/signin?fromUrl={api_url} — выполняет переадресацию на API после авторизации. Используется, например, в выгрузках Excel: ссылка из ДП «Файл» имеет вид https://адрес_1Формы/api/files/download/?redirect=1. К URL добавляется ?auth=true — при ошибке 401 автоматически открывается страница логина (с v2.257 адрес страницы — в ключе AuthTokenLoginUrl в appsettings.json).

9.3 Список задач, ленты, иерархии

Назначение URL Ключевые параметры
Список задач категории / раздела ~/spa/tasks/subcat/{subcatId}/grid
~/spa/tasks/category/{categoryId}/grid
Смарт-отбор в списке ~/spa/tasks/subcat/{subcatId}/grid?SmartQueryId={id} SmartQueryId
Отбор по статусам ?ActiveMode=isOpened / isClosed / isRejected / пусто (все) Совмещается с SmartQueryId
Фильтр по колонке (%25...%25) ?f_{columnName}=%25текст%25 task (текст), exception (лог) и т.д.
Сводный раздел ~/spa/tasks/summary/{summaryId}/grid
«Я исполнитель» / «Я заказчик» / «Я подписчик» ~/spa/tasks/{YouPerformerTasks\|FromYou\|Subscribed}/grid?all=false&feedType={Performer\|Owner\|All}
«На подписи» / «Согласованные» / «Отклонённые» / «Запрошенные» ~/spa/tasks/{ToSign\|Signed\|Declined\|Requested}/grid или ~/spa/resolutions
Задачи подчинённых ~/spa/tasks/YourGroups/grid?OrgUnitId={all\|id} Также: YourGroupsOverdue, YourGroupsActiveSigns, YourGroupsSignSigns, YourGroupsOverdueSigns, YourGroupsRefusedSigns
Главная лента ~/1FMain.aspx
~/spa/feeds/{extp}
extp: default, tasks, comments, unread, lenta, questions
Лента категории/раздела ~/spa/tasks/subcat/{id}/feeds
~/spa/tasks/category/{id}/feeds
Иерархия задач ~/spa/task-hierarchy/{id} См. tasks/business.md
Таймлайн ~/spa/tasks/{taskId}/timeline
~/spa/noframe/tasks/{taskId}/timeline
Гант категории/раздела ~/spa/tasks/subcat/{id}/gantt
~/spa/tasks/category/{id}/gantt
См. pm/business.md
Календарное представление категории ~/spa/tasks/subcat/{id}/calendar
~/spa/tasks/category/{id}/calendar
iframe-режим: ~/Syndicate.aspx?forceURL=Scheduler.aspx?SubcatId={id}&HideHeader=true
Канбан категории ~/spa/tasks/subcat/{id}/kanban См. kanban/admin.md
Канбан исполнителя ~/spa/user/kanban/performer/{userId} До 100 задач каждого типа (на сегодня / на завтра / по сроку)
Канбан по публикации ~/spa/kanban/{publicationAlias}
Чат-вид категории ~/spa/subcat/{id}/chat

⚠️ Параметр f_* применяется поверх ранее сохранённых фильтров грида и не сбрасывает их. Если результат пустой — очистите фильтры через «Очистить всё». Совместимость со старым newcustomgrid.aspx?TaskTextFilter=… — через f_task=…%25.

9.4 Карточка задачи и создание

Назначение URL Параметры
Открыть карточку (SPA) ~/spa/tasks/{TaskID} layoutMode: mtf / mtf-thread / mtf-only-thread
Открыть карточку (старый) ~/MainTaskForm.aspx?TaskID={id} TemplateID — кастомный шаблон
Без шапки и меню ~/spa/noframe/tasks/{TaskID} + uiTheme=light\|dark (только при layoutMode=mtf-only-thread)
Создание задачи (SPA) ~/spa/newtask/{SubcatId}
~/spa/noframe/newtask/{SubcatId}
См. ниже
Создание задачи (старый) ~/NewTask.aspx?SubcatID={id} См. ниже

Дополнительные параметры создания (newtask, NewTask.aspx):

Параметр Описание
OrderedTime Срок в формате dd.MM.yyyy%20HH:mm
TemplateID Пользовательский шаблон карточки новой задачи
SourceTaskID Родительская задача
CommentID Первый комментарий в задаче
UserID Заказчик (от пользователя)
LinkedID Связанная задача
TaskText Текст задачи
ExtParamString Значения ДП (см. ниже)

Формат ExtParamString: - Скаляр: $Ext{ID_ДП}${значение} (несколько ДП склеиваются подряд). - Multilookup: $Ext{ID_ДП}$[ID_1,ID_2,...]. - Таблица (JSON): $Ext{ID_ДП}${"rows":[{"c{ID_колонки}":"значение",...}]}. Применяется только к колонкам с режимом ≠ ReadOnly и ≠ Invisible; smart-колонки игнорируются и считаются автоматически; виртуальные — заполняются; URL имеет приоритет над DefaultValue категории; допускается комбинация скалярных ДП и таблицы.

9.5 Встречи (новые), календарь, планировщик

~/spa/meeting/new/1507 (или ~/spa/noframe/meeting/new/1507) — 1507 — ID системной категории «Календарь».

Параметр Формат / значения
Title Текст
RequiredAttendees ID пользователей через запятую
Start, End YYYY-MM-DDTHH:mm:ss.sss
IsAllDayEvent 0 / 1
Location Текст
FreeBusyState Free / Tentative / Busy / OOF / ~~WorkingElsewhere~~
LinkedTaskId Номер задачи
Description Текст
Attachment ID файлов через запятую
Прочее URL
Календарь пользователя ~/spa/user/profile/{userId}?tab=calendar
Планировщик встреч ~/spa/scheduling-assistant?users={ID,ID,...} (или ~/spa/noframe/scheduling-assistant)

9.6 Файлы, Диск, опросы

Назначение URL Параметры
Просмотр файла Office (doc/docx/ppt/pptx/xls/xlsx) ~/spa/file/{fileID}?mode=view
~/spa/noframe/file/{fileID}?mode=view
mode: view / edit; taskId, extParamId, folderId, versionId
Просмотр графики/PDF/MP4 (jpg/png/pdf/mp4) ~/spa/file/{fileID}/1
~/spa/noframe/file/{fileID}/1
Документ в Р7 ~/r7/?fileId={id}&mode=edit&taskId={id}&extParamId={id}
Главная Диска (полный / краткий) ~/spa/disk / ~/spa/disk/short + noframe-варианты
Диск задачи ~/spa/disk/Task/{TaskID}
Редактор опроса ~/spa/survey/creator/?surveyTaskId={id} + noframe
Прохождение опроса ~/spa/survey?assignmentTaskId={id} + noframe
Файловое хранилище (legacy) ~/spaex.aspx/file-storage/{FolderType}/{FolderId} FolderType: Root, Folder, UserRoot, UserFolder, Shared, TaskRoot, Category, Subcategory, Task, LinkedToTask. Параметры: view=gallery, onlySpaStyles=1, showlefttree=1

9.7 Чаты

Назначение URL Параметры
Создать чат ~/spa/chat/new?with={ID,ID,...}&name={имя}&msg={сообщение} Можно несколько with=...
Приватный чат с пользователем ~/spa/chat/new?with={userId}&private=true

9.8 Подписи, почта, пользователи, оргструктура

Назначение URL
Запрошенные подписи (список) ~/spa/tasks/ToSign/grid
Рабочее место акцептанта ~/spa/resolutions
Почтовая папка ~/Emails/EmailList.aspx?FolderID={id}
Просмотр письма ~/Emails/EmailView.aspx?EmailID={id}
Справочник сотрудников ~/spa/org/list/workers (publicationAlias)
Профиль пользователя ~/spa/user/profile/{userId}
Орг.структура ~/spa/org/chart2/ или ~/spa/org/chart/{publicationAlias}

9.9 Порталы, виджеты, пространства

Назначение URL
Портал Flex ~/spaex.aspx/portal/{portalID}?{filter_params}
Портал Dashboard ~/spa/portal/{portalID}?{filter_params} или ~/spa/noframe/portal/{portalID} (без задвоения панели индикаторов изнутри SPA)
Виджет (вне портала) ~/spa/portal/block/{BlockID} или ~/SinglePortalBlock.aspx?BlockID={id}
Виджет в контексте задачи ~/SinglePortalBlock.aspx?BlockID={id}&TaskID={taskID}
Новость в портале ~/spa/portal/{portalId}?widgetId={widgetId}&taskId={taskId}
Настройки виджета ~/administration/widget-settings/{id}
Краткая статья пространства (noframe) ~/spa/noframe/spaces/subcat/{SubcatID}/short?pageId={PageId}

Параметры фильтров портала / виджета (одинаковый формат):

f{paramID}_v={value}        # значение
f{paramID}_r=1              # сделать read-only (0 — нет)
Тип параметра Пример (paramID=11)
строка f11_v=test
число f11_v=2
дата f11_v=25.06.2018
период f11_v=from:25.06.2018;to:20.06.2018
пользователь / орг.ст. / выпадающий / группа f11_v=[1,2,3]
категория f11_v=cat:[1,2,3];subcat:[11,22,33]

⚠️ Не поддерживается для виджета Smart Html и для Таблицы с настроенными кнопками. Значения из URL имеют приоритет над значениями по умолчанию фильтра.

9.10 Отчёты

Назначение URL
Просмотр отчёта ~/spa/report/new/{ReportID} или ~/MVC/ReportView/{ReportID}?{params}
Экспорт отчёта ~/MVC/ReportExport/{ReportID}?format={fmt}&{params}

Форматы экспорта: pdf, html, csv, image (jpg), dbf, xml, json, mht, odf, ods, odt, xls, docx, rtf, pptx, xaml, txt, svg, ps, ppml.

Параметры фильтра отчёта (отличаются от портального — добавляется имя):

f{paramID}_{Name}_v={value}      # имя регистрозависимо
f{paramID}_r=1                   # read-only

⚠️ В фильтре «категория» нельзя указать ID раздела — только список категорий раздела. Для просмотра ID параметра — настройки фильтра.

Связанные документы

  • README.md
  • frontend.md
  • ../users-and-groups/admin.md
  • ../system/admin.md
  • ../../reference/database/dbadmin-forms-map.md
  • ../social-network/admin.md
  • ../users-and-groups/admin.md
  • ../../reference/api/core-endpoints.md