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

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

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

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

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

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

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

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

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

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