Функция перестановки двух элементов массива
Лень было писать самому, попросил ИИ, написал, правда с шагом минус один, но я попросил поправить, поправил. Вот код, работает:
&НаКлиентеНаСервереБезКонтекста Процедура ПереставитьЭлемент(Массив, Источник, Приемник) Если Источник = Приемник Тогда Возврат; КонецЕсли; Элемент = Массив[Источник]; Если Источник < Приемник Тогда Для Индекс = Источник По Приемник - 1 Цикл Массив[Индекс] = Массив[Индекс + 1]; КонецЦикла; Иначе Для Смещ = 0 По Источник - Приемник - 1 Цикл Массив[Источник - Смещ] = Массив[Источник - Смещ - 1]; КонецЦикла; КонецЕсли; Массив[Приемник] = Элемент; КонецПроцедуры
В общем, можно не учиться этому, а довериться ИИ.




А чем это отличается от задачи поменять местами значения двух переменных. Циклы какие-то. Там три присвоения весь код
А там смещение. Ну все равно три оператора: прочитать, удалить, вставить.
У тебя заголовок не соответствует содержанию
я использовал для перестановки. О каком несоответствии речь? Код делает перестановку I-J
Кстати, да, в 1С есть функция вставить в массив, ИИ подкачал.
Или не ИИ
Заголовок внимательно перечитай
с заголовком все окей. Функция именно это и делает, но через перестановку всех элементов, ИИ видимо не знало, что есть сдвиг.
Дал такой промпт:
Перепиши эту функцию без массовых сдвигов элементов, используя функцию Вставить 1С (вставляет элемент в массив в заданную позицию)
Дало такой код:
Процедура ПереставитьЭлемент(Массив, Источник, Приемник)
Если Источник = Приемник Тогда
Возврат;
КонецЕсли;
// Получаем элемент для перемещения
Элемент = Массив[Источник];
// Удаляем элемент с позиции Источник
Массив.Удалить(Источник);
// Вставляем элемент на позицию Приемник
Массив.Вставить(Приемник, Элемент);
КонецПроцедуры
Нет с заголовком проблемы. Не умеешь ты в постановку задачи
Клиенты не жалуются. Обычно такое заявляют буквоеды. Но моей работе это не мешает.