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


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 - "не судите, да не судимы будете" (с)



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует