Формулировка проблемы: на данный момент доступ
к значениям компонентов формы реестра, которые находятся внутри
динамической таблицы, осуществляется при помощи составного
идентификатора, содержащего идентификатор динамической таблицы
(например, dyntable
) и идентификатор компонента,
содержащегося в ней (например, componentID
),
соединённых между собой точкой:
dyntable.componentID
В связи с такой реализацией даже «обычные» компоненты, которые не находятся внутри динамической таблицы, но содержат в своем имени точку, обрабатываются некорректно (например, они не попадают в список «Поля формы реестра»).
Решение: для того, чтобы предотвратить
вышеописанную проблему, необходимо впредь запретить задавать
компонентам идентификаторы, содержащие точку. Для этого в момент
сохранения формы необходимо добавить валидацию на невозможность
использования символа .
(точка) в имени
компонента. При попытке сохранить невалидное значение выдавать
сообщение-ошибку (см. ниже) в левом нижнем углу редактора форм а
также подсвечивать соответствующую ячейку красным цветом. При
пересохранении идентификатора компонента выделение ячейки должно
сняться.
На длину следующих сообщений-ошибок накладывается ограничение по длине: текст ошибки не должен превышать 3 строк, последующее перечисление идентификаторов необходимо обрезать.
Возможные ошибки:
Идентификаторы следующих компонентов не должны содержать точку:
%id1%
,%id2%
,%id3%
В форме имеются компоненты с одинаковым идентификатором
%id1%
,%id2%
,%id3%
После обновления системы проверка на невалидное значение имени компонента в уже существующих формах должна происходить только при открытии и последующем сохранении самой формы, которая содержит такой компонент.