Книга знаний

Рекламное место пустует
1С:Предприятие / v8 / Приемы программирования / Дата, время

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: Помогите ментально: Запись не верна. Период не может быть пустым
Закладка

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2011 | Mista.ru

Яндекс.Метрика