|
В каком виде реквизита документа хранить настройки отчета создавшего его | ☑ | ||
---|---|---|---|---|
0
Cerera
06.08.12
✎
17:17
|
Документ создаётся при помощи обработки, в которой задаются входные условия: период, отборы и прочие галочки на форме. Столкнулись с проблемой, что манагеры тупят и неправильно иногда выставляют настройки и в результате в документе потом не находят нужных контрагентов, номенклатуру в табличной части. Начинают грешить на обработку, но обработка ещё при формировании документа, создаёт отчет, где отображается табличная часть документа. Вот сейчас возникла идея сохранять настройки отчета в самом документе, чтоб можно было их посмотреть если что. Хочу посоветоваться в каком виде хранить эти настройки. Табличную часть чтоли создать с тремя полями "НазваниеПараметра, значение параметра, вид отбора". Ну а если значения отбора будут "В группе из списка", то бишь очень много элементов справочника содержать, то как быть? одним словом нужен совет. Правда есть ещё вариант - выводить список параметров в mxl отчет и прикреплять их к документу.
|
|||
1
Naumov
06.08.12
✎
17:20
|
ЗначениеВСтрокуВнутр...
|
|||
2
х86
06.08.12
✎
17:21
|
(0)в свойствах храни
|
|||
3
Cerera
06.08.12
✎
17:21
|
(1)тоесть создать таблицу значений, в неё считать все входные данные, а потом сохранить эту таблицу через ЗначениеВСтрокуВнутр? и при необходимости извлекать эти данные через обратную процедуру?
|
|||
4
DrShad
06.08.12
✎
17:22
|
(1) не спасет от удаления ссылки содержащейся в отборе
|
|||
5
Cerera
06.08.12
✎
17:22
|
(2)в каких свойствах?
|
|||
6
х86
06.08.12
✎
17:24
|
(5)конфа типовая? в типовой есть механизм свойств
|
|||
7
Cerera
06.08.12
✎
17:24
|
(2)ааа. значения свойств объектов.
|
|||
8
Cerera
06.08.12
✎
17:24
|
(6)да да. есть. конфа на УТ построена.
|
|||
9
DrShad
06.08.12
✎
17:29
|
и как в свойства запихнуть параметр, вид сравнения и значение параметра?
|
|||
10
х86
06.08.12
✎
17:32
|
(9)соглашусь, не простая задача
и если еще задуматься о ссылочной целостности о_О |
|||
11
Михаил Козлов
06.08.12
✎
17:32
|
Сохранял отборы построителя в реквизите с типом ХранилищеЗначений.
|
|||
12
Naumov
06.08.12
✎
18:23
|
(4) От этого ничто не спасет.
|
|||
13
Михаил Козлов
06.08.12
✎
18:27
|
(12) Может быть я чего-то не понимаю, но сохранение отборов построителя в реквизите типа ХранилищеЗначения вроде бы адекватно.
|
|||
14
hohol
06.08.12
✎
20:17
|
для типовой
Процедура СохранитьНастройки() Перем СохраненнаяНастройка; СформироватьСтруктуруДляСохраненияНастроек(СохраненнаяНастройка); СтруктураНастройки = Новый Структура; СтруктураНастройки.Вставить("Пользователь",глЗначениеПеременной("глТекущийПользователь")); СтруктураНастройки.Вставить("ИмяОбъекта", "Обработка." + Строка(ЭтотОбъект)); СтруктураНастройки.Вставить("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.НаименованиеНастройки)); СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка); СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Ложь); СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь); Результат = УниверсальныеМеханизмы.СохранениеНастроек(СтруктураНастройки); Если Результат <> Неопределено Тогда мТекущаяНастройка = Результат; Иначе мТекущаяНастройка = СтруктураНастройки; КонецЕсли; КонецПроцедуры // СохранитьНастройки() |
|||
15
hohol
06.08.12
✎
20:18
|
восстановление
Функция ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками) Перем СохраненныеНастройкиПостроителя; Если ТипЗнч(СтруктураСНастройками) = Тип("Структура") Тогда Для каждого Настройка из СтруктураСНастройками Цикл Если Настройка.Ключ = "СохраненноеЗначениеНастройкиПостроителя" Тогда СохраненноеЗначениеНастройкиПостроителя = Настройка.Значение; КонецЕсли; Если ЭтотОбъект.Метаданные().Реквизиты.Найти(Настройка.Ключ) <> Неопределено Тогда ЭтотОбъект[Настройка.Ключ] = Настройка.Значение; КонецЕсли; КонецЦикла; КонецЕсли; НастройкиПостроителя = ?(ПустаяСтрока(СохраненноеЗначениеНастройкиПостроителя), Неопределено, ЗначениеИзСтрокиВнутр(СохраненноеЗначениеНастройкиПостроителя)); ЗаполнитьНачальныеНастройки(НастройкиПостроителя); Возврат Истина; КонецФункции // ВосстановитьНастройкиИзСтруктуры() Функция ВосстановитьНастройки() Перем СохраненнаяНастройка; СтруктураНастройки = Новый Структура; СтруктураНастройки.Вставить("Пользователь",глЗначениеПеременной("глТекущийПользователь")); СтруктураНастройки.Вставить("ИмяОбъекта", "Обработка." + Строка(ЭтотОбъект)); СтруктураНастройки.Вставить("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.НаименованиеНастройки)); Результат = УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки); Если Результат <> Неопределено Тогда мТекущаяНастройка = Результат; ВосстановитьНастройкиИзСтруктуры(Результат.СохраненнаяНастройка); Иначе мТекущаяНастройка = СтруктураНастройки; КонецЕсли; КонецФункции // ВосстановитьНастройки() |
|||
16
hohol
06.08.12
✎
20:19
|
все есть в типовой, нет нужно велосипед придумать.
|
|||
17
AndOne
07.08.12
✎
00:23
|
(0) Ни когда не понимал вашего подхода, при котором приходится придумывать изощренные способы победить пользователей. Почему манагеры могут жаловаться на обработку, а программисты не могут жаловаться на манагеров.
я прдедалагаю решать вопросы по-человечески. |
|||
18
mistеr
07.08.12
✎
04:12
|
(17) +1 "решать вопросы по-человечески". По-человечески - это в данном случае значит сделать такой интерфейс, в котором манагеры не будут тупить и путаться.
|
|||
19
AndOne
07.08.12
✎
10:06
|
(18) решений достаточно.
На самом деле самое главное изменить "пагубную" практику, при которой программа всегда виновата. Согласен, мы тоже ошибаемся, но постоянно сваливать свои огрехи на программу, как минимум не корректно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |