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