|
v7: Выгрузка в dbf из 1с 77 | ☑ | ||
---|---|---|---|---|
0
den17
05.06.12
✎
09:32
|
При попытке записать значение в колонку "Gr", которая имеет СТРОКОВЫЙ тип, длину 8 символов, вылетает ошибка с кодом 210, "недопустимый номер поля". С чем может быть связана данная ошибка???
|
|||
1
den17
05.06.12
✎
09:32
|
Процедура Выполнить()
ИмяФайла = "tov.dbf"; Каталог = СоздатьОбъект("ФС"); Каталог.СоздатьКаталог("c:\"); ПутьФайла = "c:\"; Файл = СоздатьОбъект("Xbase"); Файл.ОткрытьФайл(ПутьФайла+ИмяФайла); Если Файл.Открыта() = 0 тогда Файл.ДобавитьПоле("Code",1,9,0); Файл.ДобавитьПоле("Name",2,50,0); Файл.ДобавитьПоле("Roditel",2,25,0); Файл.ДобавитьПоле("StatZatrat",2,10,0); Файл.ДобавитьПоле("Articul",2,10,0); Файл.ДобавитьПоле("BazEdIzm",2,10,0); Файл.ДобавитьПоле("Ves",2,25,0); Файл.ДобавитьПоле("VesK",2,25,0); Файл.ДобавитьПоле("PartUchet",2,25,0); Файл.ДобавитьПоле("SerialUchet",2,25,0); Файл.ДобавитьПоле("HaractUchet",2,25,0); Файл.ДобавитьПоле("EdRasch",2,25,0); Файл.ДобавитьПоле("EdOst",2,25,0); Файл.ДобавитьПоле("Komment",2,25,0); Файл.ДобавитьПоле("Nabor",2,25,0); Файл.ДобавитьПоле("PolnNaim",2,50,0); Файл.ДобавитьПоле("Gr",2,8,0); Файл.ДобавитьПоле("NomerGTD",2,25,0); Файл.ДобавитьПоле("OsnIzobr",2,25,0); Файл.ДобавитьПоле("OsnPostav",2,25,0); Файл.ДобавитьПоле("OtvMeneger",2,25,0); Файл.ДобавитьПоле("StavkaNDS",2,25,0); Файл.ДобавитьПоле("StranaProish",2,25,0); Файл.ДобавитьПоле("Usluga",2,50,0); Файл.ДобавитьПоле("NomenGruppaZatrat",2,25,0); Файл.ДобавитьПоле("VidNomenkl",2,25,0); Файл.ДобавитьПоле("VestiSerialN",2,25,0); Файл.ДобавитьПоле("Komplekt",2,25,0); Файл.ДобавитьПоле("CenovGruppa",2,25,0); Файл.ДобавитьПоле("EdIzmMest",2,25,0); Файл.ДобавитьПоле("DopOpisanieN",2,25,0); ////////////////////////////////////////////////////// Файл.ДобавитьПоле("kod1",1,8,0); Файл.ДобавитьПоле("gruppa1",2,50,0); Файл.ДобавитьПоле("kod2",1,8,0); Файл.ДобавитьПоле("gruppa2",2,50,0); Файл.ДобавитьПоле("kod3",1,8,0); Файл.ДобавитьПоле("gruppa3",2,50,0); Файл.ДобавитьПоле("kod4",1,8,0); Файл.ДобавитьПоле("gruppa4",2,50,0); ///////////////////////////////////////////////////// Файл.СоздатьФайл(ПутьФайла+ИмяФайла); иначе Файл.ОчиститьФайл(); КонецЕсли; // Заполнение файла выгрузки Спр = СоздатьОбъект("Справочник.Товары"); Спр.ВыбратьЭлементы(1); Пока Спр.ПолучитьЭлемент() > 0 цикл состояние("Обрабатывается товар " + спр.наименование); Если Спр.ЭтоГруппа() = 0 Тогда Файл.Добавить(); Файл.УстановитьЗначениеПоля("Code",Спр.Код); Файл.УстановитьЗначениеПоля("Name",Спр.Наименование); ///////////////////////////////////////////////////// Файл.УстановитьЗначениеПоля("BazEdIzm","шт"); Файл.УстановитьЗначениеПоля("VidNomenkl","Товар"); Файл.УстановитьЗначениеПоля("Articul",Спр.Артикул); Файл.УстановитьЗначениеПоля("Gr", Спр.Родитель.Наименование); // Определение вида номенклатуры //Файл.УстановитьЗначениеПоля("Type",Спр.апТип.Идентификатор()); //Файл.УстановитьЗначениеПоля("Ed",Спр.асОсновнаяУпаковка.Код); //Файл.УстановитьЗначениеПоля("FullName",Спр.сПолнНаименование); // Определение ставки НДС //Файл.УстановитьЗначениеПоля("StavkaNDS",Спр.чПроцентНдс); //Файл.УстановитьЗначениеПоля("StavkaNP",Спр.чПроцентНП); // Определим группы Если Спр.Родитель.Уровень() = 1 тогда Файл.УстановитьЗначениеПоля("kod1",Спр.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa1",Спр.Родитель.Наименование); КонецЕсли; Если Спр.Родитель.Уровень() = 2 тогда Файл.УстановитьЗначениеПоля("kod2",Спр.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa2",Спр.Родитель.Наименование); Файл.УстановитьЗначениеПоля("kod1",Спр.Родитель.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa1",Спр.Родитель.Родитель.Наименование); КонецЕсли; Если Спр.Родитель.Уровень() = 3 тогда Файл.УстановитьЗначениеПоля("kod3",Спр.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa3",Спр.Родитель.Наименование); Файл.УстановитьЗначениеПоля("kod2",Спр.Родитель.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa2",Спр.Родитель.Родитель.Наименование); Файл.УстановитьЗначениеПоля("kod1",Спр.Родитель.Родитель.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa1",Спр.Родитель.Родитель.Родитель.Наименование); КонецЕсли; Если Спр.Родитель.Уровень() = 4 тогда Файл.УстановитьЗначениеПоля("kod4",Спр.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa4",Спр.Родитель.Наименование); Файл.УстановитьЗначениеПоля("kod3",Спр.Родитель.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa3",Спр.Родитель.Родитель.Наименование); Файл.УстановитьЗначениеПоля("kod2",Спр.Родитель.Родитель.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa2",Спр.Родитель.Родитель.Родитель.Наименование); Файл.УстановитьЗначениеПоля("kod1",Спр.Родитель.Родитель.Родитель.Родитель.Код); Файл.УстановитьЗначениеПоля("gruppa1",Спр.Родитель.Родитель.Родитель.Родитель.Наименование); КонецЕсли; Файл.Записать(); КонецЕсли; КонецЦикла; Сообщить("В файл выгрузки скопировано записей "+ Файл.КоличествоЗаписей()); Файл.ЗакрытьФайл(); КонецПроцедуры |
|||
2
Ёпрст
05.06.12
✎
09:41
|
Спр.Родитель.Наименование - это как правило, строка в 100 символов.
А не как не 8. |
|||
3
Ёпрст
05.06.12
✎
09:42
|
либо СокрЛП, если уверен, либо Лев/Прав 8 , если не уверен
|
|||
4
dk
05.06.12
✎
09:43
|
не помню как с названиями колонок, а на название файла dbf только 8 символов дает
может и на длину в названии полей есть ограничение |
|||
5
den17
05.06.12
✎
09:46
|
Изменил длину на 100 -- не помогает:(
|
|||
6
den17
05.06.12
✎
09:48
|
Другие поля добавляются.. А с этим что не так -- не пойму..
|
|||
7
1Сергей
05.06.12
✎
09:51
|
чукча писатель
|
|||
8
Ork
05.06.12
✎
09:52
|
(0) С чем связано использование :
Файл.УстановитьЗначениеПоля("Code",Спр.Код); вместо Файл.Code = Спр.Код; ??? |
|||
9
ЧеловекДуши
05.06.12
✎
10:56
|
При записи в ДБФ, ты попробуй приводить к типу, типо: Строка(), Число(), Дата().
|
|||
10
ЧеловекДуши
05.06.12
✎
10:57
|
(5)Автор, ДНК, не лечится, приведи значение к правильному типу :)
Кто сказал, что число автоматически трансформируется строку? |
|||
11
111Ivan111
05.06.12
✎
11:14
|
Файл.Кодировка=КодировкаXBase.OEM;
|
|||
12
111Ivan111
05.06.12
✎
11:15
|
Файл = СоздатьОбъект("Xbase");
Файл.Кодировка=КодировкаXBase.OEM; это тоже нужно |
|||
13
111Ivan111
05.06.12
✎
11:19
|
Файл.ДобавитьПоле("kod1",1,8,0);
может нужно Файл.ДобавитьПоле("kod1","N",8,0);? или в семерки по другому?))) |
|||
14
111Ivan111
05.06.12
✎
11:21
|
"Файл.УстановитьЗначениеПоля" работать не будет.
|
|||
15
miki
05.06.12
✎
11:21
|
(6)
>>Другие поля добавляются Не верю! (с) Научи как добавить поле с именем "NomenGruppaZatrat" или хотя бы "VestiSerialN"... |
|||
16
111Ivan111
05.06.12
✎
11:23
|
присваивай как в (8)
|
|||
17
den17
05.06.12
✎
12:05
|
Спасибо вам.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |