Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Баг Форма.ТолькоПросмотр(0) (число прочтений - 4830 )
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Баг Форма.ТолькоПросмотр(0)
05. Января 2008 :: 15:40
Печать  
Работаю над задачей временной блокировки формы документа при работе пользователя с подчиненной формой (формой подбора, например). При открытии подчиненной формы вызываю Форма.ТолькоПросмотр(1). При завершении работы с подчиненной формой вызываю Форма.ТолькоПросмотр(0). При этом наблюдаю следующий глюк:
1. Игнорируются установленные в конфигураторе признаки реквизитов "Видимость", "Доступность", "Редактирование", т.е. недоступные при открытии формы реквизиты доступны для изменения, срабатывают формулы, прописанные в реквизитах. Очень опасный баг!!! Лечится вызовом Форма.ИспользоватьСлой("Базовый", 2) (у моего документа используется один слой).
2. Все реквизиты, имеющие агрегатный тип данных (справочники, документы, перечисления) становятся доступны для редактирования СТРОКОВОГО ПРЕДСТАВЛЕНИЯ!!! Т.е. поле реквизита слева от кнопки выбора доступно для введения символов. Не удалось ничем вылечить, т.е. вызов методов Доступность, Видимость, Редактирование, ИспользоватьСлой, Обновить ничего не дал.

Кто-то сталкивался с подобным и как это можно обойти?

1С v7.70.20 SQL, база DBF, WinXP Pro SP2
Используется 1С++ 2.0.3.3, но я проверял и без нее - тот же эффект.
  

Primer_001.JPG ( 30 KB | Загрузки )
Primer_001.JPG
Наверх
ICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Баг Форма.ТолькоПросмотр(0)
Ответ #1 - 05. Января 2008 :: 16:00
Печать  
Есть такие эфекты.
Когда ковыряешь "1crcrus.dll" диалог там подрастянуть или еще ченить.
У меня после этого флажки на форме превращались с поля ввода с педалькой и т.п. эффекты.
Недавно замучался, полез в панель свойств, начал "растягивать" контролы, так у меня в конфиге такое было (((((.
заип.... эта 1С-сина. Не поправить норомально, не доделать....
  
Наверх
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: Баг Форма.ТолькоПросмотр(0)
Ответ #2 - 05. Января 2008 :: 16:11
Печать  
trdm писал(а) 05. Января 2008 :: 16:00:
Есть такие эфекты.
Когда ковыряешь "1crcrus.dll" диалог там подрастянуть или еще ченить.
У меня после этого флажки на форме превращались с поля ввода с педалькой и т.п. эффекты.
Недавно замучался, полез в панель свойств, начал "растягивать" контролы, так у меня в конфиге такое было (((((.
заип.... эта 1С-сина. Не поправить норомально, не доделать....


1С-ка не патченная, ничего в ресурсах не менял. Имхо, недоглядели разработчики 1С - тупо не восстановили значения видимости-доступности реквизитов.

Че-то сделать мона? Немного раздражают поля с педальками Улыбка, основная проблема - восстановление изначальной видимости-доступности реквизитов - решена.
  
Наверх
ICQ  
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: Баг Форма.ТолькоПросмотр(0)
Ответ #3 - 05. Января 2008 :: 17:20
Печать  
Thor писал(а) 05. Января 2008 :: 15:40:
Лечится вызовом Форма.ИспользоватьСлой("Базовый", 2)

Не лечится Печаль. Доступность восстанавливается, видимость нет - все невидимые реквизиты становятся видимыми.
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Баг Форма.ТолькоПросмотр(0)
Ответ #4 - 05. Января 2008 :: 19:16
Печать  
Thor писал(а) 05. Января 2008 :: 15:40:
1. Игнорируются установленные в конфигураторе признаки реквизитов "Видимость", "Доступность", "Редактирование", т.е. недоступные при открытии формы реквизиты доступны для изменения

Эти свойства реквизитов вообще отрабатывают только при первом открытии формы.
Даже при простой смене закладок они игнорируются. То есть простое "перещелкивание" закладок открывает доступы и видимости всех реквизитов.

Так что единственный 100% рабочий способ - это управлять видимостями и доступностью из кода, с помощью методов Видимость() и Доступность().
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Баг Форма.ТолькоПросмотр(0)
Ответ #5 - 05. Января 2008 :: 19:20
Печать  
Thor писал(а) 05. Января 2008 :: 15:40:
2. Все реквизиты, имеющие агрегатный тип данных (справочники, документы, перечисления) становятся доступны для редактирования СТРОКОВОГО ПРЕДСТАВЛЕНИЯ!!! Т.е. поле реквизита слева от кнопки выбора доступно для введения символов. Не удалось ничем вылечить, т.е. вызов методов Доступность, Видимость, Редактирование, ИспользоватьСлой, Обновить ничего не дал.

А вот это мощный эффект. Проверь на 27-м релизе, если там тоже самое, то я бы на твоем месте написал бы в 1С. Они могут конечно отбрехаться, сказать, что баг этот некритичный, что-нибудь посоветуют, как обойти...

Вообще, я так думаю, что 1С-ники не предполагали, что кому-то понадобится перещелкивать режим доступности документа в процессе работы. То есть установили один раз - и так и работаем, и нечего его менять, пустое это Улыбка
  
Наверх
www  
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: Баг Форма.ТолькоПросмотр(0)
Ответ #6 - 05. Января 2008 :: 20:43
Печать  
fez писал(а) 05. Января 2008 :: 19:16:
Thor писал(а) 05. Января 2008 :: 15:40:
1. Игнорируются установленные в конфигураторе признаки реквизитов "Видимость", "Доступность", "Редактирование", т.е. недоступные при открытии формы реквизиты доступны для изменения

Эти свойства реквизитов вообще отрабатывают только при первом открытии формы.
Даже при простой смене закладок они игнорируются. То есть простое "перещелкивание" закладок открывает доступы и видимости всех реквизитов.

Так что единственный 100% рабочий способ - это управлять видимостями и доступностью из кода, с помощью методов Видимость() и Доступность().

Согласен, определенная логика в текущей схеме работы 1С-ки есть. Если отображение реквизита может в любой момент измениться, то непонятно, каким оно должно быть после восстановления доступности формы.
Но такое поведение странно выглядит. Было нормальное отображение, а тут на тебе - все в одну кучу. Все-таки статистически для большинстве форм достаточно настроек конфигуратора. Более правильно ИМХО запоминать параметры отображения перед блокированием, а после блокирования восстанавливать. Тем более что изменения в форме не могут вноситься. Ну да ладно - подобную функциональность можно самому реализовать.

Цитата:
Вообще, я так думаю, что 1С-ники не предполагали, что кому-то понадобится перещелкивать режим доступности документа в процессе работы. То есть установили один раз - и так и работаем, и нечего его менять, пустое это

Честно говоря, первый раз использую Форма.ТолькоПросмотр(0). Я думаю, это показательный пример. Если ТолькоПросмотр(1) используется часто и понятно, для чего его использовать, то для чего нужен ТолькоПросмотр(0), тем более если он криво работает? Единственный пример нарыл поиском - установка через переданный контекст формы новых значений для реквизитов формы. Если форма в режиме просмотра, то присвоить новые значения не удастся (сам не проверял!!!).
  
Наверх
ICQ  
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: Баг Форма.ТолькоПросмотр(0)
Ответ #7 - 05. Января 2008 :: 20:54
Печать  
fez писал(а) 05. Января 2008 :: 19:20:
А вот это мощный эффект. Проверь на 27-м релизе, если там тоже самое, то я бы на твоем месте написал бы в 1С. Они могут конечно отбрехаться, сказать, что баг этот некритичный, что-нибудь посоветуют, как обойти...

Нет у меня 27 релиза. Народ, если у кого-то есть 27, протестите пожалуйста. Мне уже не горит, так, ради принципа.
Обошелся блокированием изменения многострочной части. Форма.МногострочнаяЧасть.Доступность(0) не работает, табличная часть доступна для редактирования. Хотя Форма.МногострочнаяЧасть.Видимость(0) работает Озадачен
Выкрутился через использовние глобальной переменной формы. В нужных местах ставлю флаг, а в предопределенных процедурах работы с многострочной частью вызываю СтатусВозврата(0)
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать