Каталог решений - ADODB: загрузка документов из 1С7.7 в 1С8.1. Получаем время документа

ADODB: загрузка документов из 1С7.7 в 1С8.1. Получаем время документа

ADODB: загрузка документов из 1С7.7 в 1С8.1. Получаем время документа

В наличии

Для новичков!!!

_1SJOURN
DATE_TIME_IDDOC
«2009011385UHM8  EDMU»
как получить время?

Категория:

Описание

Возможно, кто-то задался целью загружать документы из 1С7.7 в 1С 8.1  прямыми запросами. Тогда вы наверняка столкнетесь с тем, что в таблице _1SJOURN дата и время документа выглядит несколько странно.

То есть,  значение в поле «DATE_TIME_IDDOC» выглядит как, например, «2009011385UHM8  EDMU»

85UHM8 и есть так нужное нам время. Как же его привести к виду 1С8.1?

Лично мне понадобилось некоторое время, чтобы решить проблему.

Для начала, в прямом запросе разделим дату и время:

….

|SELECT    

|Convert(Char(8),_1SJOURN.DATE_TIME_IDDOC) as Date,

|Substring(_1SJOURN.DATE_TIME_IDDOC,9,6) as Time,

На широких просторах интернета мне удалось найти лишь такое решение:

Функция Конвертировать36_10(Рез36)

            Если СокрЛП(Рез36)=«» тогда

                        Возврат «0»;

            КонецЕсли;

            Arr36 = «0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ»;

            Deci=0;

            Для j=1 по СтрДлина(СокрЛП(Рез36)) цикл

                                   Deci = Deci*36;

                                   Deci = Deci+Найти(Arr36,Сред(СокрЛП(Рез36),j,1))-1;

            КонецЦикла;

            Возврат Deci:

КонецФункции

Но этого явно не достаточно для решений нашей проблемы…

Конечный вид функции после доработки:

Функция Конвертировать36_Стр(Рез36)

            Если СокрЛП(Рез36)=«» тогда

                        Возврат «0»;

            КонецЕсли;

            Arr36 = «0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ»;

            Deci=0;

            Для j=1 по СтрДлина(СокрЛП(Рез36)) цикл

                                   Deci = Deci*36;

                                   Deci = Deci+Найти(Arr36,Сред(СокрЛП(Рез36),j,1))-1;

            КонецЦикла;

            Deci=Deci/10000;

            час = Цел(Deci/3600);

            ЧасСек = час*3600;

            Остаток = DeciЧасСек;

            мин = Цел(Остаток/60);

            минСек = мин*60;

            Остаток = ОстатокминСек;

            Сек = Остаток;

            Возврат Формат(Час,«ЧЦ=2;ЧВН=;ЧН=») + «» + Формат(Мин,«ЧЦ=2;ЧВН=;ЧН=») + «»+Формат(Сек,«ЧЦ=2;ЧВН=;ЧН=»);

КонецФункции

 

Вот теперь можем смело писать дату и время документа:

НовДок.Дата = Дата(«»+Набор.Fields(«Date»).Value + Конвертировать36_Стр(Набор.Fields(«Time»).Value) );

 PS: Предназначено для бухгалтерских конфигураций)

has been added to your cart:
Оформление заказа