При изменении модуля проведения документа пользоваться конструкцией сохранения.
17-05-2007 16:30
к комментариям - к полной версии
- понравилось!
Продолжаю описывать требования к программисту 1С.
Сейчас расскажу, почему нельзя "в лоб" переписывать модуль проведения документа.
Если в базе данных закрыт какой-либо период, например сдали квартал, и Вы поменяли модуль проведения документа, то стоит кому-либо залезть в документ закрытого периода и "нечаянно" его перепровести, то согласно новому алгоритму у Вас пересчитаются данные. Закрытый период "полетит". Еще хуже ситуация с восстановлением последовательностей. Тогда перепроведется целая куча документов.
Наступив на такие грабли я уже разработал стратегию восстановления данных. Плюс комплекс мер по недопущению подобных ситуаций.
Одна из мер - это при редактировании модуля документа использовать конструкцию сохранения прежнего алгоритма.
ДатаОтладки = '01.07.06'; // для отладки ставится на уже закрытый месяц, при подгрузке везде меняется на открытый
Если ДатаДок < ДатаОтладки Тогда
// сюда копируется старый модуль
{прежняя часть модуля, которая будет подвергнута изменению}
Иначе
// а здесь то, как он должен работать в новых периодах
{измененная часть модуля}
КонецЕсли;
Первая строчка ставится в самом начале модуля, сразу после конструкции
Если глПроведение(Контекст, ГрупповоеПроведение) = 0 Тогда СтатусВозврата(0); Возврат;
КонецЕсли;
//_______________________________________________________________________________________
Остальная часть в те места, которые мы будем менять. Их может быть несколько. Перед подгрузкой в основную базу данных не забыть поменять дату отладки на дату начала открытого периода.
Если Вы собрались менять модуль проведения, а дата отладки уже задана, то перед изменением с помощью поиска нужно заменить переменную ДатаОтладки на конкретное значение во всем модуле.
После подгрузки изменений нужно перепровести документы, чтобы, пока открыт период, были перестроены результаты проведения.
вверх^
к полной версии
понравилось!
в evernote