gifts2017

Перенос остатков баальшого регистра

Опубликовал Павел (mr_jpa) в раздел Администрирование - Сервисные утилиты

При достижении регистра большого размера (около 1.2 Гб) перенос остатков перестает проходить по причине увеличивающегося индексного файла. Данная программулька позволяет буквально за пару минут перенести остатки на сл. месяц по любому регистру.
Написана на FoxPro с открытым исходником, писать универсальный механизм было лень, поэтому каждый может подправить для себя. Принцип простой - при открытии периода (допустим на 01.12.07), 1С тупо копирует все записи остатков с предыдущего месяца на текущий (почему она делает это так долго, совершенно не понятно).
Для открытия периода в проблематичной базе нужно забрать файл регистра остатков из базы, провести открытие периода стандартными средствами, перенести остатки с помощь данной программки, подложить регистр обратно в базу (без индекса) и будет счастие

Скачать файлы

Наименование Файл Версия Размер
Перенос остатков регистра 94
.1213079748 1,70Mb
25.09.09
94
.1213079748 1,70Mb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. ssp_ (ssp_) 10.06.08 12:24
Чтобы хромая старушка быстрее бегала (или хотя бы просто могла передвигаться), ей можно дать костыли (SQL), заставить сбросить лишний вес (свёртка) или гонять пинками, как делает эта программа.
2. Владимир (hogik) 10.06.08 21:04
Если использовать данную разработку, то до того как размер файла достигнет 1 гигабайта. См. http://infostart.ru/projects/1725/
3. Владимир (hogik) 11.06.08 01:34
“почему она делает это так долго, совершенно не понятно?”
Читают и записывают при открытом индексном файле и установленном порядке чтения по индексу, а не в физической последовательности. ;-)
4. jpa1981 (mr_jpa) 11.06.08 07:21
к 3: это-то как раз понятно ;-), не понятно почему 1С пошли таким путем. Просто у нас была ситуация в июле 2007 года, когда на открытии периода ночью база встала, а на утро 40 пользователей ДОЛЖНЫ работать. Пришлось изобретать быстрый способ решения ситуации. Далее в конце года делали свертку базы (размер около 12 гб ;-). Если интересует кого, могу описать что и как делали. Сверка была произведена за 7 часов в новый год.
5. Сhe Burashka (CheBurator) 11.06.08 09:01
(4) Да, было бы интересно почитать.
Это точный диагноз, что в длительном времени переноса остатков причиной является большой индексный файл? Имхается мне, что это тут не при чем...
6. Андрей Зайцев (zaic) 11.06.08 09:47
И мне что-то имхается, что они еще движения пересчитывают за месяц, а не только "тупо копирует все записи остатков с предыдущего месяца на текущий"...
7. Владимир (hogik) 11.06.08 19:34
(4)
“не понятно почему 1С пошли таким путем”
Причин для этого несколько, например:
1) Нет информации для принятия решения, что быстрее будет работать – просмотр всего файла или его части по индексу.
2) Выполнение еще кое-чего, что без индекса будет работать плохо. См. сообщение (6) от zaic.
3) ... ;-)
(5)
“Это точный диагноз…большой индексный файл?”
Нет. Точнее, не только из-за этого. Однако, в DBFной версии 1Са читают и записывают, не задумываясь, с использование индекса. Например, при изменении структуры таблицы она переписывается по записям в рабочий каталог при открытых индексных файлах и установленного порядка просмотра – по индексу. Что абсолютно не требуется, работает значительно медленнее и не требует предварительного анализа для выбора алгоритма обработки. Я обнаружил только одно место, где производится чтение в физической последовательности – некоторые этапы в “Тестирование и исправление информационной базы”. Внутри DBEng32.dll вообще не предусмотрено чтение таблицы в физической последовательности, если у таблицы имеется индексный файл. И в тестировании ИБ они обманывают сами себя – удаляют описание индексов из словаря данных.
8. Ильдус Гаясович (ildus78) 29.06.12 15:25
вообще-то 1С в новый период не переносит записи с нулевыми остатками (закрытые нулевые итоги на конец месяца), автор, как я понял, тупо переносит все подряд? не станет ли регистр от этого еще баальше?