|
ХранилищеЗначения и внешняя обработка | ☑ | ||
---|---|---|---|---|
0
Aradel3d
24.02.15
✎
11:57
|
Добрый день!
Не могу разобраться с хранилищем значения. В примерах создают новое ХранилищеЗначения, помещают туда данные, затем считывают, когда переменная уже объявлена. Так и у меня работает. Однако мне нужно получать данные из хранилища при открытии формы, в этот момент разумеется моя переменная-хранилище еще не создана. А если и создать, то там по идее будет пусто, неопределено. Также находил пример использования ХЗ в документах-справочниках, там объявляют реквизит ХЗ и записывают документ со значением. А после у них есть метод получить(). Но как быть внешней обработкой? |
|||
1
Aradel3d
24.02.15
✎
11:58
|
Форма обычная.
|
|||
2
hawksib
24.02.15
✎
11:59
|
В переменную среды запишите значение
|
|||
3
Aradel3d
24.02.15
✎
12:06
|
Как? Есть реквизит внешней обработки "Хранилище" с типом произвольный, туда помещаю НОВЫЙ ХранилищеЗначения(Организация). Это ведь не документ, как записать внешнюю обработку?
|
|||
4
hawksib
24.02.15
✎
12:09
|
помещайте НОВЫЙ чето там не в реквизит внешней обработки, а в переменную среды, прочитайте про метод СохранитьЗначение(Имя, Значение) в справке
|
|||
5
D_E_S_131
24.02.15
✎
12:09
|
Ну сохранять как параметры формы можно, используя предопределенные процедуры "ПриСохранении" и "ПослеВосстановления".
|
|||
6
Aradel3d
24.02.15
✎
12:11
|
Ненене (5) я поэтому и занялся изучением Хранилища, т.к. велено отказаться от стандартного сохранить восстановить настройки.
|
|||
7
hawksib
24.02.15
✎
12:14
|
(6) реквизиты внешней обработки должны быть куда-нибудь записаны, когда форма открывается, если не запрограммировано заполнение реквизитов, это нормально, что реквизиты обработки не заполнены
|
|||
8
Aradel3d
24.02.15
✎
12:25
|
(7) и все-таки не могу понять...
Моя задача такая: уйти от "Сохранить/восстановить значения" из-за того, что они постоянно слетают у пользователей, а настроек много. Сказано задействовать ХранилищеЗначения. Но при этом мне не ясно: 1) не тоже самое ли это, что и в предыдущем случае т.к. вы упомянули про СохранитьЗначение, а там сказано про связку информационная база - пользователь 2) Сохранил значения, при след. открытии формы реквизит также Неопределено, никакого получить() разумеется не содержит. Не могли бы вы объяснить целостно механизм? |
|||
9
Boroda
24.02.15
✎
12:36
|
Может посмотреть в сторону "Внешние отчеты и обработки" УТ11? Там вроде как и пример есть загрузки прайс-листа, где как раз используется хранилище значения для хранения настроек.
|
|||
10
hawksib
24.02.15
✎
12:54
|
(8) если слетают настройки, непонятно почему! (причем непонятно мне, ни разу не сталкивался) как вариант сохраняйте настойку в файл на диске, а при открытии формы восстанавливайте их из файла, пример можете в моей обработке глянуть http://infostart.ru/public/150719/
в файлик я сохранял "структуру группировок документов информационной базы" |
|||
11
Aradel3d
24.02.15
✎
13:00
|
(10) Хотелось бы узнать - есть ли разница в таком случае между сохранением настроек по кнопкам на форме и программной записью в хранилище? Т.е. если связка слетает, то в обоих случаях один эффект?
|
|||
12
hawksib
24.02.15
✎
13:06
|
думаю что есть
Глобальный контекст (Global context) ХранилищаНастроек (SettingsStorages) Использование: Только чтение. Описание: Тип: ХранилищаНастроекМенеджер. Предназначено для доступа к хранилищам настроек, которые созданы в конфигурации. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Не дает доступа к стандартному хранилищу. ХранилищеЗначения (ValueStorage) Методы: Получить (Get) Конструкторы: На основании значения Описание: Предназначен для хранения значения в специальном формате. Он может быть записан в поля базы данных, имеющие соответствующий тип. Это позволяет сохранять в базе данных значения, тип которых не может быть выбран в качестве типа поля, например, Картинка. Большинство объектов, которые имеют неизменяемое значение, а также универсальные коллекции, могут быть помещены в ХранилищеЗначения. К значению, хранящемуся в объекте, нельзя обращаться, его можно только извлечь из хранилища. Описания типов объектов, которые могут быть помещены в ХранилищеЗначения, включают текст "Сериализуется". Замечание! Не рекомендуется хранить в реквизитах типа ХранилищеЗначения ссылки на другие объекты базы данных. Важно! В системе не поддерживается ссылочная целостность по объектам, сохраненным в базе данных в полях типа ХранилищеЗначения. Это означает, что при попытке удаления, например, элементов справочников система не контролирует ссылки на эти элементы, сохраненные в ХранилищеЗначения. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: ValueStorage. Пример: МояКартинка = Новый Картинка("C:\Мои документы\Картинка1.bmp"); ХранилищеКартинки = Новый ХранилищеЗначения(МояКартинка); НовНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); НовНоменклатура.Наименование = "Диван ""Маргарита"""; НовНоменклатура.Изображение = ХранилищеКартинки; НовНоменклатура.Записать(); См. также: ДвоичныеДанные, метод Записать |
|||
13
D_E_S_131
24.02.15
✎
13:25
|
(11) Разница в том, что можно сохранить что-то, что не выведено как реквизит на форме. А вообще в типовых конфигурациях бывает, что уже есть какой-нибудь регистр сведений для хранения информации. Я вот, например, как-то делал для УТ 10.3 печатную форму ТТН. Для заполнения нужных полей для формирования ТТН предварительно открывалась форма. Тут же потребовалось сохранить введенные данные на форме. Стал закидывать их в XML, а файл XML сохранять через механизм прикрепленных файлов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |