пример выгрузки/загрузки в 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С форуме!