Конфигуратор: сохраняет также то, что наконфигурил программи
Добавлено: 24 авг 2010, 22:23
Конфигуратор не делает различий, изменена ли конфигурация прикладным кодом или пользователем при ручном конфигурировании. Из-за этого очень часто возникают всякие неприятные ситуации: такие как:
- потеря функциональности,
- снятие протекта с полей, которые нельзя редактировать, что чревато случайной порчей данных.
Пример 1.
Статус-строка для дерева L_KATORG::IBANKS.TRKATB определяется с учетом настройки "Настройки Галактики \ Общие настройки системы \ Доступ к таблицам \ Запретить модификацию \\ Каталога банков":
- если настройка установлена в "нет", то статус-строка не изменяется, остается такой, как была задана для данного дерева при его описании.
- если настройка установлена в "да", то статус-строка меняется программно на другую.
Если отконфигурировать дерево L_KATORG::IBANKS.TRKATB со значением указанной настройки "нет", то получится конфигурационный файл, который не содержит информации об изменившейся статус-строке. Впоследствии при использовании данного конфигурационного файла все будет работать, как и задумывал программист, т.к. статус-строки для разных вариантов значений данной настройки будут разными.
Если отконфигурировать дерево L_KATORG::IBANKS.TRKATB со значением указанной настройки "да", то получится конфигурационный файл, в котором отражено, что пользователь изменил конфигуратором статус-строку для данного дерева (но я это не конфигурил!). Впоследствии функциональность программы будет работать неверно: в режиме для значения настройки "нет" изначальная конфигурация окна будет перекрываться конфигуратором, и не будет видна изначальная статус-строка. В режиме "да" статус строка будет такой, как планировал программист.
Пример 2.
Список M_TRANSP::KAR_WPS.BRTRANSP - после конфигурирования поле "Гос.номер" становится доступно на редактирование,
хотя никто этого не делал при ручном конфигурировании!
object 'c_BRTRANSP_TRANSP.NOMER_Гос._номер' : Column {
Protect = False;
} // c_BRTRANSP_TRANSP.NOMER_Гос._номер : Column
В данном случае возникает опасность случайной порчи данных!
Такие изменения являются нежелательными и всегда неожиданными, поскольку для того чтобы от них предостеречься, нужно, фактически, знать программный код, и знать, что программист меняет конфигуратором, а что нет. Ситуация, с точки зрения конечного пользователя, безвыходная.
НЕОБХОДИМО грамотное решение данной ситуации. Возможно, нужно делать отличия, какие свойства изменены пользователем, а какие программистом, причем в конфигурацию сохранять только пользовательские изменения. Возможны другие варианты решения проблемы...
У кого какие предложения? Кто еще сталкивался? Как боретесь? Что предложить Атлантистам?
- потеря функциональности,
- снятие протекта с полей, которые нельзя редактировать, что чревато случайной порчей данных.
Пример 1.
Статус-строка для дерева L_KATORG::IBANKS.TRKATB определяется с учетом настройки "Настройки Галактики \ Общие настройки системы \ Доступ к таблицам \ Запретить модификацию \\ Каталога банков":
- если настройка установлена в "нет", то статус-строка не изменяется, остается такой, как была задана для данного дерева при его описании.
- если настройка установлена в "да", то статус-строка меняется программно на другую.
Если отконфигурировать дерево L_KATORG::IBANKS.TRKATB со значением указанной настройки "нет", то получится конфигурационный файл, который не содержит информации об изменившейся статус-строке. Впоследствии при использовании данного конфигурационного файла все будет работать, как и задумывал программист, т.к. статус-строки для разных вариантов значений данной настройки будут разными.
Если отконфигурировать дерево L_KATORG::IBANKS.TRKATB со значением указанной настройки "да", то получится конфигурационный файл, в котором отражено, что пользователь изменил конфигуратором статус-строку для данного дерева (но я это не конфигурил!). Впоследствии функциональность программы будет работать неверно: в режиме для значения настройки "нет" изначальная конфигурация окна будет перекрываться конфигуратором, и не будет видна изначальная статус-строка. В режиме "да" статус строка будет такой, как планировал программист.
Пример 2.
Список M_TRANSP::KAR_WPS.BRTRANSP - после конфигурирования поле "Гос.номер" становится доступно на редактирование,
хотя никто этого не делал при ручном конфигурировании!
object 'c_BRTRANSP_TRANSP.NOMER_Гос._номер' : Column {
Protect = False;
} // c_BRTRANSP_TRANSP.NOMER_Гос._номер : Column
В данном случае возникает опасность случайной порчи данных!
Такие изменения являются нежелательными и всегда неожиданными, поскольку для того чтобы от них предостеречься, нужно, фактически, знать программный код, и знать, что программист меняет конфигуратором, а что нет. Ситуация, с точки зрения конечного пользователя, безвыходная.
НЕОБХОДИМО грамотное решение данной ситуации. Возможно, нужно делать отличия, какие свойства изменены пользователем, а какие программистом, причем в конфигурацию сохранять только пользовательские изменения. Возможны другие варианты решения проблемы...
У кого какие предложения? Кто еще сталкивался? Как боретесь? Что предложить Атлантистам?