|
v7: не выгружается в ДБФ реквизит справочника из торговли 7.7 | ☑ | ||
---|---|---|---|---|
0
leonid0407
15.04.15
✎
11:21
|
Делаю обработку по выгрузке контрагентов из торговли 7 7в ДБФ файл почему то не выгружаются значения некоторых реквизитов в частности ИНН, в отладчике отслеживается присвоение значения полю в дбф а после транзакции пусто(
|
|||
1
Андрей_Андреич
naïve
15.04.15
✎
11:24
|
(0) Там связка через физлица и юрлица
|
|||
2
leonid0407
15.04.15
✎
11:25
|
ИННКПП =СокрЛП(Строка(ТекКонт.ЮрФизЛицо.ИНН)) вот так а потом ДБФ.Inn = ИННКПП;
|
|||
3
leonid0407
15.04.15
✎
11:26
|
такой же конструкции ДБФ.PolnName = Строка(ТекКонт.ЮрФизЛицо.ПолнНаименование); присваивает значение
|
|||
4
povar
15.04.15
✎
11:28
|
"Строка" убери, для начала
|
|||
5
leonid0407
15.04.15
✎
11:30
|
строку добавил после того как увидел что простое присваивание значения не срабатывает
|
|||
6
leonid0407
15.04.15
✎
11:31
|
без строки тож не заполняет поле
|
|||
7
serpentt
15.04.15
✎
11:33
|
(2) ДБФ.Inn тип какой ? может числовой?
|
|||
8
Андрей_Андреич
naïve
15.04.15
✎
11:33
|
(6) тип?
|
|||
9
leonid0407
15.04.15
✎
11:34
|
нее строковый и по длине так же как и в ТиС ДБФ.ДобавитьПоле("Inn", 2,20,);
|
|||
10
povar
15.04.15
✎
11:35
|
покажи код
|
|||
11
serpentt
15.04.15
✎
11:39
|
(9) может это натолкнет на мысль
ИмяФайлаАдресов = КаталогИБ()+"address.dbf"; Текст = СоздатьОбъект("XBase"); Текст.ДобавитьПоле("Address","S",255,0); Текст.ДобавитьПоле("RAddress","S",255,0); Текст.СоздатьФайл(ИмяФайлаАдресов); |
|||
12
leonid0407
15.04.15
✎
11:41
|
а как код вставить?
|
|||
13
serpentt
15.04.15
✎
11:41
|
ТИП я указываю "C" "D" "N"
у тебя тагого не заметил |
|||
14
serpentt
15.04.15
✎
11:41
|
Копи - ПАСТ
|
|||
15
leonid0407
15.04.15
✎
11:42
|
Пока Запрос.Группировка(1) = 1 Цикл
ТекКонт = Запрос.Контрагенты; Если ПомУд = 0 Тогда Если ТекКонт.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; КонецЕсли; СчетчикЦикла = СчетчикЦикла + 1; Если ТекКонт.ЭтоГруппа() = 1 Тогда КонтрагентКод = СокрЛП(ТекКонт.Код); РодитКод = ""; Если ТекКонт.Уровень() > 0 Тогда РодитКод = СокрЛП(ТекКонт.Родитель.Код); КонецЕсли; ДБФ.Добавить(); ДБФ.Group = 1; ДБФ.Kod = КонтрагентКод; ДБФ.Name = Строка(ТекКонт.Наименование); ДБФ.Rod_kod = РодитКод; ДБФ.Rod_name = Строка(ТекКонт.Родитель.Наименование); ДБФ.Записать(); Состояние("Выгружаем группу: "+ТекКонт); Иначе Если ТекКонт.ЮрФизЛицо.Вид() = "СвоиЮрЛица" Тогда Продолжить; КонецЕсли; КонтрагентКод = ТекКонт.Код; РодитКод = ТекКонт.Родитель.Код; ИННКПП =СокрЛП(Строка(ТекКонт.ЮрФизЛицо.ИНН)); ДБФ.Добавить(); ДБФ.Group = 0; ДБФ.Kod = КонтрагентКод; ДБФ.Name = Строка(ТекКонт.Наименование); ДБФ.PolnName = Строка(ТекКонт.ЮрФизЛицо.ПолнНаименование); ДБФ.Rod_kod = РодитКод; ДБФ.Rod_name = Строка(ТекКонт.Родитель.Наименование); ДБФ.Inn = ИННКПП; ДБФ.AdresUr = ТекКонт.ЮрФизЛицо.ЮрАдрес; ДБФ.AdresFk = ТекКонт.ЮрФизЛицо.ФактАдрес; ДБФ.Tel = ТекКонт.ЮрФизЛицо.Телефоны; Если ТекКонт.ЮрФизЛицо.Вид() = "ЮрЛица" Тогда ДБФ.Vid = "ЮрЛицо"; ДБФ.OKPO = ТекКонт.ЮрФизЛицо.ОКПО; ИначеЕсли ТекКонт.ЮрФизЛицо.Вид() = "ФизЛица" Тогда ДБФ.Vid = "ФизЛицо"; ДБФ.Dokum = ТекКонт.ЮрФизЛицо.ДокументУдЛичность; Иначе Сообщить("Не указан вид контрагента: "+ТекКонт.Наименование); КонецЕсли; ДБФ.Записать(); |
|||
16
leonid0407
15.04.15
✎
11:44
|
тип можно и циферками указывать 2 - строка
|
|||
17
serpentt
15.04.15
✎
11:44
|
покажи код создание полей ДБФ
|
|||
18
leonid0407
15.04.15
✎
11:45
|
Полное наименование тож по ссылке ЮРфизлица берется а оно в отличии от инн попадает в дбф-ку
|
|||
19
leonid0407
15.04.15
✎
11:46
|
НачатьТранзакцию();
ДБФ = Создатьобъект("XBase"); ДБФ.ДобавитьПоле("Group", 1,1,); ДБФ.ДобавитьПоле("Kod", 2,8,); ДБФ.ДобавитьПоле("Name", 2,100,); ДБФ.ДобавитьПоле("PolnName", 2,100,); ДБФ.ДобавитьПоле("Rod_kod", 2,8,); ДБФ.ДобавитьПоле("Rod_name", 2,100,); ДБФ.ДобавитьПоле("Vid", 2,50,); ДБФ.ДобавитьПоле("DogKod", 2,8,); ДБФ.ДобавитьПоле("Dog", 2,50,); ДБФ.ДобавитьПоле("DogValKod", 2,3,); ДБФ.ДобавитьПоле("DogVal", 2,20,); ДБФ.ДобавитьПоле("DogUm", 2,8,); ДБФ.ДобавитьПоле("SchetKod", 2,8,); ДБФ.ДобавитьПоле("Schet", 2,50,); ДБФ.ДобавитьПоле("BankKod", 2,9,); ДБФ.ДобавитьПоле("Bank", 2,60,); ДБФ.ДобавитьПоле("SchetUm", 2,8,); ДБФ.ДобавитьПоле("SchetBank", 2,20,); ДБФ.ДобавитьПоле("MestoBank", 2,50,); ДБФ.ДобавитьПоле("AdresBank", 2,300,); ДБФ.ДобавитьПоле("TelBank", 2,30,); ДБФ.ДобавитьПоле("NomSchet", 2,20,); ДБФ.ДобавитьПоле("Naznach", 2,300,); ДБФ.ДобавитьПоле("ScValKod", 2,3,); ДБФ.ДобавитьПоле("SchetVal", 2,20,); ДБФ.ДобавитьПоле("Inn", 2,20,); ДБФ.ДобавитьПоле("AdresUr", 2,300,); ДБФ.ДобавитьПоле("AdresFk", 2,300,); ДБФ.ДобавитьПоле("Tel", 2,50,); ДБФ.ДобавитьПоле("Dokum", 2,300,); ДБФ.ДобавитьПоле("OKPO", 2,13,); ДБФ.СоздатьФайл(ВыгФайл); ДБФ.Записать(); ВыбратьКонтрагентов(ДБФ); ЗафиксироватьТранзакцию(); |
|||
20
Масянька
15.04.15
✎
11:49
|
А в справочнике Контрагенты есть реквизит ИНН?
|
|||
21
serpentt
15.04.15
✎
11:50
|
(20) НЕТ
|
|||
22
serpentt
15.04.15
✎
11:51
|
а случайно "/" слеш в ИНН не мешает?
|
|||
23
leonid0407
15.04.15
✎
11:51
|
до самого окончания процедуры в отладчике следил за знчаением ДБФ.Inn было заполнено
|
|||
24
leonid0407
15.04.15
✎
11:52
|
да вроде не должен мешать значение строковое
|
|||
25
leonid0407
15.04.15
✎
11:53
|
я и его в коде "острочил" еще раз
|
|||
26
Злопчинский
15.04.15
✎
11:53
|
Инн у юрика или физика не заполнено и все
|
|||
27
leonid0407
15.04.15
✎
11:54
|
неее заполнено а не переносится вот насчет слэша попробую убрать а потом при загрузке подставить
|
|||
28
Злопчинский
15.04.15
✎
11:55
|
(27) брэд
Не должен слеш мешать |
|||
29
Андрей_Андреич
naïve
15.04.15
✎
11:57
|
(25) Может 1С тупо видит что число, хоть и строка, и приводит к числу.
Бред, конечно, но попробуй ДБФ.Inn = "Ы"+ИНН; Все равно умные мысли кончились :) |
|||
30
Масянька
15.04.15
✎
11:59
|
(29) Я бы еще (на всякий пожарный) добавила:
ДБФ.Inn = "Ы"+ИНН+"Ы" |
|||
31
serpentt
15.04.15
✎
12:02
|
Вот такой код работает
Процедура Сформировать() ИмяФайлаАдресов = КаталогИБ()+"address.dbf"; ТаблDBF = СоздатьОбъект("XBase"); ТаблDBF.ДобавитьПоле("Address","S",255,0); ТаблDBF.ДобавитьПоле("RAddress","S",255,0); ТаблDBF.СоздатьФайл(ИмяФайлаАдресов); ТаблDBF.КодоваяСтраница(1); спрК = СоздатьОбъект("Справочник.Контрагенты"); спрК.ВыбратьЭлементы(); Нашли=0; Пока (спрК.ПолучитьЭлемент() = 1) и (Нашли=0) Цикл Если спрК.ЭтоГруппа()=0 Тогда Сообщить(спрК.ЮрФизЛицо.инн); ТаблDBF.Добавить(); ТаблDBF.Address = спрК.ЮрФизЛицо.инн; ТаблDBF.Записать(); Нашли=1; КонецЕсли; КонецЦикла; КонецПроцедуры Если тип поменять с "S" на "N" значение обрезается до слеша |
|||
32
leonid0407
15.04.15
✎
12:05
|
щас попробую и с Ы и поле увеличить)
|
|||
33
serpentt
15.04.15
✎
12:05
|
(28) Слеш мешает если поле числовое
|
|||
34
serpentt
15.04.15
✎
12:06
|
(32) "Ы" никак не поможет
попробуй тип указать не цифрами а символом "S" |
|||
35
leonid0407
15.04.15
✎
12:08
|
да Ы не помогло щас тип укажу S
|
|||
36
serpentt
15.04.15
✎
12:11
|
Попробуй мою процедуру из (31)
она точно работает :) |
|||
37
serpentt
15.04.15
✎
12:13
|
или попробуй всем установить фиксированное значение
ДБФ.Inn = "1111111111111111111" |
|||
38
leonid0407
15.04.15
✎
12:14
|
слешь даже в справочнике убрал не выгружается щас проверю 1111111111111
|
|||
39
Злопчинский
15.04.15
✎
12:16
|
Может пора по тиму подключиться и посмотреть покая ддобрый?
|
|||
40
leonid0407
15.04.15
✎
12:16
|
ничего не понимаю что ему надо в коде уже указал напрямую "111111111"
|
|||
41
leonid0407
15.04.15
✎
12:17
|
ммм давай
|
|||
42
Злопчинский
15.04.15
✎
12:18
|
Ну да
Для начала неплохо бы в качестве теста прогнать 31 |
|||
43
Злопчинский
15.04.15
✎
12:18
|
прогоняй (31) и сообщай результат
Также при этом проверить Что в итоге смотришь именно тот файл который формировался А не другой какойнибудь |
|||
44
leonid0407
15.04.15
✎
12:24
|
прогнал все нормуль номер присваивается((( - значит у меня косяк какойто в коде
|
|||
45
Злопчинский
15.04.15
✎
12:28
|
(44) ктобы сомневался
|
|||
46
dangerouscoder
15.04.15
✎
12:29
|
(44) Скорре всего в ДНК косяк...
Сделай сначала заполнение Таблицы значений на форме потом из нее загружай в файл.. всегда так легче сделать отладку.. |
|||
47
Масянька
15.04.15
✎
12:32
|
ДБФ.Inn=СокрЛП(Строка(ТекКонт.ЮрФизЛицо.ИНН)); - а так?
|
|||
48
leonid0407
15.04.15
✎
12:37
|
вобщем получилось не знаю почему просто при объявлении полей дбф инн присваивание сделал сразу после полногонаименование - сработало - бред конечно но сработало
|
|||
49
leonid0407
15.04.15
✎
12:38
|
а так в списке полей инн стоял почти самой последней
|
|||
50
leonid0407
15.04.15
✎
12:41
|
может для объекта Xbase есть ограничение на количество полей в таблице?
|
|||
51
dangerouscoder
15.04.15
✎
12:47
|
(50) а что выбрал дбф а не xml?
|
|||
52
serpentt
15.04.15
✎
12:49
|
(48) Вобщем помог ШАМАНСКИЙ танец с бубнами.
|
|||
53
leonid0407
15.04.15
✎
12:50
|
хмл долго обрабатывается
|
|||
54
serpentt
15.04.15
✎
12:53
|
(53) для xml есть неплохая компанента "OpenXML"
|
|||
55
Злопчинский
15.04.15
✎
13:34
|
(51) потому что дбф обрабатывается на порядки быстрее
|
|||
56
Злопчинский
15.04.15
✎
13:36
|
(54) ромиксовская что ли?
Там есть чисто мелкие неудобные бяки |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |