|   |   | 
| 
 | 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)Спросить реквизиты в источнике? Как то эта таблица туда пришла? Почему не пришли нужные данные справочников?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |