Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Выгрузка документов


Автор: Тиль 5.2.2007, 12:36
Есть такая засада:Надо выгрузить некоторый документы(например Поступление материалов) чтобы выгружалась и шапка (склад, число) и табличная часть (наименование товара, количество). В любой файл, все равно потом в базу Accsess подгружать. Никто не подскажет как сделать?

Автор: Naghual 5.2.2007, 13:20
Выгружай в ДБФ. Примеров масса!

Автор: _Valery_ 5.2.2007, 15:44
http://1c-esse.buter.ru/load_esse.php?pg=38

Автор: Тиль 6.2.2007, 06:50
Начсет справочника проблем нет. А вот как выгрузить приходку вместе с табличной частью?
чтоб было примерно так  на выходе:
21.12.2005 Приходная накладная№1 Товар№1   3(количество)
21.12.2005 Приходная накладная№1 Товар№2   5(количество)
21.12.2005 Приходная накладная№1 Товар№3   1(количество)
21.12.2005 Приходная накладная№1 Товар№4   2(количество)
21.12.2005 Приходная накладная№1 Товар№5   9(количество)

Автор: _Valery_ 6.2.2007, 18:02
Так та же самая фигня, только номер и дата документа - для одного документа не меняются, а табличную часть надо перебирать.
Что-то типа такого:

Код

Х=СоздатьОбъект("XBase"); 
    
    Х.ДобавитьПоле("DATA_DOC", "D", 10, 0);
    Х.ДобавитьПоле("NUMBER_DOC", "S", 10, 0);
    Х.ДобавитьПоле("TOVAR", "S", 25, 0);   
    Х.ДобавитьПоле("KOL", "N", 10, 2); 
    
    Х.СоздатьФайл("C:\tovari.dbf");   
    
    Приходник = СоздатьОбъект("Документ.ПоступлениеМатериалов");
    Приходник.НайтиДокумент(Док); // Док - документ, который надо выгрузить в dbf, если он выбирается в форме
    Приходник.ВыбратьСтроки();
    
    Пока Приходник.ПолучитьСтроку() = 1 Цикл
        Х.Добавить();
        Х.DATA_DOC = Приходник.ДатаДок;
        Х.NUMBER_DOC = Приходник.НомерДок;
        Х.TOVAR = Приходник.Материал.Наименование;
        Х.KOL = Приходник.Количество;
        Х.Записать(); 
    КонецЦикла;

    Х.ЗакрытьФайл();


Если надо выгрузить доки за период, то еще один циклик сверху

Код


Приходник.ВыбратьДокументы(Дата1, Дата2);

Пока Приходник.ПолучитьДокумент() = 1 Цикл
..............................


ну и т.д.

Автор: Тиль 7.2.2007, 07:17
[code=nocolor]
Процедура Сформировать()
Х=СоздатьОбъект("XBase"); 
    
    Х.ДобавитьПоле("DATA_DOC", "D", 10, 0);
    Х.ДобавитьПоле("NUMBER_DOC", "S", 10, 0);
    Х.ДобавитьПоле("TOVAR", "S", 25, 0);   
    Х.ДобавитьПоле("KOL", "N", 10, 2); 
    
    Х.СоздатьФайл("C:\tovari.dbf");   
    
    Приходник = СоздатьОбъект("Документ.ПоступлениеМатериалов");
    Приходник.НайтиДокумент(Док); // Док - документ, который надо выгрузить в dbf, если он выбирается в форме
    Приходник.ВыбратьСтроки();
    
    Пока Приходник.ПолучитьСтроку() = 1 Цикл
        Х.Добавить();
        Х.DATA_DOC = Приходник.ДатаДок;
        Х.NUMBER_DOC = Приходник.НомерДок;
        Х.TOVAR = Приходник.Материал.Наименование;
        Х.KOL = Приходник.Количество;
Код


       Х.Записать(); 
    КонецЦикла;

    Х.ЗакрытьФайл();
КонецПроцедуры

дает ошибку

Код

Переменная не определена (Док)

Куда ее сувать то?

Автор: _Valery_ 7.2.2007, 09:53
А куда ты этот код засунул?) В отдельную обработку по выгрузке или как?... smile 

Автор: _Valery_ 9.2.2007, 00:58
Ну у меня предполагалось что Док - это переменная формы. Т.е. в форме выгрузки есть поле "Док" типа Документ.ПоступлениеМатериалов. Выбирается документ из соответствующего журнала, а потом по кнопке "Сформировать" - выгружается в dbf.
Но целесообразнее организовать выгрузку документов за период, я думаю...

Автор: _Valery_ 14.2.2007, 00:03
Код

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

    Х=СоздатьОбъект("XBase"); 
    
    Х.ДобавитьПоле("DATA_DOC", "D", 10, 0);
    Х.ДобавитьПоле("NUMBER_DOC", "S", 10, 0);
    Х.ДобавитьПоле("TOVAR", "S", 25, 0);   
    Х.ДобавитьПоле("KOL", "N", 10, 2); 
    
    Х.СоздатьФайл("C:\tovari.dbf");   
    
    Приходник = СоздатьОбъект("Документ.ПоступлениеМатериалов");
    ВыгружаемыйДок = СоздатьОбъект("Документ.ПоступлениеМатериалов"); 
 
    Приходник.ВыбратьДокументы("01.01.01","01.02.07");

    Пока Приходник.ПолучитьДокумент() = 1 Цикл
        ВыгружаемыйДок.НайтиДокумент(Приходник.ТекущийДокумент());
        ВыгружаемыйДок.ВыбратьСтроки();
        Пока ВыгружаемыйДок.ПолучитьСтроку() = 1 Цикл
          Х.Добавить();
          Х.DATA_DOC = ВыгружаемыйДок.ДатаДок;
          Х.NUMBER_DOC = ВыгружаемыйДок.НомерДок;
          Х.TOVAR = ВыгружаемыйДок.Материал.Наименование;
          Х.KOL = ВыгружаемыйДок.Количество;
          Х.Записать(); 
        КонецЦикла;
    КонецЦикла;

    Х.ЗакрытьФайл();

КонецПроцедуры


- это если хочешь внешей обработкой выгрузить документы типа "Поступление материалов" за период с 01.01.2001 по 01.02.207. Ну а далее модификации...  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)