Перенос даты из EXCEL в справочник 1с8.1( реквизит"когда выдан")
09.10.2009
09:39
#1
Пишу полностью самописную базу.Вопрос: В EXCEL имеется файл Комитенты.xls, где в колонке G размещены в формате дата - даты,когда выдан документ.
Написал обработку - перенос из Эксель - при ее запуске строковые реквизиты переносятся прекрасно из экселя в справочник 1с8. А реквизит КогдаВыдан в справочнике остается пустая.
Справочники.Комитенты - реквизит КогдаВыдан - тип дата.
Написал обработку - перенос из Эксель - при ее запуске строковые реквизиты переносятся прекрасно из экселя в справочник 1с8. А реквизит КогдаВыдан в справочнике остается пустая.
Справочники.Комитенты - реквизит КогдаВыдан - тип дата.
09.10.2009
09:46
#2
Возникает вопрос, а как присваиваете - обычным "="? 1С хочет видитеть дату в виде "дд.мм.гггг ЧЧ:ММ:СС". Поставте точку прерывания и посмотрите, что получаете из Excel-я и попробуйте преобразовать дату под нужный формат.
09.10.2009
10:15
#3
Да, я понимаю, что формат даты 1с хочет видеть в виде "дд.мм.гггг ЧЧ:ММ:СС". Сейчас все даты в таблицах Екселя в формате "текстовый", но могут быть и другие форматы. Попробую преобразовать.
09.10.2009
10:30
#4
Интересно, как тогда понимать фразу: "колонке G размещены в формате дата"?
Если у вас текстовый формат и вид соответствует, тогда используйте функцию Дата(...)
Если у вас текстовый формат и вид соответствует, тогда используйте функцию Дата(...)
09.10.2009
16:14
#5
"Для кого интересно сделал так:
данные в ячейках Экселя представлены в текстовом формате.
12.01.2003
1С понимает в другом формате:
‘20030112000000’
Для этого надо вытаскивать цифры между точками, следовательно в модуль обработки пишем функцию:
Функция ВыделитьДаты(ИсходнаяСтрока) Экспорт
Буфер = СокрЛ(ИсходнаяСтрока);
ПозицияПослПробела = Найти(Буфер, " ");
Если ПозицияПослПробела = 0 Тогда
ИсходнаяСтрока = """";
Возврат Буфер;
КонецЕсли;
ВыделенноеСлово = СокрЛП(Лев(Буфер, ПозицияПослПробела));
ИсходнаяСтрока = Сред(ИсходнаяСтрока, ПозицияПослПробела + 1);
Возврат ВыделенноеСлово;
КонецФункции
А в процедуру ОсновныеДействияФормыКомитентыВСправочник(Кнопка)
...
КогдаВыданСтрока = СтрЗаменить(КогдаВыдан1,".", " ");
ДатДата = ВыделитьДаты(КогдаВыданСтрока);
ДатМесяц = ВыделитьДаты(КогдаВыданСтрока);
ДатГод = ВыделитьДаты(КогдаВыданСтрока);
ДатДата1=Лев(ДатДата,2);
ДатМесяц1=Лев(ДатМесяц,2);
ДатГод1=Лев(ДатГод,4);
ДатДляПереноса = ДатГод1 + ДатМесяц1 + ДатДата1;
КогдаВыдан1=Дата(ДатДляПереноса);
Справочник.КогдаВыдан=КогдаВыдан1;
...
Все классно."
данные в ячейках Экселя представлены в текстовом формате.
12.01.2003
1С понимает в другом формате:
‘20030112000000’
Для этого надо вытаскивать цифры между точками, следовательно в модуль обработки пишем функцию:
Функция ВыделитьДаты(ИсходнаяСтрока) Экспорт
Буфер = СокрЛ(ИсходнаяСтрока);
ПозицияПослПробела = Найти(Буфер, " ");
Если ПозицияПослПробела = 0 Тогда
ИсходнаяСтрока = """";
Возврат Буфер;
КонецЕсли;
ВыделенноеСлово = СокрЛП(Лев(Буфер, ПозицияПослПробела));
ИсходнаяСтрока = Сред(ИсходнаяСтрока, ПозицияПослПробела + 1);
Возврат ВыделенноеСлово;
КонецФункции
А в процедуру ОсновныеДействияФормыКомитентыВСправочник(Кнопка)
...
КогдаВыданСтрока = СтрЗаменить(КогдаВыдан1,".", " ");
ДатДата = ВыделитьДаты(КогдаВыданСтрока);
ДатМесяц = ВыделитьДаты(КогдаВыданСтрока);
ДатГод = ВыделитьДаты(КогдаВыданСтрока);
ДатДата1=Лев(ДатДата,2);
ДатМесяц1=Лев(ДатМесяц,2);
ДатГод1=Лев(ДатГод,4);
ДатДляПереноса = ДатГод1 + ДатМесяц1 + ДатДата1;
КогдаВыдан1=Дата(ДатДляПереноса);
Справочник.КогдаВыдан=КогдаВыдан1;
...
Все классно."
Читают тему
(гостей: 1)