Имя: Пароль:
1C
1C 7.7
v7: 1c 7.7 и Excel. Несовпадение типов #ССЫЛКА!
0 Koliaff
 
16.01.12
22:26
Доброго времени суток, господа форумчани. Пишу обработку загрузки данных из Excel в 1C 7.7.
 В файле из которого идет загрузка присутствуют ячейки с формулами и из-за того что некоторые формулы написаны не правильно, в них пишется текст типа =D15-#ССЫЛКА!-K15
 Удалять все такие ячейки в которых битая ссылка нет возможности, т.к. таких ячеек очень много и они в перемешку с нормальными ячейками. При попытке считать значение проблемной ячейки, например вот таким кодом : Excel.Cells(х, 15).Value
Возникает ошибка "Несовпадение типов" и 1С виснет!
Конструкция Попытка Исключение КонецПопытки не срабатывает !
Приходится снимать задачу с 1С. Подскажите пожалуйста как можно проверять такие ячейки чтобы 1С прололжала после этого работать ? ) Заранее большое спасибо !
1 БибиГон
 
16.01.12
22:29
что значит "Попытка не срабатывает"?
2 Koliaff
 
16.01.12
22:31
Для х = 1 По Строк Цикл    
     Попытка
                 Состояние("Обрабатывается строка номер "+ Строка(х));
             
               Колонка1       = СокрЛП(Строка(Excel.Cells(х, 1).Value));  
               Колонка2       = СокрЛП(Строка(Excel.Cells(х, 2).Value));  
               Колонка3       = СокрЛП(Строка(Excel.Cells(х, 3).Value));  
               Колонка4       = СокрЛП(Строка(Excel.Cells(х, 4).Value));  
               Колонка5       = СокрЛП(Строка(Excel.Cells(х, 5).Value));  
               Колонка6       = СокрЛП(Строка(Excel.Cells(х, 6).Value));  
               Колонка7       = СокрЛП(Строка(Excel.Cells(х, 7).Value));  
               Колонка8       = СокрЛП(Строка(Excel.Cells(х, 8).Value));  
               Колонка9       = СокрЛП(Строка(Excel.Cells(х, 9).Value));  
               Колонка10       = СокрЛП(Строка(Excel.Cells(х, 10).Value));
               Колонка11       = СокрЛП(Строка(Excel.Cells(х, 11).Value));
               Колонка12       = СокрЛП(Строка(Excel.Cells(х, 12).Value));
               Колонка13       = СокрЛП(Строка(Excel.Cells(х, 13).Value));
               Колонка14       = СокрЛП(Строка(Excel.Cells(х, 14).Value));
               Колонка15       = СокрЛП(Строка(Excel.Cells(х, 15).Value));
                   
                   Если (ПустоеЗначение(Колонка15)=0) Тогда
                       
                       Если СокрЛП(Колонка15)<>"долг"  Тогда  
                           
                           
                           Если ПустоеЗначение(Колонка14)<>1 Тогда
                               
                                   Если (Дата(Колонка14)>=НачДата) и (Дата(Колонка14)<=КонДата) Тогда
                                       ТЗ.НоваяСтрока();
                                       ТЗ.Долг = Колонка15;
                                       ТЗ.Сумма = Колонка4;
                                       ТЗ.ДатаБухСпрвки=Колонка14;
                                       ТЗ.ДатаСФ = Колонка3;
                                         ТЗ.НомерСФ = Колонка7;
                                     КонецЕсли;
                                                                       
                            КонецЕсли;    
                         КонецЕсли;                      
                         
               
                   КонецЕсли;    
       Исключение
           Сообщить("Не обработать строку номер "+ Строка(х));
       КонецПопытки;    
   
   Конеццикла;    



Вот код. 1С выдает сообщение Несовпадение типов и виснет ! Сообщение внизу не появляется о не удачной обработке строки...
3 filh
 
16.01.12
22:34
попробуй через йоксель.
4 IvanovIV
 
16.01.12
22:35
http://zalil.ru/32512420

попробуй эту обработку
когда-то скачал ее с инфостарта
больше с загрузкой из xls  не  парюсь
5 Koliaff
 
16.01.12
22:35
(filh) Сори, ВК не пользуюсь ...
6 filh
 
16.01.12
22:37
(5) внешнюю обработку сделай, в ней подгрузи ВК. Или через табло.
7 Koliaff
 
16.01.12
22:41
(filh) Я пользуюсь ВК только если стандартными способами не возможно сдлеать задуманное, пока я надеюсь найти выход ...
8 Koliaff
 
16.01.12
22:43
(IvanovIV) Спасибо, но эта обработка так же выпала с такой же ошибкой и подвесила 1С.
9 ШтушаКутуша
 
16.01.12
22:45
а если убрать СокрЛП и Строка?
10 ШтушаКутуша
 
16.01.12
22:46
+9 попробовать, пройдет ли?
11 IvanovIV
 
16.01.12
22:46
(8) ну извини, чем мог тем помог

а файл екселевский в каком екселе создан и как сохранен?
12 IvanovIV
 
16.01.12
22:53
если не жалко
файлик выложи
не надо цликом весь
пару строк
одну, которая проходит
а другую, где ругается
13 filh
 
16.01.12
22:54
(12) сделай сам :)
14 Koliaff
 
16.01.12
22:55
(IvanovIV) Сейчас выложу
(ШтушаКутуша) СокрЛП - не причем, пробовал и так и так
15 filh
 
16.01.12
22:56
(14) ну попробуй еще для полного ой

Колонка1       = СокрЛП(""+Excel.Cells(х, 1).Value);
16 IvanovIV
 
16.01.12
22:57
(13) ) Накуа я буду пытаться моделировать, то что есть уже ... и меня никак не касается?
17 Koliaff
 
16.01.12
22:58
18 Koliaff
 
16.01.12
23:00
(filh) В отладчике при попытке посмотреть значение Excel.Cells(х, 1).Value вылетает ошибка, так что по-любому не пойдет....
19 filh
 
16.01.12
23:00
(17) а сохранить в 2003 и попробовать?
20 IvanovIV
 
16.01.12
23:01
(17)
см 11
21 Koliaff
 
16.01.12
23:02
Файл изначально в 2003 был, просто пересохранял в 2007, так что не в Excel дело
22 IvanovIV
 
16.01.12
23:02
я сейчас у предков
офиса тут нет
но думаю проблема в формате сохранения
23 IvanovIV
 
16.01.12
23:03
тогда завтра посмотрю на работе)
24 Koliaff
 
16.01.12
23:04
Вот ссылка на файл в 2003 офисе http://file.qip.ru/document/DNQ4X0Sj/Для_примера.html
25 filh
 
16.01.12
23:10
(24) тоже посмотрю завтра с утра, сейчас лень.
26 Koliaff
 
16.01.12
23:17
Вопрос закрыт, друг помог, который ещё не спал )
Кому интересно код такой :
   Если Найти (Excel.Cells(х, 15).Formula,"#REF") =0 Тогда
                   Колонка15       = СокрЛП(Строка(Excel.Cells(х, 15).Value));
               Иначе    
                   Сообщить("Не удалось обработать строку номер "+ Строка(х));
                   Продолжить;
               КонецЕсли;
27 Tatitutu
 
16.01.12
23:18
http://www.magazka.com/pryg-skok-full.html

на ИСе есть аналог для ТИСа