K
KiR
обхожу ТЗ в цикле в какой-то момент получаю строку, значения которой мне нужно продублировать, т.е. чтобы появилась еще одна строка после текущей со значениями текущей. как это сделать?
А = 1;
Пока А <= ТЗ.КоличествоСтрок() Цикл
Если ... Тогда //проверяем условие копирования строки
ТЗ.НоваяСтрока(А+1);
Для КК = 1 По ТЗ.КоличествоКолонок() Цикл
ТЗ.УстановитьЗначение(А+1,КК,ТЗ.ПолучитьЗначение(А,КК));
КонецЦикла;
А = А + 1; // если вновь вставленную строку надо пропустить
КонецЕсли;
А = А + 1;
КонецЦикла;
В таком случае возможно нарушение выборки. Поэтому я бы для такого цикла писал в новую таблицу, которую загружал бы по окончании в старую. Сложность универсальности заключается в том, что не всегда возможно привести типы колонок универсально. Да и не совсем понятно, как отработает ТЗ.НоваяСтрока() при открытой выборке. Вполне допускаю, что она либо не появится в выборке, но потом будет видна в таблице, как добавленная (т.е. 1С при открытии выборки создают копию таблицы), либо 1С не позволит добавить строку, потому как собъется выборка.А кто предложит вариант для случая
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
...
КонецЦикла;
Аналогичные проблемы возникают и при удалении строки ТЗВ таком случае возможно нарушение выборки
Нормально отработаеткак отработает ТЗ.НоваяСтрока()
нужно помнить об этом и обрабатывать такую ситуацию и все ок будет.В таком случае возможно нарушение выборки.
Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab