Отличия от штатной свертки ТиС v9:
1. Разбитие на этапы, возможность запускать каждый этап независимо , некоторые - повторно.
2. Возможность подготовительного запуска свертки в рабочей базе или в копии.
Этапы свертки по этому признаку разделены на предварительные и основные.
3. Добавлена корректная свертка периодических реквизитов.
4. В корне изменена реализация алгоритма, что позволило в разы ускорить его выполнение:
- исключены "лишние" телодвижения в циклах
- "медленные" структуры были заменены на массивы и dbf
- механизм транзакций
- переброска ТА назад и обратно для быстрого удаления документов.
- ссылки "пары с.ф. - накладная" ищутся значительно быстрее
5. Дополнительно
- замер времени выполнения и комментирование выполнения в окне сообщений
- повышена устойчивость работы: "прожорливые" однострочные команды заменены на блоки
- забыли запустить ТиИ? - не проблема, корректность данных проверяется.
- промежуточное сохранение результатов.
Особенности некоторых пунктов:
п. 4. Сохранение периодических значений на дату свертки. Способ сохранения устанавливается на второй закладке "Периодические значения" для каждого отдельно взятого периодического реквизита отдельно: значения, действующие на дату свертки; сумма значений прописанных документами; общая сумма значений.
п. 5. Создание документов (без проведения) "Ввод остатков..." на дату свертки. Состав документов и оперативных регистров регулируется на третей закладке. Если требуется в процессе свертки "обнулить" определенные регистры - снимите галку в таблице значений, - документы создаваться не будут.
пп. 3 и 4 можно запускать в копии базы с последующим копированием каталога SVERTKA в рабочую базу,
пп. 1 и 5 - в рабочей базе с "приостановкой" перед основными этапами.
п. 10. При проведении "Ввод остатков..." в дате свертки осуществляется предварительная проверка реквизиров обязательного заполнения. В случае несоответствия такой документ не проводится, "помечается" в комментарии и переносится в конец дня
Ход выполнения отображается на форме, в строке состояния, в окне сообщений.
Расшифровка строки отображения:
: : / :
Обработка активно обновляется, см. скриншоты и историю.
Внешняя обработка "Исправление номеров документов":
//infostart.ru/projects/1143/
Проверить работу свертки можно обработкой "Сравнение регистров":
//infostart.ru/projects/1326/
Использованы личные разработки:
//infostart.ru/projects/1330/
//infostart.ru/projects/877/
//infostart.ru/projects/810/
//infostart.ru/profile/8196/articles/151/
Некоторые вынесены из "Свертки" позднее в отдельные:
//infostart.ru/projects/1411/
//infostart.ru/projects/1367/
По скорости выполнения, смотрите листинг, пробуйте.
6гб - > 3гб с 500 000 документами у меня свернулось за 8 часов.
Желаю Вам успехов!
Изменения от 30.10.2007
Исправлена ошибка: в сворачиваемом периоде не распроводились документы "ВводОстатков..." сформированные предыдущими "свертками"
(Наличие в реквизите "Комментарий" словосочетания "СверткаБазы")
строки кода 3114-3116 закомментированы.
Изменения от 06.11.2007
Добавлены возможности:
- Встроено удаление помеченных документов ( используется УдалитьОбъекты() )
- Добавлено ведение лог-файла и запись событий в журнал регистрации событий, указанных как "Свертка"
- Добавлено закрытие сеанса 1с после выполнения обработки.
Изменения от 28.11.2007
- исправлена работа переключателя п. 3 (обход реквизитов)
- добавлена галочка "всех" для п. "Удаление помеченных документов". Может понадобиться при частичной свертке регистров.
- проверка при удалении некорректно прописанных периодических значений (ранее только при не использовании транзакции)
- сохранение выведенных печатных форм в каталог SVERTKA при установке п. "Завершение работы"
- Обнуление реквизита "ФлагСвертки" для некорректных и не проводящихся (не все реквизиты заполнены) документов "ВводОстатков..."
- в закладке "Периодические значения" добавлен признак реквизита "Ручное изменение" и его проверка при запуске свертки
- переработано описание
Изменения от 25.04.2008
- для большого количества флажков сделаны кнопки их общего снятия и пометки.
- добавлен механизм сохранения и восстановления границ последовательности.
Изменения от 20.06.2008
- исправлена ошибка записи информации в лог-файл, возникающая при первом запуске "Удалить Ввод остатков"
- добавлен фильтр по фирмам, т.е. возможность не включать некоторые фирмы (закрытые, например) в документы ввода остатков.
- расширены возможности по удалению объектов: добавляются непроведенные документы до и после даты свертки, все помеченные на удаление объекты, партии не участвующие в движениях регистра "ПартииНаличие"
- изменена обработка документов для очищенного списка ссылок - все действия над документами в свертываемом периоде в таком случае выполняются "по максимуму": чистятся все ссылки на документы, все документы метятся на удаление, все "свертываются" (удаляется ТЧ, заполняется комментарий).
- изменена форма диалога - теперь она уберется на экране разрешением 800х600
03.03.2009
Добавлен механизм очистки ссылок документов в табличной части "Ввод остатков...". Временно оформлен отдельным файлом "03.03.09 Свертка...". Суть изменений: на закладке "Документы ввода остатков" добавлена колонка "Д- (минус)". По отмечаемым в ней регистрам в документы "Ввод остатков..." измерения типа "Документ" очищаются, табличная часть сворачивается. Идею высказал Чебурашка (см. пост 68), относительно использования такой очистки для регистров "Покупатели" и "Поставщики" . Это должно уменьшить количество неудаленных документов сворачиваемого периода. По умолчанию механизм отключен для всех регистров.
16.03.2009
Ошибка, в части п. 16 - удаление не имеющих не помеченных ссылок непроведенных документов, в интервалах до даты и после даты свертки, работало при установке общего флажка п. 16, независимо от установки соответствующих флажков "До даты свертки" и "После даты свертки". Исправлено.
ВАЖНОЕ ЗАМЕЧАНИЕ.
В данном варианте свертки используется механизм транзакции, кот. особенно эфективно ускоряет свертку dbf-баз, но в некоторых случаях, обработка останавливается с ошибкой транзакции при попытке ее зафиксировать. Установлено, что эта ошибка происходит при распроведении и удалении документов. Предположительная причина - слишком большой период свертки документов (в одном из примеров - два документа болтались в 50-х 60-х годах прошлого века :) , удалили их вручную, все заработало ) Статистика единичная, так что... для прояснения ситуации прошу не стесняться, оставлять комменты и стучаться в асю.