Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Удаление строк в табличной части / 9 сообщений из 9, страница 1 из 1
28.11.2011, 09:44
    #37547190
БеДа
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
Добрый день.
Имеется 2 табличные части документа:
1. Основная имеет один реквизит Р1
2. Дополнительная имеет несколько реквизитов, один из которых ссылка на Р1 из Основная табличной части.
Смысл в том, чтобы при удалении строк из Основная удалялись строки из Дополнительная.
Стал использовать событие ПередУдалением для Основная табличная часть. Пользователь может удалять строки как по одной, так и множественным выбором.
При множественном выборе, массив выделенных строк, возвращает номера выбранных строк. Причем это исходные номера строк +1. Т.е для правильного определения строк в Дополнительная приходится использовать поиск по Основная по реквизиту ИсходныйНомерСтроки, чтобы получить Р1.
Главная проблема, если удалить сразу все строки в Основная, при помощи множественного выбора, а затем начать добавлять строки снова, то получаем интересную картину:
ИсходныйНомерСтроки у них обнуляется, а вот массив выделенных строк, продалжает их воспринимать, как продолжение удаленных строк.
Кто, что подскажет.
...
Рейтинг: 0 / 0
28.11.2011, 10:44
    #37547257
The Dim!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
Использовать связующий реквизит. Примеров в типовых море, например Отчет производства за сему, вкладка выпуска и распределение материалов.
...
Рейтинг: 0 / 0
28.11.2011, 10:53
    #37547268
БеДа
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
Так реквизит Р1 и есть связующий. Проблема возникает только при множественном выборе , т.к "ВыделенныеСтроки" это массив из номеров строк. И чтобы добраться до Р1 необходимо получить строку по номеру. Но если в документе происходили изменения строк( удаление, добавление) то массив выделенных строк возвращает ИсходныйНомерСтроки + 1.
Главная проблема, если удалить сразу все строки в Основная, при помощи множественного выбора, а затем начать добавлять строки снова, то получаем интересную картину:
ИсходныйНомерСтроки у них обнуляется, а вот массив выделенных строк, продалжает их воспринимать, как продолжение удаленных строк.
...
Рейтинг: 0 / 0
28.11.2011, 11:15
    #37547310
БеДа
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
Ситуация повторяется на платформах: 8.2.14.519 и 8.2.14.537
...
Рейтинг: 0 / 0
28.11.2011, 11:26
    #37547355
shurikvz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
формы обычные или управляемые?
...
Рейтинг: 0 / 0
28.11.2011, 11:29
    #37547364
БеДа
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
Управляемые
...
Рейтинг: 0 / 0
28.11.2011, 12:27
    #37547519
shurikvz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
БеДаУправляемые
В УФ у текущаястрока несколько иное значение, чем в обычных. В УФ - ТекущаяСтрока содержит " идентификатор текущей строки таблицы", а для того чтобы получить саму строку используйте метод "НайтиПоИдентификатору()".

Т.е. образно будет так:
Код: plaintext
1.
МойЭлементКоллекцииДанныхФормы = МояТЗ.НайтиПоИдентификатору(Элементы.МояТЗ.ТекущаяСтрока);
...
Рейтинг: 0 / 0
28.11.2011, 12:30
    #37547523
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
БеДа, читайте документацию. Номер строки и исходный номер строки - это НЕ НОМЕР строки, а идентификатор строки. Получить по номеру строку - не рекомендуется использовать. Обращайтесь по идентификатору.

Если вы удаляете строку, а потом добавляете - то "нумерация" продолжится: например было 1234 стало 1345.
...
Рейтинг: 0 / 0
28.11.2011, 13:48
    #37547733
БеДа
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк в табличной части
[quot Программист 1с]БеДа, читайте документацию. Номер строки и исходный номер строки - это НЕ НОМЕР строки, а идентификатор строки. Получить по номеру строку - не рекомендуется использовать. Обращайтесь по идентификатору.

Если вы удаляете строку, а потом добавляете - то "нумерация" продолжится: например было 1234 стало 1345.[/quot
Спасибо за совет, все встало на свои места, массив выделенных строк это идентификатор строки таблицы формы, поэтому необходимо использовать метод ДанныеСтроки().
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Удаление строк в табличной части / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]