|
Программное создание элементов форм | ☑ | ||
---|---|---|---|---|
0
slafor
27.03.22
✎
10:02
|
Это даже не вопрос, а просто мысли вслух по теме сообщения.
Делал обновление сильно доработанной конфигурации 1С:Розница 2.3. Магазин автозапчастей от Раруса. И столкнулся с тем, что они стали использовать программное формирование элементов форм для новых реквизитов, которых нет в типовой Рознице. Что-ж, это, конечно, само по себе хорошо, и соответствует стандартам разработки 1С. Если бы не одно Но. Вот, скажем, на форме уже есть элемент с таким же наименованием, а его хотят создать еше раз, но уже программно. И там есть такая интересная "защита" от подобных случаев, но "защита" весьма своеобразная - если возникает подобная ситуация, то пользователь получает сообщение об ошибке внизу экрана (без объяснения причин), а программа продолжает "работать", как ни в чем не бывало. Только остальные элементы формы, которые должны были создастся после этого "ошибочного" элемента, тоже уже создаются. Только об этом тоже ничего не говорится. И, как у меня получилось, из-за того, что я пока не знал о программном создании новых элементов, и сам создал такой же на форме элемента справочника Номенклатуры (ну, мало ли, может это не от Раруса, а от предыдущего программиста элемент), а потом получил сообщение о том, что на форме отсутствуют страницы Шины и Диски, я начал "плясать" именно от этого - и естественно, подумал, что ошибка из-за того, что у меня почему-то не перенеслись новые страницы. Хорошо, что я не стал создавать их вручную, а попытался разобраться более детально. Оказалось, что страницы и другие элементы формы должны были создаться после той, из-за которой и возникла проблема. То есть один элемент помешал созданию всех последующих. И при этом никаких сообщений об этом. Я просто к тому, что могли бы хоть показать сообщение для пользователя, а дальше создавать остальные элементы. Или вывести критическую ошибку, и не дать работать с формой до решения проблемы. Или, что и лучше и логичнее всего - при попытке создания элемента, если на форме уже есть элемент с таким же наименованием, определить его тип и привязку к данным, и если они соответсвуют нужным, просто пропустить создание этого элемента и заняться следующими... А у вас бывали подобные ситуации? |
|||
1
slafor
27.03.22
✎
10:04
|
(0) Извините, поспешил и ошибся. Фразу "Только остальные элементы формы, которые должны были создастся после этого "ошибочного" элемента, тоже уже создаются." конечно же, надо читать так: "Только остальные элементы формы, которые должны были создастся после этого "ошибочного" элемента, тоже уже НЕ создаются."
|
|||
2
acht
27.03.22
✎
10:15
|
(0) Гм. То есть, у тебя претензия к тому, что разработчики Раруса не предполагали, что ты начнешь дорабатывать их фунционал, сделашь что-то несовместимое с их проектным решением, и не показали тебе сообщение о твоей же ошибке?
|
|||
3
slafor
27.03.22
✎
10:35
|
(2) Мысль, конечно, интересная, но я о другом )
Просто когда я делал обновление, я не знал, должны ли их новые элементы создаваться на форме программно, или же они просто руками туда заносятся. Увидел, что он есть в старом релизе, ну и перенес его в новый "ручками" - может, это и не от Раруса вовсе, может, это уже после них сделали. Кстати, "сделашь что-то несовместимое с их проектным решением" - это не ко мне, я всего лишь переношу в новый релиз то, что сделали до меня другие. |
|||
4
slafor
27.03.22
✎
10:36
|
(2) Основная мысль такая, что уж если увидели, что элемент не создается на форме, не надо останавливаться, прекращать создание других элементов, и делать вид, что "все в порядке" )
|
|||
5
acht
27.03.22
✎
10:46
|
(4) Зачем? Чтобы получить заранее неработоспособный результат?
|
|||
6
acht
27.03.22
✎
10:48
|
Пользователь уже получил "сообщение об ошибке внизу экрана", продолжение построение формы приведет к непредсказуемым последствиям.
|
|||
7
slafor
27.03.22
✎
11:16
|
(6) Все правильно. Сообщение он получил. Но форма-то на все равно уже на экране и с ней можно "работать". Сообщение не запрещает ему это делать.
Основная мысль моего сообщения - в его последней фразе: "Или, что и лучше и логичнее всего - при попытке создания элемента, если на форме уже есть элемент с таким же наименованием, определить его тип и привязку к данным, и если они соответствуют нужным, просто пропустить создание этого элемента и заняться следующими". |
|||
8
ДедМорроз
27.03.22
✎
11:23
|
Можно в имя добавляемых элементов включить уникальный идентификатор,вырезав черточки,тогда пересечение очень маловероятно.
Конечно,можно создание обернуть в попытку,но наличие уже созданногл элемента означает,что вся логика работы формы коту под хвост. Предположим,что имя элемента совпадает с существующим,который потом добавили в код,а вот тип и тип значения могут несовпадать. Правда,в управляемых формах,мы только события из элемента получаем - значение-то живет в реквизите,и вот здесь уже хождение по граблям,так как присвоение реквизиту другого типа,обычно,дает результатом или неопределено или пустое значение. |
|||
9
acht
27.03.22
✎
11:28
|
(7) Ну, никто не запрещает делать это персонально тебе.
Точно также никто не запрещает тебе игнорировать сценарии, которые в твоем проектном решении никогда не могут возникнуть. Все ж с чего началось - с того, что ты полез в уже существующее решение и причиной возникновения ошибки явилось именно твое вмешательство. Общего подхода здесь нет и быть не может - ну обнаружил ты, что хочешь вставить флажок, а с таким именем уже существует группа-страница. И как ты это обрабатывать собрался? Или вообще пользователь вытащил колонку в табличную часть и появился элемент с новым именем... Или это автосгенерированный элемент отбора... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |