Сохранение настроек колонок, добавленных на форму программно

0. 5375 18.02.14 14:37 Сейчас в теме
При доработке конфигураций часто необходимо добавлять в формы свои колонки.
При программном добавлении у пользователя нет возможности настроить колонки под себя: изменить положение колонки, видимость, ширину.
Наших пользователей, к сожалению, такой вариант не устроил.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. script 230 19.02.14 01:54 Сейчас в теме
Уже пару раз с такой необходимостью столнулся. Спасибо. Пригодится однозначно.
2. Yashazz 3743 19.02.14 11:35 Сейчас в теме
Делаю такое во всех своих конфах уже очень давно. Действительно, часто бывает нужно.
3. NeronKrasu 77 20.02.14 08:25 Сейчас в теме
СохранитьЗначение(ИмяНастройки,НастройкиКолонок);
НастройкиКолонок = ВосстановитьЗначение(ИмяНастройки);
Это откуда берем?
Прикрепленные файлы:
4. ekaruk 5375 20.02.14 11:26 Сейчас в теме
(3) NeronKrasu,
Стандартное сохранение средствами платформы.
Для каждого пользователя сохраняем под уникальным именем настройки конкретной формы.

СохранитьЗначение (SaveValue)
Синтаксис:
СохранитьЗначение(<Имя>, <Значение>)
Параметры:
<Имя> (обязательный)
Тип: Строка.
Имя, с которым сохраняется значение, используется для идентификации сохраняемых значений.
<Значение> (обязательный)
Тип: Произвольный.
Сохраняемое значение.
Описание:
Сохраняет значение для использования не только в текущем, но и в последующих сеансах работы с программой. Значение хранится индивидуально для каждой пары информационная база - пользователь. Например, можно сохранять значения по умолчанию, используемые данным пользователем.

ВосстановитьЗначение (RestoreValue)
Синтаксис:
ВосстановитьЗначение(<Имя>)
Параметры:
<Имя> (обязательный)
Тип: Строка.
Имя сохраненного значения.
Возвращаемое значение:
Тип: Произвольный.
Восстановленное значение. Если восстановить не удалось, возвращает Неопределено.
Описание:
Получает значение, сохраненное ранее с помощью метода СохранитьЗначение.
5. FractonKireyev 20.02.14 12:24 Сейчас в теме
ЗАЧЁТ!!!
Идея очень красивая. Спасибо автору. Буду использовать.
6. bayce 38 20.02.14 20:20 Сейчас в теме
поставил +.
Интересное решение.
7. Andry.Boris 58 20.02.14 21:46 Сейчас в теме
Просто и доступно, однозначно +
8. KliMich 21.02.14 00:33 Сейчас в теме
Спасибо! Описано доступно и всерьез!
9. EvgeniuXP 21.02.14 19:14 Сейчас в теме
но для кого-то и облом:

Доступность:
Толстый клиент.
- и этим всё сказано.
10. ekaruk 5375 21.02.14 20:45 Сейчас в теме
(9) EvgeniuXP, не работала с программным добавление реквизитов в списки управляемых форм.
Возможно, там эта проблема решена на системном уровне.
Если не решена, то не вижу проблем модифицировать код под синтаксис управляемых форм.
11. unoDosTres 26.02.14 17:08 Сейчас в теме
Спасибо автору за идею, буду пробовать
12. LexSeIch 208 27.02.14 04:09 Сейчас в теме
Мир этому дому!
Безусловно полезная заметка. Плюс.
13. unknownN 20.03.14 13:59 Сейчас в теме
Как раз искал для себя подобное решение, спасибо.
14. djserega 253 05.04.14 16:41 Сейчас в теме
у некоторых колонок ширина "-1" (наверное автоматическая настройка ширины)
и после того как восстанавливаешь ширину "-1", то она превращается "1" и колонка получается очень узкая
20. cdromscsi 02.08.16 16:39 Сейчас в теме
(14) djserega, вот как я решил сию проблему:
Процедура ВосстановитьНастройкиКолонок(КоллекцияКолонок, ИмяНастройки) Экспорт
	
	НастройкиКолонок = ВосстановитьЗначение(ИмяНастройки);
	
	Если НастройкиКолонок <> Неопределено Тогда
		
		Для каждого СтрокаНастроек Из НастройкиКолонок Цикл
			ОбрабатываемаяКолонка = КоллекцияКолонок[СтрокаНастроек.ИмяКолонки];
			ТекущаяПозицияКолонки = КоллекцияКолонок.Индекс(ОбрабатываемаяКолонка);
			КоллекцияКолонок.Сдвинуть(ТекущаяПозицияКолонки,СтрокаНастроек.Позиция - ТекущаяПозицияКолонки);
			ОбрабатываемаяКолонка.Видимость = СтрокаНастроек.Видимость;
			//на тот случай, когда ширина колонки (-1)
			//т.е. автоматическая ширина
			Если СтрокаНастроек.Ширина < 0 Тогда
				Продолжить
			Иначе
				ОбрабатываемаяКолонка.Ширина = СтрокаНастроек.Ширина;
			КонецЕсли;
		КонецЦикла; 
		
	КонецЕсли; 

КонецПроцедуры
Показать
15. ASV085 25 21.10.14 20:44 Сейчас в теме
Взял на заметку спасибо!
17. Dnki 4 26.11.14 09:48 Сейчас в теме
Прелестно! Давно задумывался над проблемой, но никак не собрался с мыслями.
У меня только дополнение к командам Сохранить/Восстановить:
СохранитьНастройкиКолонок(ЭтаФорма.ЭлементыФормы.Список.Колонки, "УникальноеИмяНастройки"...

А именно к "УникальноеИмяНастройки". По опыту знаю, фантазия программиста бедновата выдумыванием названий.
А если вставить так:
СохранитьНастройкиКолонок(ЭтаФорма.ЭлементыФормы.Список.Колонки, Строка(СправочникСписок)...
где СправочникСписок - основной реквизит формы
тогда можно 1) копировать по другим спр-кам 2) четкая гарантия, что сохраняет и восстанавливает под одним именем.
18. nafa 654 03.02.15 02:32 Сейчас в теме
Все хорошо, но в процедуре восстановления настрек надо добавить проверку наличия колонки:
Процедура ВосстановитьНастройкиКолонок(КоллекцияКолонок,ИмяНастройки) Экспорт
	
    НастройкиКолонок = ВосстановитьЗначение(ИмяНастройки);
    Если НастройкиКолонок<>Неопределено Тогда
		Для каждого СтрокаНастроек Из НастройкиКолонок Цикл
		    ОбрабатываемаяКолонка = КоллекцияКолонок.Найти(СтрокаНастроек.ИмяКолонки);
			Если ОбрабатываемаяКолонка <> Неопределено Тогда
			    ТекущаяПозицияКолонки = КоллекцияКолонок.Индекс(ОбрабатываемаяКолонка);
			    КоллекцияКолонок.Сдвинуть(ТекущаяПозицияКолонки,СтрокаНастроек.Позиция-ТекущаяПозицияКолонки);
			    ОбрабатываемаяКолонка.Видимость = СтрокаНастроек.Видимость;
			    ОбрабатываемаяКолонка.Ширина = СтрокаНастроек.Ширина;
			КонецЕсли;
		КонецЦикла; 
    КонецЕсли; 

КонецПроцедуры
Показать

А то иначе если колонку удалить (прекратить добавлять) то форма перестаёт открываться и выдает ошибку.
19. morber 11.07.16 08:50 Сейчас в теме
21. Shaldryn 09.06.17 16:25 Сейчас в теме
Хорошая статья, очень помогла!
А не подскажите, не делали похожий функционал, но только с сохранением высоты табличных полей в обработке. Пример, тот же ПодборНоменклатуры в УТ 10.3, чтобы можно было сохранять высоту остатков товаров и справочника номенклатуры?

передаю высоту, но он при открытии не восстанавливает высоту. То есть для ЭлементыФормы.СправочникНоменклатуры.Высота присваивается сохраненная, а для ЭлементыФормы.ОстаткиТоваров.Высота остается прежней....Может он не редактируется или же надо еще какой то элемент передавать в настройки?
22. klmsoft 14 01.08.19 09:30 Сейчас в теме
Если необходимо сохранять настройки всех колонок.
То заполним строку всеми именами колонок
Например так
Для Каждого Колонка Из ЭлементыФормы.Товары.Колонки Цикл
			СписокСохраняемыхКолонок = СписокСохраняемыхКолонок + Колонка.Имя + ",";
		КонецЦикла;	
		СписокСохраняемыхКолонок = Лев(СписокСохраняемыхКолонок,СтрДлина(СписокСохраняемыхКолонок)-1);
Оставьте свое сообщение
Вопросы с вознаграждением