|
Как удалить выбранные строки из таблицы (Управляемая форма) | ☑ | ||
---|---|---|---|---|
0
Mista444
28.03.16
✎
07:59
|
Как удалить выбранные строки из таблицы (Управляемая форма)?
Процедура УдалитьФайл(Команда) ВыделенныеСтроки = Элементы.ФайловаяТаблица.ВыделенныеСтроки; Для Каждого ВыделеннаяСтрока ИЗ ВыделенныеСтроки Цикл Элементы.ФайловаяТаблица.Удалить(ВыделеннаяСтрока); КонецПроцедуры |
|||
1
Fedor-1971
28.03.16
✎
08:48
|
(0) Так в чём вопрос то?
|
|||
2
Fedor-1971
28.03.16
✎
08:49
|
ФайловаяТаблица - это реквизит формы или объекта?
|
|||
3
Остап Сулейманович
28.03.16
✎
08:49
|
(1) Нет КонецЦикла;
|
|||
4
Mankubus
28.03.16
✎
08:49
|
>>Элементы.ФайловаяТаблица.Удалить(ВыделеннаяСтрока);
Удаляй не из элемента, а из данных с которым он связан |
|||
5
Mista444
28.03.16
✎
08:50
|
(4) Через "Объект"?
(2) объекта. |
|||
6
Fedor-1971
28.03.16
✎
08:51
|
(3) скорее всего, ТС его просто не скопировал.
(5) Объект.ФайловаяТаблица.Удалить(ВыделеннаяСтрока); |
|||
7
Mista444
28.03.16
✎
08:56
|
(6) так не получается(ничего не происходит).
Добавляю следующим образом: Процедура ВыбратьФалйы(Команда) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл"; Диалог.ПолноеИмяФайла = ""; Диалог.МножественныйВыбор = Истина; Если Диалог.Выбрать() Тогда Сообщить(Диалог.ПолноеИмяФайла); КонецЕсли; Таблица = Объект.ФайловаяТаблица; ПараметрыОтбора=Новый Структура; Для каждого Файл из Диалог.ВыбранныеФайлы Цикл ПараметрыОтбора.Вставить("ПутьКФайлу",Файл); МассивСтрок= Таблица.НайтиСтроки(ПараметрыОтбора); если МассивСтрок.Количество() = 0 Тогда Строка = Таблица.Добавить(); Строка.ПутьКФайлу=Файл; КонецЕсли; ПараметрыОтбора.Очистить(); КонецЦикла; КонецПроцедуры |
|||
8
ЧеловекДуши
28.03.16
✎
09:03
|
(0) На сервере выполняешь код
ТЗ = ТвойТаблица.Выгрузить(); //Затем удаляешь все что лишнее. //Работаешь с ТЗ, как с Таблицей значения //Помещаешь все обратно. ЗначениеВРеквизитФормы(ТЗ,"Объект"); И вуаля, ТЗ отредактирована :) |
|||
9
ЧеловекДуши
28.03.16
✎
09:03
|
(7) Ты сервер и Клиент не путай :)
|
|||
10
Mista444
28.03.16
✎
09:06
|
(9) а то, что я добавляю оно же записывается на сервере или нет?
|
|||
11
zak555
28.03.16
✎
09:08
|
(8) на клиенте нельзя ?
|
|||
12
Mista444
28.03.16
✎
09:09
|
Просто в ИТС написано : ДокументОбъект.Товары.Удалить(ЭлементыФормы.Товары.ТекущаяСтрока);
|
|||
13
Fedor-1971
28.03.16
✎
09:24
|
(12) ты прочитай полностью и обрати внимание к чему оно относится. в УФ ДокументОбъект - живёт только на сервере и на клиента может приехать только в виде формы.
Если тебе нужно удалить строку из ТЧ то используй Объект.ТЧ.Удалить(..), если нужно удалять из ТаблицыЗначений - реквизита формы, то ТЗ.Удалить(..). По сути без разницы НаКлиенте или НаСервере будешь удалять строку, но при удалении НаКлиенте, при большой таблице, запустишь большой поток обмена с сервером (таблицу сначала нужно притащить на клиента, найти строку, удалить её и вернуть всю таблицу на сервер). Тебе больше известно про твою задачу, вот и реши сам где тебе удобней удалять строку. |
|||
14
Fedor-1971
28.03.16
✎
09:27
|
(10) оно заносится в структуры формы и отправляется на сервер, но в саму БД до записи объекта не попадает
|
|||
15
Mista444
28.03.16
✎
09:29
|
(13) ааа, забыл принудительно указать &НаКлиенте. Забываю, что по умолчанию на сервере выполняется. Спасибо вам!
|
|||
16
ЧеловекДуши
28.03.16
✎
09:50
|
(11) Можно, а оно надо? :)
|
|||
17
zak555
28.03.16
✎
09:54
|
(16) правильнее удалить на клиенте
|
|||
18
ЧеловекДуши
28.03.16
✎
10:47
|
(17) Как знать. Среди 100 000 строк, использовать перебор в Цикле. Чет как то не очень :)
|
|||
19
Mista444
28.03.16
✎
11:51
|
Вообщем удалять получается, однако если еще раз вызвать функцию удаления она будет ругаться на индекс. Видимо при удалении данные сервера и клиента не синхронизируются. Как правильно это сделать? Какие директивы на какие функции повесить?
|
|||
20
zak555
28.03.16
✎
11:54
|
(18) для начала нужно понято, что под строками имеется ввиду
например ТЧ дока -- удаляют на стороне клиента при закрытии формы систмеа спрашивает -- сохрнаить ли данные изменения или нет если сохранить, то она "форму с данными" передаёт на Сервер и там записывает в базу... |
|||
21
Mista444
28.03.16
✎
12:00
|
(20) спасибо.
Написал следующее(вроде работает): &НаКлиенте Функция ВыборФайлов() Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл"; Диалог.ПолноеИмяФайла = ""; Диалог.МножественныйВыбор = Истина; Если Диалог.Выбрать() Тогда Сообщить(Диалог.ПолноеИмяФайла); КонецЕсли; Возврат Диалог.ВыбранныеФайлы; КонецФункции &НаСервере Процедура СохранитьВыбранныеФайлы(МассивФайлов) Таблица = Объект.ФайловаяТаблица; ПараметрыОтбора=Новый Структура; Для каждого Файл из МассивФайлов Цикл ПараметрыОтбора.Вставить("ПутьКФайлу",Файл); МассивСтрок= Таблица.НайтиСтроки(ПараметрыОтбора); если МассивСтрок.Количество() = 0 Тогда Строка = Таблица.Добавить(); Строка.ПутьКФайлу=Файл; КонецЕсли; ПараметрыОтбора.Очистить(); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ВыбратьФалйы(Команда) МассивФайлов = Новый Массив(); МассивФайлов = ВыборФайлов(); СохранитьВыбранныеФайлы(МассивФайлов); КонецПроцедуры |
|||
22
Mista444
28.03.16
✎
12:02
|
&НаКлиенте
Процедура УдалитьФайл(Команда) ВыделенныеСтроки = Элементы.ФайловаяТаблица.ВыделенныеСтроки; Для Каждого ВыделеннаяСтрока ИЗ ВыделенныеСтроки Цикл Сообщить(ВыделенныеСтроки.Количество()); //Объект.ФайловаяТаблица.Удалить(ВыделеннаяСтрока); //ДокументОбъект.Товары.Удалить(ЭлементыФормы.Товары.ТекущаяСтрока); Объект.ФайловаяТаблица.Удалить(ВыделеннаяСтрока); КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |