v8: Ошибка с пустыми датами в распределенных базах данных
Иногда в УРБД появляются проводки и движения с пустыми датами, хотя, казалось бы, 1С не дает сделать проводку с пустыми датами. Причина, как показала практика проста. | Автор статьи: Гений 1С | Редакторы: Последняя редакция №3 от 26.04.07 | |
Ключевые слова: ошибка,УРБД,дата
Дело в том, что одна из баз работает на файловом движке, где допустима любая дата от рождества христова, а другая база работает на SQL движке, где диапазон дат более ограничен.
Пользователи иногда ошибаются и вводят вместо 2007 года 207 год. Если эта дата не дата документа, а дата реквизита (например планируемая дата оплаты), в этом случае проводка формируется на 207 год. Соответственно, когда эта проводка приходит в SQL, 207 год заменяется на пустую дату.
К сожалению, в 1С не предусмотрено на уровне платформы ограничение диапазона рабочих дат, поэтому самый простой вариант в модуле набора записей регистра бухгалтерии контролировать дату проводок 1900-2200 года:
Процедура ПередЗаписью(Отказ, РежимЗаписи) Для Каждого МЗ Из ЭтотОбъект Цикл Если МЗ.Период<='19000101' ИЛИ МЗ.Период>='22000101' Тогда Сообщить("В проводке номер "+ЭтотОбъект.Индекс(МЗ)+1+" указан период, выходящий за допустимый диапазон 1900-2200 гг ", СтатусСообщения.Важное); ТЗ=ЭтотОбъект.Выгрузить(); Стр=ТЗ[ЭтотОбъект.Индекс(МЗ)]; Для Каждого Колонка Из ТЗ.Колонки Цикл Сообщить(Символы.Таб+Колонка.Имя+Символы.Таб+"="+Символы.Таб+Стр[Колонка.Имя]); КонецЦикла; ТЗ=0; Отказ=Истина; КонецЕсли; КонецЦикла; КонецПроцедуры
Решение этой проблемы описано в комплекте документации "Особенности использования клиент-сервера 1С": нужно при создании SQL базы указать смещение дат 2000, тогда даты SQL версии и файловой версии будут совпадать. Можно выгрузить базу в DT, поменять смещение и загрузить обратно.