1С 8 управляемая форма. Сохранение настроек ширины колонок
Есть управляемая форма документа в шапке документа есть реквизит "Шаблон" (в нем описываются дополнительные реквизиты табличной части) и табличная часть документа с несколькими реквизитами которые всегда есть. В зависимости от выбранного шаблона в табличную часть добавляются новые дополнительные реквизиты
МассивРеквизитов = Новый Массив;
СписокУдаляемыхРеквизитов.Очистить();
Для Каждого СтрПок из Объект.Шаблон.Показатели Цикл
Если СтрПок.ТекстовоеПоле Тогда
Описание=Новый ОписаниеТипов("Строка");
ИначеЕсли СтрПок.Булево Тогда
Описание=Новый ОписаниеТипов("Булево");
Иначе
КвалификаторыЧисла = Новый КвалификаторыЧисла(20,?(КодСимвола(СтрПок.ТочностьДляЧисла)>=48 и КодСимвола(СтрПок.ТочностьДляЧисла)<=57,СтрПок.ТочностьДляЧисла,8), ДопустимыйЗнак.Любой);
Описание=Новый ОписаниеТипов("Число", КвалификаторыЧисла);
КонецЕсли;
Если КраткоеПредставлениеПеременныхШаблона Тогда
Рекв=Новый РеквизитФормы(СтрПок.Код, Описание, "Объект.ТЧ",СтрПок.Имя, Ложь);
Иначе
Рекв=Новый РеквизитФормы(СтрПок.Код, Описание, "Объект.ТЧ", СтрПок.Представление+" ("+СтрПок.Имя+")", Ложь);
Конецесли;
МассивРеквизитов.Добавить(Рекв);
СписокУдаляемыхРеквизитов.Добавить(Рекв.Путь + "." + Рекв.Имя);
СписокУдаляемыхЭлементов.Добавить(Рекв.Имя);
КонецЦикла;
ИзменитьРеквизиты(МассивРеквизитов);
//Потом добавляются группы и поля с данными реквизитов.
Если ЗначениеЗаполнено(СтрПок.Группа) и ПовторГрупп<>СтрПок.Группа Тогда
//Добавляем новую группу
СчГрупп=СчГрупп+1;
ГруппаФормы = Элементы.Вставить("ГруппаКолонок"+Строка(СчГрупп), Тип("ГруппаФормы"),Элементы.ТЧ, Элементы.ТЧРезультатКонтроляПовторяемости);
ГруппаФормы.ОтображатьЗаголовок = Ложь;
ГруппаФормы.РастягиватьПоГоризонтали=Ложь;
ГруппаФормы.РастягиватьПоВертикали=Ложь;
СписокУдаляемыхЭлементов.Добавить("ГруппаКолонок"+Строка(СчГрупп));
КонецЕсли;
Если ЗначениеЗаполнено(СтрПок.Группа) Тогда
Элт = Элементы.Добавить(СтрПок.Код, Тип("ПолеФормы"), ГруппаФормы);
Иначе
Элт = Элементы.Вставить(СтрПок.Код, Тип("ПолеФормы"), Элементы.ТЧ, Элементы.ТЧРезультатКонтроляПовторяемости);
КонецЕсли;
Элт.Вид = ВидПоляФормы.ПолеВвода;
Элт.ПутьКДанным = "Объект.ТЧ."+СтрПок.Код;
Элт.ГоризонтальноеПоложениеВШапке=ГоризонтальноеПоложениеЭлемент а.Центр;
Элт.Подсказка=СтрПок.Представление;
Элт.АвтоМаксимальнаяШирина=Ложь;
Элт.АвтоМаксимальнаяВысота=Ложь;
Элт.РастягиватьПоГоризонтали=Ложь;
Элт.ВысотаЗаголовка=2;
Элт.Ширина=5;
ПовторГрупп=СтрПок.Группа;
1С сама настраивает ширину колонок (это не всегда удобно, но смирились) , далее пользователи меняют настройку колонок (ширину) под себя,чтобы было удобнее работать с данными.
Программа сохраняет эту ширину при повторном открытии. Но если работать с разными шаблонами, то все сбивается. Как сделать чтобы настройки ширины колонок сохранялись и автоматически открывались в разрезе шаблона из шапки документа.
МассивРеквизитов = Новый Массив;
СписокУдаляемыхРеквизитов.Очистить();
Для Каждого СтрПок из Объект.Шаблон.Показатели Цикл
Если СтрПок.ТекстовоеПоле Тогда
Описание=Новый ОписаниеТипов("Строка");
ИначеЕсли СтрПок.Булево Тогда
Описание=Новый ОписаниеТипов("Булево");
Иначе
КвалификаторыЧисла = Новый КвалификаторыЧисла(20,?(КодСимвола(СтрПок.ТочностьДляЧисла)>=48 и КодСимвола(СтрПок.ТочностьДляЧисла)<=57,СтрПок.ТочностьДляЧисла,8), ДопустимыйЗнак.Любой);
Описание=Новый ОписаниеТипов("Число", КвалификаторыЧисла);
КонецЕсли;
Если КраткоеПредставлениеПеременныхШаблона Тогда
Рекв=Новый РеквизитФормы(СтрПок.Код, Описание, "Объект.ТЧ",СтрПок.Имя, Ложь);
Иначе
Рекв=Новый РеквизитФормы(СтрПок.Код, Описание, "Объект.ТЧ", СтрПок.Представление+" ("+СтрПок.Имя+")", Ложь);
Конецесли;
МассивРеквизитов.Добавить(Рекв);
СписокУдаляемыхРеквизитов.Добавить(Рекв.Путь + "." + Рекв.Имя);
СписокУдаляемыхЭлементов.Добавить(Рекв.Имя);
КонецЦикла;
ИзменитьРеквизиты(МассивРеквизитов);
//Потом добавляются группы и поля с данными реквизитов.
Если ЗначениеЗаполнено(СтрПок.Группа) и ПовторГрупп<>СтрПок.Группа Тогда
//Добавляем новую группу
СчГрупп=СчГрупп+1;
ГруппаФормы = Элементы.Вставить("ГруппаКолонок"+Строка(СчГрупп), Тип("ГруппаФормы"),Элементы.ТЧ, Элементы.ТЧРезультатКонтроляПовторяемости);
ГруппаФормы.ОтображатьЗаголовок = Ложь;
ГруппаФормы.РастягиватьПоГоризонтали=Ложь;
ГруппаФормы.РастягиватьПоВертикали=Ложь;
СписокУдаляемыхЭлементов.Добавить("ГруппаКолонок"+Строка(СчГрупп));
КонецЕсли;
Если ЗначениеЗаполнено(СтрПок.Группа) Тогда
Элт = Элементы.Добавить(СтрПок.Код, Тип("ПолеФормы"), ГруппаФормы);
Иначе
Элт = Элементы.Вставить(СтрПок.Код, Тип("ПолеФормы"), Элементы.ТЧ, Элементы.ТЧРезультатКонтроляПовторяемости);
КонецЕсли;
Элт.Вид = ВидПоляФормы.ПолеВвода;
Элт.ПутьКДанным = "Объект.ТЧ."+СтрПок.Код;
Элт.ГоризонтальноеПоложениеВШапке=ГоризонтальноеПоложениеЭлемент
Элт.Подсказка=СтрПок.Представление;
Элт.АвтоМаксимальнаяШирина=Ложь;
Элт.АвтоМаксимальнаяВысота=Ложь;
Элт.РастягиватьПоГоризонтали=Ложь;
Элт.ВысотаЗаголовка=2;
Элт.Ширина=5;
ПовторГрупп=СтрПок.Группа;
1С сама настраивает ширину колонок (это не всегда удобно, но смирились) , далее пользователи меняют настройку колонок (ширину) под себя,чтобы было удобнее работать с данными.
Программа сохраняет эту ширину при повторном открытии. Но если работать с разными шаблонами, то все сбивается. Как сделать чтобы настройки ширины колонок сохранялись и автоматически открывались в разрезе шаблона из шапки документа.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А можно рабочий пример как с этим хранилищем настроек работать чтобы у документа были свои настройка форм для каждого шаблона которые при выходе бы сохранялись, а при входе(выборе шаблона) они бы автоматически восстанавливались.
Немного поясню вопрос. Програмно создаются реквизиты табличной части документа, а потом соответствующие поля табличной части.
У поля есть свойство ширина, но управлять им можно только ограничено, Колонка автоматически ставится по ширине заголовка и реагирует на свойство ширина только в большую сторону, когда ширина становится больше заголовка.
Элт = Элементы.Добавить(СтрПок.Код, Тип("ПолеФормы"), ГруппаФормы);
Элт.Вид = ВидПоляФормы.ПолеВвода;
Элт.Ширина=5;
При этом если пользователь мышью изменил ширину этих полей не заходя в "Еще/изменить форму" эта ширина не меняется и никакое другое свойство поля не меняется. Таким образом сохранение этой ширины в какой либо регистр, хранилище настроек или т.п. бессмысленно. Но программа запоминает эту пользовательскую настройку колонок и при следующем открытии документа восстанавливает ее. Но если зайти в документ с другим шаблоном, изменить ширину колонок и выйти, то настройки первого документа слетят или исказятся.Но нужно сохранять много таких настроек в зависимости от шаблона в шапке документа. Вопрос в том, можно ли сохранить несколько таких настроек также как автоматически сохраняет и восстанавливает 1С.
Я понимаю что можно использовать краткие заголовки и расширенные подсказки, но это не всегда удобно пользователям.
У поля есть свойство ширина, но управлять им можно только ограничено, Колонка автоматически ставится по ширине заголовка и реагирует на свойство ширина только в большую сторону, когда ширина становится больше заголовка.
Элт = Элементы.Добавить(СтрПок.Код, Тип("ПолеФормы"), ГруппаФормы);
Элт.Вид = ВидПоляФормы.ПолеВвода;
Элт.Ширина=5;
При этом если пользователь мышью изменил ширину этих полей не заходя в "Еще/изменить форму" эта ширина не меняется и никакое другое свойство поля не меняется. Таким образом сохранение этой ширины в какой либо регистр, хранилище настроек или т.п. бессмысленно. Но программа запоминает эту пользовательскую настройку колонок и при следующем открытии документа восстанавливает ее. Но если зайти в документ с другим шаблоном, изменить ширину колонок и выйти, то настройки первого документа слетят или исказятся.Но нужно сохранять много таких настроек в зависимости от шаблона в шапке документа. Вопрос в том, можно ли сохранить несколько таких настроек также как автоматически сохраняет и восстанавливает 1С.
Я понимаю что можно использовать краткие заголовки и расширенные подсказки, но это не всегда удобно пользователям.
Я понимаю что всегда так было, и про заголовок в группе я тоже читал. Вот я и спрашиваю можно ли сохранять несколько пользовательских настроек колонок для одного вида документа, также как 1С стандартно одну настройку сохраняет. Можно даже отвлечься от этих дополнительных реквизитов. Предположим есть документ поступление и в шапке можно выбрать склад, Пользователь расширил вручную (не через еще/изменить форму/нужное поле/ширина) колонку номенклатура (у этого склада длинные названия) в ТЧ документа (при этом свойство ширина не изменилась) и хочет чтобы для выбранного склада форма открывалась с такой шириной, а для другого склада (где названия покороче) с другой шириной.
//Так сохраняю настройки при закрытии
&НаСервере
Процедура СохранитьНастройкиНАСервере()
НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна","");
ХранилищеСистемныхНастроек.Сохранить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна",Объект.Шаблон.Наименование,НастройкиФормы);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
СохранитьНастройкиНАСервере();
КонецПроцедуры
//Так пытаюсь прочитать
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокНастроек = ХранилищеСистемныхНастроек.ПолучитьСписок("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна");
//Попытка
НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна",Объект.Шаблон.Наименование);
ХранилищеСистемныхНастроек.Сохранить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна","",НастройкиФормы );
//Исключение
//КонецПопытки;
КолонкиШаблона();
КонецПроцедуры
//В СписокНастроек появляются сохраненные настройки после закрытия, но восстановления настройки не происходит и ошибки нет.
&НаСервере
Процедура СохранитьНастройкиНАСервере()
НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна","");
ХранилищеСистемныхНастроек.Сохранить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна",Объект.Шаблон.Наименование,НастройкиФормы);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
СохранитьНастройкиНАСервере();
КонецПроцедуры
//Так пытаюсь прочитать
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокНастроек = ХранилищеСистемныхНастроек.ПолучитьСписок("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна");
//Попытка
НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна",Объект.Шаблон.Наименование);
ХранилищеСистемныхНастроек.Сохранить("Документ.РабочийЛист.Форма.ФормаДокумента/Такси/НастройкиОкна","",НастройкиФормы );
//Исключение
//КонецПопытки;
КолонкиШаблона();
КонецПроцедуры
//В СписокНастроек появляются сохраненные настройки после закрытия, но восстановления настройки не происходит и ошибки нет.
(14)
СП -> Интерфейс (управляемый) -> Форма клиентского приложения -> ФормаКлиентскогоПриложения -> Свойства -> КлючНазначенияИспользования
СП -> Интерфейс (управляемый) -> Форма клиентского приложения -> ФормаКлиентскогоПриложения -> Свойства -> КлючСохраненияПоложенияОкна
Видимо
СП -> Интерфейс (управляемый) -> Форма клиентского приложения -> ФормаКлиентскогоПриложения -> Свойства -> КлючНазначенияИспользования
СП -> Интерфейс (управляемый) -> Форма клиентского приложения -> ФормаКлиентскогоПриложения -> Свойства -> КлючСохраненияПоложенияОкна
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот