Заполнить регистр накопления из таблицы значений #671808


#0 by Alekzander
Понимаю, что тема уже была, смотрел и анализировал, но всё же... Стоит задача - выбрать данные регистра с отбором по дате, занести в ТЗ, свернуть её и снова загрузить в тот же регистр. Вычитал, что можно использовать следующую конструкцию: Сейчас она во многом мне не нравится, хотя я точно не знаю, верная она или нет, в любом случае, выполняется она чертовски долго (почти 12 часов), существует ли другой вариант или можно как-то ускорить этот процесс, например, избавившись от вложенного цикла?
#1 by Alekzander
Ах да, забыл самое главное. УТ 11.1 у меня)
#2 by skunk
"12 часов" это насколько записей?
#3 by Alekzander
ну за день бывает около 100-200, суммарно за полмесяца (работаю на копии базы от 14 июня) приблизительно 1500-1700, не думаю, что это много.
#4 by skunk
#5 by Alekzander
забыл эту часть кода приложить. Она есть, копия ТЗ, на которой выполняется свёртка.
#6 by skunk
для чего тогда в цикле "Строки = ТЗ.НайтиСтроки(Отбор);"?
#7 by ДенисЧ
полторы тыщи записей - 12 часов???????? У тебя сервер на первом пне, что ли??
#8 by Alekzander
там у меня ещё суммирование идёт по ресурсам Количество и Возвращено:
#9 by Maxus43
только расчету себестоимости на УПП позволено крутится больше 3-4 часов, всё остальное - очень кривой код ИМХО)
#10 by skunk
давай весь код сюда ... точнее обработку выложи куда-нибудь
#11 by Alekzander
ок, щас
#12 by Alekzander
#13 by skunk
пиля ... я забыл тут скачка файла из нета забанена
#14 by skunk
вырежи весь код ... и отправь письмом на skunk_@mail.ru
#15 by ptiz
код - жееееесть... в логику вникать на стал, но 1) соединение в запросе чудовищное 2) если делаешь поиск в больших таблицах - используй индексирование
#16 by Alekzander
готово
#17 by skunk
наверное надо как-то так сделать
#18 by skunk
ну это если на твой код орентироваться
#19 by skunk
и как мне кажеться, это нзрнТовары.Отбор.Регистратор.Установить(Выборка.Регистратор); надо изменить на это нзрнТовары.Отбор.Регистратор.Установить(Документы.ПередачаТоваровМеждуОрганизациями.НайтиПоНомеру("000Т-000001"));
#20 by Alekzander
щас со старшим программистом сидим, он примерно такой же вариант подсказывает, как в . По крайней мере, я понял, что и без циклов можно обойтись, хотя вряд ли - в любом случае виды движений в каждой строке изменять придётся, но этот цикл навряд ли будет 12 часов выполняться)
#21 by Alekzander
а, проглядел условие в запросе. Тогда цикл даром не нужен.
#22 by skunk
они в самом запросе и меняються
#23 by Alekzander
Теперь проблема такая: вроде и установил отбор по регистратору - а всё равно идёт ругачка на его отсутствие, в чём может быть загвоздка?
#24 by skunk
скорее всего в из-за ... у тебя регистратор в отборе не соотвествует регистратору который устанавливается из таблицы значений
#25 by skunk
и кстати глянь может ли твой регистратор делать движения по данному регистру
#26 by Alekzander
я даже просто тупо создаю документ "передача товаров", он стопудово делает движения по этому регистру, а в результате хоть бы хны. Может порядок неправильный или что ещё?
#27 by skunk
а в запрос ты его отдаешь?
#28 by Alekzander
да в запросе есть Регистратор, пробовал, как раньше получалось нзрнТовары.Отбор.Регистратор.Установить(Выборка.Регистратор) - не пашет...
#29 by skunk
так что даст? нзрнТовары = РегистрыНакопления.ТоварыОрганизацийКПередаче.СоздатьНаборЗаписей; нзрнТовары.Загрузить(тзРезультат);
#30 by Alekzander
{Форма.Форма.Форма}: Ошибка при вызове метода контекста (Записать) нзрнТовары.Записать; по причине: Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Товары организаций к передаче) Что и следовало ожидать...
#32 by Alekzander
блиииииннн.... во я дурак... Ссылка же, ну конечно!))) Пятница, мозги совсем не пашут))
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С