пример выгрузки/загрузки в DBF 1C 8.0 , пример выгрузки/загрузки в DBF 1C 8.0
23.10.09, 23:11
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 2 раз
Рейтинг: 0
ФайлОстатков = Новый 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 ;
СтрокаСуммыДолга.СчетУчетаРасчетов = ПланыСчетов.Хозрасчетный.НайтиПоКоду(СимволСчета);
КонецЕсли ;
Документ.ВалютаДокумента = Валюта;
Документ.СчетДт = ПланыСчетов.Хозрасчетный.Вспомогательный;
Документ.СчетКт = ПланыСчетов.Хозрасчетный.Вспомогательный;
Документ.Записать(РежимЗаписиДокумента.Проведение);
ФайлОстатков.Следующая();
КонецЦикла ;
ФайлОстатков.ЗакрытьФайл();
04.02.10, 4:41
Молчаливый
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(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 ;
КонецЦикла ;
ФайлНоменклатура.ЗакрытьФайл();
КонецПроцедуры
04.02.10, 8:20
Оратор
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0
Цитата
Номенклатура = Справочники.Новый();
а как же, Справочники.<ИмяСправочника>.СоздатьОбъек();....
И потом опишите ошибку, которую выдает система, полностью.
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.Оскар Уайлд
04.02.10, 9:38
Молчаливый
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(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С, система ошибок не выдает.
04.02.10, 10:56
Оратор
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0
Цитата
Справочники.Номенклатура.СоздатьОбъект();
не правильно!
Цитата
Синтаксис-помошник СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>) СоздатьЭлемент (CreateItem) Синтаксис: СоздатьЭлемент() Возвращаемое значение: Тип: СправочникОбъект. Описание: Создает новый элемент справочника. Примечание: Использование метода не приводит к записи созданного объекта в базу данных. Пример: НовыйОбъект = Справочники.Валюты.СоздатьЭлемент(); НовыйОбъект.Код = "840"; НовыйОбъект.Наименование = "USD"; НовыйОбъект.ПолноеНаименование = "Доллары США"; НовыйОбъект.Записать();
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.Оскар Уайлд
04.02.10, 11:00
Живет на форуме
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0
Цитата(World1С @ 04.02.10, 11:56)
не правильно!
Извиняюсь
Исправил на
ТекСправочник = Справочники.<ИмяСправочника>.СоздатьЭлемент();
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!