Попалась база КА 2.4 с движениями по регистрам, у которых регистратор был непроведен или помечен на удаление.
Написал небольшую обработку по удалению таких записей из регистров.
Скачать исходный код
Наименование
Файл
Версия
Размер
Универсальное удаление движений по регистру накопления по всем непроведенным документам:
Обработка позволяет удобно выборочно удалить данные из базы 1С. Это могут быть как неиспользуемые элементы справочников, так и неактуальные организации. При этом есть возможность провести анализ пересечений документов с другими организациями и таким образом уберечься от того, что при удалении обороты по другой организации изменятся.
Собрали 20 лайфхаков, которые используют наши программисты при работе с 1С. Формы, контрагенты, СКД, процедуры, глюки платформы и многое другое. В этой статье публикуем первую часть.
В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.
Данная обработка определяет неликвидную номенклатуру, метит её на удаление и переносит её в указанную папку, что облегчает работу операторов организации для аналитики и многих процессов, связанных с товаром.
Система по ошибке заполнила цены нулями и теперь формулы не работают, а исправлять вручную нет сил? Не беда - есть решение, читай далее, как это исправить автоматически!
На достаточно большой базе будет либо неоправданно долго работать, либо упадет из-за недостатка памяти вот из-за этой строки:
Не Регистр.Регистратор.Проведен
(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.
А в "Объединить" не вижу смысла, т.к. результаты запросов будут разные по двум измерениям "имя регистра" и регистратор.
я не спец, но может как-то сразу ограничить подмножестова?
- выбираем все виды документов, которые по настройкам конфигурации могут быть проведены;
- по полученным видам собираем все непроведенные доки;
- для всех непроведенных доков ищем записи проведения в регистрах...
(6) Можно было и таким путем пойти. Но у меня была цель универсальность. Если со временем добавят новые документы и новые регистры. Мой метод будет работать.
1. У Вас запрос собирается текстом. Почитайте про конкатенацию строк
https://its.1c.ru/db/v8std#content:782:hdoc 2. НЕ Регистр.Регистратор.Проведен. Тут сразу две ошибки в запросе. Первая - обращение через точку к составному типу(чаще всего регистр двигают несколько документов), и вторая - отрицание, что делает невозможным поиск по индексу.
3. ТИПЗНАЧЕНИЯ(Регистр.Регистратор) - вычисления по полю так же исключает поиск в индексе.В этой же строке <>
4. Итоговая группировка при КМК абсолютна лишняя, гораздо выгоднее сразу выбирать различные.
5. Упорядочивание по периоду так же лишняя, если учесть, что интерактивного анализа не подразумевается. Сортировка очень тяжелая операция.
6. В случае исключительной ситуации выполнение упадет, при этом придется так на каждую ошибку запускать заново. при этом целостность движений может пострадать, хоть эти движения и считаются лишними.
7. Команда выполнить не совсем к месту.
Как итог, самые большие проблемы в запросе. Если запустить Вашу обработку на системах с таблицами более миллиона записей, с несколькими регистраторами, то DBA Вам по пальцам настучит.
(13)ограничением типа документа и объединение со всеми типами.
Не забывайте, что mssql имеет ограничение на 256 таблиц.
В конструкции регистратор. Проведён будет неяное соединение с каждой таблицей составного типа для каждой записи
(19) Да я понял, в чем там дело. Нужно бы доработать. Документ реализации не является регистратором движений для этого регистра накопления. Поэтому обработка и не смогла удалить это движение. Ну и тд. Там много всего на самом деле нужно доделывать. В том числе с корректировкой регистров.