Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: пример выгрузки/загрузки в DBF 1C 8.0
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
ruslan
дайте пжс пример выгрузки и загрузки в DBF для 1С 8,0, в интернете не нашел, только для 8,1. заранее благодарен
Vofka
А в 8.0 Вы пробовали делать так, как описано для 8.1 ?
ruslan
не получается загрузить 8,1 для 8,0, говорит что данная версия не может открыть
World1С
Vofka Имел в виду набрать или скопировать код из обработки для 8.1 и вставить 8.0
Aspirans
// Загрузка остатков
    
    ФайлОстатков = Новый XBase;
    ФайлОстатков.Кодировка = КодировкаXBase.OEM;
    ФайлОстатков.ОткрытьФайл(ПутьКТаблицеОстатков);
    ФайлОстатков.Первая();
    
    Пока Не ФайлОстатков.ВКонце() Цикл

        КодКонтрагента = СокрЛП(ФайлОстатков.ПолучитьЗначениеПоля("ZKPO"));
        Если КодКонтрагента = "" Тогда
            КодКонтрагента = СокрЛП(ФайлОстатков.ПолучитьЗначениеПоля("IDENKOD"));
        КонецЕсли;            
        НаименованиеКонтрагента = СокрЛП(СтрЗаменить(ФайлОстатков.ПолучитьЗначениеПоля("NAME"),"?","і"));
        Контрагент = ПолучитьКонтрагента(КодКонтрагента,НаименованиеКонтрагента);
        СимволСчета = СокрЛП(ФайлОстатков.ПолучитьЗначениеПоля("SYMBOL"));    
        ОстатокДебет = ФайлОстатков.ПолучитьЗначениеПоля("DB_PP");
        ОстатокКредит = ФайлОстатков.ПолучитьЗначениеПоля("KR_PP");
        
        Документ = Документы.КорректировкаДолга.СоздатьДокумент();
        
        Документ.Организация = Организация;
        Документ.Дата = "20090630235959";
        Документ.ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.ВводНачальныхОстатков;
        Если ОстатокДебет > 0 Тогда
            Документ.КонтрагентДебитор = Контрагент;
            Документ.СуммыДолга.Очистить();
            СтрокаСуммыДолга = Документ.СуммыДолга.Добавить();
            СтрокаСуммыДолга.ВидЗадолженности = Перечисления.ВидыЗадолженности.Дебиторская;
            СтрокаСуммыДолга.ДоговорКонтрагента = ПолучитьДоговор(Документ.КонтрагентДебитор);
            Если Лев(СимволСчета,3) = "361" Тогда
                СтрокаСуммыДолга.ТипКонтрагента = Перечисления.СтатусыКонтрагентов.Покупатель;
            Иначе
                СтрокаСуммыДолга.ТипКонтрагента = Перечисления.СтатусыКонтрагентов.Поставщик;
            КонецЕсли;
            СтрокаСуммыДолга.КратностьВзаиморасчетов = 1.00;
            СтрокаСуммыДолга.КурсВзаиморасчетов = 1.00;
            СтрокаСуммыДолга.Сумма = ОстатокДебет;
            СтрокаСуммыДолга.СуммаВзаиморасчетов = ОстатокДебет;
            СтрокаСуммыДолга.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
            СтрокаСуммыДолга.СчетУчетаРасчетов = ПланыСчетов.Хозрасчетный.НайтиПоКоду(СимволСчета);
        Иначе
            Документ.КонтрагентДебитор = Контрагент;
            Документ.СуммыДолга.Очистить();
            СтрокаСуммыДолга = Документ.СуммыДолга.Добавить();
            СтрокаСуммыДолга.ВидЗадолженности = Перечисления.ВидыЗадолженности.Кредиторская;
            СтрокаСуммыДолга.ДоговорКонтрагента = ПолучитьДоговор(Документ.КонтрагентДебитор);
            Если Лев(СимволСчета,3) = "361" Тогда
                СтрокаСуммыДолга.ТипКонтрагента = Перечисления.СтатусыКонтрагентов.Покупатель;
            Иначе
                СтрокаСуммыДолга.ТипКонтрагента = Перечисления.СтатусыКонтрагентов.Поставщик;
            КонецЕсли;
            СтрокаСуммыДолга.КратностьВзаиморасчетов = 1.00;
            СтрокаСуммыДолга.КурсВзаиморасчетов = 1.00;
            СтрокаСуммыДолга.Сумма = ОстатокКредит;
            СтрокаСуммыДолга.СуммаВзаиморасчетов = ОстатокКредит;
            СтрокаСуммыДолга.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
            СтрокаСуммыДолга.СчетУчетаРасчетов = ПланыСчетов.Хозрасчетный.НайтиПоКоду(СимволСчета);
        КонецЕсли;
        Документ.ВалютаДокумента = Валюта;
        Документ.СчетДт = ПланыСчетов.Хозрасчетный.Вспомогательный;
        Документ.СчетКт = ПланыСчетов.Хозрасчетный.Вспомогательный;
        Документ.Записать(РежимЗаписиДокумента.Проведение);
        ФайлОстатков.Следующая();
    КонецЦикла;

    ФайлОстатков.ЗакрытьФайл();
Aspirans
Переносил остатки из FoxPro
Aspirans
Ну как, ruslan, пригодилось?
Katsy
Цитата(Aspirans @ 24.10.09, 8:11) необходимо зарегистрироваться для просмотра ссылки
// Загрузка остатков

ФайлОстатков = Новый XBase;
ФайлОстатков.Кодировка = КодировкаXBase.OEM;
ФайлОстатков.ОткрытьФайл(ПутьКТаблицеОстатков);
ФайлОстатков.Первая();

//Цикл

ФайлОстатков.ЗакрытьФайл();


Подскажите, пожалуйста, что не так в обработке:
Процедура ЗаполнениеСправочника()
    ФайлНоменклатура = Новый XBase;
    ФайлНоменклатура.Кодировка = КодировкаXBase.OEM;
    ФайлНоменклатура.ОткрытьФайл("D:\My documents\Мои документы\SPNM.DBF");
    ФайлНоменклатура.Первая();

    счетчик = 1;
    Номенклатура = Справочники.Новый();
    Пока Не ФайлНоменклатура.ВКонце() Цикл
        НаименованиеТовара = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMNAME"));
        ПолноеНаименование = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMPRN1"));
        НаименованиеДляПечати = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMPRN2"));
        БазоваяЕдиница = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMED"));
        Страна = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMST"));
        НомерГТД = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMGTD"));
        КоличествоЕдиницы = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMUPAK"));
        ВесЕдиницы = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMVES"));
        ЗакупочнаяЦена = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMSEB"));
        РозничнаяЦенаМин = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMMIN"));
        РозничнаяЦенаМакс = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMMAX"));
        Валюта = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMUE"));
        ЦенаДляСотрудника = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMCENA1"));
        ВидНоменклатуры = "Товар";
        ЕдиницаХраненияОстатков = БазоваяЕдиница;
        ЕдиницаДляОтчетов = БазоваяЕдиница;
        НДС = "18%";
        Если Валюта = 1 тогда
            Категории = "Импортный";
        КонецЕсли;
        Артикул = счетчик;
        счетчик = счетчик + 1;        
    КонецЦикла;

    ФайлНоменклатура.ЗакрытьФайл();
КонецПроцедуры
World1С
Цитата
Номенклатура = Справочники.Новый();


а как же, Справочники.<ИмяСправочника>.СоздатьОбъек();....

И потом опишите ошибку, которую выдает система, полностью.
Batchir
Общая схема программного создания и записи элемента справочника:
ТекСправочник = Справочники.<ИмяСправочника>.СоздатьЭлемент();
ТекСправочник.<ИмяРеквизита> = <ЗначениеРеквизита_1>;
...
ТекСправочник.<ИмяРеквизита> = <ЗначениеРеквизита_N>;
ТекСправочник.Записать();
Katsy
Цитата(Batchir @ 04.02.10, 18:09) необходимо зарегистрироваться для просмотра ссылки
Общая схема программного создания и записи элемента справочника:
ТекСправочник = Справочники.<ИмяСправочника>.СоздатьОбъект();
ТекСправочник.<ИмяРеквизита> = <ЗначениеРеквизита_1>;
...
ТекСправочник.<ИмяРеквизита> = <ЗначениеРеквизита_N>;
ТекСправочник.Записать();


Ок, но вот так тоже не работает:

Процедура ЗаполнениеСправочника()
    ФайлНоменклатура = Новый XBase;
    ФайлНоменклатура.Кодировка = КодировкаXBase.OEM;
    ФайлНоменклатура.ОткрытьФайл("D:\My documents\Мои документы\SPNM.DBF");
    ФайлНоменклатура.Первая();

    счетчик = 1;
    Пока Не ФайлНоменклатура.ВКонце() Цикл
        Номенклатура = Справочники.Номенклатура.СоздатьОбъект();
        Номенклатура.НаименованиеТовара = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMNAME"));
        Номенклатура.ПолноеНаименование = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMPRN1"));
        Номенклатура.НаименованиеДляПечати = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMPRN2"));
        Номенклатура.БазоваяЕдиница = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMED"));
        Номенклатура.Страна = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMST"));
        Номенклатура.НомерГТД = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMGTD"));
        Номенклатура.КоличествоЕдиницы = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMUPAK"));
        Номенклатура.ВесЕдиницы = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMVES"));
        Номенклатура.ЗакупочнаяЦена = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMSEB"));
        Номенклатура.РозничнаяЦенаМин = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMMIN"));
        Номенклатура.РозничнаяЦенаМакс = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMMAX"));
        Номенклатура.Валюта = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMUE"));
        Номенклатура.ЦенаДляСотрудника = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMCENA1"));
        Номенклатура.ВидНоменклатуры = "Товар";
        Номенклатура.ЕдиницаХраненияОстатков = Номенклатура.БазоваяЕдиница;
        Номенклатура.ЕдиницаДляОтчетов = Номенклатура.БазоваяЕдиница;
        Номенклатура.НДС = "18%";
        Если Номенклатура.Валюта = 1 тогда
            Номенклатура.Категории = "Импортный";
        КонецЕсли;
        Номенклатура.Артикул = счетчик;
        Номенклатура.Записать();
        счетчик = счетчик + 1;        
    КонецЦикла;

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


World1С, система ошибок не выдает.
World1С
Цитата
Справочники.Номенклатура.СоздатьОбъект();


не правильно!

Цитата
Синтаксис-помошник

СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
СоздатьЭлемент (CreateItem)
Синтаксис:
СоздатьЭлемент()
Возвращаемое значение:
Тип: СправочникОбъект.
Описание:
Создает новый элемент справочника.
Примечание:
Использование метода не приводит к записи созданного объекта в базу данных.
Пример:
НовыйОбъект = Справочники.Валюты.СоздатьЭлемент();
НовыйОбъект.Код = "840";
НовыйОбъект.Наименование = "USD";
НовыйОбъект.ПолноеНаименование = "Доллары США";
НовыйОбъект.Записать();
Batchir
А Вы проверяли , в цикл входите или нет?
Batchir
Цитата(World1С @ 04.02.10, 11:56) необходимо зарегистрироваться для просмотра ссылки
не правильно!


Извиняюсь  icon_beer17.gif
Исправил на
ТекСправочник = Справочники.<ИмяСправочника>.СоздатьЭлемент();
World1С
Сам, такое же "запорол". Проверил себя, решил исправиться. 32000000.gif

Спасибо Вам... icon_beer17.gif
Batchir
А так же




ФайлНоменклатура.Первая();

Пока Не ФайлНоменклатура.ВКонце() Цикл
// текст цикла
ФайлНоменклатура.Следующая(); // этого не хватает
КонецЦикла;
Katsy
Разобралась. Тема закрыта.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.