Программное перемещение колонки динамического списка

26.08.25

Разработка - Работа с интерфейсом

Базовый алгоритм прост - на клиенте определяем, у кого (пользователя и форму) и что (имя колонки) двигать; на сервере получаем настройки, разбираем их, формируем новое значение порядка колонок, заменяем "новое" на "старое", собираем настройки; на сервере без контекста сохраняем настройки; на сервере обновляем реквизиты формы.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Программное перемещение колонки динамического списка:
.epf 10,78Kb
0 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Есть несколько мест, на которых необходимо обратить внимание:

1. Алгоритм опирается на нерекомендуемую ИТС функцию "ЗначениеВСтрокуВнутр";

2. Работоспособность зависит от начальных действий - необходимо "для начала" руками изменить настройки формы;

3. В самом общем случае - когда используются пользовательские поля и синонимы - шаг "разбираем их" существенно усложняется;

4. Если имена колонок содержат "." или "_", шаг "разбираем их" усложняется еще больше.

&НаКлиенте
Процедура СдвинутьКолонку(Команда)
	
	ТекущаяКолонка = ЭтаФорма.ТекущийЭлемент.ТекущийЭлемент.Имя;
	КлючОбъекта = ЭтотОбъект.ИмяФормы + "/НастройкиФормы";
	Пользователь = Строка(ПользователиКлиент.ТекущийПользователь());
	
	СдвинутьКолонкуНаСервере(ТекущаяКолонка, КлючОбъекта, Пользователь);
	
КонецПроцедуры

&НаСервере
Процедура СдвинутьКолонкуНаСервере(Знач ТекущаяКолонка, Знач КлючОбъекта, Знач Пользователь)

	НастройкиФормы = ПолучитьНастройкиФормы(КлючОбъекта, Пользователь);
	Если НастройкиФормы = "" Тогда
		ОбщегоНазначения.СообщитьПользователю("Перед началом иллюстрации работы механизма необходимо 
			|зайти в настройки формы и передвинуть одну из колонок.");
		Возврат;
	КонецЕсли;
	
	ОригинальнаяСекцияПорядкаКолонок = СекцияПорядкаПолей(НастройкиФормы);
	СтараяСекцияИзменений = ЭлементыСекцииПорядкаПолей(ОригинальнаяСекцияПорядкаКолонок)[8];
	НоваяСекцияИзменений = ПереместитьКолонку(ОригинальнаяСекцияПорядкаКолонок, ТекущаяКолонка, -1);
	НовыеНастройкиФормы = СтрЗаменить(НастройкиФормы, СтараяСекцияИзменений, НоваяСекцияИзменений);
	
	СохранитьНастройкиФормы(КлючОбъекта, Пользователь, НовыеНастройкиФормы); 
	ИзменитьРеквизиты();
	
КонецПроцедуры

 

Разложим текущие настройки формы в строку "скобочного формата". Порядок колонок динамического списка хранится в последней секций описания. (Еще раз - описываем простой случай).
Описание порядка делится на две части - "изменения" и "порядок по умолчанию". Секция изменений содержит пары "имя поля + новое положение". 

 

{"Список",
{
{0,0,1,1,
{1,0},
{1,0},0,1,0,0,60,0,1,0,0,2,0,0,1,0,
{0}
},
{
{3,"ОбъектУчета",1,"Поле6",7,"Поле8",9},
{11,"Картинка","ОбъектУчета","Поле1","Поле2","Поле3","Поле4","Поле5","Поле6","Поле7","Поле8","Поле9"}
}
}
}

 

Готовим "виртуальный обновленный порядок" и сверяем с порядком по умолчанию. Для построения списка изменений применяется следующая эвристика:

"если индекс поля не соответствует позиции по умолчанию, то поле заносится в список перемещенных колонок".

Пример реализации в приложенной обработке.

Проверено на следующих конфигурациях и релизах:

  • 1С:Зарплата и кадры бюджетного учреждения, релизы 1.0.121.2

Вступайте в нашу телеграмм-группу Инфостарт

Динамический список Управляемые формы Перемещение колонки

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С v8.3 8.3.14 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

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

28800 руб.

27.03.2025    11947    24    17    

34

Работа с интерфейсом Рабочее место 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    65748    45    60    

84

Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    21412    31    6    

48

Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    35518    mrXoxot    44    

135

Работа с интерфейсом Программист 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    20703    smielka    37    

106

Работа с интерфейсом 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    20858    1280    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    14709    175    acces969    31    

132

Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Питничная фантазия на возможности в разработке интерфейсов формы с помощью Платформы 1С - делаем свою подсказку. Публикация содержит готовую библиотеку программного формирования данной подсказки.

12.08.2022    9356    rpgshnik    39    

95
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1832003 59 26.08.25 09:50 Сейчас в теме
какая дичь. Пишешь что на сервере без контекста, однако вызываешь с контекстом. Да и в целом вся эта бесполезная писанина умещается в 2 строки. Если пользователю надо настроить свой порядок, то это делается без конфигуратора.

Еще большим бредом здесь выглядит вызов ИзменитьРеквизиты(). Зачем он тут в принципе нужен не понятно.

Много вопросов и так мало ответов
2. rnobody 2 26.08.25 11:13 Сейчас в теме
Приведенный фрагмент кода иллюстрирует только общий порядок действий - "под капотом" довольно много кода. Так и не понял, к сожалению, как бесплатно приложить файл.
"Без контекста" вызывается фрагмент записи модифицированных настроек формы, иначе никак. Без "ИзменитьРеквизиты()" интерфейс не обновится.
Само по себе движение колонки да, согласен, бесполезно. Но если потребуется "двигать" группы колонок, да в списке с парой сотен реквизитов, да по нескольку раз в день - тут, к сожалению, без помощи программиста не обойтись.

И, пожалуйста, если не затруднит - прикиньте эту "пару строк" в комментарий.
3. rnobody 2 26.08.25 14:50 Сейчас в теме
(2) Подскажите, как текст модуля в спойлер убрать - добавлю в публикацию.
Для отправки сообщения требуется регистрация/авторизация