Имя: Пароль:
1C
 
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)Спросить реквизиты в источнике? Как то эта таблица туда пришла? Почему не пришли нужные данные справочников?