Вход | Регистрация


1С:Предприятие ::

Метки:

Проблема с открытием формы списка документов.

Я
   Byasha
 
10.08.17 - 15:21
В комплексной, той которая второй редакции, есть документ "Пересчет товаров". У документа есть форма списка, в которой устанавливается отбор по складу.
Замечательно. До недавнего времени не было необходимости ограничений доступа по складам. Соответственно у пользователя при открытии формы восстанавливалось значение отбора по складу, который у него был указан при закрытии формы. Но потом включили ограничение доступа по складам, и доступ к этому складу был ограничен. Теперь при попытке открытия формы списка документов выдается ошибка. Ошибка возникает при попытке получения значения реквизита склада, к которому у пользователя ограничен доступ. Если смотреть в отладчике - это видно. Но возникает вопрос. Через отладчик можно очистить значение, например, установить пустую ссылку. Тогда проверка проходит без ошибок и форма открывается. Но это если "под рукой" есть тот у кого есть доступ к конфигуратору и отладчику и есть соответствующие права. А что делать есть "под рукой" такого человека нет? Т.е. как выполнить очистку значений которые фиксируются при закрытии формы, и потом восстанавливаются при ее открытии из режима предприятия? Например пользователем с полными правами. Вопрос насущный, потому что сейчас настраиваются ограничения доступа к данным и в дальнейшем таких ситуаций предвидится не мало.
Кто-сталкивался с подобным?
Обработки из пакета инструмента разработчика БСП не помогают. Конфигурация типовая, запрет на изменение стоит.
 
 
   Галахад
 
1 - 11.08.17 - 05:21
Грохать кэш?
   Byasha
 
2 - 12.08.17 - 00:50
(1) Не очень желательно. Слетят все остальные настройки. Но если других вариантов не найдется, то придется.
   Otark
 
3 - 12.08.17 - 09:39
Открывать, через обработку, которая будет открывать эту форму, очищая заранее нужную ссылку. После этого открывать как обычно.
   Фрэнки
 
4 - 12.08.17 - 14:45
А разве не из хранилища значений считываются предустановленные с прошлого сеанса настройки пользователя?
   rudnitskij
 
5 - 12.08.17 - 22:05
(2) настройки в кэше не хранятся
   wertyu
 
6 - 12.08.17 - 22:15
(5) а где они хранятся?
   rudnitskij
 
7 - 12.08.17 - 22:19
(6) смотря какие. Часть в регистре сведений "Настройки пользователей", часть в "Дополнительные настройки пользователей", настройки форм - в хранилище значений
   wertyu
 
8 - 12.08.17 - 22:23
Настройки форм?
   rudnitskij
 
9 - 12.08.17 - 22:24
(8) отборы, сортировки, настройки отчетов, вот это вот всё
   wertyu
 
10 - 12.08.17 - 22:29
(9) может не хранилище значений?
 
  Рекламное место пустует
   rudnitskij
 
11 - 12.08.17 - 22:31
(10) а что по вашему?
   rudnitskij
 
12 - 12.08.17 - 22:31
(10) мне как-то надо было получать настройки отчета определенного пользователя - я их программным путем получал из хранилища значений. Из кэша вы программно ничего не получите, при всем желании
   wertyu
 
13 - 12.08.17 - 23:50
скорее всего, что тут более не то
   wertyu
 
14 - 12.08.17 - 23:50
да, правильный ответ в (1)
   Фрэнки
 
15 - 13.08.17 - 10:12
в понедельник гляну. что там в этой форме выполняется при открытии. Мне самому недавно этот документ на глаза попался и я уже собирался его смотреть, но в выходные - лень открывать конфигуратор :)
   DexterMorgan
 
16 - 13.08.17 - 11:14
(11) ХранилищеНастроек, ХранилищеНастроекДанныхФорм
   rudnitskij
 
17 - 13.08.17 - 11:20
(16) возможно, но точно не кэш
   Byasha
 
18 - 14.08.17 - 19:37
(3) Конфигурация "на замке", встроить туда свой список документов - не получиться. Через дополнительные обработки... ну это как вырезать гланды через ж..
(7) Это вторая редакция, там такого нет.
(17) Точно кэш. Придется все-таки чистить.
Хотя для особо важных пользователей :-), решили на два дня программиста рядом посадить, что бы все основные формы проверить и сразу "подшаманить в отладчике".
   Фрэнки
 
19 - 14.08.17 - 21:54
(18) точно не кэш.
прошел отладчиком, проверил.
---
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
.
.
.
Склад = Справочники.Склады.СкладПоУмолчанию();

затем в экспортной функции видим

        Запрос = Новый Запрос("
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 2
        |    Таблица.Ссылка КАК Склад
        |ИЗ
        |    Справочник.Склады КАК Таблица
        |ГДЕ
        |    НЕ Таблица.ПометкаУдаления
        |    И Таблица.ВыборГруппы В (&ВыборГруппыСкладов)
        |");

ну и так далее - кэш в таком случае не работает
   aleks_default
 
20 - 15.08.17 - 09:50
галку "АвтоматическоеСохранениеПользовательскихНастроек" снять.
   Byasha
 
21 - 15.08.17 - 10:58
(19) Все верно. Но если в выборке более одной записи, то в качестве склада устанавливается пустая ссылка. Этот код отрабатывает верно. И при создании формы в отладчике есть пустая ссылка. А вот уже при открытии формы, появляется значение, которое фиксируется в кэше при закрытии формы. Оно и восстанавливается.
(20) Конфигурация "на замке".
   aleks_default
 
22 - 15.08.17 - 12:35
Есть событие ПередЗагрузкойДанныхИзНастроекНаСервере оно отрабатывает после ПриСозданииНаСервере  но перед ПриОткрытии. Его в принципе можно наверное запихнуть в расширение
   rudnitskij
 
23 - 15.08.17 - 12:47
(18) "Точно кэш. Придется все-таки чистить. " - вам несколько более опытных разработчиков говорят, что настройки в кэше не хранятся, а вы всё упорствуете...У вас религиозные причины какие-то? Батюшка сказал, что в кэше хранятся?
"решили на два дня программиста рядом посадить..." - с этого надо было начать) смотрите, чтоб программиста вместо вас не оставили))
   Byasha
 
24 - 15.08.17 - 14:01
(23) Ну я бы не сказал что упорствую. Однако очистка кэша пользователя помогла. Хотя я не сильно на это надеялся.

Если следовать документации то
"Платформа использует следующие хранилища:
? Системное хранилище – в данное хранилище система сохраняет все возможные настройки, которые нужны для работы платформы. К данным настройкам относятся настройки размеров форм, настройки печати табличного документа и т. п. Полный перечень настроек, сохраняемых в системном хранилище, см. здесь. В качестве системного хранилища настроек всегда используется стандартное хранилище настроек. То есть данные системного хранилища всегда сохраняются в системной таблице информационной базы."
В перечне настроек, сохраняемых в системном хранилище присутствует
"Настройка: значения полей формы при закрытии
? Ключ объекта – является строковым значением, состоящим из полного имени формы и текста /ТекущиеДанные (/CurrentData)."

Конкретно для проблемной формы, в конфигурации не определено хранилище ее настроек, значит используется системное хранилище.
Работать с хранилищем из встроенного языка возможно. НО, поскольку в процессе работы у заказчика присутствуют программисты, и пользователей, которым критично сохранение текущих настроек 3-4 человека, то проще в процессе настройки и тестирования очистить значение через отладчик. За два дня такой способ использовали несколько раз. Писать внешние обработки для работы с системным хранилищем - зря тратить время. В ДАННОМ СЛУЧАЕ.

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

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

Всем спасибо.

PS. Персонально для rudnitskij - "не судите, да не судимы будете" (с)



Список тем форума
Рекламное место пустует   Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует