Вход | Регистрация


1С:Предприятие ::

Метки: 

Как добиться такого переноса строк с одной таблицы в другую.

Я
   razbiralshik
 
20.12.17 - 16:08
Две табличеи на форме.
В одной выделяем строки, нажимаем кнопку и выделенные строки должны перенестись с другую табличку а из предыдущей удалится.
Сделал так:
    Для Каждого тек Из Элементы.ВсеТовары.ВыделенныеСтроки Цикл
        СтрВТ = ТоварыДляПечати.Добавить();
        ЗаполнитьЗначенияСвойств(СтрВТ, ВсеТовары[тек]);
        ВсеТовары.Удалить(ВсеТовары.Индекс(ВсеТовары.НайтиПоИдентификатору(тек)));
    КонецЦикла;


Но он не удаляет все строки и не все переносит. Если без удаления то нормально переносятся. При удалении строки в массиве строк становится на одну строку меньше, непонятно почему. Как сделать правильно?
 
  Рекламное место пустует
   Lexey_
 
1 - 20.12.17 - 16:11
(0) обратным циклом или удаляй после обхода коллекции
   razbiralshik
 
2 - 20.12.17 - 16:17
(1) после удалять пробовал, результат тотже.
как обратным циклом по выделенным строкам?
   Lexey_
 
3 - 20.12.17 - 16:20
(2) показывай, как пробовал
   razbiralshik
 
4 - 20.12.17 - 16:22
Для Каждого тек Из Элементы.ВсеТовары.ВыделенныеСтроки Цикл
        СтрВТ = ТоварыДляПечати.Добавить();
        ЗаполнитьЗначенияСвойств(СтрВТ, ВсеТовары[тек]);
    КонецЦикла;
    Для Каждого тек Из Элементы.ВсеТовары.ВыделенныеСтроки Цикл
        ВсеТовары.Удалить(тек);
    КонецЦикла;
   X Leshiy
 
5 - 20.12.17 - 16:23
>>При удалении строки в массиве строк становится на одну строку меньше, непонятно почему.

Поржал :)
   Lexey_
 
6 - 20.12.17 - 16:24
(4) мда...
   razbiralshik
 
7 - 20.12.17 - 16:25
(5) да понятно почему, ржи, просто я хз как описать чтобы всем угодить
   DexterMorgan
 
8 - 20.12.17 - 16:25
(0) >>При удалении строки в массиве строк становится на одну строку меньше, непонятно почему.

сп

ВыделенныеСтроки (SelectedRows)
Использование:

Только чтение.
Описание:

Тип: Массив.
Содержит массив идентификаторов выделенных строк.


Давай думать вместе.
"Содержит массив идентификаторов выделенных строк."
"При удалении строки в массиве строк становится на одну строку меньше"
   razbiralshik
 
9 - 20.12.17 - 16:25
(6) мда.
   razbiralshik
 
10 - 20.12.17 - 16:26
(8) это я прекрасно знаю, вот решение найти пытаюсь
 
  Рекламное место пустует
   Lexey_
 
11 - 20.12.17 - 16:26
(4) добавляй в новый массив строки, которые нужно удалить, потом обходи его
   razbiralshik
 
12 - 20.12.17 - 16:27
(11) делал, результата не дало, угадаешь почему?
   Lexey_
 
13 - 20.12.17 - 16:29
(12) показывай, как делал
   razbiralshik
 
14 - 20.12.17 - 16:29
(13) мда
   Lexey_
 
15 - 20.12.17 - 16:39
(12) угадаю - в твоем коде нет НайтиПоИдентификатору()
   Сияющий в темноте
 
16 - 20.12.17 - 16:39
выделенные строки обходим,переносим в новую таблицу и добавляем в отдельный массив
по окончании перебора перебираеи вновь созданный массив и удаляем все строки,которые в нем есть
   razbiralshik
 
17 - 20.12.17 - 16:43
(15) не угодал
   Lexey_
 
18 - 20.12.17 - 16:45
(17) код почему не показываешь?
   X Leshiy
 
19 - 20.12.17 - 16:54
(17) Нижилей пирименых )))
   razbiralshik
 
20 - 21.12.17 - 08:06
(18)
    МД = Новый Массив;
    Для Каждого тек Из Элементы.ВсеТовары.ВыделенныеСтроки Цикл
        СтрВТ = ТоварыДляПечати.Добавить();
        ЗаполнитьЗначенияСвойств(СтрВТ, ВсеТовары[тек]);
        МД.Добавить(тек);
    КонецЦикла;
    
    Для Каждого текс Из МД Цикл
        ВсеТовары.Удалить(ВсеТовары.НайтиПоИдентификатору(текс));
    КонецЦикла;


делаешь такой код на обе таблички и потом спустя несколько перекидывай он выдает:
{Документ.ПередачаТовараНаДоставку.Форма.ФормаКомплектовочнаяВедомость.Форма(26)}: Индекс находится за границами массива
        ЗаполнитьЗначенияСвойств(СтрВТ, ВсеТовары[тек]);


т.к. индекс не обнуляется... в этом главная проблема...
   Lexey_
 
21 - 21.12.17 - 08:18
(20) а почему в одном цикле ты
используешь НайтиПоИдентификатору, а в другом нет?
   razbiralshik
 
22 - 21.12.17 - 08:23
(21) ты прав, так сработало, спасибо ))
   Buster007
 
23 - 21.12.17 - 10:35
А если так
Пока Элементы.ВсеТовары.ВыделенныеСтроки.Количество() Цикл
ВсеТовары.Удалить(ВсеТовары.НайтиПоИдентификатору(Элементы.ВсеТовары.ВыделенныеСтроки[0]));
КонецЦикла;
?



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