Пример обработки 1С с сохранением настроек табличного поля
Здравствуйте, уважаемые посетители! На этом блоге уже не раз было написано о работе с табличным полем в 1С8. В двух статьях «Как отобразить флажок в строках табличного поля в системе 1С8?» было рассказано о первом и втором способах отображения флажка в табличном поле. В конце статьи вы можете найти дополнительные ссылки на ресурсы этого сайта, которые помогают еще больше разобраться с темой табличного поля. Если вам интересно, вы можете посмотреть, как реализовано сохранение настройки списка значений с пометками в системе 1С:Предприятие 7.7. А сегодня я хочу поделиться небольшой обработкой, которая нагдядно демонстрирует сохранение настроек табличного поля с типом значения «ТаблицаЗначений» в системе 1С:Предприятие 8.2.
Содержание
- Небольшое описание работы обработки сохранения настроек табличного поля
- Описание программного кода обработки на встроенном языке 1С
Внешний вид обработки обработки сохранения настроек табличного поля следующий:
Небольшое описание работы обработки сохранения настроек табличного поля
Обработка показывает возможность сохранение настроек табличного поля. При ее открытии происходит восстановление заранее сохраненных значений размеров столбцов, высоты ячеек, направления сортировки (упорядочивания) в столбцах табличного поля. Эти значения сохраняются при последнем сеансе работы пользователя 1С. Если пользователь открывает обработку впервые, то для таблицы остаются значения, которые определены для нее по умолчанию.
Бывает, что настройки пользователей 1С не сохраняются и при следующем сеансе работы появляются настройки по умолчанию. Чтобы решить эту проблему необходимо провести тестирование и исправление базы данных в Конфигураторе.
Вы можете проверить работу обработки:
- Изменив размеры столбцов, для этого нужно подвести мышь к шапке таблицы установить ее между двумя колонками до появления курсора с двумя стрелочками по сторонам.
- Поменяв высоту ячеек, для этого нужно на табличном поле правой кнопкой мыши вызвать контекстное меню и выбрать пункт «Настройка списка…». Затем в появившийся форме в поле «Высота:» указать нужную вам высоту.
- Поставив новый режим изменения размера. Содержит признак изменения размера колонки: Изменять (Change), НеИзменять (DontChange). Устанавливается по той же схеме, как и в предыдущем пункте.
- Определив положение колонки по отношению к предыдущей. Содержит варианты расположения колонки табличного поля по отношению к предыдущей: ВТойЖеКолонке (SameColumn), НаСледующейСтроке (OnNextRow), НоваяКолонка (NewColumn). Устанавливается по той же схеме, как и во втором пункте.
- Сменив направление упорядочивания с помощью кнопок сортировки строк в панели обработки.
После изменения настроек табличного поля нужно закрыть обработку и опять открыть. Когда обработка откроется второй раз вы увидите, что ваши изменения сохранились.
Описание программного кода обработки на встроенном языке 1С
Когда пользователь открывает обработку срабатывает процедура «ПриОткрытии» и сохраненные заранее настройки восстанавливаются. Если пользователь открывает обработку первый раз, то восстановления настроек не происходит, а устанавливаются стандартные настройки.
Процедура ПриОткрытии() // Восстановим значение колонки, //по которой пользователь установил сортировку КолонкаСорт = ВосстановитьЗначение("КолонкаСорт"); // Теперь восстановим значение направления // сортировки "Возр" или "Убыв" НаправлениеСорт = ВосстановитьЗначение("НаправлениеСорт"); // Проверяем есть ли сохраненные значения Если КолонкаСорт <> Неопределено И НаправлениеСорт <> Неопределено Тогда СписокДел.Сортировать(КолонкаСорт + " " + НаправлениеСорт); КонецЕсли; // Здесь восстанавливаем значения ширины, высоты, // режима изменения размера и положения колонки // по отношению к предыдущей ТаблицаДел = ВосстановитьЗначение("ТаблицаДел"); Если ТаблицаДел <> Неопределено Тогда Для каждого Дело Из ТаблицаДел Цикл Колонка = СписокДелКолонки.Найти(Дело.Имя); Если Колонка <> Неопределено Тогда Колонка.Ширина = Дело.Ширина; Колонка.ВысотаЯчейки = Дело.ВысотаЯчейки; Колонка.ИзменениеРазмера = Дело.ИзменениеРазмера; Колонка.Положение = Дело.Положение; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
Когда пользователь закрывает обработку срабатывает процедура «ПриЗакрытии» и настройки сохраняются.
Процедура ПриЗакрытии()
// Создание таблицы значений
ТаблицаДел = Новый ТаблицаЗначений;
// добавим в таблицу значений три колонки
ТаблицаДел.Колонки.Добавить("Имя");
ТаблицаДел.Колонки.Добавить("Ширина");
ТаблицаДел.Колонки.Добавить("ВысотаЯчейки");
ТаблицаДел.Колонки.Добавить("ИзменениеРазмера");
ТаблицаДел.Колонки.Добавить("Положение");
// Здесь сохраняем значения ширины, высоты,
// режима изменения размера и положения колонки
// по отношению к предыдущей
Для каждого Дело Из СписокДелКолонки Цикл
// добавим строку в таблицу значений
// элементов табличного поля
Стр = ТаблицаДел.Добавить();
Стр.Имя = Дело.Имя;
Стр.Ширина = Дело.Ширина;
Стр.ВысотаЯчейки = Дело.ВысотаЯчейки;
Стр.ИзменениеРазмера = Дело.ИзменениеРазмера;
Стр.Положение = Дело.Положение;
КонецЦикла;
СохранитьЗначение("ТаблицаДел", ТаблицаДел);
// Сохраним значение колонки,
//по которой пользователь установил сортировку
СохранитьЗначение("КолонкаСорт", КолонкаСорт);
// Теперь сохраним значение направления
// сортировки "Возр" или "Убыв"
СохранитьЗначение("НаправлениеСорт", НаправлениеСорт);
КонецПроцедуры
Если пользователь нажимает на одну из кнопок сортировки, тогда происходит сортировка либо по убыванию (ПанельСпискаДелСортировкаУбыв), либо по возрастанию (ПанельСпискаДелСортировкаВозр) в зависимости от нажатой кнопки. Также сохраняются значения настроек сортировки.
Процедура ПанельСпискаДелСортировкаУбыв(Кнопка)
// При нажатии на кнопку сортировки
// по убыванию сортируем
// значения табличного поля и
// сохраняем колонку сортировки и
// направление по "Убыв"
КолонкаСорт = ЭлементыФормы.СписокДел.ТекущаяКолонка.Имя;
НаправлениеСорт = "Убыв";
СписокДел.Сортировать(КолонкаСорт +
" " + НаправлениеСорт);
КонецПроцедуры
Процедура ПанельСпискаДелСортироватьВозр(Кнопка) // При нажатии на кнопку сортировки // по возрастанию сортируем // значения табличного поля и // сохраняем колонку сортировки и // направление по "Возр" КолонкаСорт = ЭлементыФормы.СписокДел.ТекущаяКолонка.Имя; НаправлениеСорт = "Возр"; СписокДел.Сортировать(КолонкаСорт + " " + НаправлениеСорт); КонецПроцедуры
Если в Конфигураторе открыть свойства табличного поля, то можно найти свойство «ИзменятьПорядокСтрок» (ChangeRowOrder). Это свойство табличного поля разрешает изменять порядок строк. Если снять флажок, то на панели задач обработки исчезают кнопки сортировки строк. Это полезно знать, если нужно заменить стандартные кнопки на свои собственные, как в нашей обработке.
Здесь опубликован не весь программный код обработки для сохранения настроек табличного поля. Но вы можете посмотреть его, да и запустить саму эту обработку, если скачаете её по ссылке. Если у вас другие данные или другая конфигурация, то можно помочь изменить обработку под ваши нужды, обращайтесь. Ещё были даны ответы на вопросы, касающиееся работы с табличным полем здесь. Понравилась ли вам обработка? Что можно изменить, что добавить? Не стесняйтесь делиться об этом в комментариях!
Еще совсем недавно я долго мучилась с таблицами в 1С, мне необходимо было сортировать таблицу по разным полям и каждый раз проделывать одно и тоже уже надоело. С вашей помощью мне удалось сохранить все нужные мне настройки и теперь работать стало в разы комфортнее…
Светлана, очень рад слышать, что вам помогло мое решение по сохранению настроек табличного поля.
У меня возник такой вопрос: если мне необходимо сортировать таблицу разными способами, я могу сохранить все варианты сортировки? Настройка это позволяет сделать? Или изменить порядок и сохранить его можно только один раз?
Здравствуйте, Миронова! Чтобы сохранять различные варианты сортировки нужно немного дописать обработку. Сейчас сохраняется только одна настройка сортировки.