Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=38302)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Как записать постоянное значение индивидуального доступа

Автор: Gigi 03.07.17, 14:07

Всем привет!
Уважаемые форумчане.. вообще сам вопрос возник не от сильно глубокого понимания принципа работы клиента и сервера. Хотя я просматривал инфу по страницам, говориться о принципе работы и обмена между клиентом и сервером, но че то не нашел инфу о том, как создать индивидуальную для каждого клиента постоянную запись.
Что бы как работало?
Допустим один пользователь выбрал отчетный месяц и значение выбранного им отч. месяца тут же записывается в константу. Т.е. через событие ПриИзминении
А ПриОткрытии формы в нужном поле отображается в последний раз записанное в константу значение.
Вроде все нормально, но не совсем.
Нужно, что бы было так как изложил, но только для одного компьютера.
Просто я точно не знаю, но .... если данные записываются в константу это ведь для всех пользователей (компов) будет общим ... настолько я понимаю.
Нужно, что бы запись была постоянная, пока ее сам пользователь не изменит, но ЧТО БЫ ОНА МЕНЯЛАСЬ И ОТОБРАЖАЛАСЬ ТОЛЬКО ДЛЯ ОДНОГО КЛИЕНТА (ПК).
Т.е. что бы значение хранилось постоянно, но что оно было ИНДИВИДУАЛЬНЫМ ДЛЯ КАЖДОГО ПОЛЬЗОВАТЕЛЯ.
Вот что нужно.
Как оптимальнее это сделать?
И через какой элемент в конфигурации для упр. приложений?
Буду признателен!

Автор: Petre 03.07.17, 14:11

Gigi @ Сегодня, 15:07 * ,
ОМГ. При чем здесь константы. Откройте для себя параметры пользователя.

Автор: Gigi 03.07.17, 14:24

Petre @ Сегодня, 14:11 * ,

Цитата
ОМГ. При чем здесь константы. Откройте для себя параметры пользователя.

Имеется ввиду открыть "Роли"? Это сделал ... группа пользователей только одна ... создавать больше нет надобности.
Дело в том, что нужно для всех пользователей одно и то же, но запись всего каких то пару значений индивидуально для каждого.
А параметры пользователя это как? Это где в конфигурации? Там где "общие" ?

Автор: Flexy 03.07.17, 14:33

Используйте АвтоматическоеСохранениеДанныхВНастройках. Это в свойствах формы.

Автор: Gigi 03.07.17, 14:58

Flexy @ Сегодня, 14:33 * ,

Цитата
Чтобы автоматически сохранять значения реквизитов на произвольной форме, надо сделать следующее:
1. В дереве элементов фомы выбрать корень "Форма". В свойствах установить:
АвтоматическоеСохранениеДанныхВНастройках - Использовать
2. После этого действия в области реквизитов появится колонка "Сохраненять данный в настройках". Нужно поставить галочки возле тех реквизитов, состояние которых нужно сохранять.
http://pro1c.org.ua/redirect.php?http://webhamster.ru/mytetrashare/index/mtb0/13547126217zquzpaet3

Ну ладно понял и сделал.
А дальше что?
Как получить это самое: "АвтоматическоеСохранениеДанныхВНастройках"?
И как их получить при открытии? Или как удалять при закрытии формы, сеанса и т.д. Т.е. свободно делать как требуется для конкр. случая.
Допустим Поле: Объект.ОтчМесяц и поле Объект.ЮрЛицо
Первое нужно, что бы постоянно хранилось и менялось только ПриИзменении.
А второе нужно, что бы оно записывалось ПриОткрытии формы, а при закрытии стиралось.
И главное, все это ИНДИВИДУАЛЬНО ДЛЯ КАЖДОГО ПК.
Блиин! Нуждаюсь в более детально пояснении ... не обессудьте ... знал бы как не спрашивал бы.
Буду признателен!

Автор: Flexy 03.07.17, 15:01

Gigi @ Сегодня, 14:58 * ,
Что бы рулить сохраненными значениями формы есть события формы:

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
    //Вставить содержимое обработчика
КонецПроцедуры

&НаСервере
Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
    //Вставить содержимое обработчика
КонецПроцедуры

Там уже можно писать свою логику.

Автор: Gigi 03.07.17, 15:11

Flexy @ Сегодня, 15:01 * ,
Дааа .... много не знаю ... вожусь уже месяца три.
Ладно! попробую ... если че опять буду просить помощи.
Спасибо!

Автор: Gigi 03.07.17, 21:04

Gigi @ Сегодня, 15:11 * ,
продолжаю начатую тему... потому, что опять нужна помощь
хотя знаю что это уже занудство ... ну да... достал уже ...но все таки..
Сделал как было сказано поставил галочки там где нужно, и форма сохраняет значение и при перезапуске отображает последние значения.
Но к сказанному мной забыл добавить.
Дело в том, что нужно то, что получилось в результате: АвтоматическоеСохранениеДанныхВНастройках - Использовать
только плюс к этому что бы сохраненное таким образом значение формы, можно было получить в другую форму.
Т.е. допустим на формеЭлемента справочника1 стоит АвтоматическоеСохранениеДанныхВНастройках - Использовать
А у формыЭлемента Справочника2 нет.
Нужно, для формы справочника2 получить то, что сохранила Форма элемента справочника1
Нигде не нашел команду как это сделать блин.
Гууу ... занудство ... но опять нужна помощь.
И поподробнее просто код.
На пример при открытии ФормыЭлемента справочника2

Процедура ПриОткрытии(отказ)
//Тут нужен КОД как получить сохраненные данные формыЭлемента на пример справочника1
КонецПроцеджуры


Буду очень благодарен!

Автор: Bernet 03.07.17, 22:12

Gigi @ Сегодня, 22:04 * ,
Если конфигурация типовая, то там можно использовать регистр сведений "Сохраненные настройки".
Если же самописная, то можете сделать по аналогии у себя. Примерно так:
Структура регистра, измерения:
- Пользователь (СправочникСсылка.Пользователи, сюда пишете какого пользователя у вас настройка)
- ИмяОбъекта (Строка (100), строковое название объекта, например "Обработка.МояОбработка");
- НаименованиеНастройки (Строка (100), ваше наименование настройки)
Ресурсы:
- СохраненнаяНастройка (ХранилищеЗначения, сюда запихиваете параметр с типов "ХранилищеЗначения" в котором можете хранить что угодно: таблицу, структуру, массив).

Применение примерно следующее: в форме настройки которой хотите сохранить, вызываете такую процедурку:

Процедура СохранитьНастройкуПользователя()

СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("ЧетоХраним", "Я хз что");
СтруктураНастройки.Вставить("ЧетоХраним2", "Опять я хз");

МенеджерЗаписи = РегистрыСведений.СохраненныеНастройки.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Пользователь = ПараметрыСеанса.ТекущийПользователь;
МенеджерЗаписи.ИмяОбъекта   = "ВашОбъектСтрокой";
МенеджерЗаписи.НаименованиеНастройки = "ИмяВашейНастройки";
МенеджерЗаписи.СохраненнаяНастройка = Новый ХранилищеЗначения(СтруктураНастройки);
МенеджерЗаписи.Записать(Истина);
КонецПроцедуры


В форме где необходимо получить эту настройку, вызываете
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    СохраненныеНастройки.СохраненнаяНастройка
|ИЗ
|    РегистрСведений.СохраненныеНастройки  КАК СохраненныеНастройки
|ГДЕ
|    СохраненныеНастройки.Пользователь = &Пользователь
|    И СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
|    И СохраненныеНастройки.НаименованиеНАстройки = &ИмяНастройки
|";
Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.ТекущийПользователь);
Запрос.УстановитьПараметр("ИмяОбъекта", "ВашОбъектСтрокой");
Запрос.УстановитьПараметр("ИмяНастройки", "ИмяВашейНастройки");

Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
      Выборка = Результат.Выбрать();
      Выборка.Следующий();
      ХранилищеНастройки = Выборка.СохраненнаяНастройка;
      СтруктураНастройки = ХранилищеНастройки.Получить(); // ВОТ ТУТ И ПОЛУЧИЛИ НУЖНУЮ ВАМ СТРУКТУРУ

          Сообщить(СтруктураНастройки.ЧетоХраним);
          Сообщить(СтруктураНастройки.ЧетоХраним2);
КонецЕсли;

Автор: Gigi 03.07.17, 23:01

Bernet @ Сегодня, 22:12 * ,
Отлично!
Ну отвечаю ... все равно без форума никак.
Ну где я в учебнике смог бы найти все это?
Там в общих чертах и довольно скупо и размыто.
Спасибо!
Протестю ... думаю вот это уже то, что нужно...
гууу .. как я завис уже.. никак закончить не могу это одно дело.
Ладно! Еще раз спасибо!


Автор: Bernet 04.07.17, 10:40

Gigi @ Сегодня, 0:01 * ,

Цитата
Ну где я в учебнике смог бы найти все это?

На этот счет есть очень хорошая поговорка:
Цитата
Опыт как и половое бессилие приходит с годами (с)

А так, метод тыка рулит, самый лучший учитель =)

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua