|
COM-соединение, как туда "закинуть" таблицу значений | ☑ | ||
---|---|---|---|---|
0
Web00001
22.11.16
✎
07:33
|
Доброго времени суток! Есть вот такой код:
1C] Запрос = Новый Запрос("Здесь неинтересный текст запроса"); Коннект = ПолучитьКоннектКБазе();//КоннектКБазе = cntr.Connect("Srvr=""server"";Ref=""base"";Usr=""admin""; Pwd=""12345"""); Док = Коннект.Документы.КорректировкаЗаписейРегистров.СоздатьДокумент(); Док.Дата = ТекущаяДата(); Док.Записать(); Док.Движения.Продажи.Загрузить(Запрос.Выполнить().Выгрузить()); Док.Движения.Продажи.Записать(); Но так не работает. Говорит "Несоответствие типов (параметр номер '1')" к строке где происходит загрузить. Я так понимаю, что Док на той стороне не может знать про таблицу значений на этой. Как бы это сделать малой кровью? |
|||
1
Mauser
22.11.16
✎
07:36
|
||||
2
DCKiller
22.11.16
✎
07:40
|
(0) Правильно ругается. У тебя поди и запрос берет данные из текущей базы? А ты их во внешнюю базу 1С передать пытаешься.
|
|||
3
Web00001
22.11.16
✎
07:44
|
(2)Не то, что бы я возражал... просто городить огород до раскладываня в цикле построчно таблицы значений до примитивных типов не очень хочется, вот я и спрашиваю, может есть варианты?
|
|||
4
DCKiller
22.11.16
✎
07:49
|
(3) Скажи мне, как ты представляешь себе, что данные из одной базы 1с будут у тебя в другой базе 1с, не имеющей к первой никакого отношения?
|
|||
5
KishMish
22.11.16
✎
07:50
|
(0) попробцуй значение встроку внутр в КОМЕ. Строку получить сздесь и значение из строки внутр тут
|
|||
6
Web00001
22.11.16
✎
07:52
|
(4)Очень просто. Что именно тебя смущает?
(5)Действительно, как то не подумал сразу. |
|||
7
catena
22.11.16
✎
07:53
|
(5)Сработает для примитивных типов и для ссылочных объектов, синхронизированных по гуиду.
|
|||
8
ajax_new
22.11.16
✎
07:54
|
(5) на большой таблице не взлетит. Использовали ЗначениеВФайл. Потом файлик передавали в другую базу. Но таблица была с примитивными типами
|
|||
9
Web00001
22.11.16
✎
07:55
|
(8)А какая может быть проблема если таблица большая?
|
|||
10
DCKiller
22.11.16
✎
07:57
|
(6) >> Очень просто. Что именно тебя смущает?
https://price-altai.ru/uploads/2013/12/01230815f38b3b.jpg Ты хотя бы понимаешь, что ссылочные объекты твоей базы - это ссылочные объекты только твоей базы, и более никакой? Или у тебя в ТЧ документа реквизиты только примитивных типов? |
|||
11
Web00001
22.11.16
✎
08:01
|
Я понимаю, что такое ссылочный тип. Представь себе. И что тут нет никакой магии и в другой базе я могу сделать точно такой же объект. Я повторю вопрос: Что тебя смущает? Если ты не в курсе то бывают всякие там РИБ. Где базы то вроде разные а объекты одинаковые.
|
|||
12
ajax_new
22.11.16
✎
08:02
|
(9) падало с ошибкой. Сейчас уже не вспомню с какой, но обошли именно передачей через файл
|
|||
13
Провинциальный 1сник
22.11.16
✎
08:04
|
(12) Это уж насколько БОЛЬШАЯ таблица должна быть? Передавал таким образом десяток тысяч строк без проблем.
|
|||
14
Mauser
22.11.16
✎
08:04
|
(11) Так у тебя значит именно этот случай? РИБ и одинаковые ссылки?
|
|||
15
ajax_new
22.11.16
✎
08:09
|
(12) 30 колонок ~60000 строк
|
|||
16
Web00001
22.11.16
✎
08:09
|
(14)Нет. Риб для примера. Проблема с одинаковыми ссылками на моей совести. В смысле тут понятно, что надо делать.
|
|||
17
catena
22.11.16
✎
08:12
|
(14)Первое, что в голову приходит - восстановление документа из бэкапа :)
|
|||
18
DCKiller
22.11.16
✎
08:15
|
(11) Если у тебя документ COM-объект, то и результат запроса, который ты выгружаешь в ТЗ, тоже должен быть COM-объектом.
|
|||
19
Web00001
22.11.16
✎
08:20
|
(18)Серьезно? Сходи почитай (3), что ли...
|
|||
20
Провинциальный 1сник
22.11.16
✎
09:51
|
(15) Ну тогда через файл.. какая в принципе разница?
|
|||
21
xaozai
22.11.16
✎
09:58
|
Тут.ЗначениеВСтрокуВнутр, Там.ЗначениеИзСтрокиВнутр. Про ссылочные типы уже писали...
|
|||
22
Web00001
27.11.16
✎
06:44
|
(12)Наверно вот с этой ошибкой падало:
Ошибка преобразования по причине: bad allocation |
|||
23
Провинциальный 1сник
27.11.16
✎
08:22
|
Главное что этот финт с сериализацией агрегатного объекта во "внутр" работает.. удивительно что 1с это не отломало специально. Они любят такие заподлянки устраивать. Ну ничего, ждем в одном из будущих релизов.
|
|||
24
Web00001
27.11.16
✎
11:27
|
(23)Там так то, нечего ломать, простой достаточно формат.
|
|||
25
SleepyHead
гуру
27.11.16
✎
12:29
|
(0) Конвертация данных 2.1 для этого и придумана.
|
|||
26
Web00001
27.11.16
✎
17:30
|
(25)Отличная штука я тебе скажу. Но вот это Конвертация Couldn't find end of Start Tag С SystemId: я так и не смог победить. Там и другие были ошибки. Если включать/выключать разные объекты. Поэтому частично используются ручные переносы. Если знаешь как победить, буду благодарен, но уже в качестве закладки на будущее. Здесь уже вручную написано наполовину.
|
|||
27
SleepyHead
гуру
28.11.16
✎
05:12
|
(26) У меня почему-то работают все правила, которые делал сам. Что я делаю не так?
|
|||
28
SleepyHead
гуру
28.11.16
✎
06:46
|
(26) Посмотрел твою ссылку. Ну что я могу сказать, если вы не любите кошек - вы просто не умеете их готовить.
В КД есть свои тонкости, если тупо делать правила помощниками - ничего удивительного, что не получается. Тренироваться же надо. |
|||
29
Web00001
01.12.16
✎
08:55
|
(28)Перетащить номенклатуру между почти идентичными конфигурация много ума не надо. Помощник тоже не особо нужен. Я же говорю, дело дошло вплоть до того, что уехали в другую базу только примитивные типы и перечисления. Загрузить номенклатуру не удалось все равно. И ладно я неправ и где то затупил(хотя затупить там негде, одно ПВД, несколько ПКО и ПКС по вкусу) или может быть где то кривая номенклатура. Как я должен догадаться? Ошибка очень информативная, скажу я вам. Но это все ерунда и не имеет значения. По той причине, что нет возможности решить эту проблем самостоятельно и подсказать по ней мне никто не смог. Поэтому пришлось использовать альтернативные способы. Варианты попроще(типы цен, организации, контрагенты, дисконтные карты итд) переехали быстро и просто.
|
|||
30
Web00001
01.12.16
✎
08:56
|
(28)В тебя кинуть правилами, что бы ты с высоты своего опыта показал где я ошибся?
|
|||
31
Zhuravlik
01.12.16
✎
09:53
|
(26) Большие объемы данных можно переносить по частям, а не одним куском. Соотв. замерить количество связанных элементов, написать выгрузку отдельно для номенклатуры, отдельно для единиц измерения, отдельно для прочих связанных ссылочных реквизитов.
|
|||
32
h-sp
01.12.16
✎
09:55
|
(29) перечисления тоже нельзя
|
|||
33
Web00001
01.12.16
✎
11:23
|
(32)Мама не разрешает?
|
|||
34
Web00001
01.12.16
✎
11:26
|
(31)Так и было см(29) в какой то момент уехала только номенклатура. Можно было продолжить заниматься онанизмом и начать думать как делить на части планы обмена или еще какие то варианты. Но это новый виток и тут я уже плюнул.
|
|||
35
h-sp
01.12.16
✎
11:29
|
(33) не передастся перечисление ни под каким видом. Хоть головой о стенку бейся.
|
|||
36
DrShad
01.12.16
✎
11:30
|
в общем так, если есть совпадение ссылок и нет битых, то не нужно никакого подключения к другой БД - достаточно одного СериализаторXDTO, через него получаешь XML строку и из нее же на другой стороне читаешь объект - ВСЕ
|
|||
37
Web00001
01.12.16
✎
11:31
|
(35) в (32) речь идет про конвертацию значений. Перечисления с ее помощью ездят замечательно.
|
|||
38
Web00001
01.12.16
✎
11:33
|
(36) Конфигурации похожи, но не идентичны. Где то различаются состав реквизитов, где то типы, где то надо немного дополнить созданный объект.
|
|||
39
DrShad
01.12.16
✎
11:34
|
(38) ну так с этого и нужно было начинать
откуда у тебя уверенность что ТЗ содержит именно те колонки которые нужны набору? |
|||
40
Web00001
01.12.16
✎
11:35
|
(39)Запрос построен таким образом.
|
|||
41
DrShad
01.12.16
✎
11:35
|
+(39) у тебя может и получилась ТЗ на другой стороне, но состав не тот
|
|||
42
DrShad
01.12.16
✎
11:36
|
ТЗ тоже можно через сериализатор выкинуть в XML и на другой стороне передав строку из нее восстановить ТЗ
|
|||
43
DrShad
01.12.16
✎
11:36
|
если уж ссылки реально совпадают
|
|||
44
Web00001
01.12.16
✎
11:37
|
(39)Что значит не тот состав?
|
|||
45
DrShad
01.12.16
✎
11:39
|
(44) пока что забей
таблицу значений передал на другую сторону? |
|||
46
Web00001
01.12.16
✎
11:39
|
(44) к (41)
(42)Можно, а можно и ЗначениеВФайл как помог в (8) добрый человек. В целом вроде взлетело. Таблица большая, сложно проверить, что все норм переехало. |
|||
47
DrShad
01.12.16
✎
11:41
|
(46) ну сериализатор бы сразу сказал если что не так
|
|||
48
Zhuravlik
01.12.16
✎
11:42
|
(34) Планы обмена на части делить не надо. Планы обмена - это для регламентных обменов "Порциями". А вот разовый (первый) перенос можно разделить на куски и выполнить обмен вручную, я это имел в виду. Не каждый же день по 600к объектов передается.
|
|||
49
h-sp
01.12.16
✎
11:45
|
(47) это всё сработает, если все элементы уже есть в базе. А если например новая номенклатура или контрагент. Тогда надо всё равно идти циклом по ТЗ, выискивая слово "Объект не найден" и создавать новые элементы. То, что КД делает автоматически.
|
|||
50
Вафель
01.12.16
✎
11:45
|
проще в бэкапе создать док и потом его перенести с помощью выгрузки-загрузки
|
|||
51
DrShad
01.12.16
✎
11:49
|
(49) ну слово выискивать не надо, люди уже давно дошли до того что битую ссылку можно найти запросом и проверить через значение реквизитов, которые в таком случае будут NULL
да и конвертация автоматом ничего не делает, а только по правилам и если у тебя для какого-то элемента по ссылке не будет ПКО и ПВД, то хоть застрелись, а КД автоматом ничего не сделает |
|||
52
DrZombi
гуру
01.12.16
✎
11:51
|
(0) Точно так же, как вы работаете с запросами через "Ком"
|
|||
53
Web00001
01.12.16
✎
11:53
|
(47)Да уже написано все, самый большой справочник в ручном режиме за несколько часов переехал. Остальные частично на автомате. Сейчас все уже ездит самостоятельно. Остались мелочи.
(50)В каком месте это проще? (52)Спасибо тебе добрый человек. Проблема решена уже. |
|||
54
h-sp
01.12.16
✎
11:59
|
(51) ну написал ты запрос к этой огромной тз, нашел битые ссылки, дальше, что будешь делать? Как создать новый элемент справочника? Если нет ни наименования, ни кода, и реквизитов тоже нет?
|
|||
55
Web00001
01.12.16
✎
12:08
|
(54)Спросить реквизиты в источнике? Как то эта таблица туда пришла? Почему не пришли нужные данные справочников?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |