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

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

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

сейчас надо делать так что бы после добавлении новой строки новая строка попадалась не на конец ТЧ, а после той строки которому поставил галочку на ОТКАЗ. как то запомнить эту сроку которую поставил ОТКАЗ, а потом при добавлении перемещать новую строку вверх.
как делать?
буду очень благодарен если поможете. извините из за ошибок в тексте
1 Rie
 
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, тип Число. как выразить текущую строку для получение индекса?