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

  • Автор темы XuMa(
  • Дата начала
Статус
Закрыто для дальнейших ответов.
X

XuMa(

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

Guest

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

DIvanmgn

Гость
#3
<!--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]
Не подскажешь как второе провернуть?
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#4
Я подскажу: написать обработку выгрузки из 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.
 
M

Maxim

Гость
#6
Примерно так:

ДБФ=СоздатьОбъект("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 = ""; // - // информационное поле


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

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