S
SeverBap
Проблема: Имется справочник (редактирование в формесписка, уникальные коды,подчиненый справочник) необходимо написать программу по смене кодов элементов справочника!!!!
Написал такой код:
Выдает ошибку
Входные параметры в процедуру
Конт - контекст формы,
Направление (Значения: 1, -1) - уменьшение или увелечение кода на одно значение!!!!!
Как мона написать более реально???
Написал такой код:
Код:
Процедура глСпрПереместитьЭлемент(Конт,Направление) Экспорт
Если ПустоеЗначение(Конт.ТекущийЭлемент())=1 Тогда
Предупреждение("Сначала выберите элемент!");
Возврат;
КонецЕсли;
ТекущийСправочник=СоздатьОбъект("Справочник."+Конт.Вид());
ТекущийСправочник.ПорядокКодов();
Если Направление=-1 Тогда ТекущийСправочник.ОбратныйПорядок(1); КонецЕсли;
ТекущийСправочник.ВыбратьЭлементы();
Пока ТекущийСправочник.ПолучитьЭлемент()=1 Цикл
Если ТекущийСправочник.ТекущийЭлемент()=Конт.ТекущийЭлемент() Тогда
Если ТекущийСправочник.ПолучитьЭлемент()=0 Тогда
Предупреждение("Элемент уже крайний");
Возврат;
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
НачатьТранзакцию();
ТекущийЭлемент=СоздатьОбъект("Справочник."+Конт.Вид());
ТекущийЭлемент.НайтиЭлемент(Конт.ТекущийЭлемент());
ЭлементОбмена=СоздатьОбъект("Справочник."+Конт.Вид());
ЭлементОбмена.НайтиЭлемент(ТекущийСправочник.ТекущийЭлемент());
Для Сч=1 По 9999 Цикл
Если ТекущийСправочник.НайтиПоКоду(Сч,0)=0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Код=ТекущийЭлемент.Код;
ТекущийЭлемент.Код=ЭлементОбмена.Код;
ЭлементОбмена.Код=Сч;
ЭлементОбмена.Записать();
ТекущийЭлемент.Записать();
ЭлементОбмена.Код=Код;
ЭлементОбмена.Записать();
ЗафиксироватьТранзакцию();
КонецПроцедуры
Входные параметры в процедуру
Конт - контекст формы,
Направление (Значения: 1, -1) - уменьшение или увелечение кода на одно значение!!!!!
Как мона написать более реально???