Имя: Пароль:
1C
1С v8
Получение значений сохраненных реквизитов внешней формы
,
0 НачинающийНик
 
18.02.19
23:20
Извините за дурацкий вопрос, но гуглю уже третий час, никак не могу понять.
Для внешней обработки добавленной в УТ в модуле объекта необходимо получить значения сохраненных (с помощью Автоматического сохранения данных в настройках) реквизитов формы.
Как это сделать?
Нагуглил только НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.ИмяФормы+"/ТекущиеДанные", "");, но уперся в то, что не знаю на что заменить ЭтаФорма.ИмяФормы
1 jsmith82
 
18.02.19
23:35
Настройки доступны в модуле формы обработки в процедуре

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

Далее думай, как Настройки (соответствие) передать в модуль обработки
2 jsmith82
 
18.02.19
23:36
В смысле параметром в нужную процедуру
3 НачинающийНик
 
18.02.19
23:44
В модуле формы понятно, мне же в модуле объекта надо - запуск по расписанию, форма не создается, нужно только прочитать значения сохранённых реквизитов, чтобы выполнять процедуру.
4 НачинающийНик
 
18.02.19
23:49
В Справочнике ДополнительныеОтчетыИОбработки есть хранилище значений Хранилище настроек, по идее нужно оттуда выковыривать.
Вроде бы при выполнении команды передается ПараметрыВыполненияКоманды, только как их посмотреть, отладчиком туда не залезть - внешняя форма.
5 jsmith82
 
19.02.19
00:22
Скачай инструменты разработчика. Там есть просмотрщик хранилищ настроек
6 НачинающийНик
 
19.02.19
02:22
Скачал, нашел эти настройки.
Все равно не понятно как получить данные из сохраненных настроек, из модуля объекта обработки :(

Апну, может кто поопытнее набредет на тему
7 hhhh
 
19.02.19
04:07
(6) сделать свое сохранение настроек. Не путаться с формой.
8 НачинающийНик
 
19.02.19
10:49
Ребят, никто не кинет в меня пример? Туплю жёстко, у меня там и ссылочного типа и СЗ и ТЗ на сохраняется.
9 НачинающийНик
 
19.02.19
10:50
Можно конечно и по простому - через файл. Но хочется красоты и научиться ))
10 Cyberhawk
 
19.02.19
10:51
Меняй архитектуру. Не надо пользоваться тем, что сохранено в реквизитах формы, вне формы
11 НачинающийНик
 
19.02.19
11:39
(10) План то красивый был - открываешь обработку, там настройки параметров для выполнения задачи. Настроил, сохранил, закрыл и забыл.
А дальше по регламенту запуск ежедневно, формирование отчета, отправка его на почту.
12 НачинающийНик
 
19.02.19
11:40
Если надо что-то поменять - снова открыл форму, поменял настройки и вперед.
13 Cyberhawk
 
19.02.19
11:43
Ну так это делается конечно же не так, как ты себе представил.
План реальный, применяется много где успешно. Но значения не хранятся в реквизитах формы.
14 Cyberhawk
 
19.02.19
11:44
В демо-конфе БСП есть пример по загрузке прайс-листа с сайта 1С, где настройки редактируются в форме подключаемой обработки (отдельная команда настроек) и испольтзуются в серверном методе (регл. задании) этой же обработки
15 hhhh
 
19.02.19
12:06
(11) делаешь примерно так, где-то при записи.

СтруктураСохр = Новый Структура("Рекв1, Рекв2, Рекв3", Рекв1, Рекв2, Рекв3);
ХранилищеСистемныхНастроек.Сохранить("МойОбъект", "МоиНастройки", СтруктураСохр)

а где-то при вызове обработки

СтруктураСохр = ХранилищеСистемныхНастроек.Загрузить("МойОбъект", "МоиНастройки")
16 НачинающийНик
 
19.02.19
15:42
(15) Супер! То, что нужно было!
17 НачинающийНик
 
22.02.19
10:55
(15) вскрылась проблемка - при регламентном запуске не загружаются настройки.
Я так думаю, это связано с тем, что регламентные задания запускаются под другим пользователем?
Как узнать под каким пользователем проходит запуск регламентного?
Как скопировать настройки с одного пользователя на того, под кем регламентное запускается?
18 Мимохожий Однако
 
22.02.19
11:09
(11) Добавь запись реквизитов обработки при закрытии формы.
(15)А при запуске регламентного задания добавь процедуру восстановления реквизитов обработки, которые лежат в ХранилищеСистемныхНастроек...
19 Мимохожий Однако
 
22.02.19
11:11
Пример из УТ10.3 для внешних обработок,используемый в регламентных заданиях
Процедура СохранитьРеквизитыОбработки() Экспорт
    //вторая процедура ВосстановлениеРеквизитовОбработки нужна при запуске регламентным заданием
    РеквизитыОбработки=Новый Структура;
    Для каждого ТекРеквизит Из Метаданные().Реквизиты Цикл
        ЗначениеРеквизита=ЭтотОбъект[ТекРеквизит.Имя];
        РеквизитыОбработки.Вставить(ТекРеквизит.Имя,ЗначениеРеквизита);
    КонецЦикла;
    Новзапись=РегистрыСведений.СохраненныеНастройки.СоздатьМенеджерЗаписи();
    НовЗапись.Пользователь=Неопределено;
    НовЗапись.ИмяОбъекта=ИмяОбъекта;
    НовЗапись.НаименованиеНастройки=НаименованиеНастройки;
    Новзапись.Прочитать();
    НовЗапись.Пользователь=Неопределено;
    НовЗапись.ИмяОбъекта=ИмяОбъекта;
    НовЗапись.НаименованиеНастройки=НаименованиеНастройки;
    НовЗапись.СохраненнаяНастройка=Новый ХранилищеЗначения(РеквизитыОбработки);
    Новзапись.СохранятьАвтоматически=Истина;
    Новзапись.ИспользоватьПриОткрытии=Истина;
    Новзапись.Записать();
КонецПроцедуры

Процедура ВосстановитьРеквизитыОбработки() Экспорт
    Новзапись=РегистрыСведений.СохраненныеНастройки.СоздатьМенеджерЗаписи();
    НовЗапись.Пользователь=Неопределено;
    НовЗапись.ИмяОбъекта=ИмяОбъекта;
    НовЗапись.НаименованиеНастройки=НаименованиеНастройки;
    Новзапись.Прочитать();
    Если НовЗапись.Выбран() Тогда
        РеквизитыОбработки=НовЗапись.СохраненнаяНастройка.Получить();
        ЗаполнитьЗначенияСвойств(ЭтотОбъект,РеквизитыОбработки);
    КонецЕсли;
КонецПроцедуры
20 НачинающийНик
 
22.02.19
11:11
(18) так вот не пойму, как их восстановить/получить из модуля объекта. Автосохранение есть конечно.
Делаю как в (15), добавил кнопку Сохранить и при запуске функции из объекта обработки читаю и применяю при формировании.
21 НачинающийНик
 
22.02.19
11:12
(19) понял, попробую
22 Мимохожий Однако
 
22.02.19
11:13
(20) Как читаешь?
23 НачинающийНик
 
22.02.19
11:16
(19) нет такого регистра в 11.4
(22) СтруктураСохр = ХранилищеСистемныхНастроек.Загрузить("МойОбъект", "МоиНастройки")
24 НачинающийНик
 
22.02.19
11:18
(23)+ пока запускаю регламентную команду из под пользователя который делал настройку все ок отрабатывает, а при реглам. запуске - фиг.
25 НачинающийНик
 
22.02.19
11:23
Нашел в инете
СтруктураНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта,КлючНастроек,,ВладелецНастроек);
26 НачинающийНик
 
22.02.19
11:23
Осталось понять под каким пользователем регламент запускается )
27 aleks_default
 
22.02.19
11:26
Ну так в консоли рег. заданий установи нужного пользователя
28 Мимохожий Однако
 
22.02.19
11:40
(25) Лучше бы в самой конфигурации искал...
29 aleks_default
 
22.02.19
11:44
кстати, если сам создаешь рег. задание, то что мешает установить пользователя?
30 Мимохожий Однако
 
22.02.19
11:51
(29) ...мешает нехватка времени из-за поисков в гугле ))
31 Cyberhawk
 
22.02.19
12:26
Какой только херней не занимаются, придумывая себе проблемы, лишь бы не делать так, как вендор прописал
32 DrWatson
 
22.02.19
12:43
(25) синтаксис-помощник лучше бы посмотрел, вместо гугла
СтандартноеХранилищеНастроекМенеджер.Сохранить(<КлючОбъекта>, <КлючНастроек>, <Настройки>, <ОписаниеНастроек>, <ИмяПользователя>)
<ИмяПользователя> - имя пользователя регламетного задания. можно пойти немного дальше. По сути это просто строка, можешь прописать туда любую уникальную строки и от имени этой же строки потом считывать настройки в регл. задании.
33 FIXXXL
 
22.02.19
13:22
(32) там где-то есть примечание, что читать настройки всех пользователей можно только с полными правами ;)