1С и Делфи(либо вижуал Басик)

Тема в разделе "1C и всё что с ней связано", создана пользователем XuMa(, 22 ноя 2005.

Статус темы:
Закрыта.
  1. XuMa(

    XuMa( Гость

    У меня есть проблема , надо 1С дбф файлы, содержащие номеклатуру товара его название коды и т.д. перенести в Делфи (либо на крайняк в Вижуал Бейсик). Подключить-то я их подключаю, но ... но кодировка русскоязычных наименований товаров(не говорю уже об укр. буквах "і ї є") выдаёт дурную кодировку.. но даже не это главное , главное в том что в кодах товара , которые мне важнее намного тоже периодами попадаются русские буквы ( необразованные бухгалтера) и это всё портит. Нет ли часом компоненты для такого типа операция с 1С бызой , так как создавать новую точно такую же бызу как-то не охота , так как там более 3 тысяч наименований.
     
  2. Guest

    Guest Гость

    1.Если разово перенести, то сделай отчет с нужными данными, сохрани в ехель а потом хошь в ДБФ, хошь еще куда ...
    2. Если постоянно - сделай выгрузку из 1С в ДБФ файл
     
  3. DIvanmgn

    DIvanmgn Гость

    <!--QuoteBegin-Guest+19:01:2006, 20:37 -->
    <span class="vbquote">(Guest @ 19:01:2006, 20:37 )</span><!--QuoteEBegin-->1.Если разово перенести, то сделай отчет с нужными данными, сохрани в ехель а потом хошь в ДБФ, хошь еще куда ...
    2. Если постоянно - сделай выгрузку из 1С в ДБФ файл
    [snapback]29551" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Не подскажешь как второе провернуть?
     
  4. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Я подскажу: написать обработку выгрузки из 1С.
     
  5. Гость

    <!--QuoteBegin-DIvanmgn+26:02:2006, 08:14 -->
    <span class="vbquote">(DIvanmgn @ 26:02:2006, 08:14 )</span><!--QuoteEBegin-->Не подскажешь как второе провернуть?
    [snapback]31092" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Через компоненту XBase.
     
  6. Maxim

    Maxim Гость

    Примерно так:

    ДБФ=СоздатьОбъект("XBASE");

    Ф=СоздатьОбъект(ФС);
    дир=каталогИБ();

    // создадим начало файла с номером аптеки
    НомерАптеки=прав("00"+Контрагент.Код,2);

    Файл= Строка(НомерАптеки) + Прав(НомерДок,6);
    если Ф.ВыбратьФайл(1,Файл,Дир,"Укажите файл с куда выгружать","Файл заказа (*.dbf) |*.dbf",,)=0 тогда
    DoMessageBox("Файл не записан!");
    возврат;
    конецесли;
    если Ф.СуществуетФайл(Дир+Файл)=1 тогда
    Если Вопрос("Файл с таким именем уже существует!! Перезаписать?",4)=7 тогда
    возврат;
    конецесли;
    конецесли;


    // Дата 3
    // Строка 2
    // Число 1
    // + обязательное поле
    // - необязательное поле

    ДБФ.ДобавитьПоле("KONTRAGENT",2,180,0); // + // контрагент для аптеки "ООО Ривьера" например, "Тайди - Казань ..."
    ДБФ.ДобавитьПоле("NUMDOC",2,10,0); // + // номер накладной
    ДБФ.ДобавитьПоле("DATE",3,8,0); // + // дата накладной
    ДБФ.ДобавитьПоле("OSNOVANIE",2,50,0); // - // основание накладной
    ДБФ.ДобавитьПоле("GRUP",2,5,0); // - // группа ТМЦ - не заполняется
    ДБФ.ДобавитьПоле("NNUM",2,13,0); // - // номенклатурный номер ТМЦ - не заполняется
    ДБФ.ДобавитьПоле("NAME",2,34,0); // + // наименование ТМЦ
    ДБФ.ДобавитьПоле("ED",2,5,0); // + // ед.изм. ТМЦ
    ДБФ.ДобавитьПоле("KOL",1,17,4); // + // количество ТМЦ по накладной
    ДБФ.ДобавитьПоле("CODEVAL",2,3,0); // + // всегда = "РУБ" - т.е. приход в рублях
    ДБФ.ДобавитьПоле("CENAVAL",1,13,4); // + // всегда = 1 - соответственно
    ДБФ.ДобавитьПоле("CENA0",1,19,4); // + // цена ТМЦ в рублях (БЕЗ НДС)
    ДБФ.ДобавитьПоле("NDS_TAX",1,5,2); // + // ставка НДС, в процентах
    ДБФ.ДобавитьПоле("NDS_SUM",1,19,4); // + // сумма НДС - для ОДНОЙ ТМЦ !!!
    ДБФ.ДобавитьПоле("SUMMA0",1,19,4); // + // сумма ТМЦ (БЕЗ НДС)
    ДБФ.ДобавитьПоле("SUMMA",1,19,4); // + // сумма ТМЦ (С НДС)
    ДБФ.ДобавитьПоле("MARKA",2,25,0); // - // дополнительное поле - не используется
    ДБФ.ДобавитьПоле("SORT",2,25,0); // - // дополнительное поле - не используется
    ДБФ.ДобавитьПоле("PROFIL",2,25,0); // - // дополнительное поле - не используется
    ДБФ.ДобавитьПоле("RAZMER",2,25,0); // - // дополнительное поле - не используется
    ДБФ.ДобавитьПоле("KOEF",1,14,4); // - // дополнительное поле - не используется
    ДБФ.ДобавитьПоле("SERIA",2,25,0); // + // серия ТМЦ
    ДБФ.ДобавитьПоле("SERTIFICAT",2,100,0); // + // сертификат ТМЦ
    ДБФ.ДобавитьПоле("PRIM",2,50,0); // - // примечание для ТМЦ
    ДБФ.ДобавитьПоле("GTD",2,30,0); // + // номер ГТД
    ДБФ.ДобавитьПоле("COUNTRY",2,25,0); // + // страна изготовления ТМЦ
    ДБФ.ДобавитьПоле("ATTRIB1",2,25,0); // - // дополнительное поле
    ДБФ.ДобавитьПоле("ATTRIB2",2,25,0); // - // дополнительное поле
    ДБФ.ДобавитьПоле("BARCODE",2,13,0); // - // штрих-код ТМЦ
    ДБФ.ДобавитьПоле("MAKER",2,25,0); // + // фирма-изготовитель ТМЦ
    ДБФ.ДобавитьПоле("DATE_MAKED",3,8,0); // + // дата производства ТМЦ
    ДБФ.ДобавитьПоле("DATE_END",3,8,0); // + // срок годности ТМЦ, т.е. использовать до указанной даты
    ДБФ.ДобавитьПоле("INS",2,1,0); // - // технологическое поле
    ДБФ.ДобавитьПоле("PERCENT",1,6,2); // - // технологическое поле
    ДБФ.ДобавитьПоле("MODE",2,100,0); // - // технологическое поле
    ДБФ.ДобавитьПоле("COMMENT",2,240,0); // - // информационное поле


    ДБФ.СоздатьФайл(файл);

    РасчетНакладной(); //там проверка сформированности!!
    табнакл=СгруппироватьПоТоваруТабл(табрасх,контекст,1,,НДС1,НДС2,безНДС); //1- означ. - в штуках без групп в коробки и т.д.
    йй=ТабНакл.КоличествоСтрок();
    Для й=1 По йй Цикл
    ТабНакл.ПолучитьСтрокуПоНомеру(й);

    ДБФ.Добавить();

    // ндс %
    прндс=табнакл.товар.НДС;
    если прндс.порядковыйномер()=1 тогда
    прндс=НДС1;
    иначе
    прндс=НДС2;
    конецесли;


    // найдем сертификат
    ДокСерт=СоздатьОбъект("Документ");

    НомерДокСертификат = "";
    РегистрационныйНомерСертификат = "";
    КемВыданСертификат = "";
    ДатаВыдачиСертификат = "";
    СрокДействияСертификат = "";
    если доксерт.ВыбратьПоЗначению(,,"ТоварСертификаты",табнакл.Товар)=0 тогда
    Сообщить(Строка(ТабНакл.товар.Наименование) + " На этот товар нет сертификатов");
    иначе
    МаксСрок=дата("");
    серт=ДокСерт.ТекущийДокумент();
    Пока ДокСерт.получитьДокумент()=1 Цикл
    ТекС=ДокСерт.ТекущийДокумент();
    Серт=ТекС;
    если (МаксСрок<ТекС.СрокДействия) тогда //И (Текс.ВНаличии=1)
    МаксСрок=ТекС.СрокДействия;
    конецесли;
    конеццикла;
    если серт.выбран()=1 тогда
    НомерДокСертификат = серт.НомерДок;
    РегистрационныйНомерСертификат = серт.НомерСертификата;
    КемВыданСертификат = серт.КемВыдан;
    ДатаВыдачиСертификат = серт.ДатаДок;
    СрокДействияСертификат = серт.СрокДействия;
    иначе
    Сообщить(Строка(ТабНакл.товар.Наименование) + " На этот товар нет ДЕЙСТВУЮЩИХ сертификатов");
    конецесли;
    конецесли;


    ДБФ.KONTRAGENT = Фирма.Наименование; // + // контрагент для аптеки "ООО Ривьера" например, "Тайди - Казань ..."
    ДБФ.NUMDOC = Строка(НомерДок); // + // номер накладной
    ДБФ.DATE = ДатаДок; // + // дата накладной
    ДБФ.OSNOVANIE = ""; // - // основание накладной
    ДБФ.GRUP = ""; // - // группа ТМЦ - не заполняется
    ДБФ.NNUM = ""; // - // номенклатурный номер ТМЦ - не заполняется
    ДБФ.NAME = ТабНакл.товар.Наименование; // + // наименование ТМЦ
    ДБФ.ED = Строка(ТабНакл.ед_изм); // + // ед.изм. ТМЦ
    ДБФ.KOL = ТабНакл.Количество; // + // количество ТМЦ по накладной
    ДБФ.CODEVAL = "РУБ"; // + // всегда = "РУБ" - т.е. приход в рублях
    ДБФ.CENAVAL = "1"; // + // всегда = 1 - соответственно
    ДБФ.CENA0 = ТабНакл.Цена0сДС; // + // цена ТМЦ в рублях (БЕЗ НДС)
    ДБФ.NDS_TAX = ""+прндс+"%"; // + // ставка НДС, в процентах
    ДБФ.NDS_SUM = Число(ТабНакл.НДС) / Число(ТабНакл.Количество);
    // + // сумма НДС - для ОДНОЙ ТМЦ !!!
    ДБФ.SUMMA0 = ТабНакл.сумма0сДС; // + // сумма ТМЦ (БЕЗ НДС)
    ДБФ.SUMMA = ТабНакл.суммасДС; // + // сумма ТМЦ (С НДС)
    ДБФ.MARKA = ""; // - // дополнительное поле - не используется
    ДБФ.SORT = ""; // - // дополнительное поле - не используется
    ДБФ.PROFIL = ""; // - // дополнительное поле - не используется
    ДБФ.RAZMER = ""; // - // дополнительное поле - не используется
    ДБФ.KOEF = ""; // - // дополнительное поле - не используется
    ДБФ.SERIA = НомерДокСертификат; // + // серия ТМЦ
    ДБФ.SERTIFICAT = РегистрационныйНомерСертификат; // + // сертификат ТМЦ
    ДБФ.PRIM = КемВыданСертификат; // - // примечание для ТМЦ
    ДБФ.GTD = Строка(ТабНакл.ГТДнов); // + // номер ГТД
    ДБФ.COUNTRY = Строка(ТабНакл.ГТДНов.Страна.Наименование);
    // + // страна изготовления ТМЦ
    ДБФ.ATTRIB1 = ""; // - // дополнительное поле
    ДБФ.ATTRIB2 = ""; // - // дополнительное поле
    ДБФ.BARCODE = ""; // - // штрих-код ТМЦ
    ДБФ.MAKER = ""; // + // фирма-изготовитель ТМЦ
    ДБФ.DATE_MAKED = ""; // + // дата производства ТМЦ
    ДБФ.DATE_END = ""; // + // срок годности ТМЦ, т.е. использовать до указанной даты
    ДБФ.INS = ""; // - // технологическое поле
    ДБФ.PERCENT = ""; // - // технологическое поле
    ДБФ.MODE = ""; // - // технологическое поле
    ДБФ.COMMENT = ""; // - // информационное поле


    ДБФ.Записать() ;
    конеццикла;
    ДБФ.ЗакрытьФайл();

    конецесли;
    сообщить("В файл с именем "+файл+" выгружено "+йй+" позиций товара");
     
Загрузка...
Статус темы:
Закрыта.

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