# Дополнительные параметры — Решение проблем

Документ описывает типовые проблемы дополнительных параметров от самых частых к менее частым. Внутри собраны разделы по ДП Таблица, lookup, блокам ДП, правам и видимости, сквозным ДП, настройке и переносу, расчётам, специфическим типам ДП, мобильному приложению, списку задач, смарт-выражениям, локализации, копированию и API. Для каждой проблемы указаны симптом, что проверить, решение и когда обращаться в поддержку 1Ф.

**Как пользоваться этим документом**

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

1. **Симптом** — что наблюдает пользователь
2. **Что проверить** — шаги диагностики без доступа к БД
3. **Решение** — что проверить или исправить
4. **Когда обращаться в поддержку 1Ф** — что приложить к обращению

---

## 1. ДП Таблица

Самая частая тема обращений по ДП. Типичные жалобы: не работает фильтрация, множественный выбор, значения по умолчанию, автосохранение, отображение.

### 1.1 Фильтрация в ДП Таблица не работает

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

**Что проверить:**

- Версия системы — фильтрация в ДП Таблица поддерживается начиная с определённых версий (уточнить у пользователя версию)
- Тип колонки — не все типы колонок поддерживают фильтрацию: lookup-колонки фильтруются текстовым поиском по значению (как в гриде, без ограничения на число записей справочника); «Блок кнопок» и «Шаблонная» не фильтруются
- Настройка категории — включена ли фильтрация для этого ДП Таблица в настройках категории

**Решение:**

- Убедиться, что версия актуальная
- Проверить, что фильтрация включена в настройках ДП Таблица
- Если проблема с конкретным типом колонки — зафиксировать какой именно тип и версию

**Когда обращаться в поддержку:** если фильтрация включена, версия актуальная, но не работает — обращение в поддержку 1Ф с указанием: ID категории, ID ДП, тип проблемной колонки, версия.

### 1.2 Множественный выбор в ДП Таблица

**Симптом:** при использовании множественного выбора строк — не все позиции добавляются, появляются пустые строки, кнопка «Применить» не работает.

**Ожидаемое поведение выбора.** Отметки в окне накапливаются: поиск, фильтрация, сортировка, группировка, переход между страницами и кнопка «Обновить» уже отмеченные строки не снимают, а по «Применить» в таблицу уходят все отмеченные объекты из любого положения списка. Пропажа ранее отмеченных строк — дефект, а не следствие фильтра или настройки: пока выбор теряется при поиске, стоит проверить, что сборка содержит накопительный выбор в плоском окне табличного ДП.

**Известное ограничение:** кнопка «Множественный выбор» **не отображается в НТФ** (форма постановки задачи). Это ожидаемое поведение — не требует обращения в поддержку. Множественный выбор доступен только после создания задачи, в МТФ.

**Что проверить:**

- Количество выбираемых элементов — есть ли ограничение в настройках
- Воспроизводится ли при выборе небольшого количества (2-3 элемента)
- Есть ли обязательные поля в строке таблицы

**Решение:**

- Попросить пользователя попробовать с меньшим количеством элементов
- Проверить, не блокирует ли обязательное поле сохранение
- Если проблема стабильно воспроизводится — фиксировать шаги

**Когда обращаться в поддержку:** с описанием шагов воспроизведения, ID категории, ID ДП.

### 1.3 Значения по умолчанию в ДП Таблица

**Симптом:** значение по умолчанию не появляется при создании задачи (НТФ), удаляется после сохранения строки, рассчитывается некорректно.

**Что проверить:**

- Настроено ли значение по умолчанию в настройках колонки ДП Таблица
- Тип значения по умолчанию — статическое или через смарт-выражение
- Если смарт-выражение — корректно ли оно (нет ли ошибки в логике)

**Решение:**

- Проверить настройку значения по умолчанию в админке
- Если смарт — попросить пользователя показать текст смарт-выражения
- Для НТФ: проверить, не стоит ли флаг «Не копировать значение из родительской задачи»

**Когда обращаться в поддержку:** если настройка корректна, но значение не появляется.

### 1.4 Автосохранение и обновление ДП Таблица

**Симптом:** после отработки автоматизации/действия значения в таблице не обновляются; при включённом автосохранении очищаются значения.

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

**Что проверить:**

- Включено ли автосохранение строк в настройках ДП Таблица
- Происходит ли проблема после конкретного действия/перехода или при ручном редактировании
- Точный номер сборки: для режима «динамический набор полей» (настройка «Отображать как») обновление по сигналу появилось в сборке 2.268 «Скульптор», тег 2.268.724. До неё набор полей перечитывал данные только после собственного сохранения, и обновление страницы было единственным способом увидеть изменение

**Решение:**

- Обновить площадку до сборки с тегом 2.268.724 или новее — после этого значения меняются без обновления страницы в обоих режимах показа
- На сборках до исправления единственная мера — обновить страницу карточки (F5): если после неё данные на месте, потеря была только в отображении
- Если данные пропали и после обновления — обратиться в поддержку 1Ф

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

### 1.5 Итог по числовой колонке меняется при прокрутке или обновлении, либо не совпадает с ожидаемым

**Симптом:** в строке итогов ДП Таблица меняется сумма по колонке типа «Число» или «Деньги» после прокрутки, загрузки следующих строк или обновления таблицы; либо итог не совпадает с ручным подсчётом.

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

**Что проверить:**

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

**Решение:**

- если итог меняется только после изменения фильтра, это ожидаемо: сумма пересчитывается по отфильтрованным строкам;
- если строк под фильтром больше 1000 — заниженный итог соответствует известному ограничению, не требует обращения в поддержку;
- если итог меняется после прокрутки или обновления без изменения данных, фильтров и при количестве строк ≤ 1000 — это несоответствие;
- зафиксировать задачу, ДП Таблица, названия колонок, исходный и изменившийся итог, количество строк и запись экрана.

**Когда обращаться в поддержку 1Ф:** если итог меняется без изменения данных/условий фильтрации при количестве строк ≤ 1000.

### 1.6 Отображение и форматирование ДП Таблица

**Симптом:** некорректное отображение дат (день/месяц перепутаны), обрезание названий лукапов, нет названия при открытии в отдельной вкладке, проблемы с высотой строк и секциями.

**Что проверить:**

- Локаль браузера (для проблем с датами)
- Ширина колонок — достаточна ли для отображения содержимого
- Секции — если включены, проверить нет ли конфликта с другими ДП под таблицей

**Решение:**

- Даты: проверить локаль браузера, формат дат в настройках ДП
- Ширина: предложить настроить ширину колонок
- Секции: известная проблема — если под таблицей с секциями нет других ДП, таблица может обрезаться

### 1.6а Текст соседних колонок накладывается друг на друга при сжатии колонки

**Симптом:** при сжатии одной колонки — например, текстовой — соседняя колонка «Деньги» или «Число» сжимается сильнее, чем нужно для её содержимого, и текст ячеек соседних колонок накладывается друг на друга.

**Что проверить:**

- версию сборки: колонки перестали схлопываться в сборке 2.268 «Скульптор», на более ранних поведение воспроизводится;
- тип сжимаемой колонки: симптом касался колонок «Деньги», «Число», «Нумератор» и «Телефон».

**Решение:** обновиться до сборки 2.268 «Скульптор» или новее. После обновления колонка останавливается на минимальной ширине, рассчитанной по типу столбца, а непоместившееся значение обрезается внутри своей ячейки и не выходит за её границы.

**Когда обращаться в поддержку 1Ф:** если на сборке 2.268 «Скульптор» или новее текст по-прежнему накладывается на соседние колонки — приложить идентификаторы задачи и табличного ДП, названия колонок, точный номер сборки (вид 2.268.693, а не только название семейства) и запись экрана.

### 1.7 Лукап-колонка в ДП Таблица

**Симптом:** не сохраняется значение в выпадающем списке или лукапе внутри таблицы, иерархический лукап не ищет, @eventparam3 возвращает лишние значения.

**Что проверить:**

- Тип колонки (lookup, выпадающий список, иерархический lookup)
- Источник данных лукапа — доступна ли категория-справочник
- Есть ли связанные/зависимые колонки

**Решение:**

- Проверить, что категория-справочник доступна и содержит задачи
- Для иерархического лукапа — проверить настройку иерархии в категории-справочнике

**Когда обращаться в поддержку:** если источник данных корректен, но выбор не сохраняется.

### 1.8 Права и доступ к ДП Таблица

**Симптом:** пользователь не может редактировать табличный ДП, хотя по матрице доступа права есть. Гибкие права или проверка по статусам не работает для колонок с множественным выбором.

**Что проверить:**

- Права по матрице доступа для ДП в этой категории
- Права по статусам — в каком статусе задача
- Гибкие права — настроены ли EPRights

**Решение:**

- Проверить текущий статус задачи и права ДП в этом статусе
- Если матрица доступа показывает права, но пользователь не может редактировать — проверить нет ли конфликта с правами по статусам

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

Углублённая SQL-диагностика (при доступе к БД) — в [Настройке ДП](https://help.1forma.ru/domains/ext-params/admin.md): Q6 (ExtParamStateView), Q4 (EPRights).

### 1.9 Печать ДП Таблица

**Симптом:** при печати карточки задачи содержимое ДП Таблица не отображается, отображается пустым или с нарушенной вёрсткой.

**Что проверить:**

- Используется ли стандартный механизм печати (Ctrl+P) или пользовательскый шаблон
- Количество строк и колонок в таблице — большие таблицы могут не влезать
- Браузер пользователя

**Решение:**

- Для стандартной печати: это известное ограничение — ДП Таблица может некорректно рендериться в print-режиме
- Рекомендовать использование экспорта (если доступен) вместо печати
- Если критично — обращение в поддержку 1Ф как запрос на доработку

**1.9 Скрытие кнопки добавления строк на НТФ**

**Симптом:** настройка «Скрыть кнопку добавления строк» не работает на НТФ (форма постановки задачи), хотя на МТФ кнопка скрыта.

**Что проверить:**

- Включена ли настройка в параметрах ДП Таблица
- Проверить на МТФ — если там работает, проблема специфична для НТФ

**Решение:**

- Известное ограничение: ряд настроек ДП Таблица не применяется на НТФ (аналогично кнопке «Множественный выбор»)
- Обратиться в поддержку 1Ф (как запрос на доработку) с указанием ID ДП и категории

**1.10 Дублирование ДП при совпадении ID пользовательского и системного блока**

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

**Что проверить:**

- Привязан ли ДП к пользовательскому блоку
- Есть ли системный блок с тем же ID (коллизия после переноса или ручного создания)

**Решение:**

- Обратиться в поддержку 1Ф — требуется корректировка ID блока в БД
- Предупредить: при ручном создании блоков через SQL возможны коллизии с системными ID

### 1.11 Таблица «мигает» (перечитывается целиком) при изменении ячейки

**Симптом:** при изменении значения в ячейке ДП Таблица с включённым автосохранением таблица на миг показывает лоадер и перечитывается целиком.

**Причина:** так происходит, если в таблице есть колонка со смарт-выражением. Сервер не может заранее определить, какие строки затронул пересчёт смарта, и отправляет сигнал полного обновления (`fullRefresh`) — фронт перечитывает грид целиком. Это ожидаемое поведение, а не сбой.

**Что проверить:**

- Есть ли в таблице колонки со смарт-выражениями — именно они вызывают полную перечитку
- В таблицах без смарт-колонок изменение ячейки обновляется плавно, без мигания
- На больших таблицах с серверной пагинацией построчного обновления нет, но мигания тоже нет

**Когда обращаться в поддержку:** если мигание возникает в таблице без смарт-колонок — с указанием ID задачи и ID ДП.

### 1.12 Колонка настроена, но не участвует в фильтрации и сортировке

**Симптом:** колонка есть в настройках ДП Таблица, но по ней не работают фильтр, сортировка и группировка; в логе приложения — предупреждение о том, что колонка отсутствует во вью.

**Причина:** колонка настроена, но физически отсутствует в денормализованном представлении данных таблицы. Типичные случаи — ДП колонки отвязан от категории либо колонка не попала в сводную выборку.

**Что проверить:**

- Привязан ли ДП, на котором основана колонка, к категории задачи
- Присутствует ли колонка в денормализованном представлении таблицы

**Что делать:** сама по себе ситуация работу не блокирует — таблица открывается без учёта такой колонки. На сборках до 2.268 такая же рассинхронизация могла не только отключить операции по колонке, но и уронить чтение табличного представления категории ошибкой 500 (в журнале исключений — `KeyNotFoundException` с кадром `Helper.InitValuesFromDenormalized`); после исправления колонка пропускается, а пропуск пишется предупреждением. Разбор для поддержки — в документе «Гриды — Решение проблем». Если колонка нужна, восстановите привязку ДП к категории и настройки колонки.

**Когда обращаться в поддержку:** если привязка ДП на месте, а колонка всё равно отсутствует в представлении — с указанием ID задачи и ID ДП.

### 1.13 По краям строк видны узкие колонки без заголовков

**Симптом:** в ДП «Таблица» по краям каждой строки видны узкие колонки без заголовков — одна слева, другая справа.

**Что это:** служебные колонки, а не данные. Слева — колонка номеров строк: номер показывает место строки в таблице и не меняется при фильтрации, сортировке и переходе на другую страницу; в режиме редактирования за эту же колонку строка перетаскивается мышью. Справа — кнопка `…` с меню строки («Добавить строку», «Переместить»). Заголовков у колонок нет.

**Когда колонок не будет:** если в настройках таблицы включены обе настройки — «Скрыть номера строк» и «Запретить перемещение строк», — левой колонки на экране нет: номера скрыты, а перетаскивание запрещено и ручка больше не нужна. Колонка номеров также не показывается под строками группировки и итогов и у несохранённой строки: пока строка не сохранена, номера у неё нет.

**Что делать не нужно:** колонки appearance не ломают таблицу и не мешают работе с данными — это ожидаемое оформление. Если мешает вид, попросите администратора включить «Скрыть номера строк».

### 1.14 Текст «Нет данных» накладывается на строку итогов в пустой таблице

**Симптом:** в пустой таблице ДП «Таблица» текст «Нет данных» рисуется поверх нижней строки итогов и наезжает на её границы.

**Различающий сигнал:** наложение видно, когда у столбцов включена опция «Итого» — тогда под строками данных появляется служебная строка и сообщение ложится на неё. Если опцию «Итого» выключить, служебная строка исчезает и наложения нет. От объёма данных и числа задач в категории дефект не зависит — достаточно комбинации «нет строк данных + включены итоги по столбцам».

**Решение:** обновиться до сборки 2.268 «Скульптор» или новее — в ней сообщение пустого состояния показывается в области строк данных и со строкой итогов не пересекается; в таблицах без итогов поведение прежнее.

**Когда обращаться в поддержку:** если после обновления текст «Нет данных» по-прежнему пересекается со строкой итогов — зафиксировать версию сборки, число столбцов с включённой опцией «Итого», ширину окна браузера и запись экрана.

### 1.15 Вместо национальных символов в текстовых ячейках таблицы — знаки «?»

**Симптом:** в текстовой колонке ДП «Таблица» вместо введённых иероглифов или казахских букв после сохранения отображаются знаки вопроса «?».

**Что проверить:**

- Версию системы: текст на любом языке в текстовых ячейках таблицы поддерживается начиная со сборки 2.268 «Скульптор». На более ранних сборках символы вне кодовой страницы сервера MS SQL сохраняются как «?».
- Тип колонки: симптом касается текстовых колонок; значения остальных типов (число, дата, деньги, галочка) хранятся в собственных колонках и не искажаются.
- Стенд: на PostgreSQL симптома нет изначально — там строковый тип хранит UTF-8.

**Решение:** обновиться до сборки 2.268 «Скульптор» или новее. Значения, уже записанные как «?», восстановлению не подлежат — их нужно ввести заново.

**Когда обращаться в поддержку:** если сборка 2.268 или новее, а символы всё равно превращаются в «?» — с указанием ID задачи, ID табличного ДП, названия колонки, введённого значения и версии сборки.

### 1.16 Высокая шапка растягивает таблицу и создаёт вертикальную прокрутку

**Симптом:** в ДП «Таблица» с включённой настройкой «Переносить заголовки по строкам» строка с названиями колонок занимает несколько строк, а при двух-трёх строках данных появляется вертикальная прокрутка; из-за неё последняя строка данных видна не целиком.

**Различающий сигнал:** настройка «Переносить заголовки по строкам» включена, и среди названий колонок есть длинные — именно они растягивают шапку на несколько строк, тогда как высота таблицы считалась по однострочной шапке. При выключенной настройке шапка однострочная и симптома нет. На сборке 2.268 «Скульптор» и новее симптом не воспроизводится.

**Решение:** обновиться до сборки 2.268 «Скульптор» или новее — высота таблицы считается по фактической высоте шапки и отрисованных строк, поэтому при двух-трёх строках прокрутки нет, а при переполнении работают прокрутка и подгрузка строк с сервера. Отключать настройку ради этого не нужно.

**Когда обращаться в поддержку:** если на сборке 2.268 «Скульптор» или новее при включённом переносе заголовков таблица всё равно прокручивается при двух-трёх строках — зафиксировать точную версию сборки (номер вида 2.268.693, а не только название «Скульптор»: по названию семейства сборку с исправлением от более ранней не отличить), ID категории, ID дополнительного параметра, названия длинных колонок и ширину окна браузера.

### 1.17 Грид табличного ДП в карточке чужой задачи не отдаёт данные (403)

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

**Что проверить:** есть ли у пользователя доступ именно к задаче из контекста грида (заказчик, исполнитель, подписчик, роль в категории), а не только к самому ДП. Проверка прав на задачу для грида табличного ДП выполняется на сервере до чтения таблицы и одна на все его запросы — фильтрацию, сортировку, группировку и схему колонок.

**Решение:** это ожидаемое поведение. Чтобы пользователь видел таблицу, выдайте ему доступ к задаче (например, подписку) — настройки самого ДП тут ни при чём.

**Когда обращаться в поддержку 1Ф:** если доступ к задаче у пользователя есть, а грид всё равно отвечает 403 — с указанием ID задачи, ID табличного ДП, имени пользователя и версии сборки.


---

### 1.18 Заголовки групп в таблице показывают «Скрыто N» вместо значений

**Симптом:** в таблице дополнительного параметра группировка по колонке выводит в заголовках групп метку «Скрыто N» вместо значений, хотя строки таблицы заполнены.

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

**Решение:** это ожидаемое поведение. Чтобы пользователь видел значения, выдайте ему доступ к задаче (например, подписку) или право на просмотр зашифрованной задачи.

**Когда обращаться в поддержку 1Ф:** если доступ к задаче у пользователя есть, а заголовки групп всё равно закрыты — с указанием ID задачи, ID табличного ДП, имени пользователя и версии сборки.

### 1.19 Сохранение шаблона таблицы падает по таймауту, ячейки в списке остаются пустыми

**Симптом:** сохранение вкладки «Шаблон в табличных представлениях» с включёнными «Хранить html представление» и «Синхронизировать существующие задачи» долго висит и завершается ошибкой — в логе «Время ожидания выполнения истекло». Настройки при этом не применены, а в списке задач ячейки таблицы пустые или показывают меньше строк, чем в карточке.

**Что проверить:**

- воспроизводится ли это только с галочкой «Синхронизировать существующие задачи» — без неё сохранение быстрое, значит дело в массовом пересчёте, а не в шаблоне;
- объём категорий, в которых используется ДП: пересчёт идёт по всем им, а не только по текущей;
- версию сборки: пересчёт в фоне появился в сборке 2.268.

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

**Когда обращаться в поддержку 1Ф:** если на актуальной сборке сохранение с галочкой всё равно падает с ошибкой; если через время, разумное для объёма категорий, значения в списке так и не появились. Приложить ID категории, ID ДП, текст ошибки или скриншот, время операции.

### 1.20 Сохранение табличного ДП шифрованной задачи отвечает ошибкой 400, а таблица остаётся изменённой

**Симптом:** при добавлении, изменении или удалении строк в таблице дополнительного параметра шифрованной задачи, а также при копировании таблицы и перестановке строк, запрос завершается ошибкой 400 с техническим текстом вида «An item with the same key has already been added. Key: <число>». Строки при этом сохраняются, поэтому повторное добавление даёт дубль строки, а повторное удаление — сообщение про отсутствующий номер строки. Сигнал обновления таблицы не приходит ни подписчикам, ни тем, у кого есть право на просмотр шифрованных задач; сводное значение параметра и события «после изменения ДП» за этот раз не выполняются.

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

**Что проверить:**

- помечена ли задача шифрованной и есть ли среди её подписчиков уволенные пользователи;
- не выполнялся ли незадолго до этого полный пересчёт состава групп на площадке — после него пользователей без групп в кэше не остаётся, и сбой проявляется чаще;
- точный номер сборки: исправление вошло в сборку 2.268 «Скульптор», тег 2.268.713.

**Решение:** обновить площадку до сборки с тегом 2.268.713 или новее — пакетная проверка доступа к содержимому шифрованной задачи возвращает ровно запрошенных получателей, сохранение обрабатывается целиком (строки, сводное значение параметра, события «после изменения ДП»), а сигнал обновления уходит только тем, у кого есть доступ к содержимому. До обновления — временный обходной путь: снять уволенных пользователей с подписки на такие задачи (снятие подписки данные не удаляет) либо не редактировать таблицу шифрованной задачи, пока среди подписчиков двое и больше уволенных.

**Когда обращаться в поддержку 1Ф:** если на сборке 2.268.713 или новее сохранение табличного ДП шифрованной задачи всё ещё отвечает 400 — приложить ID задачи, ID табличного дополнительного параметра, состав подписчиков с признаком увольнения, точный номер сборки и текст ошибки из журнала.

### 1.21 При импорте из Excel часть ячеек в колонке осталась пустой, а ошибки нет

**Симптом:** импорт из Excel завершается успешно, но в колонке, где были и числа, и текст, часть ячеек осталась пустой. Ошибки в окне импорта нет, часть строк при этом загрузилась.

**Различающий сигнал:** пустые ячейки появляются именно в колонке со смешанными значениями. Если та же колонка в файле состоит только из текста, она импортируется целиком; если только из чисел — тоже. Начиная со сборки 2.268 «Скульптор» система предупреждает о каждой такой ячейке в результате импорта — строкой с адресом ячейки и названием колонки: «Ячейка B3: значение не удалось преобразовать для колонки «Телефон», оно не импортировано». Предупреждение не отменяет импорт: остальные строки применяются как обычно.

**Что проверить:**

- есть ли в результате импорта предупреждения — именно они перечисляют потерянные ячейки, а не ошибка импорта;
- тип колонки ДП, в которую шёл импорт: для «Текста», «Большого текста», «Маски», «Телефона» и «URL» текст принимается, даже если в файле колонка числовая;
- версию сборки: до 2.268 «Скульптор» значения терялись молча, без предупреждения;
- один это столбец или таких несколько — потеря возникает в каждом, где смешаны числа и текст.

**Решение:** обновить площадку до сборки 2.268 «Скульптор» или новее — импорт сохраняет нечисловой текст в текстовых колонках и перечисляет оставшиеся непреобразуемые ячейки в результате. До обновления вынести телефон в отдельную колонку файла либо хранить его как текст целиком, без добавочного в скобках. Заново импортировать стоит только те данные, где значения действительно потерялись: восстановить их можно лишь из исходного файла.

**Когда обращаться в поддержку 1Ф:** если на сборке 2.268 «Скульптор» или новее значения всё равно теряются, а предупреждения в результате импорта нет — приложить файл-пример, ID задачи, ID табличного ДП, названия колонок и точный номер сборки.

## 2. Lookup / Multilookup / Иерархический справочник

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

### 2.1 Иерархическое представление не работает

**Симптом:** не отображаются ветки в иерархии, поиск в иерархии не работает, ошибки при открытии иерархического представления.

**Что проверить:**

- Настроено ли иерархическое представление в настройках ДП лукап
- Есть ли в категории-справочнике подкатегории (иерархия строится по подкатегориям)
- Достаточно ли прав у пользователя на категорию-справочник

**Решение:**

- Проверить настройку «Иерархия» в параметрах лукапа
- Убедиться, что категория-справочник имеет подкатегории с задачами
- Проверить права пользователя на категорию-справочник

**Когда обращаться в поддержку:** если настройка корректна, права есть, но иерархия не показывается.

### 2.2 Задачи не подгружаются / подгружаются не все

**Симптом:** при открытии лукапа список задач пуст или неполный, «не подгружаются задачи, если их много».

**Что проверить:**

- Количество задач в категории-справочнике (при большом количестве возможны лимиты)
- Настройки фильтрации лукапа — есть ли фильтр по статусам (AllowedStates)
- Права пользователя на задачи в категории-справочнике

**Решение:**

- Если задач много (>10000) — это известное ограничение, рекомендовать настроить фильтрацию
- Проверить AllowedStates — возможно, фильтр по статусам отсекает нужные задачи
- Проверить права

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

**2.3 Поиск в лукапе не работает**

**Симптом:** поиск по тексту/цифрам в лукапе не даёт результатов или ищет некорректно.

**Что проверить:**

- Что именно пользователь вводит в поиск (текст задачи? значение ДП?)
- Настройку отображаемых полей лукапа — по каким полям идёт поиск
- Тип лукапа — обычный, выпадающий, табличный с поиском

**Решение:**

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

### 2.4 Multilookup — проблемы выбора и отображения

**Симптом:** при выборе всех значений галкой окно закрывается без сохранения, не все поля категории отображаются в настройках параметров в гриде, настройки грида не сохраняются — в том числе новый порядок колонок, заданный перетаскиванием.

**Что проверить:**

- Количество выбираемых задач — есть ли ограничение
- Настройки грида в мультилукапе — сохранены ли

**Решение:**

- Попробовать выбрать задачи по одной (обход проблемы с массовым выбором)
- Для настроек грида — переоткрыть настройки и сохранить заново

**Когда обращаться в поддержку:** если проблема стабильно воспроизводится.

**Отдельный случай (исправлено, влито в dev 08.07.2026):** если на MultiLookup-поле настроено смарт-правило на событие «После смены ДП» с условием «был удалён элемент из ДП», удаление одного значения или выбор/снятие всех значений («Выбрать все») приводили к ошибке 500 (внутренняя ошибка сервера). До исправления обходной путь — временно отключить смарт-правило на время массовых операций.

**Отдельный случай (исправлено, влито в dev 05.08.2026):** в гриде ДП «Мультилукап» числовые колонки (Число, Деньги, а также число, полученное через связь) не показывали значение, если оно содержало разделитель тысяч (обычно от 1000 — например, «1 234»); значения меньше 1000 отображались нормально. Устранено: числовое значение колонки берётся из типизированного значения исходного ДП, а не из его строкового представления.

**Отдельный случай (исправлено, влито в dev 20.08.2026, сборка 2.268):** на PostgreSQL создание задачи через НТФ завершалось ошибкой `42883: operator does not exist: text = integer`, если в категории есть ДП «Множественная ссылка» с жёсткой связью на другой лукап (связь «Lookup → MultiLookup» в «Связях параметров») и значение этой связи заполнялось прямо на форме постановки. На MSSQL не воспроизводилось. Устранено: значение ведущего параметра связи передаётся строкой и больше не приводится принудительно к целому числу перед выполнением запроса.

**Отдельный случай (исправлено, влито в dev 29.09.2026, сборка 2.268):** в карточке задачи, где в категорию добавлено несколько ДП «Выбор нескольких задач из категории» (мультилукап), изменение значения в одном блоке вызывало перечитывания и по соседним блокам: строки запрашивались повторно, а вместе с ними заново уходили запросы настроек таблиц. Повторялось только чтение — сама запись значения уходила одним запросом на `.../multilookup/{extParamId}/{taskId}/update`. С одним мультилукапом в категории дефект не воспроизводился: перечитывать было нечего. Устранено: настройки блока запрашиваются только при смене контекста, а строки после записи перечитывает только изменённый блок. **Как проверить:** открыть задачу в карточке, где три блока мультилукапа, отфильтровать в инструментах разработчика запросы по `multilookup` и добавить значение в один блок — ожидается один `POST .../update`, один запрос данных по этому же параметру и ни одного запроса настроек или данных по соседним блокам. **Когда обращаться в поддержку:** если на актуальной сборке перечитывания повторяются — приложить HAR, ID задачи, ID категории и номера параметров-мультилукапов.

**Отдельный случай (исправлено, влито в dev 30.09.2026, сборка 2.268):** в табличном виде ДП «Выбор нескольких задач из категории» (Multilookup) денежные значения в колонках выводились в машинном формате — `7816.57`: без разделителя разрядов и с точкой в дробной части, хотя на карточке задачи то же значение показывалось как `7 816,57`. Устранено: значение ячейки форматируется по настройкам ДП-источника — `7 816,57` при включённом разделителе разрядов и `7816,57` при выключенном.

**Отдельный случай (исправлено, влито в dev 29.09.2026, сборка 2.268):** на вкладке «Параметры в гриде» в настройках ДП «Выбор нескольких задач из категории» (Multilookup) изменение порядка колонок перетаскиванием не сохранялось: после сохранения настроек колонки возвращались к прежней последовательности — и в настройках, и в табличном представлении выбранных задач в карточке, при этом ошибок в консоли при сохранении не было. Порядок терялся только на клиенте: серверная часть порядок хранит и отдаёт (колонки показываются по своему порядковому номеру), а редактор настроек при перестановке строк не пересчитывал эти номера, поэтому в сохранение уходил исходный порядок. Общий обходной путь «переоткрыть настройки и сохранить заново» здесь не помогает: новый порядок до правки не попадал в сохраняемые настройки и при переоткрытии терялся. Устранено: после перетаскивания порядок считывается из сетки, номера пересчитываются по позициям и сохраняются вместе с остальными настройками. **Как проверить:** настройки мультилукапа → вкладка «Параметры в гриде» → перетащить колонку → сохранить → перезагрузить страницу: порядок в настройках и в табличном представлении выбранных задач в карточке должен совпасть с новым. **Когда обращаться в поддержку:** если на сборке 2.268 «Скульптор» или новее порядок по-прежнему сбрасывается — приложить ID категории, ID ДП и запись экрана.

### 2.5 Зависимые / связанные лукапы (ExtParamLink)

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

**Что проверить:**

- Настроена ли связь в разделе «Связи параметров» (ExtParamLink)
- Заполнено ли значение ведущего ДП
- Совместимы ли типы ведущего и зависимого ДП

**Решение:**

- Проверить наличие связи в админке (Связи параметров)
- Убедиться, что ведущий ДП заполнен и содержит корректное значение
- Попробовать пересохранить значение ведущего ДП

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

Углублённая SQL-диагностика (при доступе к БД) — в [Настройке ДП](https://help.1forma.ru/domains/ext-params/admin.md): Q3 (ExtParamLink).

### 2.6 Потеря данных при смене настроек лукапа

**Симптом:** после смены типа отображения лукапа (например, «как радио-кнопки») потерялись данные пользователя.

**Что проверить:**

- Какой тип отображения был до и после изменения
- Были ли данные в лукапе до смены настройки

**ВАЖНО:** Это критичная ситуация. Смена типа отображения может привести к потере данных, если новый тип несовместим со старым форматом хранения.

**Решение:**

- Если данные потеряны — немедленно обратиться в поддержку 1Ф — возможно восстановление из резервной копии
- Предупредить пользователя о рисках смены типа отображения у заполненных ДП

### 2.7 Лукап на сводный раздел — некорректная работа

**Симптом:** лукап, настроенный на сводный раздел (несколько категорий), показывает задачи не из всех категорий или работает некорректно.

**Что проверить:**

- Настройку источника данных лукапа — указан ли сводный раздел
- Права пользователя на все категории в сводном разделе
- Не пуст ли сводный раздел

**Решение:**

- Проверить, что все категории сводного раздела доступны пользователю
- Если часть задач не отображается — проверить фильтры лукапа (AllowedStates может быть несовместим между категориями)

**Когда обращаться в поддержку:** если настройка корректна, но лукап показывает неполные данные.

### 2.8 Диагностика лукапов через API (datasource)

Для проверки настроек лукапа на площадке можно использовать API `/api-core/datasource/`. Этот раздел API обслуживает все типы источников данных, включая лукапы.

**Полезные маршруты:**

| Метод | Путь | Что возвращает |
|-------|------|---------------|
| `GET` | `/api-core/datasource/{id}/config` | Схема колонок окна выбора: `taskColumnsSettings[]` с полями `title`, `type`, `isDefault`, `hidden`, `order` |
| `POST` | `/api-core/datasource/{id}/data` | Строки данных окна выбора (с фильтрами в теле запроса) |

`{id}` — числовой ID лукапа из AdminSPA (виден в URL: `/administration/data-source-settings/lookup/{id}`).

Идентификатор `{id}` обязателен. Запрос без него — например, `POST /api-core/datasource/Lookup/data` — не выполняется вовсе: сервер отвечает ошибкой 400 с сообщением о пустом параметре, а не выдачей и не внутренней ошибкой. Для диагностики окна выбора всегда подставляйте числовой ID лукапа.

**Когда использовать:**

- Пользователь жалуется, что в окне выбора лукапа не видны колонки → сравнить `/config` с настройками в AdminSPA
- Окно выбора пусто или показывает не те данные → проверить `/data` с пустым фильтром
- Расхождение между тем, что настроено в AdminSPA, и тем, что видит пользователь

**Пример:** `curl -s -H "Authorization: Bearer $TOKEN" "https://{host}/api-core/datasource/{id}/config"` → проверить `taskColumnsSettings[].isDefault` и `hidden`.

> **Не путать:** `/api-core/datasource/` (без дефиса) — источники данных (лукапы). `/api-core/data-source/` (с дефисом) — отдельный раздел API для журналов и реестров.

### 2.9 Ошибка при сохранении лукапа: источник не существует

**Симптом:** при сохранении настроек ДП типа «Лукап» появляется ошибка валидации с текстом вида «Summary category with id {id} does not exist» или «Subcategory with id {id} does not exist».

**Причина:** в настройках лукапа указан несуществующий источник — либо `summaryCategoryId` (сводный раздел), либо `subcatId` (категория). Это может произойти, если:

- перепутаны поля источника (например, в `summaryCategoryId` подставлен id обычной категории);
- источник был удалён после создания настроек.

**Что проверить:**

- Существует ли категория или сводный раздел с указанным id.
- Какое поле используется: `subcatId` — для категории, `summaryCategoryId` — для сводного раздела. Если заполнены оба, используется `summaryCategoryId`.

**Решение:**

- Указать корректный существующий источник.
- Если источник удалён — выбрать новый или перенастроить лукап.

**Когда обращаться в поддержку 1Ф:** если источник точно существует и доступен, но ошибка повторяется — приложить id ДП, id категории/сводного раздела и текст ошибки.

---

### 2.10 Ошибка 500 при сохранении значения Lookup-ДП, добавленного в категорию в двух блоках

**Симптом:** при сохранении значения дополнительного параметра типа «Lookup» (ссылка на задачу), размещённого в категории одновременно в двух разных блоках, запрос завершается ошибкой HTTP 500. В консоли браузера отображается `Failed to load resource: the server responded with a status of 500 ()`, а в журнале ошибок фиксируется `Microsoft.Data.SqlClient.SqlException: Violation of PRIMARY KEY constraint 'PK_ExtParamValueSelectedTasks'. Cannot insert duplicate key in object 'dbo.ExtParamValueSelectedTasks'`.

**Причина:** при сохранении формы значения отправляются раздельно по блокам. Метод сохранения значения Lookup выполнял неатомарную проверку наличия строки перед вставкой, из-за чего второй вызов для того же параметра и задачи приводил к повторной попытке `INSERT` по первичному ключу `(TaskID, ExtParamID)` в таблицу `ExtParamValueSelectedTasks`.

**Что проверить:**

- привязан ли один и тот же Lookup-параметр к нескольким блокам в настройках категории;
- версию сборки: ошибка 500 появляется на сборках с диапазонной блокировкой ключа (впервые — с тега 2.268.703); откат вошёл в сборку 2.268.704. Уточняйте номер сборки, а не только название семейства «Скульптор» — по названию сборку с откатом от более ранней не отличить.

**Решение:**

- обновить систему до сборки 2.268.704 или новее — запись значения Lookup в `ExtParamValueSelectedTasks` выполняется без предварительной блокировки ключа: нарушение первичного ключа перехватывается, строка-победитель перечитывается и обновляется, поэтому повторные вызовы не дают дублей и ошибки 500;
- до обновления как временный обход — исключить дублирование параметра в двух блоках категории (оставить параметр в одном блоке).

**Когда обращаться в поддержку 1Ф:** если на сборке 2.268.704 или новее сохранение Lookup-ДП падает с нарушением ключа `PK_ExtParamValueSelectedTasks` — приложить идентификаторы категории, параметра, задачи и текст ошибки из журнала.

**Ошибка «duplicate key» при одновременной записи в один табличный ДП.**

**Симптом.** В журнале ошибок — нарушение первичного ключа таблицы значений табличного ДП (при колонке «Выбор пользователей» — ограничение уникальности её таблицы); строка, которую добавляло правило, в таблице отсутствует.

**Когда возникает.** Несколько правил пишут строки в один и тот же табличный ДП одной задачи одновременно: например, несколько задач добавляют себя в общий пакет режимом «+», а рядом выполняется «Копировать значение ДП» в тот же параметр.

**Что проверить.** Версию сборки (до 2.268 «Скульптор» копирование значения ДП не было сериализовано с добавлением строк); настройки правил — используют ли «Изменить значение ДП» в режиме «+» и «Копировать значение ДП» один параметр у одной задачи-приёмника; журнал ошибок по задаче-приёмнику.

**Что делать.** Обновиться до сборки 2.268 «Скульптор»: копирование значения ДП и добавление строки выполняются по очереди, строка не теряется. Ручное восстановление строки возможно повторным запуском правила после завершения параллельных действий.

### 2.11 Два окна подтверждения при выборе значения в лукапе, выведенном в двух блоках

**Симптом:** при выборе значения в поле типа «Ссылка» (Lookup), на котором настроено действие отмены перед сохранением (событие «перед сохранением», отмена с подтверждением), показываются подряд два окна подтверждения вместо одного. Воспроизводится только когда это поле выведено на карточке одновременно в двух блоках; в одном блоке подтверждение одно.

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

**Что проверить:**

- сколько блоков карточки показывают это поле — привязки видны в настройках блоков категории;
- версию сборки: дефект устранён, начиная со сборки 2.268 «Скульптор» (тег 2.268.718);
- в инструментах разработчика (вкладка Network) — сколько запросов сохранения уходит на один выбор значения: при этом дефекте запрос один, а окна два.

**Решение:**

- обновить систему до сборки 2.268.718 или новее — подтверждение запрашивается один раз на значение поля, а не на каждый экземпляр, повторные экземпляры переиспользуют результат первого, включая отказ; при отказе в подтверждении значение не сохраняется и второго окна нет;
- до обновления как временный обход — оставить поле в одном блоке категории.

**Когда обращаться в поддержку 1Ф:** если на сборке 2.268.718 или новее выбор значения в поле, выведенном в нескольких блоках, по-прежнему даёт больше одного окна подтверждения — приложить идентификаторы категории и параметра, число блоков, которые показывают поле, и запись экрана. Сценарий с ошибкой 500 (без окон подтверждения) — отдельный случай, см. § 2.10.

## 3. Блоки ДП и группы блоков

Частая тема обращений. Типичные жалобы: ДП не отображается, блок не сворачивается, порядок сбился, ошибка при создании блока.

**3.1 ДП не отображается в категории**

**Симптом:** ДП добавлен, но не виден на форме задачи.

**Что проверить:**

- Добавлен ли ДП в категорию (а не только создан глобально)
- Не скрыт ли ДП настройкой Hidden
- Привязан ли к блоку — если блок скрыт смарт-фильтром, ДП тоже не виден
- Права по статусу — может ли пользователь видеть ДП в текущем статусе задачи

**Решение:**

- Проверить в админке: Категория → ДП → наличие ДП в списке
- Проверить флаг Hidden
- Проверить блок ДП — не скрыт ли смарт-фильтром
- Проверить права по статусам (CanRead)

Углублённая SQL-диагностика (при доступе к БД) — в [Настройке ДП](https://help.1forma.ru/domains/ext-params/admin.md): Q1 (ExtParamsInSubcat), Q6 (ExtParamStateView).

**3.2 Порядок ДП сбился**

**Симптом:** ДП отображается «не на своём месте», порядок после переноса/обновления изменился.

**Что проверить:**

- Порядок ДП в настройках категории (SubcatOrder)
- Принадлежность к блоку — ДП может отображаться в блоке, а не в общем списке
- Не выполнялся ли «Сброс порядка»

**Решение:**

- Перейти в админку → Категория → ДП → выставить нужный порядок
- Если ДП в блоке — проверить порядок внутри блока

Углублённая SQL-диагностика (при доступе к БД) — в [Настройке ДП](https://help.1forma.ru/domains/ext-params/admin.md): Q2 (порядок ДП и блоки).

**3.3 Блок ДП не сворачивается / не скрывается**

**Симптом:** настройка «Сворачивать» или «Скрывать по смарт-фильтру» не работает для блока ДП, особенно если блок входит в группу блоков.

**Что проверить:**

- Входит ли блок в группу блоков — для групп поведение может отличаться
- Корректность смарт-фильтра скрытия
- Версия системы — некоторые ошибки исправлены в свежих версиях

**Решение:**

- Если блок в группе — попробовать настроить сворачивание на уровне группы
- Проверить смарт-фильтр скрытия — работает ли он для других блоков

![Окно «Редактирование блока ДП»: поля «Сворачивать по смарт-фильтру» и «Скрывать по смарт-фильтру»](https://help.1forma.ru/help-images/ext-params/block_dp_edit.png)

**3.4 Ошибка при создании блока ДП / привязке ДП к блоку**

**Симптом:** ошибка в AdminSPA при попытке создать блок ДП или посмотреть привязку ДП к блокам.

**Что проверить:**

- Версия AdminSPA
- Есть ли ДП в категории (блок нельзя создать в пустой категории)

**Решение:**

- Попробовать обновить страницу AdminSPA
- Если ошибка повторяется — обращение в поддержку 1Ф с текстом ошибки и скриншотом

**3.5 Ошибка 500 при создании задачи (НТФ), если на блоке/группе блоков ДП настроен смарт-фильтр видимости**

**Симптом:** при открытии формы создания задачи (НТФ, `spa/newtask/{subcatId}`) вместо формы — HTTP 500 / «Произошла ошибка». На карточке уже существующей задачи (МТФ) та же категория и тот же смарт-фильтр открываются без проблем.

**Что проверить:**

- Настроен ли на блоке ДП или группе блоков ДП этой категории смарт-фильтр видимости или сворачивания (`Скрывать по смарт-фильтру` / `Сворачивать по смарт-фильтру`), ссылающийся на свойство задачи (например, статус)
- Версия системы — ошибка исправлена в сборке 2.268.423 и выше; если ниже — воспроизводится на любом фильтре видимости блока/группы, который обращается к полям задачи
- Работает ли тот же фильтр на существующей задаче (МТФ) — если да, а НТФ падает, это именно этот кейс

**Решение:**

- Обновить систему до версии, включающей фикс (2.268.423+) — смарт-фильтр видимости блока/группы блоков корректно вычисляется и без контекста (на форме создания), не роняя форму
- До обновления как временный обход: снять привязку смарт-фильтра от видимости блока/группы блоков в этой категории — форма создания откроется, но видимость перестанет учитывать условие на НТФ

**Когда обращаться в поддержку:** если версия актуальная (2.268.423+), а форма создания всё равно падает с 500 при наличии смарт-фильтра на блоке/группе блоков — с указанием ID категории, ID смарт-фильтра и текста ошибки/стека.

---

**3.6 Параметр из блока «Шапка задачи» показывается дважды на форме создания задачи**

**Симптом:** на форме создания задачи параметр, привязанный к системному блоку «Шапка задачи», виден дважды — в шапке формы и в отдельной группе «Шапка задачи». В карточке уже созданной задачи дубля нет.

**Что проверить:**

- Версия системы — случай исправлен в сборке 2.268.669 и выше; на более ранних дубль воспроизводится в любой категории, где есть параметры в «Шапке задачи»
- Есть ли в категории параметры, привязанные к системному блоку (настройки категории, колонка имени блока)
- Открывается ли та же задача в карточке — если там параметр один, это именно этот случай

**Решение:**

- Обновить систему до сборки с исправлением; снимать привязку параметра к системному блоку или удалять блок не требуется
- Временный обход до обновления: скрыть параметр настройкой «Не отображать» в режиме «При постановке» — в шапке формы он останется

**Когда обращаться в поддержку 1Ф:** если версия актуальная, а параметр на форме создания всё равно дублируется — с идентификаторами категории и параметра и снимком экрана формы.

**3.7 При создании группы блоков ДП сообщается, что имя уже занято**

**Симптом:** при сохранении новой группы блоков ДП с именем, которое уже используется в этой же категории, группа не создаётся — система сообщает, что группа блоков с таким названием уже существует. На сборках ниже 2.268.662 в этом случае возвращалась системная ошибка (HTTP 500), а в журнал исключений попадала запись `SqlException` по индексу `ux__dbo__ExtParamBlocksGroups__SubcatId__Name`.

**Что проверить:**

- Есть ли в этой категории группа с таким же названием — имена групп уникальны в пределах категории
- В какой категории создаётся группа — то же имя в другой категории допустимо и созданию не мешает
- Версия системы — случай исправлен в сборке 2.268.662 и выше; на более ранних занятое имя даёт 500 вместо сообщения

**Решение:**

- Задать группе другое имя
- Если группа с таким названием в категории не нужна — переименовать или удалить существующую

**Когда обращаться в поддержку 1Ф:** если версия актуальная (2.268.662+), а при занятом имени вместо сообщения возвращается системная ошибка — приложить ID категории, имя группы и текст ошибки.

---

**3.8 Значения ДП «Таблица» нет в созданной задаче, если параметр добавлен в два блока одной группы блоков**

**Симптом:** пользователь заполняет таблицу на форме создания задачи в одном из двух блоков одной группы блоков и ставит задачу — в созданной задаче ДП «Таблица» пуст. Значение, введённое в другой блок той же группы, при этом сохраняется.

**Что проверить:**

- сколько раз этот параметр добавлен в блоки категории — привязки видны в настройках блоков; признак — один и тот же ДП стоит в двух блоках;
- объединены ли эти блоки в одну группу блоков (поле «Группа блоков» в настройках блока) — если блоки в разных группах или не в группе, случай не воспроизводится;
- какой блок группы заполнял пользователь: значение берётся из блока, с которым он взаимодействовал последним, а не обязательно из того, куда вводили данные;
- точный номер сборки (вид 2.268.693, а не только название «Скульптор»: по названию семейства сборку с исправлением от более ранней не отличить).

**Решение:**

- обновить систему до актуальной сборки 2.268 «Скульптор» — после обновления значение сохраняется из того блока группы, с которым работал пользователь, привязки менять не нужно;
- до обновления как временный обход — не размещать один и тот же ДП «Таблица» в двух блоках одной группы: оставить параметр в одном блоке или разнести блоки по разным группам.

**Когда обращаться в поддержку 1Ф:** если сборка актуальная, а таблица по-прежнему теряет введённые значения при постановке задачи — приложить ID категории, ID параметра, номер созданной задачи и запись экрана с заполнением таблицы на форме создания задачи.

**ДП отображается дважды после повторного переноса категории.** **Симптом:** после повторного переноса категории на ту же площадку-приёмник дополнительный параметр, перемещённый на источнике в другой блок, виден на форме задачи дважды — в прежнем и в новом блоках.

**Что проверить:** переносили ли категорию на этот приёмник повторно (симптом накопительный — нужна уже существующая привязка «ДП → прежний блок»; на чистый приёмник его не бывает); перемещался ли параметр между блоками на источнике (в списке ДП это видно по действию перетаскивания: «Переместить» против «Дублировать»); версию сборки — исправление в 2.268 «Скульптор»; не путать с § 1.10, где двоение вызвано совпадением идентификатора блока с системным.

**Решение:** обновить площадку-приёмник и повторить перенос; до обновления — перетащить параметр в нужный блок вручную или снять лишнюю привязку в настройках блоков. Для приёмки нужен архив, выгруженный со сборки с исправлением: архив старой сборки несёт прежнюю настройку привязок и при импорте перекрывает новую.

**Когда обращаться в поддержку 1Ф:** если на сборке 2.268 «Скульптор» или новее после повторного переноса у ДП по-прежнему две привязки — приложить идентификаторы категории и параметра, названия блоков, версии сборок источника и приёмника и архив переноса.

## 4. Права и видимость ДП

Частая тема обращений. Вопросы о смарт-доступе, матрице доступа, правах по статусам.

**4.1 ДП доступен/недоступен вопреки ожиданию**

**Симптом:** пользователь может/не может редактировать ДП, хотя по настройкам должно быть иначе.

**Что проверить (в порядке приоритета):**

1. Права по статусам (ExtParamStateView) — CanRead/CanEdit для текущего статуса
2. Права по матрице доступа — функциональный доступ к ДП
3. Гибкие права (EPRights) — если настроены
4. Смарт-доступ — если используется смарт-выражение для видимости/доступности

**Решение:**

- Последовательно проверить все уровни прав
- Права по статусам перекрывают матрицу доступа
- Гибкие права (EPRights) — дополнительный механизм, работает через SelectUsers

**Когда обращаться в поддержку:** если все уровни прав проверены и выглядят корректно.

Углублённая SQL-диагностика (при доступе к БД) — в [Настройке ДП](https://help.1forma.ru/domains/ext-params/admin.md): Q4 (EPRights), Q6 (ExtParamStateView).

**4.2 Копирование прав испортило настройки**

**Симптом:** после массового копирования прав (copypermissions / copypermissionsstates) точечные настройки для отдельных ДП потерялись.

**Что проверить:**

- Какая операция выполнялась (копирование групповых прав или прав по статусам)
- Что было источником копирования

**ВАЖНО:** Операции копирования прав перезаписывают целевые настройки без возможности отмены.

**Решение:**

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

Углублённая SQL-диагностика (при доступе к БД) — в [Настройке ДП](https://help.1forma.ru/domains/ext-params/admin.md): Q6, Q7.

**4.4 ДП не появляется после маршрутного перехода — требуется обновление страницы**

**Симптом:** после перехода задачи в новый статус ДП, который должен стать видимым по матрице доступа, не отображается. После F5 — появляется. Воспроизводится нестабильно, чаще на нагруженных площадках.

**Что проверить:**

- Включена ли матрица доступа для ДП (`TaskEntityPermissionControl = true`)
- Прописаны ли права ДП именно для нового статуса (CanRead/CanWrite)
- Версия системы — проблема воспроизводилась на версии 2.267

**Решение:**

- Если версия 2.267 и нет патча — обновиться до версии с исправлением (патч 2.267)
- Временный обходной путь: пользователь обновляет карточку задачи (F5)

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


**3.9 Удаление строки в таблице блоков снимает не ту строку**

**Симптом:** при удалении строки в таблице блоков ДП пропадают привязки соседней строки или очищается блок выше.

**Что проверить:** версию сборки — поведение исправлено в 2.268 «Скульптор»; какие блоки были выбраны в строках до правки и какие остались после; сохранён ли состав таблицы.

**Решение:** обновить площадку до сборки 2.268 «Скульптор» или новее. После обновления удаление снимает ровно свою строку, привязки остальных строк сохраняются.

**Когда обращаться в поддержку 1Ф:** если на сборке 2.268 или новее удаление строки снова затрагивает другие строки — приложить номер категории, состав таблицы до и после и версию сборки.

---

**4.3 Файлы из закрытых ДП доступны через поиск**

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

**Что проверить:**

- Настройки доступа к ДП (CanRead) — закрыт ли для пользователя
- Индексируются ли файлы ДП в поисковом движке

**Решение:**

- Известная проблема: поисковый индекс может не учитывать права доступа к ДП при индексации файлов
- Обращение в поддержку 1Ф (как вопрос безопасности) с указанием ID ДП и способа воспроизведения

---

**4.5 Опция «Просмотр не ограничивается» не отражается в настройках без перезагрузки страницы**

**Симптом:** при сохранении опции «Просмотр не ограничивается» (или изменении функций доступа по SQL-функции) настройка записывается, но окно продолжает показывать прежнее состояние — новая галка отражается только после обновления страницы. На категориях с большим объёмом значений это выглядит как «опция не сохраняется с первого раза».

**Что проверить:**

- Версию сборки: в сборках до исправления результат сохранения был виден только после перезагрузки страницы;
- Тип доступа у ДП — опция применяется к доступу «По SQL-функции»;
- Записалась ли настройка на самом деле: закрыть окно и открыть заново либо посмотреть значение в настройках ДП категории

**Решение:**

- В актуальной сборке состояние перечитывается сразу после сохранения; если окно показывает прежнее значение — обновиться до сборки с исправлением;
- Временный обходной путь: пользователь обновляет страницу

**Когда обращаться в поддержку:** если на актуальной сборке сохранение по-прежнему не отражается без перезагрузки или окно показывает расхождение с сохранённым значением. В обращение приложите: ID категории, ID ДП, версию сборки, тип доступа и снимки экрана до и после сохранения.

**4.6 Параметр, закрытый правами по статусу, в таблице выглядит как «0» или пусто**

**Симптом:** у параметра с настройкой «Доступ зависит от статуса» в части статусов ячейка табличного представления показывает «0» или остаётся пустой, хотя в карточке задачи (в статусе, где чтение разрешено) значение заполнено. Под фильтром «исключая значение» такие строки ведут себя не как настоящий ноль.

**Что проверить:** включён ли у параметра в категории «Доступ зависит от статуса» и есть ли в текущем статусе право на чтение; включено ли «Использовать 0 для пустых значений» — оно рисует ноль только для реально пустого значения.

**Решение:** на сборке 2.268 «Скульптор» с 02.10.2026 ячейка показывает «(нет доступа)», значение не раскрывается — ни в таблице, ни в выгрузке. Скрытие здесь задают права по статусам или матрица доступа; скрытие значения смарт-фильтром блока устроено иначе и выгрузку не затрагивает. Если на актуальной сборке по-прежнему «0» или пусто — приложить категорию, параметр, номер задачи, статус и снимок ячейки.

---

## 5–14. Сквозные ДП, настройка, значения, типы, мобильное приложение, список задач, смарт-выражения, локализация, копирование и API

Сложная тема — значения вычисляются через цепочку лукапов.

**5.1 Сквозной ДП показывает неверное значение или пуст**

**Симптом:** через ДП не «протягивается» значение из связанной задачи, показывается пустое или устаревшее значение.

**Что проверить:**

- Настройку цепочки: ДП → Lookup → через какой ДП в задаче-источнике берётся значение
- Заполнен ли lookup в текущей задаче
- Заполнен ли целевой ДП в задаче-источнике (той, на которую ссылается lookup)

**Решение:**

- Проверить, что lookup в задаче указывает на правильную задачу-источник
- Проверить, что в задаче-источнике целевой ДП заполнен
- Пересохранить lookup — это может инициировать пересчёт сквозного значения

**Когда обращаться в поддержку:** если цепочка корректна, значения заполнены, но through-ДП пуст — с указанием: ID задачи, ID сквозного ДП, ID lookup-ДП.

Подробнее — [Сквозные ДП](https://help.1forma.ru/domains/ext-params/through.md).

**5.2 Ошибка логики доступа к сквозному ДП**

**Симптом:** ошибка при попытке чтения/записи сквозного ДП, или пользователь не видит/не может редактировать сквозной ДП.

**Что проверить:**

- Не был ли удалён или изменён lookup-ДП, через который строится цепочка
- Не изменилась ли категория-справочник
- Настройку **«Учитывать настройки доступа по целевому ДП»**: если включена — доступ = логическое И прав на сквозной ДП и целевой ДП; если выключена — чтение по сквозному ДП, но без прав на целевое поле оно будет доступно только для чтения
- Состав ответа чтения при включённой настройке: у сквозного параметра, на целевой параметр которого нет права чтения, значения в ответе быть не должно, а для файлового целевого параметра в ответе не должно быть ни имени, ни идентификатора вложения

Подробнее о матрице доступа: [Сквозные ДП → Настройка доступа](https://help.1forma.ru/domains/ext-params/through.md#настройка-доступа).

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

---

**6. Настройка и перенос ДП**


### 6.1 Перенос категории — связи ДП (ExtParamLink) ломаются

**Симптом:** после переноса категории между площадками связи ДП работают некорректно, ID в ExtParamLink изменились.

**Что проверить:**

- Утилита переноса — какая версия использовалась
- Перенесены ли все связанные категории-справочники

**Решение:**

- После переноса проверить связи ДП в админке (Связи параметров)
- Если ID изменились — это ожидаемое поведение при переносе, связи нужно пересоздать или скорректировать

**Когда обращаться в поддержку:** если утилита не перенесла ExtParamsInSubcatToBlocks или ExtParamStateView.

### 6.2 Удаление ДП — ошибка таймаута

**Симптом:** при удалении глобального ДП возникает ошибка таймаута.

**Что проверить:**

- Используется ли ДП в категориях (есть ли привязки)
- Используется ли ДП в подписях
- Есть ли значения у этого ДП в задачах

**Решение:**

- Сначала удалить ДП из всех категорий, где он используется
- Затем удалить глобальный ДП
- Если много данных — удаление может занять время, это нормально

> Если ДП — типа «Ссылка» и обслуживает путь сквозного, этот порядок не сработает: снятие с категории, где проходит путь, блокируется отдельным запретом — см. 6.7.

**Когда обращаться в поддержку:** если ДП не используется нигде, но удаление всё равно падает.

Углублённая SQL-диагностика (при доступе к БД) — в [Настройке ДП](https://help.1forma.ru/domains/ext-params/admin.md): Q8 (использование ДП).

**6.3 NullReferenceException при открытии настроек ДП**

**Симптом:** ошибка NullReferenceException в AdminSPA при открытии настроек конкретного ДП в категории.

**Что проверить:**

- ID ДП и категории
- Тип ДП — для некоторых типов настройки могут быть неконсистентны

**Когда обращаться в поддержку:** с текстом ошибки, ID ДП, ID категории.

### 6.4 После сохранения настроек ДП «Дерево» пропали все узлы

**Симптом:** после сохранения глобальных настроек ДП «Дерево» через `POST /api/admin/extparams/settings` дерево оказалось пустым — выбирать из него нечего.

**Причина:** коллекция узлов сохраняется полной заменой. Пустой список означает «узлов нет» и удаляет все узлы вместе с дочерними; узлы, которых нет в переданном списке, тоже удаляются.

**Что проверить:**

- Тело запроса — передавался ли полный текущий состав узлов
- Тип запроса — обновление настроек ДП всегда перезаписывает дерево целиком

**Решение:** при любом обновлении настроек дерева передавать полный текущий список узлов. Запрос, в котором коллекция узлов отсутствует совсем, дерево не трогает: он отклоняется с кодом 400 и сообщением «Не обнаружены настройки для доп. параметра». На сборках до 2.268 «Скульптор» такой запрос завершался ошибкой 500.

**Когда обращаться в поддержку:** если узлы пропали после запроса с непустым списком — приложить ID ДП, тело запроса и время операции.

### 6.5 В окне «Создать ДП» не видно поле поиска и верхние типы списка «Тип»

**Симптом:** в окне «Создать ДП» (общий «Список ДП» или вкладка «ДП» в настройках категории) раскрытый список «Тип» обрезан верхним краем окна браузера: не видно поле поиска и первые типы, например «Lookup поле». Прокрутка списка не помогает — он уже в верхнем положении.

**Почему так:** список типов отсортирован так, что первыми идут англоязычные названия, поэтому первый пункт — «Lookup поле». Панели списка не хватает места в окне невысокой высоты (около 860 px и меньше — например, 1920×1080 при масштабе Windows 125% или открытая панель DevTools): если высоту панели не ограничить и не вернуть её в границы окна, верхняя часть списка — поле поиска и первые типы — уходит за край экрана.

**Что проверить:**

- Версию системы — начиная со сборки 2.268 «Скульптор» панель списка целиком остаётся в пределах окна: видны поле поиска и первые типы, остальные доступны прокруткой. Если сборка старше — обновитесь.
- Если обновление пока невозможно: уменьшите масштаб страницы в браузере (например, до 80%), увеличьте высоту окна или закройте DevTools — панель поместится, поиск и «Lookup поле» станут видны.
- Обходной путь без изменения окна: начните вводить название типа в поле поиска (если оно видно) — список отфильтруется до нужного типа.

**Когда обращаться в поддержку 1Ф:** если сборка 2.268 «Скульптор» или новее, а панель списка «Тип» по-прежнему выходит за край окна — приложите версию сборки, разрешение экрана, масштаб Windows и браузера, открыто ли DevTools, и снимок экрана с раскрытым списком.

---

### 6.6 Список значений ДП «Выпадающий список» выходит за нижнюю границу окна

**Симптом:** на форме задачи раскрытая панель ДП «Выпадающий список» у нижнего края формы выходит за нижнюю границу окна браузера. Часть вариантов не видна, а при большом списке до нижних значений не добраться обычной прокруткой страницы.

**Различающий сигнал:** симптом появляется, когда окно невысокое (например, около 864 px) и поле расположено близко к нижнему краю. При достаточном месте под полем список раскрывается вниз, в верхней части формы симптома нет. Значит, дело в положении и высоте панели, а не в том, что значений нет в источнике.

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

**Что проверить:**

- точную версию сборки и наличие исправления в обновлении площадки;
- высоту окна браузера и положение поля на форме;
- видны ли все варианты при открытии списка и добирается ли внутренняя прокрутка до последнего;
- остаётся ли панель в границах окна после изменения размера окна и прокрутки формы;
- не относится ли поле к другому типу контрола — Lookup, MultiLookup или «Выбор пользователей»: их поведение проверяется отдельно.

**Решение:** если исправление ещё не установлено, обратитесь к ответственному за обновление площадки. Временная проверка — увеличить высоту окна или переместить поле в область со свободным пространством; менять масштаб страницы или прокручивать форму постоянно — не решение.

**Когда обращаться в поддержку 1Ф:** если на сборке с исправлением панель всё ещё выходит за край или значения недоступны. Приложите номер сборки, разрешение и высоту окна, масштаб браузера, расположение поля, тип ДП, шаги воспроизведения и снимок экрана с раскрытой панелью; отдельно укажите, меняется ли результат после прокрутки формы или изменения размера окна.

---

### 6.7 Не удаляется ДП-лукап: он входит в путь сквозного ДП

**Симптом:** при снятии с категории или при глобальном удалении ДП типа «Ссылка» (Lookup) появляется отказ с сообщением, что параметр входит в путь сквозных ДП; данные не меняются.

**Что проверить:**

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

**Решение:** сначала исключить лукап из пути сквозного в настройках цепочки, затем снимать его с категорий и удалять глобально. Отказ наследуют также удаление категории с таким ДП и синхронизация с 1С.

**Когда обращаться в поддержку 1Ф:** если лукап в путях сквозных не участвует, но удаление всё равно отклоняется — приложить ID ДП, ID категории и текст отказа.

**Смежный симптом — сохранение нового правила на вкладке «Динамическая обязательность».** Правило записывается, но вместо перехода на список табличных параметров появляется окно «Сохранить изменения», а следующее нажатие «Сохранить» открывает окно с ошибкой `Http failure response for …/required-rules/undefined: 404`; каждое следующее сохранение повторяет ту же ошибку, пока страницу не перезагрузить. Ошибка воспроизводится у только что созданного правила и не зависит от темы и ширины окна, а на вкладке «Условное форматирование» той же страницы сохранение проходит. Исправлено в сборке 2.268 «Скульптор»: на исправленной сборке сохранение нового правила сразу уводит на список табличных параметров, пересоздавать правила и настройки не нужно. На сборках до исправления обходной путь — после сохранения нового правила перезагрузить страницу и не сохранять её повторно. Если на исправленной сборке запрос с пустым идентификатором повторяется — приложить идентификатор табличного параметра, номер сборки и снимок вкладки Network с запросами создания, изменения и удаления правила.

### 7. Значения ДП — расчёты и история

**7.1 Значение ДП не пересчитывается**

**Симптом:** смарт-выражение для значения по умолчанию или вычисляемого ДП не отрабатывает, формулы в категории не пересчитывают ДП.

**Что проверить:**

- Текст смарт-выражения — нет ли синтаксических ошибок
- Зависимости — все ли ДП, от которых зависит формула, заполнены
- Тип ДП — совместим ли результат формулы с типом ДП

**Решение:**

- Попросить пользователя показать смарт-выражение
- Проверить, не изменился ли тип ДП после создания формулы

**7.2 История изменений ДП пуста или некорректна**

**Симптом:** блок «История изменений ДП» пуст, изменение ДП не фиксируется.

**Что проверить:**

- Включено ли логирование изменений для этого ДП в настройках категории
- Тип ДП — не все типы поддерживают историю одинаково

**Решение:**

- Проверить настройку логирования в категории
- Если логирование включено, но история пуста — обратиться в поддержку 1Ф

**7.3 Округление денежных ДП**

**Симптом:** ДП типа «Деньги» округляется до целых, хотя настроена дробная часть.

**Что проверить:**

- Настройку дробной части в ДП (количество знаков после запятой)
- Не переопределяется ли формат отображения на уровне списка задач

**Решение:**

- Проверить настройку в админке: ДП → дробная часть
- Если настройка корректна, но отображается целое — проверить формат колонки в списке задач

### 7.4 На MS SQL создание задач и сохранение значений ДП ждут секунды, смарт-действия падают с ошибкой 1205

**Симптом:** на крупной инсталляции с MS SQL массово задерживаются создание задач и запись значений дополнительных параметров — от секунд до десятков секунд; хук `inbound-call` не укладывается в таймаут АТС; в журнале ошибок приложения встречается `SqlException 1205` (deadlock victim) на смарт-действиях «Изменить значение ДП». Виноват при этом не сам смарт: жертвой отката становится транзакция, которая слишком долго держала блокировку.

**Различающий сигнал:** симптом есть только на MS SQL и только на сборках с диапазонной блокировкой — её принесла сборка 2.268.693, откат вошёл в сборку 2.268.704, поэтому на сборках между ними такая выборка ещё выполняется. В захвате блокировок (`blocked_process_report`, extended events) видно ожидание на последнем ключе индекса `PK_ExtParamValues` в режимах `RangeI-N`/`RangeS-U`, а среди участников — запрос выборки значений ДП с `WITH (UPDLOCK, HOLDLOCK)`. На PostgreSQL симптома нет: там пара (задача, ДП) блокируется рекомендательной блокировкой и хвост ключа не захватывает.

Тот же симптом даёт и вторая таблица значений: у лукап-ДП диапазонную блокировку брал ключ `PK_ExtParamValueSelectedTasks` — там ключ трёхколоночный («задача, параметр, выбранная задача»), у новой задачи строки нет, и блокировка так же ложилась на конец индекса. Откат этого случая — отдельный сценарий, вошёл в сборку 2.268 «Скульптор» (тег 2.268.704, см. запись от 2026-10-02 в «Дополнительные параметры — Changelog»); в захвате блокировок ему соответствуют ожидания `RangeI-N`/`RangeS-U` на последнем ключе `PK_ExtParamValueSelectedTasks`, а среди участников — запрос выборки значений лукапа с `WITH (UPDLOCK, HOLDLOCK)`.

**Что проверить:**

- номер сборки (вид 2.268.693, а не только семейство «Скульптор»: по названию сборку с откатом от более ранней не отличить);
- ожидания в `sys.dm_exec_requests` и `blocked_process_report` — на каком ключе `PK_ExtParamValues` стоит очередь и какой запрос её держит;
- нет ли рядом дедлоков процедуры обновления триграмм (`system_health`) — это отдельный известный класс, в откат диапазонной блокировки он не входит.

**Решение:** обновиться до сборки с откатом диапазонной блокировки (в накате на dev это тег 2.268.704). Для PostgreSQL правок не требуется.

**Когда обращаться в поддержку 1Ф:** если на сборке с откатом ожидания на конце ключа `PK_ExtParamValues` сохраняются — приложить номер сборки, фрагмент захвата блокировок с текстом ожидающего и держащего запросов и временем, а также выдержку из журнала ошибок приложения с ошибкой 1205.

---

### 8. Специфические типы ДП

**8.1 ДП Файл / Мультифайл**

**Симптом:** ошибка при вложении файлов, картинки некорректно отображаются при переносе текста, подсказка из смарт-выражения не работает; только что загруженный файл в «Мультифайл» не открывается, не скачивается или не удаляется.

**Что проверить:**

- Ограничения на размер/тип файла в настройках ДП
- Провайдер хранения (БД, файловая система, S3/MinIO)
- Версию системы — в актуальных версиях загруженный в «Мультифайл» файл доступен для открытия, скачивания и удаления сразу после загрузки; если файл недоступен до ручного сброса кэшей, обновите систему

**Симптом:** в карточке настроек ДП «Файл» не удаётся задать допустимые расширения — блок «Список допустимых расширений» на вкладке «Доп. настройки» не показывает значения и не принимает новое, при этом вложение файла отклоняется с сообщением «Разрешено вкладывать только файлы формата …».

**Что проверить:**

- Какие расширения у поля заданы на самом деле: ограничение действует, пока список непуст, поэтому отказ во вложении возможен и тогда, когда в карточке список выглядит пустым
- Версию системы и наличие обновлений AdminSPA

**Решение:** ввести расширение в строку поиска блока, нажать «+», дождаться появления чипа выбранного расширения и сохранить карточку — значение записывается в список поля и после перечитывания начинает действовать. Уже ненужное расширение убирают тем же блоком.

**Когда обращаться в поддержку 1Ф:** если значения не сохраняются и после этого или набор в карточке расходится с фактическим ограничением — приложить ID ДП или задачи, версию сборки и снимок блока «Список допустимых расширений».

**Симптом:** TSQL с событийным параметром `@eventParam1` в смарт-выражении имени файла ДП «Файл» (Настройки ДП → «Имя файла» → «Смарт-выражение») не создаётся и не сохраняется; выражение не отображается в списке или не открывается по карандашу. В консоли браузера при этом падает `POST /api/admin/smart/expressions/editor 400 (Bad Request)`.

**Причина:** фронтовый дефект AdminSPA (точка входа «Имя файла ДП Файл») — в запрос редактора не передавался `EventID` события, в контексте которого вычисляется выражение.

**Решение:** обновить систему до версии, включающей фикс (сборка 2.268 и выше) — AdminSPA теперь передаёт `EventID = 24` (`AfterFileUploaded`) во все операции редактора имени файла, и выражение с `@eventParam1` сохраняется и применяется при вложении файла.

**Когда обращаться в поддержку 1Ф:** если версия актуальная (2.268+), а выражение с `@eventParam1` всё равно не сохраняется — приложить ID ДП, текст смарт-выражения и текст ошибки из консоли браузера.

**8.2 ДП Выбор пользователей (SelectUsers)**

**Симптом:** некорректное отображение оргструктуры, затирание пути в выбранных значениях, иконка перехода к оргструктуре не отображается.

**Что проверить:**

- Настройку «Отображать орг. единицы» в параметрах ДП
- Версию системы

**8.3 ДП Дата / Дата-время**

**Симптом:** не работает ограничение доступных дат через смарт-выражение, при выборе «сегодня» записываются секунды.

**Что проверить:**

- Текст смарт-выражения для ограничения дат
- Тип ДП (Date vs DateTime)

**Если относительная граница ведёт себя как соседний день.** Границы «Вчера», «Сегодня» и «Завтра» у ДП «Дата» вычисляются как календарные дни в часовом поясе профиля пользователя. Если нужного дня в этой зоне не существует (например, `Pacific/Apia` пропустил 30.12.2011), соседний день не подставляется: граница получает широкий резервный диапазон и выглядит как отсутствие ограничения.

**Что проверить:** часовой пояс профиля, локальную зону компьютера, режим и направление границы («от»/«до», видимые или доступные даты), тип ограничения — статическая дата или смарт-выражение, — и существует ли ожидаемый день в зоне профиля.

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

**8.4 ДП Большой текст с форматированием (БТсФ)**

**Симптом:** невозможно изменить допустимую длину текста в AdminSPA, виджет не отображается в модальном окне, нельзя редактировать на iOS.

**Что проверить:**

- Настройку длины текста в параметрах ДП (AdminSPA или старая админка)
- Платформу пользователя (web, iOS)

**8.5 ДП Адрес**

**Симптом:** не работает интеграция с DaData для подсказок.

**Что проверить:**

- Настроена ли интеграция с DaData на площадке
- API-ключ DaData — валиден ли, не истёк ли лимит

### 8.6 ДП Выпадающий список — обмен с 1С при пустом значении

**Симптом:** после обновления перестал работать обмен с 1С, если в ДП типа «Выпадающий список», участвующем в обмене, есть пустое значение.

**Что проверить:**

- Версию, на которой работало и на которой сломалось
- Есть ли пустые значения в выпадающем списке ДП, участвующем в обмене
- Настройку маппинга 1С — как обрабатывается пустое значение

**Решение:**

- Зафиксировать версию до и после — возможная регрессия
- Как обход: заполнить пустые значения ДП значением по умолчанию до обмена
- Обращение в поддержку 1Ф (как регрессия)

---

### 8.7 ДП Выпадающий список, источник «Из таблицы» — ошибка при создании задачи в НТФ (PostgreSQL)

**Симптом:** при создании задачи через НТФ появляется системная ошибка «Произошла ошибка. Обратитесь в техническую поддержку.» Ошибка воспроизводится только при наличии на форме НТФ ДП типа «Выпадающий список» с источником данных «Из таблицы», у которого колонка значений содержит текстовые данные (не числа). На MSSQL-инсталляции ошибки нет, проблема специфична для PostgreSQL.

**Что проверить:**

- Версию системы — ошибка устранена в v2.267; если ниже — требуется обновление
- Тип ДП и его источник данных: «Выпадающий список» → вкладка источника → «Из таблицы»
- Тип данных в колонке-значении (`valueColumn`) — если текстовый (varchar, text) при PostgreSQL, до v2.267 это воспроизводит ошибку
- Проверить в МТФ (уже созданной задаче) — если там работает, а НТФ падает, это именно этот кейс

**Решение:**

- Обновить систему до v2.267 или выше — ошибка полностью устранена
- До обновления: как временный обход — заменить источник «Из таблицы» на «Набор элементов» с теми же значениями или убрать ДП с НТФ

---

### 8.8 ДП Выпадающий список, источник «Из таблицы» — ошибка для таблиц из схемы `custom` (Excel-импорт, PostgreSQL)

**Симптом:** значения ДП типа «Выпадающий список» с источником «Из таблицы» не загружаются либо возникает ошибка, если таблица-источник находится в схеме `custom` — такие таблицы создаёт импорт данных из Excel. На MSSQL-инсталляции ошибки нет, проблема специфична для PostgreSQL.

**Что проверить:**

- Версию системы — ошибка устранена в v2.268; если ниже — требуется обновление
- Где создана таблица-источник — если через импорт из Excel (попадает в схему `custom`), до v2.268 это воспроизводит ошибку
- Отличие от § 8.7 — здесь причина в разрешении схемы объекта (`custom`/`dbo`), а не в типе данных колонки-значения

**Решение:**

- Обновить систему до v2.268 или выше — ошибка полностью устранена

---

**9. Мобильное приложение и ДП**

### 8.9 Значение по умолчанию не появляется в пакетной обработке или в мобильном приложении

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

**Что проверить:**

- задано ли значение по умолчанию в настройках параметра в категории;
- существует ли оно среди опций (для «Выпадающего списка с ручным вводом») или среди узлов дерева (для параметра «Дерево») — ненайденное значение не подставляется;
- не перекрыто ли значение настройкой на уровне категории;
- версию системы: до 2.268 значение по умолчанию этих двух типов в пакетных диалогах и в мобильной карточке создания задачи не применялось.

**Решение:** если значение настроено, но не подставляется, а сборка ниже 2.268 — обновить систему.

**Когда обращаться в поддержку 1Ф:** если значение настроено, существует среди опций или узлов и сборка актуальная, а поле всё равно пустое — приложить ID ДП, тип, значение по умолчанию из настроек категории и название места, где оно не подставилось.

### 8.10 После смены языка подсказки быстрого выбора у «Выпадающего списка» не появляются

**Симптом:** пользователь выбирал значения в параметре «Выпадающий список», переключил язык интерфейса — и над списком значений больше нет подсказок с ранее выбранными значениями. Иногда ряд пуст, иногда в нём остаются подсказки, выбранные уже на новом языке.

**Что это:** подсказки привязаны к языку интерфейса — значение запоминается вместе с языком, на котором его выбрали, и показывается только на нём. Подсказки прежнего языка не выводятся и не переводятся, это штатное поведение, а не сбой; так же ведёт себя «Выпадающий список с редактированием», а у «Ссылки» и «Множественной ссылки» подсказки при смене языка остаются на месте, потому что в них хранится номер связанной задачи, а не текст.

**Что проверить:** язык интерфейса в профиле и язык, на котором выбирались значения; версию сборки — привязка к языку входит в сборку 2.268 «Скульптор», на более ранних сборках подсказки показывались вперемешку и выбор чужой подсказки давал ошибку про значение вне списка. Мест в ряду всего три, и они общие для всех языков: выбор на новом языке вытесняет самую старую подсказку, сделанную на прежнем.

**Решение:** настраивать ничего не нужно — подсказки на новом языке накопятся по мере выбора значений, а сохранённые до обновления не показываются ни при каком языке и вытесняются новыми. **Когда обращаться в поддержку 1Ф:** если подсказки не появляются и после выбора значений на текущем языке на сборке 2.268 «Скульптор» или новее — приложить ID параметра, язык профиля и номер сборки.


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

### 8.11 Клик по ссылке в поле «Ссылка» открывает не то — конференцию, другую задачу или ничего

**Симптом:** клик по значению поля типа «Ссылка» в карточке задачи или в форме создания ведёт себя не как обычная ссылка: открывается видеоконференция вместо вкладки, окно карточки закрывается, внутри открывается другая задача, в окне вида «Календарь» карточка пропадает без перехода. Иногда наоборот — вместо новой вкладки ничего не открывается, и помогает только Ctrl+клик.

**Ожидаемое поведение:** в браузере ссылка из поля открывается как есть в новой вкладке, окно карточки остаётся на месте. `mailto:`, `tel:` и `e1c:` открывают системное приложение. В десктоп-клиенте и PWA поведение прежнее: там ссылка на видеоконференцию открывает конференцию внутри приложения.

**Что проверить:**

- версию сборки: исправление вошло в сборку 2.268 «Скульптор»; на более ранних сборках описанное поведение сохраняется;
- режим интерфейса — браузер, десктоп-клиент или PWA: в двух последних режимах новое правило не действует;
- какой контекст: карточка открыта целиком, во всплывающем окне или в окне вида «Календарь» — ожидаемый результат одинаковый;
- в инструментах разработчика у якоря поля в браузере должны быть `target="_blank"` (для `http`/`https`) и `data-vh-self-handled-link`;
- значение поля: с адресом конференции поведение в браузере и в десктоп-клиенте различается намеренно, это не дефект;
- не относится ли случай к ссылкам вне поля — в комментариях и в описании задачи ссылка на видеоконференцию открывает конференцию, и это правильное поведение.

**Решение:** обновить площадку до сборки с исправлением. До обновления обходной путь — открывать значение поля через Ctrl+клик или пункт контекстного меню «Открыть ссылку в новой вкладке».
### 9.1 ДП не работают / некорректно работают на мобильном

**Симптом:** ДП невозможно заполнить на iOS/Android, текстовое ДП работает некорректно, поиск в SelectUsers не ищет по группам/оргединицам, API файлов ДП не работает в мобильном приложении (Андромеда).

**Что проверить:**

- Платформа: iOS или Android
- Версия мобильного приложения
- Тип ДП — какие именно ДП не работают
- Для API: проверить маршрут `/app/v1.2/api/files/eps/{taskId}/{extParamId}` — работает ли на вебе

**Решение:**

- Уточнить тип ДП и платформу — ряд типов имеют ограниченную поддержку на мобильных
- Для SelectUsers на iOS: поиск по оргединицам может не поддерживаться в текущей версии
- Обновить мобильное приложение до последней версии
- Если проблема на актуальной версии — обращение в поддержку 1Ф с указанием: платформа, версия МП, тип ДП, шаги воспроизведения

---

### 10. Взаимодействие со списком задач

**10.1 Изменение ДП в списке задач без обязательного комментария**

**Симптом:** пользователь может изменить ДП прямо в списке задач, минуя проверку обязательного комментария.

**Это известное ограничение:** редактирование ДП в гриде может не проходить через все валидации карточки задачи.

**10.2 ДП определённых типов нельзя добавить в список задач**

**Симптом:** нельзя добавить ДП с типом «Выбор нескольких задач» (Multilookup) в колонки списка задач.

**Решение:** не все типы ДП поддерживаются как колонки списка задач. Это ограничение системы.

---

**11. Смарт-выражения и ДП**

**11.1 Смарт-выражение возвращает неожиданный результат**

**Симптом:** после обновления версии смарт-выражение для ДП стало работать иначе (например, пустой список вместо строки при конкатенации с незаполненным ДП).

**Что проверить:**

- Версию, на которой работало и на которой сломалось
- Текст смарт-выражения
- Типы ДП, используемых в выражении

**Решение:**

- Зафиксировать: выражение, версию до и после, ожидаемый и фактический результат
- Обращение в поддержку 1Ф (как регрессия)

---

**12. Локализация ДП**

### 12.1 Элементы интерфейса ДП не локализованы

**Симптом:** кнопки, привязанные к ДП, не переводятся на язык пользователя. Группы блоков ДП не локализованы. Таблица истории изменений ДП отображается без перевода.

**Что проверить:**

- Язык интерфейса пользователя
- Настроена ли локализация для кнопок/блоков ДП в AdminSPA
- Версия системы — локализация некоторых элементов добавлена в свежих версиях

**Решение:**

- Для кнопок: проверить, заполнены ли переводы в настройках кнопки ДП
- Для групп блоков: локализация групп блоков может не поддерживаться — уточнить в текущей версии
- Для истории изменений: известная проблема, не локализована — обращение в поддержку 1Ф как запрос на доработку

**Подписи «Да» и «Нет» у ДП «Флажок».** Логическое значение ДП «Флажок» показывается текстом на языке интерфейса: в колонке ДП таблицы резолюций, в снимке задачи и в карточке задачи мобильного приложения. На русском интерфейсе это «Да» и «Нет», на остальных языках — перевод из словаря языка с откатом на английский, затем на русский. Если подпись не меняется при смене языка интерфейса, проверьте, что язык сохранён в профиле пользователя и что в файле этого языка заполнены ключи блока `common`.

---

### 12.2 Значение локализуемого ДП не сохраняется, если в категории запрашивается комментарий

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

**Что проверить:**

- версию сборки: исправление вошло в сборку 2.268 «Скульптор», на более ранних сборках симптом воспроизводится;
- тип параметра и признак локализации: под удар попадают локализуемые текстовые параметры, для которых включено «Требовать комментарий при изменении»;
- сохраняется ли то же изменение в этой же категории без окна комментария — если без окна значение записывается, это тот самый случай.

**Решение:** обновиться до сборки 2.268 «Скульптор» или новее; перестраивать настройки категории не нужно.

**Когда обращаться в поддержку 1Ф:** если на сборке 2.268 «Скульптор» или новее значение локализуемого ДП по-прежнему теряется при сохранении с комментарием — приложить ID категории, ID параметра с его типом и признаком локализации, ID задачи и номер сборки.

**13. Копирование значений ДП**

### 13.1 Некорректное копирование ДП при создании задачи

**Симптом:** при копировании задачи или создании подзадачи значения ДП копируются некорректно — лишние ДП копируются, нужные не копируются, или значения искажаются.

**Что проверить:**

- Настройку «Копировать значение из родительской задачи» для каждого ДП
- Тип ДП — не все типы корректно копируются (Таблица, Мультилукап — особые случаи)
- Метод создания: через кнопку «Копировать», через смарт, через API

**Решение:**

- Проверить настройку копирования в параметрах ДП в категории
- Для смартов: проверить, явно ли заполняются ДП в смарте или ожидается автокопирование
- Если копирование через API — проверить, передаются ли значения ДП в запросе

**13.2 Запрет копирования текста из ДП**

**Симптом:** пользователь хочет запретить пользователям копировать содержимое ДП (Ctrl+C).

**Решение:**

- Штатного механизма запрета копирования текста из ДП нет
- Можно реализовать через пользовательскый JS (SmartScript), но это неполная защита (данные доступны через API)
- Зафиксировать как запрос на доработку

---

**14. API для работы с ДП**

### 14.1 Получение и обновление значений ДП через API

**Симптом:** пользователь спрашивает, как получить все ДП задачи через API, как обновить ДП типа «Файл» через API, как работать с ДП из Lua-скриптов.

**Что проверить:**

- Цель: чтение или запись ДП
- Тип ДП (простые типы, файл, мультилукап, таблица — разные маршруты)

**Решение:**

- Чтение всех ДП задачи: `GET /api/task/{taskId}` возвращает ДП в блоке ExtParams
- Обновление простых ДП: `POST /api/extParams/update`
- Обновление ДП Файл: `POST /api/files/upload/ToPreUploadedFiles` → затем привязка к ДП
- Синхронизация с 1С: для лукапов использовать `TCLookupGUIDEPID` — указывать ID ДП-лукапа
- Lua: доступ к ДП через `task.ExtParams[epId]`, запись через `task:SetExtParam(epId, value)`

---

## Чеклист для первичной диагностики ДП и обращения в поддержку 1Ф

Что уточнить по любой проблеме с ДП:

1. **Версия системы** — какая версия у пользователя
2. **ID категории и ID ДП** — всегда запрашивать
3. **Тип ДП** — уточнить (Text, Lookup, Table, Through, File, SelectUsers и т.д.)
4. **Воспроизводимость** — стабильно или периодически
5. **Платформа** — web, мобильное, AdminSPA
6. **Скриншот/видео** — попросить при неочевидных проблемах
7. **Текст ошибки** — если есть, включая консоль браузера (F12)

**Когда обращаться в поддержку 1Ф**

Обратитесь в поддержку 1Ф, если столкнулись с одним из следующих:

- Потеря данных (значения ДП исчезли)
- NullReferenceException или серверные ошибки
- Регрессия после обновления (работало, перестало)
- Проблема воспроизводится стабильно, все настройки проверены
- Проблема с производительностью (таймауты)
