Загрузка из dbf в 1с
04.02.2010
05:54
#1
"Здравствуйте, уважаемые!
Подскажите, пожалуйста, что не так в обработке:
Процедура ЗаполнениеСправочника()
ФайлНоменклатура = Новый 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;
КонецЦикла;
ФайлНоменклатура.ЗакрытьФайл();
КонецПроцедуры"
Подскажите, пожалуйста, что не так в обработке:
Процедура ЗаполнениеСправочника()
ФайлНоменклатура = Новый 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.2010
08:36
#2
"> Номенклатура = Справочники.Новый();
Это что? Справочник то какой? Наверное Справочники.Номенклатура.СоздатьЭлемент(); вам нужно..
И чего вы пытаетесь делать дальше? Если заполняете созданный элемент справочника, то пишите Номенклатура.Наименование = , Номенклатура.Арткул = , и т.д. А в конце еще нужно Номенклатура.Записать();
А еще Базовая едиинца, ставка НДС и многое другое - это не строковые переменные, и такое присваивание (="Товар") не попрет."
Это что? Справочник то какой? Наверное Справочники.Номенклатура.СоздатьЭлемент(); вам нужно..
И чего вы пытаетесь делать дальше? Если заполняете созданный элемент справочника, то пишите Номенклатура.Наименование = , Номенклатура.Арткул = , и т.д. А в конце еще нужно Номенклатура.Записать();
А еще Базовая едиинца, ставка НДС и многое другое - это не строковые переменные, и такое присваивание (="Товар") не попрет."
04.02.2010
10:35
#4
"Вот так тоже не работает:
Процедура ЗаполнениеСправочника()
ФайлНоменклатура = Новый 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;
КонецЦикла;
ФайлНоменклатура.ЗакрытьФайл();
КонецПроцедуры"
Процедура ЗаполнениеСправочника()
ФайлНоменклатура = Новый 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.2010
12:31
#5
"Попробуй так:
Процедура ЗаполнениеСправочника()
Ном=СоздатьОбъект("СправочникНоменклатура");
ФайлНоменклатура = СоздатьОбъект("XBase");
ФайлНоменклатура.Кодировка = КодировкаXBase.OEM;
ФайлНоменклатура.ОткрытьФайл("D:\My documents\Мои документы\SPNM.DBF");
ФайлНоменклатура.Первая();
счетчик = 1;
Пока ФайлНоменклатура.ВКонце()=0 Цикл
Номенклатура = Ном.Новый();
...
...
...
Номенклатура.Записать();
счетчик = счетчик + 1;
ФайлНоменклатура.Следующая();
КонецЦикла;
ФайлНоменклатура.ЗакрытьФайл();
КонецПроцедуры "
Процедура ЗаполнениеСправочника()
Ном=СоздатьОбъект("СправочникНоменклатура");
ФайлНоменклатура = СоздатьОбъект("XBase");
ФайлНоменклатура.Кодировка = КодировкаXBase.OEM;
ФайлНоменклатура.ОткрытьФайл("D:\My documents\Мои документы\SPNM.DBF");
ФайлНоменклатура.Первая();
счетчик = 1;
Пока ФайлНоменклатура.ВКонце()=0 Цикл
Номенклатура = Ном.Новый();
...
...
...
Номенклатура.Записать();
счетчик = счетчик + 1;
ФайлНоменклатура.Следующая();
КонецЦикла;
ФайлНоменклатура.ЗакрытьФайл();
КонецПроцедуры "
04.02.2010
12:35
#7
"У меня 8.0, а не 7.7.
Сейчас текст такой:
Процедура ЗаполнениеСправочника()
ФайлНоменклатура = Новый XBase;
ФайлНоменклатура.Кодировка = КодировкаXBase.OEM;
ФайлНоменклатура.ОткрытьФайл("D:\My documents\Мои документы\SPNM.DBF");
Если ФайлНоменклатура.Открыта() тогда
Предупреждение("База Открыта",2);
ФайлНоменклатура.Первая();
счетчик = 1;
Пока Не ФайлНоменклатура.ВКонце() Цикл
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
Номенклатура.НаименованиеТовара = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMNAME"));
Номенклатура.ПолноеНаименование = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMPRN1"));
Номенклатура.НаименованиеДляПечати = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMPRN2"));
Номенклатура.БазоваяЕдиница = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMED"));
Номенклатура.Страна = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMST"));
Номенклатура.НомерГТД = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMGTD"));
Номенклатура.КоличествоЕдиницы = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMUPAK"));
Номенклатура.ВесЕдиницы = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMVES"));
Номенклатура.ЗакупочнаяЦена = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMSEB"));
Номенклатура.РозничнаяЦенаМин = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMMIN"));
Номенклатура.РозничнаяЦенаМакс = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMMAX"));
Номенклатура.Валюта = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMUE"));
Номенклатура.ЦенаДляСотрудника = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMCENA1"));
Номенклатура.ВидНоменклатуры = "Товар";
Номенклатура.ЕдиницаХраненияОстатков = Номенклатура.БазоваяЕдиница;
Номенклатура.ЕдиницаДляОтчетов = Номенклатура.БазоваяЕдиница;
Номенклатура.НДС = "18%";
Если Номенклатура.Валюта = 1 тогда
Номенклатура.Категории = "Импортный";
КонецЕсли;
Номенклатура.Артикул = счетчик;
Номенклатура.Записать();
ФайлНоменклатура.Следующая();
счетчик = счетчик + 1;
КонецЦикла;
Иначе
Предупреждение("Не смогли открыть базу!!!",2);
КонецЕсли;
ФайлНоменклатура.ЗакрытьФайл();
КонецПроцедуры"
Сейчас текст такой:
Процедура ЗаполнениеСправочника()
ФайлНоменклатура = Новый XBase;
ФайлНоменклатура.Кодировка = КодировкаXBase.OEM;
ФайлНоменклатура.ОткрытьФайл("D:\My documents\Мои документы\SPNM.DBF");
Если ФайлНоменклатура.Открыта() тогда
Предупреждение("База Открыта",2);
ФайлНоменклатура.Первая();
счетчик = 1;
Пока Не ФайлНоменклатура.ВКонце() Цикл
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
Номенклатура.НаименованиеТовара = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMNAME"));
Номенклатура.ПолноеНаименование = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMPRN1"));
Номенклатура.НаименованиеДляПечати = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMPRN2"));
Номенклатура.БазоваяЕдиница = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMED"));
Номенклатура.Страна = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMST"));
Номенклатура.НомерГТД = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMGTD"));
Номенклатура.КоличествоЕдиницы = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMUPAK"));
Номенклатура.ВесЕдиницы = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMVES"));
Номенклатура.ЗакупочнаяЦена = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMSEB"));
Номенклатура.РозничнаяЦенаМин = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMMIN"));
Номенклатура.РозничнаяЦенаМакс = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMMAX"));
Номенклатура.Валюта = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMUE"));
Номенклатура.ЦенаДляСотрудника = СокрЛП(ФайлНоменклатура.ПолучитьЗначениеПоля("SPNMCENA1"));
Номенклатура.ВидНоменклатуры = "Товар";
Номенклатура.ЕдиницаХраненияОстатков = Номенклатура.БазоваяЕдиница;
Номенклатура.ЕдиницаДляОтчетов = Номенклатура.БазоваяЕдиница;
Номенклатура.НДС = "18%";
Если Номенклатура.Валюта = 1 тогда
Номенклатура.Категории = "Импортный";
КонецЕсли;
Номенклатура.Артикул = счетчик;
Номенклатура.Записать();
ФайлНоменклатура.Следующая();
счетчик = счетчик + 1;
КонецЦикла;
Иначе
Предупреждение("Не смогли открыть базу!!!",2);
КонецЕсли;
ФайлНоменклатура.ЗакрытьФайл();
КонецПроцедуры"
Не начисляются налоги по заработной платеПечать формы 0504403 Ведомость в кассу. (ЗиК бюджетного учреждения, редакция 1.0 (1.0.9.1)
Читают тему
(гостей: 1)