Перемещает элемент в коллекции.
Синтаксис
Сдвинуть(<Элемент>, <Смещение>)Полное описание, параметры и ограничения
КоллекцияЭлементовУсловногоОформленияКомпоновкиДанных.Сдвинуть (DataCompositionConditionalAppearanceItemCollection.Move)
КоллекцияЭлементовУсловногоОформленияКомпоновкиДанных (DataCompositionConditionalAppearanceItemCollection)
Сдвинуть (Move)
Доступен, начиная с версии 8.1.
Синтаксис:
Сдвинуть(<Элемент>, <Смещение>)
Параметры:
<Элемент> (обязательный)
Тип: ЭлементУсловногоОформленияКомпоновкиДанных.
Перемещаемый элемент.
<Смещение> (обязательный)
Тип: Число.
Смещение элемента в коллекции.
Описание:
Перемещает элемент в коллекции.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Управлять коллекцией правил только собственной учебной формы
Вставляем и перемещаем отключённые черновики, удаляем их, затем очищаем и восстанавливаем единственное учебное правило.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В учебной базе: Файл → Новый → Внешняя обработка. Создайте управляемую форму и назначьте её основной. Дайте обработке имя УчебнаяТаблица.
Не добавляйте вручную реквизит Товары и одноимённые элементы: код создаст их при открытии. Модуль формы для этой задачи должен быть пустым.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Сохраните отдельную учебную EPF и откройте через Файл → Открыть.
Данные Книга/Ручка создаются в памяти формы. Справочники, документы и регистры вашей конфигурации не читаются и не записываются.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Товары", Новый ОписаниеТипов("ТаблицаЗначений")));
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Код", Новый ОписаниеТипов("Строка"), "Товары", "Код"));
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Наименование", Новый ОписаниеТипов("Строка"), "Товары", "Название"));
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)), "Товары", "Количество"));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)));
СтрокаТовара = Данные.Добавить();
СтрокаТовара.Код = "A-01";
СтрокаТовара.Наименование = "Книга";
СтрокаТовара.Количество = 3;
СтрокаТовара = Данные.Добавить();
СтрокаТовара.Код = "B-02";
СтрокаТовара.Наименование = "Ручка";
СтрокаТовара.Количество = 1;
ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Товары");
Таблица = ЭтаФорма.Элементы.Добавить("ТаблицаТоваров", Тип("ТаблицаФормы"));
Таблица.ПутьКДанным = "Товары";
Таблица.Заголовок = "Учебные товары";
Таблица.Шапка = Истина;
Таблица.АвтоВводНезаполненного = Ложь;
Таблица.АвтоВводНовойСтроки = Ложь;
Для Каждого ИмяКолонки Из СтрРазделить("Код,Наименование,Количество", ",") Цикл
Колонка = Элементы.Добавить("Товары" + ИмяКолонки, Тип("ПолеФормы"), Таблица);
Колонка.Вид = ВидПоляФормы.ПолеВвода;
Колонка.ПутьКДанным = "Товары." + ИмяКолонки;
Колонка.Заголовок = ИмяКолонки;
КонецЦикла;
Правило = ЭтаФорма.УсловноеОформление.Элементы.Добавить();
Правило.Использование = Истина;
Правило.Представление = "Учебное малое количество";
Правило.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 239, 200));
Правило.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(100, 60, 0));
Условие = Правило.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Условие.Использование = Истина;
Условие.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товары.Количество");
Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
Условие.ПравоеЗначение = 2;
Условие.Представление = "Количество меньше двух";
ПолеОформления = Правило.Поля.Элементы.Добавить();
ПолеОформления.Использование = Истина;
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТоварыКоличество");
Правила = ЭтаФорма.УсловноеОформление.Элементы;
Черновик = Правила.Добавить();
Черновик.Использование = Ложь;
Черновик.Представление = "Черновик в конце";
Вставленный = Правила.Вставить(0);
Вставленный.Использование = Ложь;
Вставленный.Представление = "Черновик в начале";
Сообщить(Правила.Количество() = 3);
Сообщить(Правила.Индекс(Черновик) = 2);
Правила.Сдвинуть(Черновик, -2);
Сообщить(Правила.Индекс(Черновик) = 0);
Сообщить(Правила.Получить(0).Представление = "Черновик в конце");
Правила.Удалить(Вставленный);
Правила.Удалить(Черновик);
Сообщить(Правила.Количество() = 1);
Сообщить(ЭтаФорма.УсловноеОформление.ПолучитьКоличествоИспользуемых() = 1);
// Очищаем только правила новой учебной формы и сразу восстанавливаем своё правило.
Правила.Очистить();
Сообщить(Правила.Количество() = 0);
Правило = ЭтаФорма.УсловноеОформление.Элементы.Добавить();
Правило.Использование = Истина;
Правило.Представление = "Учебное малое количество";
Правило.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 239, 200));
Правило.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(100, 60, 0));
Условие = Правило.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Условие.Использование = Истина;
Условие.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товары.Количество");
Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
Условие.ПравоеЗначение = 2;
Условие.Представление = "Количество меньше двух";
ПолеОформления = Правило.Поля.Элементы.Добавить();
ПолеОформления.Использование = Истина;
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТоварыКоличество");
Сообщить(Правила.Количество() = 1);
Сообщить(Правила.Получить(0).Использование);
КонецПроцедуры
Разбор по шагам
Коллекция хранит порядок правил, а Использование определяет, включено ли конкретное правило.
Добавить помещает черновик в конец; Вставить(0) — в начало. В уроке оба черновика отключены.
Сдвинуть принимает элемент правила и смещение, не строку таблицы и не идентификатор товара.
Индекс и Получить проверяют новую позицию; Удалить получает элемент коллекции.
Очистить удаляет все правила собственной формы. В том же серверном обработчике снова создаётся исходная подсветка количества.
После очистки старые Правило/Условие/ПолеОформления не используются: переменные получают новые созданные элементы.
Как проверить результат
Промежуточные проверки показывают три, потом одно, потом ноль и снова одно правило.
Отключённые черновики не увеличивают число используемых правил.
После открытия действует исходная подсветка Ручки 1; обе строки товаров сохранены.
Ожидаемый результат
Все восемь методов коллекции правил показаны в ограниченном учебном жизненном цикле с восстановлением оформления.
На что обратить внимание
Очистить в рабочой форме может удалить штатное оформление конфигурации — данный урок для новой пустой формы.
Перемещение правил влияет на порядок применения; визуальный результат пересекающихся параметров проверяйте отдельно.
Удаление оформления не удаляет товары, но старые ссылки на удалённые правила уже недействительны.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.