WMS ›
Свертка кривой ТиС ›
#17
27.09.12 15:51
(1) Drizer2000, Порядок ультрабыстрой самодельной свертки:
1. Делаем архив базы
2. Делаем индексацию базы
3. Сворачиваемый период должен быть проведен (под вопросом)
4. Сервис -> Параметры -> Рабоча дата = Ставим дату свертки
5. Запускаем саму свертку (пример см. ниже)
6. Устанавливаем Дату отчета = Дате свертки
7. Запускаем свертку (создает документы ввода остатков)
8. Убираем из документов основание в свернутом периоде (например возвраты)
9. Устанавливаем ТА на начало Века
10. Закрываем программу
11. Удаляем в каталоге с базой файлы rg*.* и ra*.* или запускаем "Удаление Движения регистров.bat"
12. Открываем программу, если спросит "Выполнить открытие периода?" отвечаем "Нет"
13. Помечаем на удаление Партии (можно грохнуть всю таблицу)
14. Можно пометить лишние элементы справочников - по желанию (чисточка)
15. Через Групповую обработку помечаем на удаление документы по дату свертки, кроме созданных документов ввода остатков
16. Проверяем все регистры на дату свертки между программами по ведомостями: По партиям, По Контрагентам (поставщикам и покупателям отдельно), По Кассе, По Банку, По Подотчетникам, По таре и пр.
17. Запускаем в конфигураторе "Тестирование и справление" +ставим сжатие базы
Пример свертки, по каждому регистру нужно написать функцию на подобе этой.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНачала по ДатаНачала;
|Фирма = Регистр.ПартииНаличие.Фирма;
|МОЛ = Регистр.ПартииНаличие.МОЛ;
|Номенклатура = Регистр.ПартииНаличие.Номенклатура;
|ВидТМЦ = Регистр.ПартииНаличие.Номенклатура.ВидНоменклатуры;
|Количество = Регистр.ПартииНаличие.Количество;
|Сумма = Регистр.ПартииНаличие.СуммаУпр;
|Функция ИтогОстаток= КонОст(Количество);
|Функция ИтогСумма = КонОст(Сумма);
|Группировка Фирма;
|Группировка МОЛ;
|Группировка ВидТМЦ;
|Группировка Номенклатура без групп;";
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка(1)=1 Цикл
Пока Запрос.Группировка(2)=1 Цикл
Склад = НайтиСкладПоМОЛу(Запрос.МОЛ);
ПоступлениеТовар = СоздатьОбъект("Документ.ОприходованиеТМЦ");
ПоступлениеТовар.Новый();
ПоступлениеТовар.ДатаДок= ДатаНачала;
ПоступлениеТовар.Фирма = Запрос.Фирма;
ПоступлениеТовар.Склад = Склад.ТекущийЭлемент();
ПоступлениеТовар.Валюта = Рубль.ТекущийЭлемент();
ПоступлениеТовар.Курс = 1;
Пока Запрос.Группировка(3)=1 Цикл
Пока Запрос.Группировка(4)=1 Цикл
ПоступлениеТовар.НоваяСтрока();
ПоступлениеТовар.Номенклатура = Запрос.Номенклатура;
ПоступлениеТовар.ВидТМЦ = Запрос.ВидТМЦ;
ПоступлениеТовар.Количество = Запрос.ИтогОстаток;
ПоступлениеТовар.Единица = Запрос.Номенклатура.БазоваяЕдиница;
ПоступлениеТовар.Коэффициент = 1;
ПоступлениеТовар.Сумма = Запрос.ИтогСумма;
глПересчетТаблЧасти(ПоступлениеТовар, "Сумма");
КонецЦикла;
КонецЦикла;
ПоступлениеТовар.Записать();
ПоступлениеТовар.Провести();
КонецЦикла;
КонецЦикла;
Этот фрагмент актуален тем, у кого плохой учет и разные хвосты висят по партиям. Результатом будет оприходован товар со средней ценой на дату свертки. Т.е. мы потеряем на время партионность учета, до тех пор пока оприходованный товар не истратится, но в целом никакой ошибки не будет в том числе и бухгалтерской т.к. за суммарная себестоимость будет именно такой-же. Таким же образом можно свернуть и остальные регистры, "закрывая" глаза на не актуальные измерения. Для оперативной базы, не выгружающейся в бухгалтерию такой способ самое оно!