×
Показано с 1 по 26 из 26
  1. #1
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19

    Подскажите,плиз,как сделать выгрузку в файл *.ТХТ по данным Реализации из 1С 7.7

    Подскажите,плиз,как сделать выгрузку в файл *.ТХТ по данным Реализации из 1С 7.7 "Бухгалтерский учет редакция 4.5"
    Нужно для обмена с сторонней программой.
    Причем форма для "Торговли+склад" имеется и нормально выгружает в файл вида(там выборка идет по реал=СоздатьОбъект("Документ.Реализация"); ):
    Номер/ДатаНакл:0000000007#27.01.2005
    КлиентНазвание:"ООО ПО Корф"
    АдресЮридич:Москва, Профсоюзная, д. 125
    ИНН/КПП:7745123564#774521365
    ВсегоПоНакладной:5995
    Строка:1#2#Ожидание#11#101#1111#169.47#Готовые изделия#товар#шт#41#
    Строка:2#2#Погрузка#22#222#4884#0#Готовые изделия#товар#шт#41#
    @@@
    Номер/ДатаНакл:0000000001#02.08.2005
    КлиентНазвание:"АВиС Моторс Лтд"
    АдресЮридич:Московская область, Раменский р-н, Солнечная, д. 35
    ИНН/КПП:7845235401#780012561
    ВсегоПоНакладной:13412
    Строка:1#2#доставка груза#1#9925.42#11712#1514.05#Готовые изделия#товар#шт#41#
    Строка:2#2#Экспедирование#1#1440.68#1700#219.76#Готовые изделия#товар#шт#41#
    @@@
    Вопрос-по какому документу нужно вести обработку в "Бухгалтерский учет редакция 4.5"?
    Если кто реально готов помочь форму вышлю.
    Поделиться с друзьями

  2. #2
    АнонимХ
    Гость
    РасходнаяНакладная либо РеализацияОтгруженнойПродукции

  3. #3
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Цитата Сообщение от АнонимХ Посмотреть сообщение
    РасходнаяНакладная либо РеализацияОтгруженнойПродукции
    Да вроде пробовали менять с этими,но что-то не реагирует.
    мог-бы скинуть работающий *.ert под ТиС-может глянули бы как поменять под "Бухгалтерский учет"

  4. #4
    Fosihas
    Гость
    bonikn, простой подменой названия документов не пройдет.

  5. #5
    Slawwa
    Гость
    Ну это примерно так:

    РНК=СоздатьОБъект("РасходнаяНакладная")
    РНК.ВыбратьДокументы(ДатаНач,ДатаКон);
    Пока РНК.ПолучитьДокумент()=1 Цикл
    //тут из РНК выдергиваем нужные реквизиты и пихаем их в строки
    КонецЦикла;


    да, и естественно не забываем создать объект "Текст", а потом записать его.

  6. #6
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19

    Вот это работает для ТиС,что надо для Бухгалтерии..

    Перем ИмяФ1;
    Перем каталог;
    Перем код;

    // Функция возращает ИНН из переданной строки
    //
    Функция ПолучитьИНН(ИННКПП)

    Если Найти(ИННКПП, "\") <> 0 Тогда
    // найден разделитель
    Возврат Лев(ИННКПП, Найти(ИННКПП, "\") - 1);

    Иначе
    Возврат СокрЛП(ИННКПП);

    КонецЕсли;

    КонецФункции // ПолучитьИНН()

    // Функция возращает КПП из переданной строки
    //
    Функция ПолучитьКПП(ИННКПП)

    Если Найти(ИННКПП, "\") <> 0 Тогда
    // найден разделитель
    Возврат Сред(ИННКПП, Найти(ИННКПП, "\") + 1);

    Иначе
    Возврат "";

    КонецЕсли;

    КонецФункции // ПолучитьКПП()


    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса;
    реал=СоздатьОбъект("Документ.Реализация");

    /////////////////////////////////////////////////////
    // Расходные накладные //
    /////////////////////////////////////////////////////
    текстРеализация ="";
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать1)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийДокумент = Документ.Реализация.ТекущийДокумент;
    |ДатаДок = Документ.Реализация.ДатаДок;
    |НомерДок = Документ.Реализация.НомерДок;
    |Контрагент = Документ.Реализация.Контрагент;
    |Сумма = Документ.Реализация.Сумма;
    |СтавкаНДС = Документ.Реализация.СтавкаНДС;
    |Функция СуммаСумма = Сумма(Сумма);
    |Группировка ТекущийДокумент упорядочить по ТекущийДокумент.ДатаДок ;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    р=0;
    н=0;
    ИтСумма=0;
    ИтНДС=0;
    //реал=СоздатьОбъект("Документ.Реализация"); ///////////////
    Текст=СоздатьОбъект("Текст");
    Если ФС.СуществуетФайл(имяфайла1)=1 Тогда
    Если Вопрос("Файл с таким именем существует . Переписать ?",1)=1 Тогда
    Текст.открыть(имяфайла1);
    Для ст=0 по Текст.КоличествоСтрок() Цикл

    Текст.УдалитьСтроку(Текст.КоличествоСтрок());

    КонецЦикла;
    Текст.УдалитьСтроку(1);
    Текст.УдалитьСтроку(1);
    Текст.УдалитьСтроку(1);
    Текст.УдалитьСтроку(1);

    КонецЕсли;
    Иначе
    ФС. ПереименоватьФайл(КаталогИБ()+"\пустой.txt",имяфайла1,1);
    Текст.открыть(имяфайла1);
    КонецЕсли;


    ///////////////
    реал=СоздатьОбъект("Документ.Реализация");



    Пока Запрос.Группировка(1) = 1
    Цикл
    // Заполнение полей ТекущийДокумент
    н=н+1;
    ТекстРеализация= "Номер/ДатаНакл:"+СокрЛП(Запрос.НомерДок)+"#"+Формат(Запрос.ДатаДок,"ДДДММГГГГ"); //+"##x#0";
    Текст.ДобавитьСтроку(ТекстРеализация);
    ТекстРеализация="КлиентНазвание:"+СокрЛП(Запрос.Контрагент.ЮрФизЛицо.ПолнНаименование);//+"#"+СокрЛП(Запрос.Контрагент.Наименование);
    Текст.ДобавитьСтроку(ТекстРеализация);
    ТекстРеализация="АдресЮридич:"+СокрЛП(глПредставлениеАдреса(Запрос.Контрагент.ЮрФизЛицо.Юрадрес));
    Текст.ДобавитьСтроку(ТекстРеализация);
    ТекстРеализация="ИНН/КПП:"+СокрЛП(ПолучитьИНН(Запрос.Контрагент.ЮрФизЛицо.ИНН))+"#"+СокрЛП(ПолучитьКПП(Запрос.Контрагент.ЮрФизЛицо.ИНН));
    Текст.ДобавитьСтроку(ТекстРеализация);
    ТекстРеализация="ВсегоПоНакладной:"+сокрлп(Запрос.суммасумма);//+"#сколько строк в накладной?";
    Текст.ДобавитьСтроку(ТекстРеализация);


    кв=0;
    //////////////////////////////
    Если реал.НайтиДокумент(Запрос.ТекущийДокумент)=1 тогда
    Реал.ВыбратьСтроки();

    Пока реал.ПолучитьСтроку()=1 цикл
    кв=кв+1;
    // предупреждение(справ.артикул);
    ТекстРеализация="Строка:"+кв+"#"+"2"+"#"+реал.номенклатура+"#"+реал.Количество+"#"+реал.Цена+"#"+реал.Сумма+"#"+реал.СуммаНДС+"#Готовые изделия"+"#товар#"+реал.Единица+"#41"+"#";
    Текст.ДобавитьСтроку(ТекстРеализация);

    Итсумма=ИтСумма+реал.Сумма;
    ИтНДС=ИтНДС+ реал.СуммаНДС;

    КонецЦикла;
    КонецЕсли;


    ТекстРеализация="@@@";
    Текст.ДобавитьСтроку(ТекстРеализация);

    КонецЦикла;
    ТекстРеализация="===";
    Текст.ДобавитьСтроку(ТекстРеализация);
    шапка="Кодировка:WIN";
    Текст.ВставитьСтроку(1,шапка);
    шапка="ВсегоНакладных: "+н+" шт. ВсегоСуммаНакладных: "+ИтСумма+" руб. ВсегоСуммаНДС: "+ИтНДС+" руб.";
    Текст.ВставитьСтроку(2,шапка);
    шапка="За период:"+Формат(ВыбНачПериода,"ДДДММГГГГ")+"~"+Формат(ВыбКонПериода,"ДДДММГГГГ");
    Текст.ВставитьСтроку(3,шапка);
    шапка="-----------------------------------------------------";
    Текст.ВставитьСтроку(4,шапка);

    Текст.Записать(имяфайла1);

    Текст.Показать("Реализация",имяфайла1);


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

    //===============================================
    Процедура выбрфайл1()
    ИмяФайла= "*.txt";
    каталог="";
    ФС.ВыбратьФайл(0,имяФ1,каталог,"***** Выберите файл выгрузки в **** ","txt",);
    имяфайла1=каталог+имяф1;

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


    Процедура ПриОткрытии()
    ВыбКонПериода=РабочаяДата();
    ВыбНачПериода=РабочаяДата();
    каталог=ВосстановитьЗначение("каталог");
    ИмяФ1="pr"+СтрЗаменить(формат(ВыбконПериода,"ДДДММГГ"),".","")+".txt";
    имяфайла1=каталог+имяф1;
    КонецПроцедуры

    Процедура ПриЗакрытии()
    Сохранитьзначение("каталог",каталог);
    Сохранитьзначение("Имяф",имяф1);
    КонецПроцедуры

  7. #7
    Клерк
    Регистрация
    30.01.2008
    Сообщений
    90
    В процедуре сформировать() надо менять.
    в ТиС "Реализация" в Бух "РасходнаяНакладная". Попробуйте везде это поменять...

    вообще очень странная обработка, запутанная и неоптимальная...



    ЗЫ. Если надумаете обращаться к франчам - это пишется за один час, а не 6-8 часов...

  8. #8
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Slawwa, спасибо. Сейчас буду пробовать.

  9. #9
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Slawwa,что-то не получается-непойму почему-
    Вам отослал примеры лично

  10. #10
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19

    Примеры выгрузки в *.txt из 1с 7.7

    1)Выгрузка из ТиС по Документ.Реализация: out_tis.ert работает
    2)Выгрузка из Бухгалтерия по Документ.РасходнаяНакладная: out_buh.ert не работает!?!
    У кого есть минутка посмотрите плиз,не пойму.файлы во вложении vigr_iz_1C.zip
    Вложения Вложения

  11. #11
    Клерк
    Регистрация
    30.01.2008
    Сообщений
    90
    вообще-то оба работают, только там есть глупая строчка:
    Если ФС.СуществуетФайл(имяфайла1)=1 Тогда
    ...
    ...
    Иначе
    ФС. ПереименоватьФайл(КаталогИБ()+"\пустой.txt",имяфайла1,1);
    Текст.открыть(имяфайла1);
    КонецЕсли;
    то есть если файла нет, то вы его переименовываете и открываете...

    сделайте вот так и все будет работать

    Иначе
    //ФС. ПереименоватьФайл(КаталогИБ()+"\пустой.txt",имяфайла1,1);
    //Текст.открыть(имяфайла1);
    КонецЕсли;

    а вообще-то уже рабочий день кончился... давайте до завтра отложим?

  12. #12
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Первая про тис работает 100%.
    А вот вторая никак.
    Иначе
    //ФС. ПереименоватьФайл(КаталогИБ()+"\пустой.txt",имяфай ла1,1);
    //Текст.открыть(имяфайла1);
    КонецЕсли;
    Не заработало. формирует только шапку без каких-либо данных.

    Давайте отложим. Пойду к зачету надо готовиться

  13. #13
    Клерк
    Регистрация
    30.01.2008
    Сообщений
    90
    без данных? то есть нет строковой части накладных? ну так и должно быть - потому что у вас закомментирована строка
    // Если реал.НайтиДокумент(Запрос.ТекущийДокумент)=1 тогда
    Реал.ВыбратьСтроки();

    то есть строки выбираются из пустого места. А должно быть
    Если реал.НайтиДокумент(Запрос.ТекущийДокумент)=1 тогда
    Реал.ВыбратьСтроки();

  14. #14
    Клерк
    Регистрация
    30.01.2008
    Сообщений
    90
    попробуй вот так:

    Перем ИмяФ1;
    Перем каталог;


    // Функция возращает ИНН из переданной строки
    //
    Функция ПолучитьИНН(ИННКПП)
    Если Найти(ИННКПП, "\") <> 0 Тогда
    // найден разделитель
    Возврат Лев(ИННКПП, Найти(ИННКПП, "\") - 1);
    Иначе
    Возврат СокрЛП(ИННКПП);
    КонецЕсли;
    КонецФункции // ПолучитьИНН()

    // Функция возращает КПП из переданной строки
    //
    Функция ПолучитьКПП(ИННКПП)
    Если Найти(ИННКПП, "\") <> 0 Тогда
    // найден разделитель
    Возврат Сред(ИННКПП, Найти(ИННКПП, "\") + 1);
    Иначе
    Возврат "";
    КонецЕсли;
    КонецФункции // ПолучитьКПП()



    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса;
    реал=СоздатьОбъект("Документ.РасходнаяНакладная");
    реал.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
    ИтСумма=0;
    ИтНДС=0;
    Текст=СоздатьОбъект("Текст");

    Если ФС.СуществуетФайл(имяфайла1)=1 Тогда
    Если Вопрос("Файл с таким именем существует . Переписать ?",1)=1 Тогда
    Текст.открыть(имяфайла1);
    Текст.Очистить();
    КонецЕсли;
    КонецЕсли;
    н=0;
    Пока реал.ПолучитьДокумент()=1 Цикл
    н=н+1;
    ТекстРеализация= "Номер/ДатаНакл:"+СокрЛП(реал.НомерДок)+"#"+Формат(реал.ДатаДок,"ДДДММГГГГ");
    Текст.ДобавитьСтроку(ТекстРеализация);
    ТекстРеализация="КлиентНазвание:"+СокрЛП(реал.Контрагент.ПолнНаименование);
    Текст.ДобавитьСтроку(ТекстРеализация);
    ТекстРеализация="АдресЮридич:"+СокрЛП(глПредставлениеАдреса(реал.Контрагент.ЮридическийАдрес));
    Текст.ДобавитьСтроку(ТекстРеализация);
    ТекстРеализация="ИНН/КПП:"+СокрЛП(ПолучитьИНН(реал.Контрагент.ИНН))+"#"+СокрЛП(ПолучитьКПП(реал.Контрагент.ИНН));
    Текст.ДобавитьСтроку(ТекстРеализация);
    ТекстРеализация="ВсегоПоНакладной:"+сокрлп(реал.Итог("Всего"));
    Текст.ДобавитьСтроку(ТекстРеализация);
    реал.выбратьстроки();

    Для чс=1 по реал.количествострок() Цикл
    реал.ПолучитьСтрокуПоНомеру(чс);
    ТекстРеализация="Строка:"+чс+"#"+"2"+"#"+реал.товар+"#"+реал.Количество+"#"+реал.Цена+"#"+реал.Всего+"#"+реал.НДС+"#Готовые изделия"+"#товар#"+реал.Товар.ЕдиницаИзмерения+"#41"+"#";
    Текст.ДобавитьСтроку(ТекстРеализация);
    Итсумма=ИтСумма+реал.Всего;
    ИтНДС=ИтНДС+ реал.НДС;
    КонецЦикла;
    ТекстРеализация="@@@";
    Текст.ДобавитьСтроку(ТекстРеализация);
    КонецЦикла;
    ТекстРеализация="===";
    Текст.ДобавитьСтроку(ТекстРеализация);
    шапка="Кодировка:WIN";
    Текст.ВставитьСтроку(1,шапка);
    шапка="ВсегоНакладных: "+н+" шт. ВсегоСуммаНакладных: "+ИтСумма+" руб. ВсегоСуммаНДС: "+ИтНДС+" руб.";
    Текст.ВставитьСтроку(2,шапка);
    шапка="За период:"+Формат(ВыбНачПериода,"ДДДММГГГГ")+"~"+Формат(ВыбКонПериода,"ДДДММГГГГ");
    Текст.ВставитьСтроку(3,шапка);
    шапка="-----------------------------------------------------";
    Текст.ВставитьСтроку(4,шапка);
    Текст.Записать(имяфайла1);
    Текст.Показать("РасходнаяНакладная",имяфайла1);

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

    //===============================================
    Процедура выбрфайл1()
    ИмяФайла= "*.txt";
    каталог="";
    ФС.ВыбратьФайл(0,имяФ1,каталог,"***** Выберите файл выгрузки в **** ","txt",);
    имяфайла1=каталог+имяф1;
    Форма.Обновить();
    КонецПроцедуры
    //=================


    Процедура ПриОткрытии()
    ВыбКонПериода=РабочаяДата();
    ВыбНачПериода=РабочаяДата();
    каталог=ВосстановитьЗначение("каталог");
    ИмяФ1="pr"+СтрЗаменить(формат(ВыбконПериода,"ДДДММГГ"),".","")+".txt";
    имяфайла1=каталог+имяф1;
    Форма.Обновить();
    КонецПроцедуры

    Процедура ПриЗакрытии()
    Сохранитьзначение("каталог",каталог);
    Сохранитьзначение("Имяф",имяф1);
    КонецПроцедуры
    это должно работать нормально, убрал ненужные запросы, подправил реквизиты. Имейте ввиду, что в ТиС и в Бух. реквизиты табличные различаются - не Номенклатура, а Товар, не СуммаНДС, а НДС, ну и не Сумма, а Всего... так что смотрите сами, что надо, сумма с ндс или без и т.п.
    ну и конечно надо вылизать всю эту чехарду с именами и путями...

  15. #15
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Slawwa, ОГРОМНОЕ-ОГРОМНОЕ ВАМ СПАСИБО. Заработало !!!!!!!!!!!
    Не перавились ещё на Руси добрые люди

  16. #16
    Клерк Аватар для gusiy-75
    Регистрация
    04.04.2006
    Адрес
    санкт-Петербург
    Сообщений
    832
    Подскажите в форме АДВ 11 в последней строке если у меня нет задлженности по уплате страх.взносо нет нужно ставить число с - или ничего не ставить т.е.
    на начало задлж 2-006. 5 и 3

    начислено за 2007 10 и 5

    оплата 2006 5 и 3
    оплата 2007 10 и 5

    задол. на конец р.пер. ? и ?

  17. #17
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    P.S. не подскажети откуда надо выдергивать код товара. И можно-ли доставать группу(готовые изделия и т.п.)?

  18. #18
    Клерк
    Регистрация
    30.01.2008
    Сообщений
    90
    Цитата Сообщение от bonikn Посмотреть сообщение
    P.S. не подскажети откуда надо выдергивать код товара. И можно-ли доставать группу(готовые изделия и т.п.)?
    код товара: Товар.Код
    Группа: Товар.Родитель

    то есть в вашем случае - "реал.товар.код" и "реал.товар.родитель"

    gusiy-75, это вы не в ту тему обратились....

  19. #19
    Клерк Аватар для gusiy-75
    Регистрация
    04.04.2006
    Адрес
    санкт-Петербург
    Сообщений
    832
    Подскажите куда

  20. #20
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Код работает, а вот родитель - нулевая строка. Хотя в конфигурации по адресу Справочники→Номенклатура (то куда ссылается Товар) нет ни того ни другого.
    Хотя, возможно, что этого поля у меня нет.
    Последний раз редактировалось bonikn; 31.01.2008 в 16:04.

  21. #21
    Клерк
    Регистрация
    30.01.2008
    Сообщений
    90
    bonikn у любого справочника и код есть и родитель тоже (если справочник многоуровневый). просто код, как и наименование - это обязательные реквизиты, если в конфигураторе два раза щелкните по справочнику - то там будет и код и наименование и уровень вложенности...

    для отладки можно вставить в код вот такой фрагмент:
    Для чс=1 по реал.количествострок() Цикл
    реал.ПолучитьСтрокуПоНомеру(чс);
    сообщить(реал.товар.родитель);//сообщит родителя
    сообщить(реал.товар.уровень());//сообщит уровень вложенности. если уровень 1, то родителя нет, а если 2, 3 - то должен быть


    gusiy-75 как правильно задать вопрос: http://forum.klerk.ru/showthread.php?t=72853 .
    АДВ-11 это отчетность в пенс.фонд, а в этой теме выгрузка расходных накладных... поищите поиском по форуму, почитайте темы вроде вот этой http://forum.klerk.ru/showthread.php...4#post51450444 , если не поможет - создайте свою тему.

  22. #22
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Разобрался, родителя действительно нет.

  23. #23
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Здравствуйте, возник такой вопрос.

    Есть база с такой структурой. в торговля и склад 7.7.
    Код:
    Номенклатура
      |- Фрукты
      |- Овощи
         |- Морковь 
         |- Огурцы
      ...
    В выгрузке вписываем:
    Код:
    реал=СоздатьОбъект("Документ.ПоступлениеТМЦ")
    
    ТекстРеализация="Строка:"+чсст+"#"+реал.Номенклатура.Код+"#"+реал.Номенклатура+"#"+реал.Количество+"#"+реал.Цена+"#"+реал.Сумма+"#"+реал.ставкаНДС+"#"+реал.СуммаНДС+"#"+(реал.Сумма+реал.СуммаНДС)+"#"+"Товар"+"#"+реал.Номенклатура.ОсновнаяЕдиница+"#10#"+реал.Номенклатура.родитель+"#"+реал.Номенклатура.родитель.код;
    После выгрузки получаем строку с указанием только самого нижнего уровня.

    Вопрос: Как получить строку с указанием всех уровней. Те для моркови это "Овощи|морковь" ?
    Последний раз редактировалось bonikn; 26.05.2008 в 22:28.

  24. #24
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    Вопрос: Как получить строку с указанием всех уровней. Те
    "Овощи|Огурцы|Грунтовые"

  25. #25
    Клерк
    Регистрация
    26.01.2007
    Сообщений
    19
    вопрос снят

  26. #26
    Клерк
    Регистрация
    30.01.2008
    Сообщений
    90
    Быстро вы разобрались

    ну а для тех, кто не в курсе - надо просто выводить родителя. там же структура такая - есть элемент справочника, а папочка, в которой он лежит - это родитель. а чтобы получить ролдителя родителя - надо еще проверить уровень ( элемент.Уровень()) и если это не верхний уровень - то берем родителя родителя и т.п.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)