|
V8: Удаление строки из документа |
☑ |
0
Лирик
23.03.12
✎
08:21
|
Народ, это как?
Код следующий:
В форме:
&НаСервере
Процедура УдалитьСтрокуНаСервере(ЗначениеКолонки)
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.УдалитьСтрокуИзДокумента(ЗначениеКолонки);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
КонецПроцедуры
На сервере:
Процедура УдалитьСтрокуИзДокумента(ЗначениеКолонки) Экспорт
МассивСтрок = МояТабличнаяЧасть.НайтиСтроки(Новый Структура("КолонкаИмя", ЗначениеКолонки));
Для каждого СтрокаМассива Из МассивСтрок Цикл
МояТабличнаяЧасть.Удалить(СтрокаМассива);
КонецЦикла;
КонецПроцедуры
Строку удаляет, но в следующей строке присваивает "КолонкаИмя = ЗначениеКолонки"
То есть если таб. часть была
"А" 123
"Б" 258
"В" 456
И удалим "А"
То стала
"А" 258
"В" 456
|
|
1
fantomask
23.03.12
✎
08:24
|
ну попробуй обнулить А
|
|
2
Лирик
23.03.12
✎
08:29
|
(1) Я мож не довел до сообщества:
В следующей строке таб части колонке по которой ищем присваивается искомое значение которое должно быть удалено вместе со строкой.
|
|
3
Мимохожий Однако
23.03.12
✎
08:44
|
Как только ты удаляешь строку, надо заново начинать обход по массиву,т.к. он перестает соответствовать получившейся табличной части. Поменяй алгоритм удаления в процедуре УдалитьСтрокуДокумента
|
|
4
Лирик
23.03.12
✎
08:45
|
Разобрался, но странно - баг / не баг:
Процедура УдалитьСтрокуНаСервере(ЗначениеКолонки) вызывеется из команды.
Дак вот это косячит:
&НаКлиенте
Процедура КомандаУдалитьСтрокуТЧ(Команда)
ТекущиеДанныеТЧ = Элементы.МояТабличнаяЧасть.ТекущиеДанные;
Если ТекущиеДанныеТЧ = Неопределено Тогда
Возврат;
КонецЕсли;
// Удалить строку
УдалитьСтрокуНаСервере(ТекущиеДанныеТЧ.МоеИмяКолонки);
КонецПроцедуры
А это отрабатывает нормально:
Процедура КомандаУдалитьСтрокуТЧ(Команда)
ТекущиеДанныеТЧ = Элементы.МояТабличнаяЧасть.ТекущиеДанные;
Если ТекущиеДанныеТЧ = Неопределено Тогда
Возврат;
КонецЕсли;
// Удалить строку
ЗначениеКолонки = ТекущиеДанныеТЧ.МоеИмяКолонки;
УдалитьСтрокуНаСервере(ЗначениеКолонки);
КонецПроцедуры
|
|
5
Лирик
23.03.12
✎
08:54
|
(3) Не скажи кому - засмеют.
|
|
6
Лирик
23.03.12
✎
09:04
|
В общем, по значению надо передавать в серверную процедуру. Спасибо всем кто попытался помочь.
|
|