Дерево цен положение полей

1. user_123 27.09.20 12:56 Сейчас в теме
Добрый день.
розница 8.3 документ установки цен
добавляю новый реквизит,добавляю элемент формы,связываю их.Необходимо поменять местоположение нового реквизита в дереве цен,иными словами поставить его не на последнее месть в дереве цен,а в другое
мНовыеРеквизиты = Новый Массив;	
    пНовыйРеквизит = Новый РеквизитФормы("РеквизитКорректор", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)), "ДеревоЦен", "Корректор");       
    мНовыеРеквизиты.Добавить(пНовыйРеквизит);
	//пНовыйРеквизит = Новый РеквизитФормы("РеквизитПоступило", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)), "ДеревоЦен", "Поступило");        
	//мНовыеРеквизиты.Добавить(пНовыйРеквизит);
	
    ЭтаФорма.ИзменитьРеквизиты(мНовыеРеквизиты);
    
    пНовыйЭлемент = Элементы.Добавить("Расш1_Корректор", Тип("ПолеФормы"), Элементы.ДеревоЦен);
    пНовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
    пНовыйЭлемент.ПутьКДанным = "ДеревоЦен.РеквизитКорректор";

Показать

данный код добавляет его в последнюю позицию.Как поменять позицию?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 27.09.20 12:59 Сейчас в теме
Вместо Добавить() использовать Вставить(). Все как и в работе с коллекциями.
И еще. Местоположение реквизитов не имеет никакого значения. Вам надо изменить местоположение ЭЛЕМЕНТА формы в визуальном отображении.
Элементы.Вставить(...);
3. user_123 27.09.20 14:50 Сейчас в теме
(2)ПЕРЕМЕСТИТЬ?
В данном случае работаю с колекцией
Элементы.ДеревоЦен.
4. FatPanzer 27.09.20 14:51 Сейчас в теме
5. user_123 27.09.20 14:58 Сейчас в теме
(4)дело в том,что сначала при создании на сервере колонка добавляется,а затем по ходу работы необходимо дать отработать стандартным функция конфигурации,которые не предусматривают наличие доп колонок. И в связи с этим перед запуском стандартных модулей делаю так
1 сохраняю данные реквизита
2 удаляю реквизит
3 передаю конфигурации управление
4 снова создаю реквизит
5 восстанавливаю данные в реквизит

пТЗ_ДанныеРеквизита = Новый ТаблицаЗначений;        
		пТЗ_ДанныеРеквизита.Колонки.Добавить("РеквизитКорректор");
		
	    СохранитьКолонкуДереваРекурсивно(пТЗ_ДанныеРеквизита, ДеревоЦен.ПолучитьЭлементы()); 
		
	    пМассивУдалить = Новый Массив;
	    пМассивУдалить.Добавить("ДеревоЦен.РеквизитКорректор");
		
	    ЭтаФорма.ИзменитьРеквизиты(, пМассивУдалить); 		

		
		ПродолжитьВызов();
		

		пНовыеРеквизиты = Новый Массив;    
	    пНовыйРеквизит = Новый РеквизитФормы("РеквизитКорректор", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)), "ДеревоЦен", "Корректор");    
	    пНовыеРеквизиты.Добавить(пНовыйРеквизит); 	
	    ЭтаФорма.ИзменитьРеквизиты(пНовыеРеквизиты);   
		ЗагрузитьКолонкуДереваРекурсивно(пТЗ_ДанныеРеквизита, ДеревоЦен.ПолучитьЭлементы());
Показать
6. user_123 27.09.20 15:01 Сейчас в теме
(4)
соответственно нужно сдвинуть созданный этим ЭтаФорма.ИзменитьРеквизиты(пНовыеРеквизиты);обработчиком реквизит
7. FatPanzer 27.09.20 15:17 Сейчас в теме
(6) Я же написал выше - реквизиты НЕ ДВИГАЮТСЯ. Двигаются ЭЛЕМЕНТЫ.
8. user_123 27.09.20 15:21 Сейчас в теме
(7)я это понял,вопрос в другом, когда элемент уже есть,как его передвинуть а не вставить?
12. FatPanzer 27.09.20 16:04 Сейчас в теме
13. user_123 27.09.20 16:09 Сейчас в теме
(12)
спасибо,в помощнике еще не совсем ориентируюсь,путаюсь в типах
Элементы.Переместить(Элементы.Найти("Расш1_Корректор"),Элементы.ДеревоЦен);
14. FatPanzer 27.09.20 16:15 Сейчас в теме
(13) Не так. В-первых, данный код переместит элемент в самый конец группы (если вам так и надо - то ок). Во вторых - использовать Найти внутри методов - это моветон. А как поведет себя перемещение, если элемент с таким именем будет не найден? Так писать нельзя.
Если вы точно знаете, что такой элемент существует, то к нему можно сразу обратиться через "точку":
Элементы.Переместить(Элементы.Расш1_Корректор, Элементы.ДеревоЦен);

Если вы не уверены, что такой элемент существует, тогда
ПеремещаемыйЭлемент = Элементы.ДеревоЦен.ПодчиненныеЭлементы.Найти("Расш1_Корректор");
Если ПеремещаемыйЭлемент <> Неопределено Тогда
    Элементы.Переместить(ПеремещаемыйЭлемент, Элементы.ДеревоЦен);
КонецЕсли;
9. user_123 27.09.20 16:00 Сейчас в теме
в методе ВСТАВИТЬ элементов формы не нахожу позиции,на которую нужно вставлять
Прикрепленные файлы:
11. FatPanzer 27.09.20 16:03 Сейчас в теме
(9) Естественно. Потому что Вставить() - это для новых элементов. А для существующиъ есть Переместить().
Для всего этого есть синтакс-помощник. Там можно найти все, что необходимо.
10. user_123 27.09.20 16:00 Сейчас в теме
я так понимаю его сначала нужно найти,затем поменять положение в группе
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот