Проблема восстановления настроек в форме обработки
Подскажите как бороться с проблемкой?
При восстановлении настроек в форме стандартным способом не восстанавливается состав колонок (если количество колонок различное у текущей ТаблицыЗначений и у той, которая сохранена в настройке).
Есть идеи?
Я извернулся только через "повторное" восстановление настройки. Но это как-то некрасиво.
"Хранилища настроек" не предлагать.
Обработка прилагается.
При восстановлении настроек в форме стандартным способом не восстанавливается состав колонок (если количество колонок различное у текущей ТаблицыЗначений и у той, которая сохранена в настройке).
Есть идеи?
Я извернулся только через "повторное" восстановление настройки. Но это как-то некрасиво.
"Хранилища настроек" не предлагать.
Обработка прилагается.
Прикрепленные файлы:
ВнешняяОбработка1.epf
По теме из базы знаний
- Подсистема сохранения и восстановления настроек динамических списков
- Создаем универсальный механизм отбора и сортировки для управляемых форм
- Распознавание и загрузка сканов в 1С "одним нажатием". УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.
- Универсальная загрузка данных формата Excel
- Восстановление предыдущих значений функциональности программы
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)ИМХО. Сохраненные настройки - зло.
Причина.
Структура настроек отчета, списка, обработки, и т.д. могут изменяться в процессе эволюции. Автоматически можно попробовать сразу после обновления провести необходимую модификацию настроек. Но есть одно "НО".
Не всегда (а точнее в большем количестве случаев), можно однозначно определить что ожидает пользователь от сохраненных настроек, при новой их структуре. Как следствие, решение о восстановлении настроек обычно предоставляется пользователю.
Один из альтернативных вариантов решения данной проблемы - делать жесткие отчеты, обработки, и т.д., т.е. что б пользователь всегда видел только то, что ему нужно. Но здесь возникает другая проблема. Стоимость поддержки всего этого зоопарка.
Поэтому приходится искать компромисс между квалифицированными пользователями, способными восстановить настройки самостоятельно, и затратами на поддержания работоспособности различных жестких вариантов отчетов (обработок, списков и т.д.)
Причина.
Структура настроек отчета, списка, обработки, и т.д. могут изменяться в процессе эволюции. Автоматически можно попробовать сразу после обновления провести необходимую модификацию настроек. Но есть одно "НО".
Не всегда (а точнее в большем количестве случаев), можно однозначно определить что ожидает пользователь от сохраненных настроек, при новой их структуре. Как следствие, решение о восстановлении настроек обычно предоставляется пользователю.
Один из альтернативных вариантов решения данной проблемы - делать жесткие отчеты, обработки, и т.д., т.е. что б пользователь всегда видел только то, что ему нужно. Но здесь возникает другая проблема. Стоимость поддержки всего этого зоопарка.
Поэтому приходится искать компромисс между квалифицированными пользователями, способными восстановить настройки самостоятельно, и затратами на поддержания работоспособности различных жестких вариантов отчетов (обработок, списков и т.д.)
если конфигурация типовая, можно прикрутить механизм типового хранилища, РС (Сохраненные настройки).
Типовая?
(13) согласен полностью.
если не типовая то лучше заменить на хранение через внешний файл. там вообщем то немного нужно будет добавить.
по поводу ошибок,
много лишнего кода,
переназначение переменных, и последующий анализ и их сравнение.
все это следствие не продуманного построения алгоритма задачи, но это мое мнение и оно конечно имхо. )
Видно, что пишешь не давно, на мат часть. не обижайся)!
Типовая?
(13) согласен полностью.
если не типовая то лучше заменить на хранение через внешний файл. там вообщем то немного нужно будет добавить.
по поводу ошибок,
много лишнего кода,
переназначение переменных, и последующий анализ и их сравнение.
все это следствие не продуманного построения алгоритма задачи, но это мое мнение и оно конечно имхо. )
Видно, что пишешь не давно, на мат часть. не обижайся)!
(20) Legavaz,
к конфе не привязываюсь, обработка должна работать везде
по поводу кода... да, наверное не оптимально написано.
но это еще и следствие тех костылей, которые пришлось поставить
вопрос в другом - как обойти конкретное технологическое ограничение
кстати, никто не в курсе где хранятся эти стандартные настройки, в каком хранилище? и можно ли к ним доступ как-то получить? типа, коллекция настроек...
к конфе не привязываюсь, обработка должна работать везде
по поводу кода... да, наверное не оптимально написано.
но это еще и следствие тех костылей, которые пришлось поставить
вопрос в другом - как обойти конкретное технологическое ограничение
кстати, никто не в курсе где хранятся эти стандартные настройки, в каком хранилище? и можно ли к ним доступ как-то получить? типа, коллекция настроек...
(3) tango,
"повторное" восстановление... это значит второй раз нажать кнопочку "Восстановить" (и после того как я программно добавляю нужное/потерянное число колонок к текущей таблице).
"повторное" восстановление... это значит второй раз нажать кнопочку "Восстановить" (и после того как я программно добавляю нужное/потерянное число колонок к текущей таблице).
для того, чтобы появились "потерянные колонки", стоит попробовать "СоздатьКолонки()" после восстановления значения таблицы
- тут как раз и не получается. Пробовал, не создаются, так как при восстановлении они "теряются", если их было больше, чем в текущей таблице.
много ошибок, описывать долго, просто поправил чтоб работало, а там сам смотри, сравнивай что не так.
Прикрепленные файлы:
ВнешняяОбработка1.epf
не восстанавливается состав колонок, понял не как содержимое.
подправил обработку теперь все что нужно восстанавливает. но следует понимать что данное решение не подходит для управляемых форм
вообщем все сводится
подправил обработку теперь все что нужно восстанавливает. но следует понимать что данное решение не подходит для управляемых форм
вообщем все сводится
Процедура ПередСохранениемЗначений(Отказ)
СтруктураСохранения = Новый Структура("Порядок,ТабЗнач",Порядок,Таб);
СохранитьЗначение("УчиМатЧасть)",СтруктураСохранения);
КонецПроцедуры
Процедура ПослеВосстановленияЗначений()
Структура = ВосстановитьЗначение("УчиМатЧасть)");
Если ТипЗнч(Структура)= тип("Структура") Тогда
Таб = Структура.ТабЗнач;
Порядок = Структура.Порядок;
ЭлементыФормы.Таб.СоздатьКолонки();
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ВнешняяОбработка1.epf
(10) Legavaz,
матчасть знаю, в принципе
В этой настройке "УчиМатЧасть)" будет сохраняться только последние данные таблицы.
Попробуйте подряд восстановить из нескольких ранее сохраненных Настроек - увидите эффект. Воостановится только ваш последний вариант таблицы.
матчасть знаю, в принципе
В этой настройке "УчиМатЧасть)" будет сохраняться только последние данные таблицы.
Попробуйте подряд восстановить из нескольких ранее сохраненных Настроек - увидите эффект. Воостановится только ваш последний вариант таблицы.
по поводу того, что не сохраняются значения таблицы значений.
На самом деле все сохраняется, но дело в том что она у тебя динамическая и у нее вообще нет колонок, поэтому значения которые обработка восстанавливает просто некуда положить/вставить.
вот и вся проблемма.
На самом деле все сохраняется, но дело в том что она у тебя динамическая и у нее вообще нет колонок, поэтому значения которые обработка восстанавливает просто некуда положить/вставить.
вот и вся проблемма.
Тема закрыта! :)
thenroach был близок к ответу, Legavaz тоже спасибо, но crabzzy дал лучшее решение!
Для тех кому интересно, делаем так:
1. размещаем на форме невидимое ПолеВвода со строковым реквизитом
2. назначаем ему автосохранение в настройках (вместо ТабличногоПоля)
3. используем следующий код:
Спасибо!
thenroach был близок к ответу, Legavaz тоже спасибо, но crabzzy дал лучшее решение!
Для тех кому интересно, делаем так:
1. размещаем на форме невидимое ПолеВвода со строковым реквизитом
2. назначаем ему автосохранение в настройках (вместо ТабличногоПоля)
3. используем следующий код:
Процедура ПередСохранениемЗначений(Отказ)
СтроковоеПредставлениеТаблицыДляХраненияНастроек = ЗначениеВСтрокуВнутр(ТабМатрица);
КонецПроцедуры
Процедура ПослеВосстановленияЗначений()
ИнициализацияНажатие(ЭлементыФормы.Инициализация);
ТабМатрица = ЗначениеИзСтрокиВнутр(СтроковоеПредставлениеТаблицыДляХраненияНастроек);
ЭлементыФормы.ТабМатрица.СоздатьКолонки();
КонецПроцедуры
ПоказатьСпасибо!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот