|
поделитесь - как грамотно обрабатывать колонки ТЧ! | ☑ | ||
---|---|---|---|---|
0
ASimonova
24.10.16
✎
13:46
|
1С:Предприятие 8.3 (8.3.8.1964)
Часто нужно обработать одну-две колонки ТЧ. Я всегда сувала их в запрос и в запросе обрабатывала и загружала обратно в ТЧ. А если у меня 50 полей, зачем я их буду туда-сюда гонять, может, можно как-нибудь попроще? Если засунуть одну колонку в запрос, обработать и загрузить обратно, тогда велика вероятность потери соответствия между строками, и я так никогда не рисковала. Обрабатывать построчно в цикле - слишком долго для больших ТЧ. Поделитесь - как вы делаете? Как это будет максимально грамотно? |
|||
1
Жан Пердежон
24.10.16
✎
13:51
|
в чем обработка заключается?
если данные тянуть из базы - запросом; чтобы порядок сохранился - добавляешь порядковый номер и сортируешь по нему; какие ещё риски на ровном месте? |
|||
2
DrShad
24.10.16
✎
13:52
|
(0) обычно делаем один раз - заполняем и больше не трогаем
|
|||
3
ASimonova
24.10.16
✎
14:00
|
(1) то есть просто сортирую по НомерСтроки, который есть в любой ТЧ и вставляю нужные мне колонки и все, верно? все равно как-то непрозрачно получается. вдруг у нас случайно лишние строки появятся в запросе, а контроля нет.
(2) не поняла, что значит делаем один раз? |
|||
4
Мойдодыр
24.10.16
✎
14:08
|
Выбираешь запросом номера строк и обрабатываешь
|
|||
5
Мойдодыр
24.10.16
✎
14:11
|
|
|||
6
Жан Пердежон
24.10.16
✎
14:12
|
(3) пиши запрос так, чтобы он не выдавал лишние строки;
|
|||
7
ptiz
24.10.16
✎
14:14
|
(3) Зачем сортировать? Добавляй в запрос и нужные поля, и номер строки документа. При обходе результата запроса пихай всё в нужную строку обратно по номеру.
|
|||
8
Жан Пердежон
24.10.16
✎
14:33
|
(7) сортировать есть смысл, если обрабатывается таблица на форме, не привязанная к ТЧ, или чтобы использовать ЗагрузитьКолонку();
|
|||
9
ASimonova
24.10.16
✎
14:39
|
(5) (7) ну и получится та же обработка ТЧ построчно, которая ну никак, я в (0) писала. это очень долго. засовывание ВСЕХ данных в запрос и загрузка Объект.Товары.Загрузить() проходит на порядки быстрее.
|
|||
10
ASimonova
24.10.16
✎
14:39
|
(6) ну если лучше нет варианта, то ок, спасибо
|
|||
11
Жан Пердежон
24.10.16
✎
14:49
|
(10) делюсь запросом, лишних строк не будет 100%:
ВЫБРАТЬ Максимум(Поле1), Максимум(Поле2),... ИЗ втПочтиГотово СГРУППИРОВАТЬ ПО НомерСтроки УПОРЯДОЧИТЬ ПО НомерСтроки |
|||
12
ptiz
24.10.16
✎
15:49
|
(9) Секунда на 10000 строк - это долго?
|
|||
13
Dotoshin
24.10.16
✎
16:24
|
(0) А можно пример обработки ТЧ, которую вы делаете через запрос?
|
|||
14
ASimonova
24.10.16
✎
22:48
|
(11) это понятно, но тогда лишние строки могут пропасть и не дать о себе знать... ну в общем я поняла, что надо просто дополнительно прописывать контроль
(12) честно, не замеряла, по ощущениям (13) ну например Для Каждого СтрокаТовары Цикл СтрокаТовары.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СтрокаТовары.НоменклатураКодСтрока); КонецЦикла. Ну это так, что первое в голову пришло |
|||
15
Йохохо
24.10.16
✎
22:59
|
(14) то о чем и писали, ВТ (номерстроки, НоменклатураКодСтрока) одно соединение и потом по индексу строки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |