|
v7: Перепроведение и ТА |
☑ |
0
OnePrg
10.12.20
✎
17:11
|
Хочу перепровести базу с 1 августа.
Запускаю перепроведение
При этом выскакивает предупреждение, что точка актуальности будет перенесена. Ладно. Жму ОК.
Начинают проводится документы за 01.08, на одном из документов спотыкается, говорит, что недостаточно товара на остатке. Захожу в журнал, нахожу этот документ и вижу, что ТА установлено на 01.08. Если я ставлю ТА на этот документ, то он проводится нормально.
Получается, что во время перепроведении ТА не переносится по документам, а стоит на 01.08.20 00:00:00
|
|
1
OnePrg
10.12.20
✎
17:11
|
База SQL
|
|
2
Злопчинский
10.12.20
✎
20:21
|
ставить ТА на документ - это не значит что документ перепроводитьтся. можно сдивнуть ТА без перепроведения документов.
Соответственно а) как вы двигаете ТА - нам отсюда не видно и б) хз что там у вас в модуле проведения написано. В типовых конфигах результат проведения в ТА и не в ТА (задним числом) - одинаков.
|
|
3
Volodja
11.12.20
✎
10:53
|
_сДаты=Дата("01.01.2015"); //здесь устанавливаю ТА на начало периода перепроведения
УстановитьТАНа(_сДаты);
(0 )Я вот так двигаю ТА, когда перепроведение за большой период нужно сделать
Если (НачНедели(Док.ДатаДок)>=НачНедели(ПолучитьДатуТА())) И (МонопольныйРежим()=1) Тогда
//ЗафиксироватьТранзакцию();
_НоваяДатаТА=конГода(ДобавитьМесяц(Док.ДатаДок,3));//Так потом быстрее проводит,3-12 месяцев вперед закидываю
Если _НоваяДатаТА>РабочаяДата() Тогда
_НоваяДатаТА=КонМесяца(РабочаяДата());
КонецЕсли;
УстановитьТАПо(_НоваяДатаТА);
//НачатьТранзакцию();
КонецЕсли;
Док.Провести(0);
|
|
4
Василий Алибабаевич
11.12.20
✎
11:09
|
(0) "Получается, что во время перепроведении ТА не переносится по документам".
Не получается. Просто оно выполняется в единственной транзакции. И если произошла ошибка - откатывается назад.
Если нужно проводить "подокументно" - нужно собственным кодом. Примерно так :
Докс = СоздатьОбъект("Документ");
Докс.УстановитьФильтр(...); //Проведенные непроведенные ...
Докс.ВыбратьДокументы(начДата, конДата);
Пока Докс.ПолучитьДокумент() = 1 Цикл
Если Докс.Провести() = 0 Тогда
Сообщить("!!! и прочая лабуда за то что не провелось с какого то перепугу");
Прервать;
КонецЕсли;
КонецЦикла;
|
|
5
Mikeware
11.12.20
✎
11:21
|
(4) а еще - установить ТА на начало. Иначе временный расчет, тормоза и все такое
|
|