Имя: Пароль:
1C
1С v8
Загрузка документов через Com
0 msv999
 
19.07.21
05:23
Всем, доброго дня! Подскажите пожалуйста как можно программно загрузить документы из другой баз по Com? Подскажите где у меня не правильно

&НаСервере
Процедура ЗагрузитьДокументыНаСервере()

Соединение = Новый COMОбъект("V83.COMConnector");
ПараметрыДоступа = "File=;Usr=;Pwd="; // тут естественно прописываю параметры к базе
Попытка
    База = Соединение.Connect(ПараметрыДоступа);
Исключение
    Сообщить("Проблемы при подключении: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

Док = Документы.План.СоздатьДокумент();    
Запрос = База.NewObject("Запрос");
Запрос = Новый Запрос;
// Далее идет запрос к документу - это будет правильно или нужно из регистра?


Запрос.УстановитьПараметр("ДатаНачала", ЭтотОбъект.Объект.ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ЭтотОбъект.Объект.ДатаОкончания);
    
    
    Выборка = Запрос.Выполнить().Выбрать();

    
    Пока Выборка.Следующий() Цикл
      
    Док.Дата = Выборка.Дата;
    Док.Организация = Справочники.Организации.НайтиПоНаименованию(Выборка.Организация);
    
    Для каждого стрТаб из Док.Таблица Цикл
    стрТаб.Наименование = Справочники.СтатьиЗатрат.НайтиПоНаименованию(Выборка.Наименование);
    и т.д.
        КонецЦикла;
    Док.Записать();

    КонецЦикла;

Сообщить("Загружено");



КонецПроцедуры
1 ДенисЧ
 
19.07.21
05:36
Странный вопрос... Ты загружаешь что-то из другой базы. По неизвестному нам алгоритму.
И спрашиваешь нас, куда тебе правильней обращаться - к регистру или документу? Тебе видней...
2 Обработка
 
19.07.21
06:18
(0) Если загружаешь документы то обращаешься к документам. А если Перетаскиваешь записи регистрам то к регистрам.
Уточнение если регистр подчинен регистратору то по любому регистратора переносишь или же сам назначаешь на этой стороне.
3 Адинэснег
 
19.07.21
07:07
(0) выкидывай эту тормозную com, не в 2021 её колхозить.
ws, hs
4 msv999
 
19.07.21
07:14
(3) Как тогда загрузить документы? Выгружать в список и потом загружать?
5 msv999
 
19.07.21
07:15
У меня вопрос не то, чтобы к документам или регистрам, это я так. А не загружает, что делаю не так
6 Обработка
 
19.07.21
07:19
(0) Если хоть чуть чуть знаешь КД2 юзай КД2
Если не знаешь КД2 тогда выгрузи в таблицу и загрузи с таблицы.
Ну в конце концов можно в текст или в ексель итп.
И самое главное Отладкой пользоваться умеешь? Если нет о в первую очередь научись элементарным правилам отладки кода. Это не сложно на это уйдет 10-15 минут.
7 ДенисЧ
 
19.07.21
07:30
(5) "не загружает, что делаю не так"
Не раскарываешь тему сисек зачёркнуто ошибок и результатов прохода отладчиком.
8 Chai Nic
 
19.07.21
08:01
Главное, что нужно уяснить: любой объектовый тип через COM это не он, а его COM-отображение, что может принести внезапные сюрпризы. Поэтому при возможности через COM лучше работать исключительно через строковые типы. Та же таблица результата запроса должна содержать только примитивные типы, а передаваться - через сериализацию "там" и десериализацию "тут".
9 Обработка
 
19.07.21
08:20
В запросе Выборка.Организация должно быть строковой а не ссылочной Выборка.Организация.Наименование!!!
10 nodrama
 
19.07.21
09:54
(3) Человек через старый КОМ не может загрузить. А ты ему предлагаешь сделать через ws, которого он скорее всего даже не видел)
11 smpulan
 
19.07.21
09:59
Пример создания документа в базе приемнике с GUID из базы источника.

//Получаем тип в базе приемнике

Сом_Тип = СоединениеCOM.NewObject("ОписаниеТипов", "ДокументСсылка.ТребованиеНакладная").Типы().Получить(0);
//Создаем новый документ в базе приемнике

Требование = СоединениеCOM.Документы.ТребованиеНакладная.СоздатьДокумент();
//Формируем ссылку источника в базе приемнике

СсылкаИсточник = СоединениеCOM.XMLЗначение(Сом_Тип, XMLСтрока(Док.Ссылка));
//Устанавливаем УИД источника для нового документа в базе приемнике

Требование.УстановитьСсылкуНового(СсылкаИсточник);
12 VladZ
 
19.07.21
10:04
(3) +500!