8.х загрузка документов из access

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mazza, 10 мар 2009.

  1. TopicStarter Overlay
    mazza
    Offline

    mazza Опытный в 1С

    Регистрация:
    4 фев 2009
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Привет всем.
    Я в программировании 1С новичок. Вот пытаюсь написать обработку для загрузки данных из таблиц Access в Документы 1С Бухгалтерия предприятия 1.5 нашел обработку пример кода ниже. Эта обработка для загрузки счетов на оплату покупателю. Как загрузить в табличную часть этого документа несколько товаров? А то эта обработка каждый раз пытается создать новый счет с таким же номером.


    Код:
    Процедура Счета(Кнопка) //ЗАГРУЗКА 
    Если ЭлементыФормы.ПутьКФайлу.Значение = ""  Тогда        
    Предупреждение("Не выбрана база данных");       
    Возврат;       
    КонецЕсли;         
    MBD = Новый COMОбъект("ADODB.CONNECTION");       
    Попытка       
    MBD.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ЭлементыФормы.ПутьКФайлу.Значение+";Uid=Admin;Pwd=");   
    Исключение        Сообщить(ОписаниеОшибки());       
    Возврат;   
    КонецПопытки;       
    ТекстСелект = "SELECT * FROM ппп";   
    НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");      
    Попытка       
    НаборЗаписей=MBD.Execute(ТекстСелект);   
    Исключение        Сообщить(ОписаниеОшибки());   
    КонецПопытки;       
    Попытка        НаборЗаписей.MoveFirst();  
    Исключение //табилца пустая     
    Сообщить(ОписаниеОшибки());      
    НаборЗаписей.Close();        
    Возврат;  
    КонецПопытки; 
    //Создадим документ
    Пока НаборЗаписей.EOF()=0 Цикл      
    КодКлиента = Строка(НаборЗаписей.Fields("КодКлиента").Value);  //Код клиента           
    Название = Строка(НаборЗаписей.Fields("Название").Value);
    Дата =  Строка(НаборЗаписей.Fields(2).Value);
    КодЗаказа = Строка(НаборЗаписей.Fields(4).Value);
    Цена = Строка(НаборЗаписей.Fields("Цена").Value);
    КодТовара = Строка(НаборЗаписей.Fields(6).Value);
    Продано = Строка(НаборЗаписей.Fields("Продано").Value);
    НаборЗаписей.MoveNext();   
    
    КодЗаказа = КодЗаказа;
    КодТовара = КодТовара;	
    Наименование = Название;	 
    
    
    
    Счет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
    
    
    
    
    Счет.Организация = Справочники.Организации.НайтиПоКоду(1);
    Счет.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Наименование); 
    
    
    Счет.Дата = Дата;
    Счет.Номер = КодЗаказа;
    
    
    НоваяСтрока = Счет.Товары.Добавить(); 
    НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодТовара); 
    НоваяСтрока.Количество = Продано;
    НоваяСтрока.Цена = Цена;
    
    Счет.Записать(РежимЗаписиДокумента.Запись);	
    КонецЦикла;
    Сообщить("ДОГОВОРА ЗАГРУЖЕНЫ");
    КонецПроцедуры
    
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    На каждую запись (перебор в цикле) идет создание документа
    Код:
    Счет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
    
    Соответвенно, надо вынести создание документа за цикл
  3. TopicStarter Overlay
    mazza
    Offline

    mazza Опытный в 1С

    Регистрация:
    4 фев 2009
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Теперь все счета идут на одного контрагента. Подскажите пожалуйста, как теперь привязать счета к контрагентам? Если можно на моем примере.

    Код:
    Процедура Счета(Кнопка) //ЗАГРУЗКА 
    Если ЭлементыФормы.ПутьКФайлу.Значение = ""  Тогда        
    Предупреждение("Не выбрана база данных");       
    Возврат;       
    КонецЕсли;         
    MBD = Новый COMОбъект("ADODB.CONNECTION");       
    Попытка       
    MBD.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ЭлементыФормы.ПутьКФайлу.Значение+";Uid=Admin;Pwd=");   
    Исключение        Сообщить(ОписаниеОшибки());       
    Возврат;   
    КонецПопытки;       
    ТекстСелект = "SELECT * FROM ппп";   
    НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");      
    Попытка       
    НаборЗаписей=MBD.Execute(ТекстСелект);   
    Исключение        Сообщить(ОписаниеОшибки());   
    КонецПопытки;       
    Попытка        НаборЗаписей.MoveFirst();  
    Исключение //табилца пустая     
    Сообщить(ОписаниеОшибки());      
    НаборЗаписей.Close();        
    Возврат;  
    КонецПопытки; 
    //Создадим документ
    Счет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
    Пока НаборЗаписей.EOF()=0 Цикл      
    КодКлиента = Строка(НаборЗаписей.Fields("КодКлиента").Value);  //Код клиента           
    Название = Строка(НаборЗаписей.Fields("Название").Value);
    Дата =  Строка(НаборЗаписей.Fields(2).Value);
    КодЗаказа = Строка(НаборЗаписей.Fields(4).Value);
    Цена = Строка(НаборЗаписей.Fields("Цена").Value);
    КодТовара = Строка(НаборЗаписей.Fields(6).Value);
    Продано = Строка(НаборЗаписей.Fields("Продано").Value);
    НаборЗаписей.MoveNext();   
    
    КодЗаказа = КодЗаказа;
    КодТовара = КодТовара;	
    Наименование = Название;
    
    Счет.Организация = Справочники.Организации.НайтиПоКоду(1);
    Счет.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Наименование); 
    
    
    Счет.Дата = Дата;
    Счет.Номер = КодЗаказа;
    
    
    НоваяСтрока = Счет.Товары.Добавить(); 
    НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодТовара); 
    НоваяСтрока.Количество = Продано;
    НоваяСтрока.Цена = Цена;
    
    Счет.Записать(РежимЗаписиДокумента.Запись);	
    КонецЦикла;
    Сообщить("ДОГОВОРА ЗАГРУЖЕНЫ");
    КонецПроцедуры
    
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ну так посмотри на код, как появляется контрагент!
    Рекомендую изучить теорию, иначе никогда вперед не сдвинешься.
  5. TopicStarter Overlay
    mazza
    Offline

    mazza Опытный в 1С

    Регистрация:
    4 фев 2009
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Сейчас она загружает на каждый счет почти весь список товаров. Как можно привязать, чтобы к определенным Контрагентам шли определенные товары.
    Код:
    Процедура Счета(Кнопка) //ЗАГРУЗКА 
    Если ЭлементыФормы.ПутьКФайлу.Значение = ""  Тогда        
    Предупреждение("Не выбрана база данных");       
    Возврат;       
    КонецЕсли;         
    MBD = Новый COMОбъект("ADODB.CONNECTION");       
    Попытка       
    MBD.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ЭлементыФормы.ПутьКФайлу.Значение+";Uid=Admin;Pwd=");   
    Исключение        Сообщить(ОписаниеОшибки());       
    Возврат;   
    КонецПопытки;       
    ТекстСелект = "SELECT * FROM ппп";   
    НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");      
    Попытка       
    НаборЗаписей=MBD.Execute(ТекстСелект);   
    Исключение        Сообщить(ОписаниеОшибки());   
    КонецПопытки;       
    Попытка        НаборЗаписей.MoveFirst();  
    Исключение //табилца пустая     
    Сообщить(ОписаниеОшибки());      
    НаборЗаписей.Close();        
    Возврат;  
    КонецПопытки; 
    //Создадим документ  
    Счет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
    
    Пока НаборЗаписей.EOF()=0 Цикл      
    КодКлиента = Строка(НаборЗаписей.Fields("КодКлиента").Value);  //Код клиента           
    Название = Строка(НаборЗаписей.Fields("Название").Value);
    Дата =  Строка(НаборЗаписей.Fields(2).Value);
    КодЗаказа = Строка(НаборЗаписей.Fields(4).Value);
    Цена = Строка(НаборЗаписей.Fields("Цена").Value);
    КодТовара = Строка(НаборЗаписей.Fields(6).Value);
    Продано = Строка(НаборЗаписей.Fields("Продано").Value);
    НомерСчета = Строка(НаборЗаписей.Fields("НомерСчета").Value);
    Примечание = Строка(НаборЗаписей.Fields("Примечание").Value);
    НаборЗаписей.MoveNext();
    
    КодСчета = НомерСчета;
    КодТовара = КодТовара;	
    Наименование = Название;
    
    
    
    
    
    Счет.Организация = Справочники.Организации.НайтиПоКоду(1);
    
    
    Счет.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Наименование);
    Счет.Дата = Дата;
    Счет.Номер = КодСчета;
    
    
    
    НоваяСтрока = Счет.Товары.Добавить(); 
    НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодТовара); 
    НоваяСтрока.Количество = Продано;
    НоваяСтрока.Цена = Цена;
    
    
    
    Если Не(Счет.Товары.Количество() = 0) Тогда
    Счет.Записать(РежимЗаписиДокумента.Запись);
    КонецЕсли;
    КонецЦикла;
    Сообщить("СЧЕТА ЗАГРУЖЕНЫ");
    КонецПроцедуры
    

Поделиться этой страницей