Имя: Пароль:
1C
1С v8
Загрузка данных из Excel в 1С 8.3 с преобразованием типа "Дата"
,
0 Reclaim
 
13.11.15
22:10
Здравствуйте. Задача стоит такая: если Дата в Excel равна какому-то значению, то нужно записать его в реквизит Справочники.ФизическиеЛица
---------------------------------------------------------------------

Для НомерСтроки = 2 ПО КоличествоСтрок Цикл

     ОбработкаПрерыванияПользователя();

     ФизЛицоСсылка = Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(Excel.Cells(НомерСтроки,2).Text) + " " + СокрЛП(Excel.Cells(НомерСтроки,3).Text) + " " + СокрЛП(Excel.Cells(НомерСтроки,4).Text));

     Если НЕ ЗначениеЗаполнено(ФизЛицоСсылка) Тогда
          Сообщить("Не найдено физлицо: " + СокрЛП(Excel.Cells(НомерСтроки,2).Text) + " " + СокрЛП(Excel.Cells(НомерСтроки,3).Text) + " " + СокрЛП(Excel.Cells(НомерСтроки,4).Text));
          Продолжить;
     КонецЕсли;

     ИНН = СокрЛП(Excel.Cells(НомерСтроки,5).Text);
     ДатаРождения = СокрЛП(Excel.Cells(НомерСтроки,14).Text); //В экселе дата представлена в таком формате "08.02.1984"
     СтрокаДатаРождения = СтрЗаменить(СокрЛП(Excel.Cells(НомерСтроки,14).Text), ".", "");
     ДатаРоджения = Формат(СтрокаДатаРождения, "ДЛФ=Д"); //Тут я предполагаю что дата будет записываться в таком формате "08.02.1984" в реквизит физического лица
     МестоРождения = СокрЛП(Excel.Cells(НомерСтроки,15).Text);

     ФизЛицоОбъект = ФизЛицоСсылка.ПолучитьОбъект();
          Если ЗначениеЗаполнено(ИНН) ИЛИ ЗначениеЗаполнено(МестоРождения) ИЛИ ЗначениеЗаполнено(ДатаРождения) Тогда //
               ФизЛицоОбъект.ИНН = ИНН;
               ФизЛицоОбъект.ДатаРождения = ДатаРождения; //В итоге дата вообще не заносится в реквизит
               ФизЛицоОбъект.МестоРождения = МестоРождения;
               ФизЛицоОбъект.Наименование = ФизЛицоСсылка;
               ФизЛицоОбъект.Записать();
           КонецЕсли;
КонецЦикла;

Никаких ошибок не выдает, а просто не записывает дату в реквизит.

Подскажите правильно ли я задаю преобразование даты из экселя.
1 MUXACb
 
13.11.15
22:18
(0) Формат() возвращает строку
2 blutang
 
13.11.15
22:19
ДатаРоджения  - опечатка
3 Reclaim
 
13.11.15
22:27
Заменил:
ДатаРоджения = Формат(СтрокаДатаРождения, "ДЛФ=Д");
На
ДатаРождения = Дата(СтрокаДатаРождения);

Но теперь выдает такую ошибку: {Форма.Форма.Форма(34)}: Преобразование значения к типу Дата не может быть выполнено ДатаРождения = Дата(СтрокаДатаРождения);
4 Lexey_
 
13.11.15
22:30
(3) почитай в СП про функцию Дата()
5 Reclaim
 
13.11.15
22:31
Также попробовал сделать так:

ДатаРождения = Дата(СтрокаДатаРождения);

//Заменил на

ДатаРождения = Формат(Дата(СтрокаДатаРождения), "ДЛФ=DD");


В итоге все равно выдает ошибку:{Форма.Форма.Форма(34)}: Преобразование значения к типу Дата не может быть выполнено ДатаРождения = Формат(Дата(СтрокаДатаРождения), "ДЛФ=DD");


Направьте немного конкретнее в каком направлении думать.
6 Lexey_
 
13.11.15
22:33
(5) че гадать? СП читал? вопросы отпадут
7 marvak
 
13.11.15
22:36
в дату рождения записываешь  строку а не дату
8 Reclaim
 
13.11.15
22:37
СП читал, дата задается форматом ('годмесяцдень'), но пока озарение не приходит как мне из "день.месяц.год" сделать как нужно.

В любом случае ищу-разбираюсь.
9 marvak
 
13.11.15
22:43
(8)
дата задается не Форматом(), а функцией
Дата()
10 marvak
 
13.11.15
22:44
у функции Дата()
хитрые параметры
попробуй их соблюсти
11 hhhh
 
13.11.15
23:26
(8) а если так?

ФизЛицоОбъект.ДатаРождения = Excel.Cells(НомерСтроки,14).Value;
12 fantomrik
 
13.11.15
23:38
Не совсем понял вопрос... Че строку в дату что ли не переделать?
ДатаРождения = Дата(Сред(СтрокаДатаРождения,7,4),Сред(СтрокаДатаРождения,4,2),Сред(СтрокаДатаРождения,1,2)))
13 fantomrik
 
13.11.15
23:46
(8) Нужно открыть СП и посмотреть функции работы со строкой. И прикинуть как ее преобразовать в нужную последовательность. Собственно решение - (12)
14 fantomrik
 
13.11.15
23:47
последняя ковычка лишняя (12)
15 fantomrik
 
13.11.15
23:47
Тьфу скобка) сплю уже)