Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/111: Рейтинг темы: голосов - 111, средняя оценка - 4.60
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
1

1c7.7 ТЗ, как скопировать строку?

07.10.2009, 18:01. Просмотров 20564. Ответов 10
Метки нет (Все метки)

обхожу ТЗ в цикле в какой-то момент получаю строку, значения которой мне нужно продублировать, т.е. чтобы появилась еще одна строка после текущей со значениями текущей. как это сделать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2009, 18:01
Ответы с готовыми решениями:

1c7. как обходить значения ТЗ
В восьмерке есть очень удобный цикл для обхода таблиц значения - для каждого. Подскажите...

Как зафиксировать область просмотра колонок(1c7.7), т.е. как закрепить столбец у справочника...
Добрый день. Помогите пожалуйста, как можно зафиксировать область просмотра, например, у...

1c7.7 Справочник.Владелец - как уснановить?
Народ, подскажите плиз как правильно задавать владельца. сделал так: Договор =...

1c7.7: Торговля и склад, как найти нужную форму или слой
Вопрос совсем дурацкий, я новичок. Есть рабочая база 1с, мне необходимо внести изменения в одну из...

Как скопировать строку c одного файла и вставить в другой файл эту же строку с символом в конце “_”
Подскажите, как можно через cmd скопировать строку с одного файла 1.txt и вставить в другой 2.txt,...

10
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
07.10.2009, 19:10 2
Именно сразу после текущей или просто продублировать (вконец добавить)

Можно просто делать НоваяСтрока(), а потом СдвинутьСтроку()
Если мешает перебору, то добавлять можно в другую таблицу (предварительно в нее выгрузить первичную)

Если в ТЗ не слишком много колонок, то можно не мудрить, а просто через равно колонки присваивать
Если много, то в цикле по КоличествоКолонок() делать ТЗ2.УстановитьЗначение(<Строка>,<Колонка>,ТЗ1.ПолучитьЗначение(<Строка>,<Колонка>))
0
vbs
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
07.10.2009, 21:56 3
НоваяСтрока(<НомерСтроки>)
Назначение:
Добавляет новую строку в таблицу значений.
Параметры:
<НомерСтроки> - необязательный параметр. Числовое выражение, содержащее позицию, в которую следует вставить новую строку.
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
08.10.2009, 10:13 4
про новую строку я знаю. и как передать в новой стоке парметр тоже знаю. и то что можно сначала выгрузить значения колонок из одной строки "через равно" и заполнить новую - тоже. но это неинтересно. неужели нет какого-нить более оптимального способа копирования строки в ТЗ?
0
08.10.2009, 10:13
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
08.10.2009, 10:38 5
Тогда надо объявить конкурс на лучшую процедуру копирующую строки ТЗ
Любой сможет добавить ее себе в гл.модуль и юзать ;)
0
vytfyt
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
08.10.2009, 12:35 6
Конкурс? Попробуем...


Код
А = 1;
Пока А <= ТЗ.КоличествоСтрок() Цикл
Если ... Тогда //проверяем условие копирования строки
ТЗ.НоваяСтрока(А+1);
Для КК = 1 По ТЗ.КоличествоКолонок() Цикл
ТЗ.УстановитьЗначение(А+1,КК,ТЗ.ПолучитьЗначение(А,КК));
КонецЦикла;
А = А + 1; // если вновь вставленную строку надо пропустить
КонецЕсли;
А = А + 1;
КонецЦикла;
Я угадал?
0
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
08.10.2009, 12:45 7
Решение оченьпохоже на идеальное
Будем так считать, пока никто не предложит лучше

А кто предложит вариант для случая

ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
...
КонецЦикла;

???
0
vytfyt
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
08.10.2009, 13:48 8
А кто предложит вариант для случая

ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
...
КонецЦикла;
В таком случае возможно нарушение выборки. Поэтому я бы для такого цикла писал в новую таблицу, которую загружал бы по окончании в старую. Сложность универсальности заключается в том, что не всегда возможно привести типы колонок универсально. Да и не совсем понятно, как отработает ТЗ.НоваяСтрока() при открытой выборке. Вполне допускаю, что она либо не появится в выборке, но потом будет видна в таблице, как добавленная (т.е. 1С при открытии выборки создают копию таблицы), либо 1С не позволит добавить строку, потому как собъется выборка.
0
vbs
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
08.10.2009, 14:23 9
Цитата Сообщение от vitfil
В таком случае возможно нарушение выборки
Аналогичные проблемы возникают и при удалении строки ТЗ
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
08.10.2009, 14:41 10
Цитата Сообщение от vitfil
как отработает ТЗ.НоваяСтрока()
Нормально отработает


Цитата Сообщение от vitfil
В таком случае возможно нарушение выборки.
нужно помнить об этом и обрабатывать такую ситуацию и все ок будет.

а вообще спибо за предложенный вариант копирования. ток я уже присвоением сделал.. ща пойал себя на мысли что очень многие штуки можно было сделать черезподобную выгрузку загрузу, а я блин по неопытности получал нужную строку, брал оттуда данные, а потом возвращался к первоначальной стоке.
0
vbs
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
08.10.2009, 14:50 11
Цитата Сообщение от KiR
ток я уже приснием сделал
расшифровал бы....
0
08.10.2009, 14:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2009, 14:50

Как скопировать строку типа std::string в другую строку такого же типа?
Хотел скопировать строку #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using...

Как скопировать строку из DBGrid в буфер?
Приведите Пожалуйста код, который копирует в буфер выделенные строки из DbGrid для дальнейшей...

Как можно скопировать строку таблицы?
Есть ли метод - скопировать текущую строку в dataTable или DataGridView? Спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.