Excel и 1С

  • Автор темы ech
  • Дата начала
E
#1
Добрый день, есть файлик ексель, в нем объединены две ячкйки в одну, первая и вторая, и в этой ячейки запись "2-5". я загоняю эту ячейку в ТЗ и хочу увидеть в 1 столбце ТЗ 2, а во втором цифру 5, т.е. разбить нада. Вопрос как??
 

vbs

Well-known member
18.02.2007
1 708
1
#2
если там разделитель всегда один и тот же, сделай так :
// к - счетчик цикла
Field = ExcelApp.Cells(k,1).Value; // 1 - номер ячейки Excel
Defis = Find(Field,"-");
Field1 = Left(Field(Defis-1);
Field2 = Right(Field(StrLen(Field)-Defis);
//В поле Field1 будет 1-е число, В поле Field2 - второе и далее загоняй их в ТЗ
 

vbs

Well-known member
18.02.2007
1 708
1
#4
если не получается, подробно опиши причину
 
E
#5
Field = ВходExcel.Cells(Ном,1).Value;
Defis = Find(Field,"-");
Field1 = Left(Field(Defis-1);
Field2 = Right(Field(StrLen(Field)-Defis);

Field1 = Left(Field<<?>>(Defis-1);
Field2 = Right(Field<<?>>(StrLen(Field)-Defis);
Функция не обнаружена (Field) выдает ошибку
 

vbs

Well-known member
18.02.2007
1 708
1
#6
Вот так правильно, что-то намудрил я с синтаксисом
Field1 = Left(Field,Defis-1);
Field2 = Right(Field,StrLen(Field)-Defis);
 
E
#7
А ты не мог бы написать присобачить его к моему коду. а то я не вкурю как. сенкс
Вот код:

Процедура Сформировать()

Перем ЗапущенExcel;
ВходExcel = СоздатьОбъект("Excel.Application");
_тз = СоздатьОбъект("ТаблицаЗначений");
ВходнойФайлОткрыт = 1;
ЗапущенExcel=1;

Если ЗапущенExcel=1 Тогда
ВходExcel.Application.Workbooks.Open(КаталогЗаявок);
КонецЕсли;
КонечнаяСтрока = 33;
_тз.НоваяКолонка("ВесНач");
_тз.НоваяКолонка("ВесКон");
_тз.НоваяКолонка("З1");
_тз.НоваяКолонка("З2");
_тз.НоваяКолонка("З3");
_тз.НоваяКолонка("З4");
_тз.НоваяКолонка("З5");
_тз.НоваяКолонка("З6");
_тз.НоваяКолонка("З7");
_тз.НоваяКолонка("З8");
_тз.НоваяКолонка("З9");
_тз.НоваяКолонка("З10");
_тз.НоваяКолонка("З11");
_тз.НоваяКолонка("СуммаДД");

Для Ном=1 По КонечнаяСтрока Цикл


Field = ВходExcel.Cells(Ном,1).Value;
Defis = Find(Field,"-");
Field1 = Left(Field,Defis-1);
Field2 = Right(Field,StrLen(Field)-Defis);
_тз.НоваяСтрока();
_тз.ВесНач=Field1;//Число(СокрЛП(ВходExcel.Cells(Ном,2).Value));
_тз.ВесКон=Field2;//Число(СокрЛП(ВходExcel.Cells(Ном,2).Value));
_тз.З1=Число(СокрЛП(ВходExcel.Cells(Ном,7).Value));
_тз.З2=Число(СокрЛП(ВходExcel.Cells(Ном,8).Value));
_тз.З3=Число(СокрЛП(ВходExcel.Cells(Ном,9).Value));
_тз.З4=Число(СокрЛП(ВходExcel.Cells(Ном,10).Value));
_тз.З5=Число(СокрЛП(ВходExcel.Cells(Ном,11).Value));
_тз.З6=Число(СокрЛП(ВходExcel.Cells(Ном,12).Value));
_тз.З7=Число(СокрЛП(ВходExcel.Cells(Ном,13).Value));
_тз.З8=Число(СокрЛП(ВходExcel.Cells(Ном,14).Value));
_тз.З9=Число(СокрЛП(ВходExcel.Cells(Ном,15).Value));
_тз.З10=Число(СокрЛП(ВходExcel.Cells(Ном,16).Value));
_тз.З11=Число(СокрЛП(ВходExcel.Cells(Ном,17).Value));
_тз.СуммаДД=Число(СокрЛП(ВходExcel.Cells(Ном,4).Value));
КонецЦикла;
 

vbs

Well-known member
18.02.2007
1 708
1
#8
Для Ном=1 По КонечнаяСтрока Цикл
_тз.НоваяСтрока();
Field = ВходExcel.Cells(Ном,1).Value;
Defis = Find(Field,"-");
Field1 = Left(Field,Defis-1);
Field2 = Right(Field,StrLen(Field)-Defis);
_тз.ВесНач=Field1;
_тз.ВесКон=Field2;
_тз.З1=Число(СокрЛП(ВходExcel.Cells(Ном,7).Value));
и т.д.