| 
    
            
         
         | 
    
  | 
v7: Из екселя в 1с | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Christina_    
     11.06.12 
            ✎
    10:31 
 | 
         
        Есть внешняя обработка, самая простая, две колонки, товар, сумма, должны заполнится в самый простой документ планирвоание, две колонки, товар, сумма.
  
        Скачала кучу обработок, вроде составила. Выдает ошибку Товар = Excel.Cells(i,Товар).Value; {\\TSCLIENT\D\ПЛАНИРОВАНИЕ.ERT(20)}: : Что может быть за оно?  | 
|||
| 
    1
    
        Tatitutu    
     11.06.12 
            ✎
    10:35 
 | 
         
        (0) смотри что в этой ячейке     
         | 
|||
| 
    2
    
        Christina_    
     11.06.12 
            ✎
    10:36 
 | 
         
        в обработке в этой ячейке я задаю номер колонки товара     
         | 
|||
| 
    3
    
        Tatitutu    
     11.06.12 
            ✎
    10:37 
 | 
         
        (2) понятно.. весь код в студию     
         | 
|||
| 
    4
    
        Christina_    
     11.06.12 
            ✎
    10:38 
 | 
         
        Функция СоздатьMSExcel()
  
        Попытка Excel = СоздатьОбъект("Excel.Application"); Исключение Предупреждение(ОписаниеОшибки()); ВызватьИсключение; КонецПопытки; Возврат Excel; КонецФункции//* //******************************************* Функция Обработка(Excel) ОчиститьОкносообщений(); СПРТовар = Создатьобъект("Справочник.Товары"); ДокПлан = СоздатьОбъект("Документ.Планирование"); ДокПлан.НайтиДокумент(Планир); Для i=1 По Строки Цикл Товар = Excel.Cells(i,Товар).Value; Попытка План = Число(Excel.Cells(i,План).Value); Исключение КонецПопытки; ДокПлан.НоваяСтрока(); ДокПлан.Товар = СПРТовар .ТекущийЭлемент(); ДокПлан.Сумма = план; КонецЦикла; Планир.Записать(); КонецФункции //******************************************* Процедура Сформировать() Excel=СоздатьMSExcel(); Попытка Если Excel.Workbooks.Open(Файл) = 0 Тогда Предупреждение("База не открыта!"); Возврат; Excel.Quit(); КонецЕсли; Исключение Предупреждение(ОписаниеОшибки()); Excel.Quit(); Возврат; КонецПопытки; Обработка(Excel); КонецПроцедуры //******************************************* Процедура ВыбрФайл(ИмяФайла) Перем Каталог; ТипФайла="Файлы Microsoft Excel (*.xls) |*.xls"; Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог, "Выберите файл", ТипФайла)=1 Тогда ИмяФайла=Каталог+ИмяФайла; КонецЕсли; КонецПроцедуры //*******************************************  | 
|||
| 
    5
    
        Christina_    
     11.06.12 
            ✎
    10:39 
 | 
         
        в диалоге обработки: Файл - файл Екселя, Планир - документ, строки - кол-во строк файла, товар - колонка товар, план - колонка плана     
         | 
|||
| 
    6
    
        Любопытная    
     11.06.12 
            ✎
    10:41 
 | 
         
        (4) А чему i сначала равно?     
         | 
|||
| 
    7
    
        vde69    
     11.06.12 
            ✎
    10:42 
 | 
||||
| 
    8
    
        Tatitutu    
     11.06.12 
            ✎
    10:42 
 | 
         
        Прыг-Скок...или из MS EXCEL в 1С (7.7) TiS* (открытый код - бесплатно)
  
        http://infostart.ru/public/83084/  | 
|||
| 
    9
    
        Christina_    
     11.06.12 
            ✎
    10:45 
 | 
         
        они огромные такие, обраотки..но ок, попробую. спасибо.     
         | 
|||
| 
    10
    
        Tatitutu    
     11.06.12 
            ✎
    10:45 
 | 
         
        (7) це 7.7 твоя еще не время     
         | 
|||
| 
    11
    
        vde69    
     11.06.12 
            ✎
    10:50 
 | 
         
        (10) при чем тут версия, перевести - 10 минут...
  
        зато там обработаны практически все грабли, да и скачивать ничего не нужно  | 
|||
| 
    12
    
        Christina_    
     11.06.12 
            ✎
    10:59 
 | 
         
        а что в моей не так обработке, не подскажите?     
         | 
|||
| 
    13
    
        Tatitutu    
     11.06.12 
            ✎
    11:01 
 | 
         
        (13) ты не ответила на вопрос
  
        Товар у тебя числовой реквизит? чему равен ?  | 
|||
| 
    14
    
        Christina_    
     11.06.12 
            ✎
    11:03 
 | 
         
        Товар   =  Excel.Cells(i,Товар).Value;
  
        товар1 - это имя товара, просто переменная, товар в скобках, это число, которое я укажу в диалоге ("колонка товара")  | 
|||
| 
    15
    
        vde69    
     11.06.12 
            ✎
    11:03 
 | 
         
        (13) я телепатирую,
  
        у нее в екселе формула, или пустая ячейка  | 
|||
| 
    16
    
        Christina_    
     11.06.12 
            ✎
    11:05 
 | 
         
        у меня в экселе в первой колонке код, во второй наименование товара, в третей 
  
        план, мне нужны 2 и 3  | 
|||
| 
    17
    
        Christina_    
     11.06.12 
            ✎
    11:06 
 | 
         
        (15) нет формул..     
         | 
|||
| 
    18
    
        Tatitutu    
     11.06.12 
            ✎
    11:08 
 | 
         
        (14)
  
        еще раз подсказываю Товар = что то (Товар) это что ты хочешь получить а про реквизит ты пишеш что Товар1 т.е Товар = Excel.Cells(i,Товар).Value; см.на ТОВАР  | 
|||
| 
    19
    
        dangerouscoder    
     11.06.12 
            ✎
    11:08 
 | 
         
        (17) Грузи всегда сначала в тз а потом после визуальной проверки принимай решение грузить в док или нет..     
         | 
|||
| 
    20
    
        Tatitutu    
     11.06.12 
            ✎
    11:09 
 | 
         
        напиши так
  
        Товар = Excel.Cells(i,НомКолонки).Value; а не Товар = Excel.Cells(i,Товар).Value;  | 
|||
| 
    21
    
        Масянька    
     11.06.12 
            ✎
    11:10 
 | 
         
        Я правильно понимаю, что: 
  
        Товар = Excel.Cells(i,Товар).Value; - в первом случае - это одно, а во втором это другое?  | 
|||
| 
    22
    
        Масянька    
     11.06.12 
            ✎
    11:10 
 | 
         
        (20) Я правильно понимаю.....     
         | 
|||
| 
    23
    
        Christina_    
     11.06.12 
            ✎
    11:11 
 | 
         
        имя   =  Excel.Cells(i,Товар).Value; исправила на это
  
        дает новую ошибку Планир.Записать(); {\\TSCLIENT\D\ПЛАНИРОВАНИЕ.ERT(29)}: Не выбран документ! хотя все выбрано  | 
|||
| 
    24
    
        Christina_    
     11.06.12 
            ✎
    11:12 
 | 
         
        (22) правильно, исправила, извините..     
         | 
|||
| 
    25
    
        Tatitutu    
     11.06.12 
            ✎
    11:12 
 | 
         
        ДокПлан.Записать();     
         | 
|||
| 
    26
    
        Christina_    
     11.06.12 
            ✎
    11:12 
 | 
         
        вот дура..     
         | 
|||
| 
    27
    
        Christina_    
     11.06.12 
            ✎
    11:20 
 | 
         
        а можно ли дописать так, чтобы при завершении обработки открывался заполненый документ?
  
        и еще вопрос...обработка работает, если я создаю документ, пустой, а потом при загрузке обработки его выбираю. так должно быть?  | 
|||
| 
    28
    
        dangerouscoder    
     11.06.12 
            ✎
    11:25 
 | 
         
        У тебя переменная -  Планир откуда берется? 
  
        См. ОткрытьФорму()  | 
|||
| 
    29
    
        Tatitutu    
     11.06.12 
            ✎
    11:30 
 | 
         
        (27)
  
        вместо ДокПлан.НайтиДокумент(Планир); напиши ДокПлан.Новый(); в конце ОткрытьФорму(Докплан.ТекущийДокумент());  | 
|||
| 
    30
    
        Christina_    
     11.06.12 
            ✎
    11:34 
 | 
         
        (28) неверно написала..нужно не планир, а докплан.
  
        (29) спасибо, сейчас попробую  | 
|||
| 
    31
    
        Christina_    
     11.06.12 
            ✎
    11:41 
 | 
         
        так получилось все..но ничего не заполняет...пишет столько строк сколько задаешь и все  пустые...     
         | 
|||
| 
    32
    
        Tatitutu    
     11.06.12 
            ✎
    11:47 
 | 
         
        (31) вот это не правильно - не хочешь качать - думай
  
        ДокПлан.Товар = СПРТовар .ТекущийЭлемент();  | 
|||
| 
    33
    
        Tatitutu    
     11.06.12 
            ✎
    11:48 
 | 
         
        таже ошибка что и товар
  
        План = Число(Excel.Cells(i,План).Value);  | 
|||
| 
    34
    
        Christina_    
     11.06.12 
            ✎
    12:06 
 | 
         
        (33) это исправила уже     
         | 
|||
| 
    35
    
        Christina_    
     11.06.12 
            ✎
    12:10 
 | 
         
        (34) это и справила уже, стал заполнять сумму)
  
        (32) мы сначала найти товар должны в справочнике, по коду например, так?  | 
|||
| 
    36
    
        Tatitutu    
     11.06.12 
            ✎
    12:12 
 | 
         
        да     
         | 
|||
| 
    37
    
        Christina_    
     11.06.12 
            ✎
    12:13 
 | 
         
        или можно вообще убрать справочник     
         | 
|||
| 
    38
    
        Christina_    
     11.06.12 
            ✎
    12:44 
 | 
         
        Функция Обработка() 
  
        СПРТовар = СоздатьОбъект("Справочник.Товары"); ДокПлан = СоздатьОбъект("Документ.Планирование"); ДокПлан.Новый(); Попытка Excel = СоздатьОбъект("Excel.Application"); РабочиеКниги=Excel.WorkBooks; ДокКнига=РабочиеКниги.Open(СокрЛП(Файл)); ДокЛист=ДокКнига.Worksheets(1); Исключение Предупреждение(ОписаниеОшибки()); ВызватьИсключение; КонецПопытки; Возврат Excel; Флаг = 0; Ном = НомПер; ОчиститьОкносообщений(); Пока Флаг = 0 Цикл Н = СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value); Н = "0000" + Н; Н = Прав(Н, 4); Сообщить(Н); Если СПРТовар.НайтиПоКоду(Н) = 0 Тогда Сообщить("Номенклатура на найдена!"); Иначе ДокПлан.НоваяСтрока(); ДокПлан.Товар = СПРТовар.ТекущийЭлемент(); ДокПлан.Сумма = СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value);; Конецесли; КонецЦикла; ДокПлан.Записать(); ОткрытьФорму(ДокПлан.ТекущийДокумент()); КонецФункции //******************************************* Процедура ВыбрФайл(ИмяФайла) Перем Каталог; ТипФайла="Файлы Microsoft Excel (*.xls) |*.xls"; Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог, "Выберите файл", ТипФайла)=1 Тогда ИмяФайла=Каталог+ИмяФайла; КонецЕсли; КонецПроцедуры //******************************************* вот что получилось у меня...  | 
|||
| 
    39
    
        Ork    
     11.06.12 
            ✎
    12:46 
 | 
         
        (38) Все не читал. Код после Возврат Excel; не выполнится никогда.     
         | 
|||
| 
    40
    
        Tatitutu    
     11.06.12 
            ✎
    12:48 
 | 
         
        жесть     
         | 
|||
| 
    41
    
        Christina_    
     11.06.12 
            ✎
    12:49 
 | 
         
        (40) понятно     
         | 
|||
| 
    42
    
        Tatitutu    
     11.06.12 
            ✎
    12:50 
 | 
         
        все не так , даже описывать не хочу
  
        цикл у тебя будет вечным где флаг сбрасывается в 1  | 
|||
| 
    43
    
        Ork    
     11.06.12 
            ✎
    12:50 
 | 
         
        +(39)
  
        Вот здесь : Флаг = 0; Ном = НомПер; ОчиститьОкносообщений(); Пока Флаг = 0 Цикл Н = СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value); Н = "0000" + Н; Н = Прав(Н, 4); Сообщить(Н); Если СПРТовар.НайтиПоКоду(Н) = 0 Тогда Сообщить("Номенклатура на найдена!"); Иначе ДокПлан.НоваяСтрока(); ДокПлан.Товар = СПРТовар.ТекущийЭлемент(); ДокПлан.Сумма = СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value);; Конецесли; КонецЦикла; Как программа определит, что пора шабашить с циклом и нужно из него выйти?  | 
|||
| 
    44
    
        Christina_    
     11.06.12 
            ✎
    12:51 
 | 
         
        ок. буду разбирать. спасибо.     
         | 
|||
| 
    45
    
        Ork    
     11.06.12 
            ✎
    12:54 
 | 
         
        +(43) Точно не скажу. Но по памяти вот эта вот конструкция :
  
        Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог, "Выберите файл", ТипФайла)=1 Тогда ИмяФайла=Каталог+ИмяФайла; КонецЕсли; вернет некорректное имя файла. Вместо (например) "C:\Directory1\filename1.ext" вернет "C:\Directory1filename1.ext" Разница в одном слэше.  | 
|||
| 
    46
    
        Tatitutu    
     11.06.12 
            ✎
    12:55 
 | 
         
        вот это это нужно в аналоги истории
  
        Н = СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value); Н = "0000" + Н; Н = Прав(Н, 4);  | 
|||
| 
    47
    
        Ork    
     11.06.12 
            ✎
    12:55 
 | 
         
        +(45) Нужно писать : ИмяФайла = Каталог + "\" + ИмяФайла;
  
        Проверь в отладчике или "ИмяФайла" выложи на форму.  | 
|||
| 
    48
    
        dangerouscoder    
     11.06.12 
            ✎
    12:57 
 | 
         
        (44) держи готовую обработку для загрузки  в ТЗ
  
        http://help1c.com/faq7/view/544.html  | 
|||
| 
    49
    
        Ork    
     11.06.12 
            ✎
    13:01 
 | 
         
        +(46)
  
        Вот это вот тоже: Пока Флаг = 0 Цикл Н = СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value); ... ДокПлан.Сумма = СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value);; КонецЦикла; Мало того, что счетчит адреса нигде не изменяется. Так еще и код товара и сумму ТС умудрилась упаковать в одну ячейку.  | 
|||
| 
    50
    
        Christina_    
     12.06.12 
            ✎
    09:54 
 | 
         
        (49) я это из готовой взяла и под своё переделала..видимо ошиблась  с обработкой-примером.
  
        спасибо за советы.  | 
|||
| 
    51
    
        Mikeware    
     12.06.12 
            ✎
    10:12 
 | 
         
        (50) Может, пока не поздно, уйдешь на вдвое большую зарплату?     
         | 
|||
| 
    52
    
        Christina_    
     12.06.12 
            ✎
    10:50 
 | 
         
        (51) может оставите своё мнение при себе?     
         | 
|||
| 
    53
    
        Mikeware    
     12.06.12 
            ✎
    10:56 
 | 
         
        (52) Почему?
  
        Ваше право его не принимать, но мое право - его озвучивать...  | 
|||
| 
    54
    
        Christina_    
     12.06.12 
            ✎
    11:04 
 | 
         
        (53) каждый раз в любой моей теме?     
         | 
|||
| 
    55
    
        Mikeware    
     12.06.12 
            ✎
    11:06 
 | 
         
        (54) Возможно. Потому, что вам темы надо создавать совсем в других форумах     
         | 
|||
| 
    56
    
        Christina_    
     12.06.12 
            ✎
    11:06 
 | 
         
        (55)Скажите в каких.     
         | 
|||
| 
    57
    
        Christina_    
     12.06.12 
            ✎
    11:07 
 | 
         
        (55) если я вас так раздражаю, вы же модератор, может вам проще будет меня удалить отсюда, чтобы не портить мне настроение каждый раз?     
         | 
|||
| 
    58
    
        Mikeware    
     12.06.12 
            ✎
    11:10 
 | 
         
        (56) во всяких там "овуляшках", "журналах лиза" и типа того...
  
        (57) Тут свободная территория. относительно, конечно... вы вправе появляться и веселить нас своими фееричными вопросами. мы вправе комментировать и портить вам настроение....  | 
|||
| 
    59
    
        Christina_    
     12.06.12 
            ✎
    11:16 
 | 
         
        (58) я только начала изучать 1с. И не думаю, что для новичка мои вопросы фееричны и глупы.
  
        и впредь, к вам большая просьба, я ваше мнение на свой счет уже знаю. не нужно мне о нем больше говорить, пожалуйста.  | 
|||
| 
    60
    
        Christina_    
     12.06.12 
            ✎
    16:59 
 | 
         
        Функция Обработка(Excel)  
  
        ОчиститьОкносообщений(); СПРТовар = СоздатьОбъект("Справочник.Товары"); ДокПлан = СоздатьОбъект("Документ.Планирование"); ДокПлан.Новый(); Для i=1 По Строки Цикл имя = Строка(Excel.Cells(i,Товар).Value); Попытка код = Число(Excel.Cells(i,кккк).Value); Исключение КонецПопытки; Попытка сумма = Число(Excel.Cells(i,План).Value); Исключение КонецПопытки; Если СПРТовар.НайтиПоКоду(код,0) = 1 Тогда СПРТовар.НайтиЭлемент(код); Если ПустоеЗначение(код) = 1 Тогда продолжить; КонецЕСли; ДокПлан.НоваяСтрока(); ДокПлан.Товар = СПРТОвар .ТекущийЭлемент(); ДокПлан.Сумма = сумма; Иначе КонецЕсли; КонецЦикла; ДокПлан.Записать(); ОткрытьФорму(ДокПлан.ТекущийДокумент()); КонецФункции вот что у меня в итоге получилось..все заполянет, только почему-то не заполянет наименование.  | 
|||
| 
    61
    
        Christina_    
     12.06.12 
            ✎
    17:01 
 | 
         
        если убираю 
  
        Тогда СПРТовар.НайтиЭлемент(код); Если ПустоеЗначение(код) = 1 Тогда продолжить; КонецЕСли; тогда заполняет, то добавляет лишние товары  | 
|||
| 
    62
    
        Amra    
     12.06.12 
            ✎
    17:01 
 | 
         
        (60) Наименование чего?     
         | 
|||
| 
    63
    
        Maniac    
     12.06.12 
            ✎
    17:02 
 | 
         
        10000 рублей.     
         | 
|||
| 
    64
    
        MishaD    
     12.06.12 
            ✎
    17:03 
 | 
         
        СПРТовар.НайтиЭлемент(код); - это круто     
         | 
|||
| 
    65
    
        Christina_    
     12.06.12 
            ✎
    17:16 
 | 
         
        (62) товар..товар не выводит..     
         | 
|||
| 
    66
    
        dangerouscoder    
     12.06.12 
            ✎
    17:24 
 | 
         
        Попоробуй вото так - 
  
        Если ПустаяСтрока(код) = 1 Тогда Сообщить("Пустой код у "+имя); продолжить; КонецЕСли; Если СПРТовар.НайтиПоКоду(код,0) = 1 Тогда ДокПлан.НоваяСтрока(); ДокПлан.Товар = СПРТОвар .ТекущийЭлемент(); ДокПлан.Сумма = сумма; Иначе Сообщить("Не нашли товар с кодом "+Код); КонецЕсли;  | 
|||
| 
    67
    
        Christina_    
     12.06.12 
            ✎
    17:29 
 | 
         
        (66)получилось...только получается, если в екселе 20 строк товара, ая пишу 22, он последние в последние две строчки добавляет любой товар из справочника.
  
        а так работает, спасибо..  | 
|||
| 
    68
    
        dangerouscoder    
     12.06.12 
            ✎
    17:32 
 | 
         
        (67) последние строчки в exl как определяешь?     
         | 
|||
| 
    69
    
        MishaD    
     12.06.12 
            ✎
    17:36 
 | 
         
        Вообще то он дальше 
  
        Если ПустаяСтрока(код) = 1 Тогда Сообщить("Пустой код у "+имя); продолжить; КонецЕСли; не должен проходить, так что лучше попроси полный код  | 
|||
| 
    70
    
        Christina_    
     12.06.12 
            ✎
    17:41 
 | 
         
        Функция Обработка(Excel)  
  
        ОчиститьОкносообщений(); СПРТовар = СоздатьОбъект("Справочник.Товары"); ДокПлан = СоздатьОбъект("Документ.Планирование"); ДокПлан.Новый(); Для i=1 По Строки Цикл имя = Строка(Excel.Cells(i,Товар).Value); Попытка код = Число(Excel.Cells(i,кккк).Value); Исключение КонецПопытки; Попытка сумма = Число(Excel.Cells(i,План).Value); Исключение КонецПопытки; Если ПустаяСтрока(код) = 1 Тогда Сообщить("Пустой код у "+имя); продолжить; КонецЕСли; Если СПРТовар.НайтиПоКоду(код,0) = 1 Тогда ДокПлан.НоваяСтрока(); ДокПлан.Товар = СПРТОвар.ТекущийЭлемент(); ДокПлан.Сумма = сумма; Иначе Сообщить("Не нашли товар с кодом "+Код); КонецЕсли; КонецЦикла; ДокПлан.Записать(); ОткрытьФорму(ДокПлан.ТекущийДокумент()); КонецФункции  | 
|||
| 
    71
    
        dangerouscoder    
     12.06.12 
            ✎
    17:48 
 | 
         
        Попытка 
  
        код = Число(Excel.Cells(i,кккк).Value); Исключение КонецПопытки; зачем обработка исключения? Для i=1 По Строки Цикл переменная Строки где определена?  | 
|||
| 
    72
    
        Christina_    
     12.06.12 
            ✎
    17:57 
 | 
         
        строки - это количество строк в файле, задаю в диалоге обработки     
         | 
|||
| 
    73
    
        Christina_    
     12.06.12 
            ✎
    17:58 
 | 
         
        и если у меня занято 22 строки, но первые две это шапка, я пишу 22, и первые две строчки в документе будут любым товаром из справочника.     
         | 
|||
| 
    74
    
        MishaD    
     12.06.12 
            ✎
    17:59 
 | 
         
        для i=3     
         | 
|||
| 
    75
    
        Christina_    
     12.06.12 
            ✎
    18:01 
 | 
         
        убрала исключение тоже самое
  
        Функция Обработка(Excel) ОчиститьОкносообщений(); СПРТовар = СоздатьОбъект("Справочник.Товары"); ДокПлан = СоздатьОбъект("Документ.Планирование"); ДокПлан.Новый(); Для i=1 По Строки Цикл имя = Строка(Excel.Cells(i,Товар).Value); код = Число(Excel.Cells(i,кккк).Value); сумма = Число(Excel.Cells(i,План).Value); Если ПустаяСтрока(код) = 1 Тогда Сообщить("Пустой код у "+имя); продолжить; КонецЕСли; Если СПРТовар.НайтиПоКоду(код,0) = 1 Тогда ДокПлан.НоваяСтрока(); ДокПлан.Товар = СПРТОвар.ТекущийЭлемент(); ДокПлан.Сумма = сумма; Иначе Сообщить("Не нашли товар с кодом "+Код); КонецЕсли; КонецЦикла; ДокПлан.Записать(); ОткрытьФорму(ДокПлан.ТекущийДокумент()); КонецФункции  | 
|||
| 
    76
    
        Christina_    
     12.06.12 
            ✎
    18:01 
 | 
         
        почему i=3?     
         | 
|||
| 
    77
    
        Christina_    
     12.06.12 
            ✎
    18:01 
 | 
         
        а если файл будет с шапкой в 3 строки?     
         | 
|||
| 
    78
    
        Christina_    
     12.06.12 
            ✎
    18:02 
 | 
         
        а если без шапки, то не заполнится все..     
         | 
|||
| 
    79
    
        MishaD    
     12.06.12 
            ✎
    18:03 
 | 
         
        ВысотаШапки=3;
  
        Строки=Excel.Sheets(1).Cells.SpecialCells(11).Row; Для i=ВысотаШапки+1 по Строки Цикл  | 
|||
| 
    80
    
        dangerouscoder    
     12.06.12 
            ✎
    18:04 
 | 
         
        Строки=Excel.Sheets(1).Cells.SpecialCells(11).Row;    // строка последней ячейки
  
        по поводу шапки добавь на форме реквизит типа число с какой строки начинать читать файл  | 
|||
| 
    81
    
        BlackSeaCat    
     12.06.12 
            ✎
    18:12 
 | 
         
        Пока автор не будет стараться ПОНЯТЬ, что она пишет - у нее будет получаться только г...нокод.
  
        Который, как известно, иногда работает, но чаще... пахнет. Например, после: код = Число(Excel.Cells(i,кккк).Value); проверять ЧИСЛОВОЙ результат функцией ПустаяСтрока() - как раз и дает амбре!  | 
|||
| 
    82
    
        MishaD    
     12.06.12 
            ✎
    18:18 
 | 
         
        девушка тролль. таких тупых не бывает     
         | 
|||
| 
    83
    
        Christina_    
     12.06.12 
            ✎
    18:21 
 | 
         
        Функция Обработка(Excel)  
  
        ОчиститьОкносообщений(); СПРТовар = СоздатьОбъект("Справочник.Товары"); ДокПлан = СоздатьОбъект("Документ.Планирование"); ДокПлан.Новый(); Для i=номер По Строки Цикл имя = Строка(Excel.Cells(i,Товар).Value); код = Число(Excel.Cells(i,кккк).Value); сумма = Число(Excel.Cells(i,План).Value); Если СПРТовар.НайтиПоКоду(код,0) = 1 Тогда ДокПлан.НоваяСтрока(); ДокПлан.Товар = СПРТОвар.ТекущийЭлемент(); ДокПлан.Сумма = сумма; Иначе Сообщить("Не нашли товар с кодом "+Код); КонецЕсли; КонецЦикла; ДокПлан.Записать(); ОткрытьФорму(ДокПлан.ТекущийДокумент()); КонецФункции вот это работает как надо...номер=номер строки начала чтения файла. (80) спасибо!  | 
|||
| 
    84
    
        Christina_    
     12.06.12 
            ✎
    18:23 
 | 
         
        (82) бывают     
         | 
|||
| 
    85
    
        Christina_    
     12.06.12 
            ✎
    18:23 
 | 
         
        (84) всем еще раз спасибо...     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |