1С 8 управляемая форма. Сохранение настроек ширины колонок

1. nicolaj2 6 29.08.23 12:03 Сейчас в теме
Есть управляемая форма документа в шапке документа есть реквизит "Шаблон" (в нем описываются дополнительные реквизиты табличной части) и табличная часть документа с несколькими реквизитами которые всегда есть. В зависимости от выбранного шаблона в табличную часть добавляются новые дополнительные реквизиты

МассивРеквизитов = Новый Массив;
СписокУдаляемыхРеквизитов.Очистить();
Для Каждого СтрПок из Объект.Шаблон.Показатели Цикл
Если СтрПок.ТекстовоеПоле Тогда
Описание=Новый ОписаниеТипов("Строка");
ИначеЕсли СтрПок.Булево Тогда
Описание=Новый ОписаниеТипов("Булево");
Иначе
КвалификаторыЧисла = Новый КвалификаторыЧисла(20,?(КодСимвола(СтрПок.ТочностьДляЧисла)>=48 и КодСимвола(СтрПок.ТочностьДляЧисла)<=57,СтрПок.ТочностьДляЧисла,8), ДопустимыйЗнак.Любой);
Описание=Новый ОписаниеТипов("Число", КвалификаторыЧисла);
КонецЕсли;
Если КраткоеПредставлениеПеременныхШаблона Тогда
Рекв=Новый РеквизитФормы(СтрПок.Код, Описание, "Объект.ТЧ",СтрПок.Имя, Ложь);
Иначе
Рекв=Новый РеквизитФормы(СтрПок.Код, Описание, "Объект.ТЧ", СтрПок.Представление+" ("+СтрПок.Имя+")", Ложь);
Конецесли;

МассивРеквизитов.Добавить(Рекв);
СписокУдаляемыхРеквизитов.Добавить(Рекв.Путь + "." + Рекв.Имя);
СписокУдаляемыхЭлементов.Добавить(Рекв.Имя);
КонецЦикла;

ИзменитьРеквизиты(МассивРеквизитов);

//Потом добавляются группы и поля с данными реквизитов.
Если ЗначениеЗаполнено(СтрПок.Группа) и ПовторГрупп<>СтрПок.Группа Тогда
//Добавляем новую группу
СчГрупп=СчГрупп+1;
ГруппаФормы = Элементы.Вставить("ГруппаКолонок"+Строка(СчГрупп), Тип("ГруппаФормы"),Элементы.ТЧ, Элементы.ТЧРезультатКонтроляПовторяемости);
ГруппаФормы.ОтображатьЗаголовок = Ложь;
ГруппаФормы.РастягиватьПоГоризонтали=Ложь;
ГруппаФормы.РастягиватьПоВертикали=Ложь;
СписокУдаляемыхЭлементов.Добавить("ГруппаКолонок"+Строка(СчГрупп));
КонецЕсли;

Если ЗначениеЗаполнено(СтрПок.Группа) Тогда
Элт = Элементы.Добавить(СтрПок.Код, Тип("ПолеФормы"), ГруппаФормы);
Иначе
Элт = Элементы.Вставить(СтрПок.Код, Тип("ПолеФормы"), Элементы.ТЧ, Элементы.ТЧРезультатКонтроляПовторяемости);
КонецЕсли;

Элт.Вид = ВидПоляФормы.ПолеВвода;
Элт.ПутьКДанным = "Объект.ТЧ."+СтрПок.Код;
Элт.ГоризонтальноеПоложениеВШапке=ГоризонтальноеПоложениеЭлемент­а.Центр;
Элт.Подсказка=СтрПок.Представление;
Элт.АвтоМаксимальнаяШирина=Ложь;
Элт.АвтоМаксимальнаяВысота=Ложь;
Элт.РастягиватьПоГоризонтали=Ложь;
Элт.ВысотаЗаголовка=2;
Элт.Ширина=5;
ПовторГрупп=СтрПок.Группа;

1С сама настраивает ширину колонок (это не всегда удобно, но смирились) , далее пользователи меняют настройку колонок (ширину) под себя,чтобы было удобнее работать с данными.
Программа сохраняет эту ширину при повторном открытии. Но если работать с разными шаблонами, то все сбивается. Как сделать чтобы настройки ширины колонок сохранялись и автоматически открывались в разрезе шаблона из шапки документа.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. пользователь 29.08.23 12:16
Сообщение было скрыто модератором.
...
3. nicolaj2 6 29.08.23 12:41 Сейчас в теме
А что именно устанавливать программно? Когда в пользовательском режиме изменяют ширину колонки (поля) никакое из свойств поля формы не меняется (например ширина).
4. nicolaj2 6 29.08.23 12:43 Сейчас в теме
А можно рабочий пример как с этим хранилищем настроек работать чтобы у документа были свои настройка форм для каждого шаблона которые при выходе бы сохранялись, а при входе(выборе шаблона) они бы автоматически восстанавливались.
5. пользователь 29.08.23 12:48
Сообщение было скрыто модератором.
...
6. nicolaj2 6 29.08.23 12:50 Сейчас в теме
Стартмани вас заинтересуют?
7. пользователь 29.08.23 13:55
Сообщение было скрыто модератором.
...
9. nicolaj2 6 30.08.23 05:46 Сейчас в теме
Вижу что не заинтересует, но вдруг найдется кто-то кто знает ответ и кого заинтересует. Деньги пока не готов платить.
8. nicolaj2 6 30.08.23 05:43 Сейчас в теме
Немного поясню вопрос. Програмно создаются реквизиты табличной части документа, а потом соответствующие поля табличной части.
У поля есть свойство ширина, но управлять им можно только ограничено, Колонка автоматически ставится по ширине заголовка и реагирует на свойство ширина только в большую сторону, когда ширина становится больше заголовка.

Элт = Элементы.Добавить(СтрПок.Код, Тип("ПолеФормы"), ГруппаФормы);
Элт.Вид = ВидПоляФормы.ПолеВвода;
Элт.Ширина=5;

При этом если пользователь мышью изменил ширину этих полей не заходя в "Еще/изменить форму" эта ширина не меняется и никакое другое свойство поля не меняется. Таким образом сохранение этой ширины в какой либо регистр, хранилище настроек или т.п. бессмысленно. Но программа запоминает эту пользовательскую настройку колонок и при следующем открытии документа восстанавливает ее. Но если зайти в документ с другим шаблоном, изменить ширину колонок и выйти, то настройки первого документа слетят или исказятся.Но нужно сохранять много таких настроек в зависимости от шаблона в шапке документа. Вопрос в том, можно ли сохранить несколько таких настроек также как автоматически сохраняет и восстанавливает 1С.

Я понимаю что можно использовать краткие заголовки и расширенные подсказки, но это не всегда удобно пользователям.
10. PowerBoy 3364 30.08.23 06:12 Сейчас в теме
Эта так всегда было в управляемых формах. Максимум что можешь сделать - добавить группу в каждую колонку и менять ширину группы.
11. nicolaj2 6 30.08.23 07:21 Сейчас в теме
Я понимаю что всегда так было, и про заголовок в группе я тоже читал. Вот я и спрашиваю можно ли сохранять несколько пользовательских настроек колонок для одного вида документа, также как 1С стандартно одну настройку сохраняет. Можно даже отвлечься от этих дополнительных реквизитов. Предположим есть документ поступление и в шапке можно выбрать склад, Пользователь расширил вручную (не через еще/изменить форму/нужное поле/ширина) колонку номенклатура (у этого склада длинные названия) в ТЧ документа (при этом свойство ширина не изменилась) и хочет чтобы для выбранного склада форма открывалась с такой шириной, а для другого склада (где названия покороче) с другой шириной.
12. nicolaj2 6 30.08.23 08:40 Сейчас в теме
Может быть тут поможет ХранилищеСистемныхНастроек или что-то подобное, но я не знаю как с этим работать.
13. nicolaj2 6 30.08.23 12:39 Сейчас в теме
//Так сохраняю настройки при закрытии

&НаСервере
Процедура СохранитьНастройкиНАСервере()
НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна","");
ХранилищеСистемныхНастроек.Сохранить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна",Объект.Шаблон.Наименование,НастройкиФормы);
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
СохранитьНастройкиНАСервере();
КонецПроцедуры


//Так пытаюсь прочитать

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокНастроек = ХранилищеСистемныхНастроек.ПолучитьСписок("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна");
//Попытка
НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна",Объект.Шаблон.Наименование);
ХранилищеСистемныхНастроек.Сохранить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна","",НастройкиФормы );
//Исключение
//КонецПопытки;

КолонкиШаблона();
КонецПроцедуры

//В СписокНастроек появляются сохраненные настройки после закрытия, но восстановления настройки не происходит и ошибки нет.
14. nicolaj2 6 01.09.23 06:51 Сейчас в теме
Видимо очень сложный вопрос
15. user1880116 01.09.23 08:27 Сейчас в теме
(14)
Видимо

СП -> Интерфейс (управляемый) -> Форма клиентского приложения -> ФормаКлиентскогоПриложения -> Свойства -> КлючНазначенияИспользования
СП -> Интерфейс (управляемый) -> Форма клиентского приложения -> ФормаКлиентскогоПриложения -> Свойства -> КлючСохраненияПоложенияОкна
16. SlavaKron 01.09.23 11:48 Сейчас в теме
Я бы через табдок такую задумку делал, как это сделано, например в форме элемента номенклатуры в ерп-подобных конфигурациях.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот