Имя: Пароль:
1C
1C 7.7
v7: при импорте ПКО из Excel не заполняется субконто
0 lunatik33
 
16.12.11
08:53
код таков

Процедура Выполнить()    

   //попытка доступа к Excel
 Попытка
       Эксель = СоздатьОбъект("Excel.Application");
       Исключение
           Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
       Возврат;
   КонецПопытки;
   
   СпрКонрагенты = СоздатьОбъект("Справочник.Контрагенты");
   ДокПКО        = СоздатьОбъект("Документ.ПриходныйОрдер");
   //Сч                        = СоздатьОбъект("Счет.Основной");
   //заранее создаем ссылку на справочник
   //Открытие файла Excel
   ИмяФайла = "";
   ИмяКаталога = "D:\";    
   
   Если ФС.ВыбратьФайл(0, ИмяФайла, ИмяКаталога,"Укажите файл ПКО:", , 20) = 1 Тогда      
       Книга = Эксель.WorkBooks.Open(ИмяКаталога + ИмяФайла);
       Лист = Книга.WorkSheets(1);
       //Получаем количество строк в книге
     КоличСтрок = Лист.Cells.CurrentRegion.Rows.Count;
       Сообщить(КоличСтрок);
       
       Для Ном = 4 По 4 Цикл
           ДокПКО.Новый();
           ДокПКО.ПринятоОт = СокрЛП(Лист.Cells(Ном, 1).Value);
           
           //корр счет
           КоррСчет = СчетПоКоду(СокрЛП(Лист.Cells(Ном, 3).Value));  
       
           ДокПКО.КоррСчет = КоррСчет;
           
           
           Для А = 1 По 3  Цикл
               ДокПКО.НазначитьТип("Субконто"+А,ДокПКО.КоррСчет.ВидСубконто(А));
           КонецЦикла;  
           
         СпрКонрагенты.НайтиПоНаименованию(СокрЛП(Лист.Cells(Ном, 4).Value));
           Если СпрКонрагенты.Выбран()>1 Тогда
             ДокПКО.Субконто1 = СпрКонрагенты.ТекущийЭлемент();  
           КонецЕсли;
           ДокПКО.Записать();
           ОткрытьФорму(ДокПКО.ТекущийДокумент());
       КонецЦикла;
           
   КонецЕсли;
   //закрыть приложение Excel
   Эксель.Quit();

КонецПроцедуры
1 lunatik33
 
16.12.11
08:54
вроде все есть и тип субконто назначен, но не работает.
2 lunatik33
 
16.12.11
09:27
вверх
3 AgainTwenty Five
 
16.12.11
09:29
СпрСсылка = СпрКонрагенты.НайтиПоНаименованию(СокрЛП(Лист.Cells(Ном, 4).Value));
           Если НЕ СпрСсылка.Пустая() Тогда
4 AgainTwenty Five
 
16.12.11
09:41
Сорри! Это v7
5 lunatik33
 
16.12.11
09:49
Мне и надо v7
6 lunatik33
 
16.12.11
09:53
ваша СпрСсылка выведет просто единицу и все
7 BlackSeaCat
 
16.12.11
09:55
Если СпрКонрагенты.НайтиПоНаименованию(СокрЛП(""+Лист.Cells(Ном, 4).Value));
        ДокПКО.Субконто1 = СпрКонрагенты.ТекущийЭлемент();
8 BlackSeaCat
 
16.12.11
09:55
Пардон!

Если СпрКонрагенты.НайтиПоНаименованию(СокрЛП(""+Лист.Cells(Ном, 4).Value))=1 Тогда
        ДокПКО.Субконто1 = СпрКонрагенты.ТекущийЭлемент();
9 zuza
 
16.12.11
09:57
(0)Это что?
Если СпрКонрагенты.Выбран()>1 Тогда
10 zuza
 
16.12.11
09:58
+(9)Никогда в условие не попадешь...
Если СпрКонрагенты.Выбран()=1 Тогда
или
Если СпрКонрагенты.Выбран()>0 Тогда
11 lunatik33
 
16.12.11
10:08
BlackSeaCat Спасибо, все заработало