Универсальное удаление движений регистров накопления по всем непроведенным документам

27.09.19

База данных - Чистка данных

Попалась база КА 2.4 с движениями по регистрам, у которых регистратор был непроведен или помечен на удаление. Написал небольшую обработку по удалению таких записей из регистров.

Скачать исходный код

Наименование Файл Версия Размер
Универсальное удаление движений по регистру накопления по всем непроведенным документам:
.epf 6,20Kb
43
.epf 6,20Kb 43 Скачать

Задача: Перебрать все регистры накопления, выявить непроведенные регистраторы и удалить движения.

В цикле собираю мега-запрос ко всем регистрам накопления, группирую по регистратору и имени регистра.

Создаю набор записей, устанавливаю отбор по регистратору и записываю набор.

Тестировал на платформе 1С:Предприятие 8.3 (8.3.14.1565)

Обработка универсальная, будет работать на любой конфигурации. Открывается через "Файл" - "Открыть".

удаление движений регистру регистратор непроведен помечен удалить

См. также

Универсальное выборочное удаление данных из базы 1С (любые конфигурации на упр.формах: БП 3.0, УТ 11, КА 2, ERP, УНФ, ЗУП 3, Розница и т.д.)

Чистка данных Платформа 1С v8.3 Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Обработка позволяет удобно выборочно удалить данные из базы 1С. Это могут быть как неиспользуемые элементы справочников, так и неактуальные организации. При этом есть возможность провести анализ пересечений документов с другими организациями и таким образом уберечься от того, что при удалении обороты по другой организации изменятся.

3350 руб.

28.11.2019    24482    49    16    

62

Лайфхаки для разработчиков 1С. Часть 1

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Россия Бесплатно (free)

Собрали 20 лайфхаков, которые используют наши программисты при работе с 1С. Формы, контрагенты, СКД, процедуры, глюки платформы и многое другое. В этой статье публикуем первую часть.

30.09.2020    11067    Neti    47    

69

Самый простой парсинг и обработка веб-страниц в 1С

WEB-интеграция Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    32273    Infostart    30    

150

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Универсальные функции Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бесплатно (free)

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

10.07.2020    19588    quazare    7    

113

Форма выбора (подбор) в управляемых формах

Универсальные функции Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    245945    user5300    46    

348

Удаление нулевых цен

Чистка данных Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Система по ошибке заполнила цены нулями и теперь формулы не работают, а исправлять вручную нет сил? Не беда - есть решение, читай далее, как это исправить автоматически!

2400 руб.

02.03.2020    7707    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. skeptik2105 27.09.19 13:56 Сейчас в теме
Ваша обработка ошибочно удалит движения документов, у которых отключено проведение (Проведение = Запретить в конфигураторе).
+
2. Йожкин Кот 1006 27.09.19 14:36 Сейчас в теме
На достаточно большой базе будет либо неоправданно долго работать, либо упадет из-за недостатка памяти вот из-за этой строки:
Не Регистр.Регистратор.Проведен
+
3. Йожкин Кот 1006 27.09.19 14:39 Сейчас в теме
Ну еще и "Выбрать различные" вместо "Выбрать" нужно и "Объединить" вместо "Объединить все"...
+
4. John_d 5406 27.09.19 16:25 Сейчас в теме
(3) Протестировал. Если добавить "Выбрать различные", то 1с предприятие падает с ошибкой.
The query processor ran out of internal resources and could not produce a query plan.
This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions.
Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.

А в "Объединить" не вижу смысла, т.к. результаты запросов будут разные по двум измерениям "имя регистра" и регистратор.
+
9. buganov 200 01.10.19 07:10 Сейчас в теме
(4)
The query processor ran out of internal resources and could not produce a query plan

Ошибка заключается в том, что SQL отказался с Вами играть и попросил переделать запрос
+
5. timm00 140 27.09.19 18:19 Сейчас в теме
Не проще написать: РегистрыНакопления[<ИмяРегистра>].СоздатьНаборЗаписей(); ?
+
6. CheBurator 3119 30.09.19 00:37 Сейчас в теме
я не спец, но может как-то сразу ограничить подмножестова?
- выбираем все виды документов, которые по настройкам конфигурации могут быть проведены;
- по полученным видам собираем все непроведенные доки;
- для всех непроведенных доков ищем записи проведения в регистрах...

так правильнее будет или нет?
user811769; +1
7. John_d 5406 30.09.19 09:17 Сейчас в теме
(6) Можно было и таким путем пойти. Но у меня была цель универсальность. Если со временем добавят новые документы и новые регистры. Мой метод будет работать.
+
10. buganov 200 01.10.19 07:10 Сейчас в теме
(7) С новыми да, пока они не разрастутся.
+
8. buganov 200 01.10.19 07:08 Сейчас в теме
1. У Вас запрос собирается текстом. Почитайте про конкатенацию строк
https://its.1c.ru/db/v8std#content:782:hdoc
2. НЕ Регистр.Регистратор.Проведен. Тут сразу две ошибки в запросе. Первая - обращение через точку к составному типу(чаще всего регистр двигают несколько документов), и вторая - отрицание, что делает невозможным поиск по индексу.
3. ТИПЗНАЧЕНИЯ(Регистр.Регистратор) - вычисления по полю так же исключает поиск в индексе.В этой же строке <>
4. Итоговая группировка при КМК абсолютна лишняя, гораздо выгоднее сразу выбирать различные.
5. Упорядочивание по периоду так же лишняя, если учесть, что интерактивного анализа не подразумевается. Сортировка очень тяжелая операция.
6. В случае исключительной ситуации выполнение упадет, при этом придется так на каждую ошибку запускать заново. при этом целостность движений может пострадать, хоть эти движения и считаются лишними.
7. Команда выполнить не совсем к месту.

Как итог, самые большие проблемы в запросе. Если запустить Вашу обработку на системах с таблицами более миллиона записей, с несколькими регистраторами, то DBA Вам по пальцам настучит.
jONES1979; user811769; +2
11. John_d 5406 01.10.19 10:15 Сейчас в теме
(8)Спасибо за подробный разбор.
1. Исправил.
4. Так сразу падает 1с. Выше писал(4)
5. Убрал. Решал другую задачу.
7. Убрал
+
12. buganov 200 01.10.19 10:55 Сейчас в теме
(11) п.2 и 3 особо критичны.
п.4 будет работать после исправления п.2 и п.3
+
13. John_d 5406 01.10.19 11:00 Сейчас в теме
(12) Каким образом можно убрать конструкцию Регистр.Регистратор.Проведен, если мне нужны все непроведенные документы?
+
14. buganov 200 01.10.19 13:55 Сейчас в теме
(13)ограничением типа документа и объединение со всеми типами.
Не забывайте, что mssql имеет ограничение на 256 таблиц.
В конструкции регистратор. Проведён будет неяное соединение с каждой таблицей составного типа для каждой записи
+
15. ИНТЕГРА 25 24.10.19 20:50 Сейчас в теме
Давно такого говнокода не попадалось)

Мое решение для "консоли запросов" на скрине к этому сообщению (для КА 2.4).
Прикрепленные файлы:
VitalyKepov; +1 1
16. namazi74 4 23.08.20 10:51 Сейчас в теме
(15) извиняюсь за оффтоп, откуда можно достать такую же консоль? или она только в КА?
user1246899; +1
17. _linker 03.08.21 15:46 Сейчас в теме
(15)Чем ваш код лучше? Тем, что еще, помимо операции записи регистра, получает объект (документ)?
+
18. user1647665 13.04.22 17:35 Сейчас в теме
не работает вообще ((
+
19. John_d 5406 14.04.22 11:39 Сейчас в теме
20. user1647665 14.04.22 12:51 Сейчас в теме
(19) Да я понял, в чем там дело. Нужно бы доработать. Документ реализации не является регистратором движений для этого регистра накопления. Поэтому обработка и не смогла удалить это движение. Ну и тд. Там много всего на самом деле нужно доделывать. В том числе с корректировкой регистров.
+
Оставьте свое сообщение