Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

перемещение строки в ТЧ

перемещение строки в ТЧ
Я
   Эльчин
 
10.05.19 - 09:16
здравствуйте. есть таб. часть в форме документа. там 2 строки (Офис и Матбаа (подразделения предприятии)). сделал такой вещь. если в первом строке (Офис) вставит галочку на ОТКАЗ, открывается окно для выборке новую подразделению:
http://ximage.ru/index.php?id=1557468819
когда выбираю добавляется новая строка в ТЧ:
http://ximage.ru/index.php?id=1557468841
до этого сделал. код так написал:

&НаКлиенте
Процедура СтруктурныеПодразделенияОтказПриИзменении(Элемент)
    Если Элементы.СтруктурныеПодразделения.ТекущиеДанные.Отказ И Элементы.СтруктурныеПодразделения.ТекущиеДанные.Выполнен Тогда
        П = Новый Структура;
        П.Вставить("Владелец", ЭтотОбъект);
        ОткрытьФорму("Справочник.СтруктурныеЕдиницы.ФормаВыбора", , Элементы.СтруктурныеПодразделения, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);    
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура СтруктурныеПодразделенияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;    
    Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.СтруктурныеЕдиницы") Тогда
        строка = Объект.СтруктурныеПодразделения.Добавить();
        строка.СтрукПод = ВыбранноеЗначение;
        строка.Номенклатура = Элементы.СтруктурныеПодразделения.ТекущиеДанные.Номенклатура;
        строка.ДатаДобавления = ТекущаяДата();
    КонецЕсли;
    
КонецПроцедуры

сейчас надо делать так что бы после добавлении новой строки новая строка попадалась не на конец ТЧ, а после той строки которому поставил галочку на ОТКАЗ. как то запомнить эту сроку которую поставил ОТКАЗ, а потом при добавлении перемещать новую строку вверх.
как делать?
буду очень благодарен если поможете. извините из за ошибок в тексте
 
 
   Rie
 
1 - 10.05.19 - 09:26
(0) Когда обрабатываешь изменение флажка - запомни номер строки.
А когда обрабатываешь выбор подразделения, то не
Строка = Объект.СтруктурныеПодразделения.Добавить();
а
Строка = Объект.СтруктурныеПодразделения.Вставить(НужныйНомар);
   Галахад
 
2 - 10.05.19 - 09:29
Наверное так: Элементы.СтруктурныеПодразделения.ТекущиеДанные.НомерСтроки
   Эльчин
 
3 - 10.05.19 - 09:33
(1) номер строки? а в справке Индекс требует
   Эльчин
 
4 - 10.05.19 - 09:39
решил сразу добавить, а не открыт форму для выборки.
сделал так:
&НаКлиенте
Процедура СтруктурныеПодразделенияОтказПриИзменении(Элемент)
    Если Элементы.СтруктурныеПодразделения.ТекущиеДанные.Отказ И Элементы.СтруктурныеПодразделения.ТекущиеДанные.Выполнен Тогда
        
        ИндексТекСтроки = Объект.СтруктурныеПодразделения.Индекс(Элементы.СтруктурныеПодразделения.ТекущаяСтрока);
        Индекс = ИндексТекСтроки + 1;
        
        строка = Объект.СтруктурныеПодразделения.Вставить(Индекс);
        строка.СтрукПод = Элементы.СтруктурныеПодразделения.ТекущиеДанные.СтрукПод;
        строка.Номенклатура = Элементы.СтруктурныеПодразделения.ТекущиеДанные.Номенклатура;
        строка.ДатаДобавления = ТекущаяДата();        
    КонецЕсли;
КонецПроцедуры

вставляет в первую строку.
когда сделаю так:

&НаКлиенте
Процедура СтруктурныеПодразделенияОтказПриИзменении(Элемент)
    Если Элементы.СтруктурныеПодразделения.ТекущиеДанные.Отказ И Элементы.СтруктурныеПодразделения.ТекущиеДанные.Выполнен Тогда        
        строка = Объект.СтруктурныеПодразделения.Вставить(Элементы.СтруктурныеПодразделения.ТекущиеДанные.НомерСтроки + 1);
        строка.СтрукПод = Элементы.СтруктурныеПодразделения.ТекущиеДанные.СтрукПод;
        строка.Номенклатура = Элементы.СтруктурныеПодразделения.ТекущиеДанные.Номенклатура;
        строка.ДатаДобавления = ТекущаяДата();        
    КонецЕсли;
КонецПроцедуры

добавляет в последную строку. не могу разбиратся
   Эльчин
 
5 - 10.05.19 - 09:48
(4) + Элементы.СтруктурныеПодразделения.ТекущаяСтрока возвращает 0, тип Число. как выразить текущую строку для получение индекса?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует