Имя: Пароль:
1C
1С v8
Конвертация данных. Преобразование даты
0 sfilenok
 
21.02.13
06:53
Доброго всем дня.
Помогите, пжалста, победить конвертацию данных. Создаю правила выгрузки из 7.7 в 8.2. В 7.7 есть реквизит типа дата, в 8.2 нужно засунуть в реквизит составного типа табличной части (тип дата в составе тоже есть).

Пишу в (Перед обработкой) табличной части:
Если ПустоеЗначение(Источник.Срок) = 0 Тогда        
               КоллекцияОбъектов.НоваяСтрока();
               КоллекцияОбъектов.Значение = СокрЛП(Источник.Срок);
               КоллекцияОбъектов.ТекстоваяСтрока = "Срок";
           КонецЕсли;
1 Defender aka LINN
 
21.02.13
06:54
Продолжайте наблюдения
2 Wobland
 
21.02.13
06:55
Значение=НужнаяДата устроит?
3 sfilenok
 
21.02.13
06:55
упс, случайно отправилось сообщение..

Так вот, проблема в том, что в хмл файл данные записываются в виде:
<Свойство Имя="Значение" Тип="Дата">
 <Значение>08.09.03</Значение>
 </Свойство>

и уже в 8.2 не загружается, т.к. формат в хмл должен быть типа
<Свойство Имя="Период" Тип="Дата">
 <Значение>2012-12-31T00:00:00</Значение>
 </Свойство>

почему-то он не преобразует по правилам даты из 7.7 в 8.2... где че ему еще сказать надо?
4 Aleksey
 
21.02.13
06:55
А ты уверен?
5 Aleksey
 
21.02.13
06:57
(3)
При выгрузки из 7-ке доступна функция ПолучитьДатуV8
+ Code

Функция ПолучитьДатуV8(ЧастьДата, ЧастьВремя = "00:00:00")
   
   Если ПустоеЗначение(ЧастьДата) = 1 Тогда
       
       Возврат "0001-01-01T" + ЧастьВремя;
       
   Иначе
       
       // Год может быть введен неверно
       Год = ДатаГод(ЧастьДата);
       
       // Возможно случайно ошиблись и не доввели дату
       Если Год < 30 Тогда
           Год = 2000 + Год;
           
       ИначеЕсли Год < 100 Тогда
           Год = 1900 + Год;
           
       ИначеЕсли Год < 1000 Тогда
           Год = 1000 + Год;
           
       КонецЕсли;
       
       // Если исправления не помогли, тогда вернум пустой год
       // Иначе данные просто не загрузятся
       Если Год < 1900 Тогда
           Возврат "0001-01-01T" + ЧастьВремя;
       КонецЕсли;
       
       Возврат "" + Год + "-" + Формат(ДатаМесяц(ЧастьДата),"Ч(0)2") + "-" + Формат(ДатаЧисло(ЧастьДата),"Ч(0)2") + "T" + ЧастьВремя;
   
   КонецЕсли;

КонецФункции // ПолучитьДатуV8()
6 sfilenok
 
21.02.13
06:57
в первом посте в обработке перед выгрузкой пробывались варианты:

КоллекцияОбъектов.Значение = Источник.Срок;


КоллекцияОбъектов.Значение = Дата(Источник.Срок);

но результат в хмл один и тот же
7 sfilenok
 
21.02.13
06:58
Aleksey, спасибо!!!!!! ща попробую
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс