Имя: Пароль:
1C
1С v8
Создание документа в другой базе
0 Gobo
 
30.06.13
17:26
Доброе время суток !

Существует 2 базы:
1) База Производства (БП)
2) База Бухгалтерии (ББ)

В БП в документе по кнопке "СчетФактура" необходимо подключиться к ББ и там создать документ "СчетФактура".
Я в семерке подобную задачу с помощью OLE решал.
Как это лучше реализовать ?
1 kosts
 
30.06.13
17:26
(0) см. com-соединение
2 Gobo
 
30.06.13
17:59
Для Управляемого Приложения доступно COM соединение ?
СП не нашел: COMObject
3 Gobo
 
30.06.13
18:03
Наверное - COMОбъект.
4 Gobo
 
30.06.13
18:05
{Документ...Форма.ФормаДокумента.Форма(279)}: Ошибка при вызове конструктора (COMОбъект)
V8 = Новый COMОбъект ("V8.COMConnector");
по причине:
Недопустимая строка с указанием класса
5 hhhh
 
30.06.13
18:14
не 8, а 82. Или 83.
6 ДенисЧ
 
30.06.13
18:15
НаСервере делай
7 Gobo
 
05.07.13
22:09
Спасибо (5), (6)
Теперь возник другой вопрос.
На своей базе ссылка на этот через COM созданный документ как сохранить ?
Чтобы потом можно было найти переписать.
8 Пеппи
 
05.07.13
22:13
(7) по номеру документа и дате наверное или хочешь именно ссылку в реквизите сохранять? тогда уид.
9 Gobo
 
05.07.13
22:26
Есть риск что в той базе вручную поменяют номер или дату.
GUID или UUID ?
10 Gobo
 
06.07.13
08:13
Не понял как мне сохранить УникальныйИдентификатор другой базы.
Сделал так:
Создал в своей базы в документе реквизит - ДокБух с типом УникальныйИдентификатор.
Потом делаю следующее:
V8 = Новый COMОбъект ("V82.COMConnector");
СтрСоед="File=""D:\1C82\Typic_2.0.8.17""; Usr =""Бухгалтер"";";
База82 = V8.Connect (СтрСоед);
НовыйДокумент = База82.Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Записать();
ГУИД=ЗначениеВСтрокуВнутр(НовыйДокумент.Ссылка.УникальныйИдентификатор());
Объект.ДокБух=ГУИД;

Но ДокБух все равно равен пустому идентификатору вида 00000000-0000-0000-0000-000000000000

Почему ?
11 hhhh
 
06.07.13
11:28
Объект.Записать()
12 George Wheels
 
06.07.13
13:08
Сначала записать документ, потом получать идентификатор.
13 Gobo
 
06.07.13
13:40
(12) - Записать документ который в другой базе ?
Тогда так и сделано.
А попытка записать документ в текущей базе не получается.
У меня процедура находится в модуле формы:
V8 = Новый COMОбъект ("V82.COMConnector");
СтрСоед="File=""D:\1C82\Typic_2.0.8.17""; Usr =""Бухгалтер"";";
База82 = V8.Connect (СтрСоед);
НовыйДокумент = База82.Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Записать();
ГУИД=ЗначениеВСтрокуВнутр(НовыйДокумент.Ссылка.УникальныйИдентификатор());
Сообщить("ГУИД="+ГУИД);
Объект.ДокБух=ГУИД;
Объект.Записать();

Результат:
ГУИД={"#",2319dcf1-f4ee-438d-b16f-6a145d6b9422}
Метод объекта не обнаружен (Записать)
14 Cyberhawk
 
06.07.13
13:42
Запиши на сервере
15 Gobo
 
06.07.13
13:46
Это имелось введу ?

&НаСервере
Процедура СоздCOMдок()
16 Cyberhawk
 
06.07.13
14:09
А на какую строку он ругается?
17 Cyberhawk
 
06.07.13
14:09
На "НовыйДокумент.Записать();" или на "Объект.Записать();"?
18 Defender aka LINN
 
06.07.13
14:50
(13) За "Объект.Записать();" в модуле формы - пойди и сам прострели себе коленку
19 Gobo
 
06.07.13
16:07
(18) Ваша рекомендация ?
20 Gobo
 
06.07.13
16:08
Тут была рекомендация записать Объект (11)
21 Gobo
 
06.07.13
16:17
Метод Записать думаю тут не по теме.
Меня интересует больше этот вопрос.
ГУИД=ЗначениеВСтрокуВнутр(НовыйДокумент.Ссылка.УникальныйИдентификатор());
Сообщить("ГУИД="+ГУИД);
НовыйGUID = Новый УникальныйИдентификатор(ГУИД);
ДокТМЗ=База82.Документы.СчетФактураВыданный.ПолучитьСсылку(НовыйGUID);

Пишет:
ГУИД={"#",2319dcf1-f4ee-438d-b16f-6a145d6b9422}

{Документ.МойДок.Форма.ФормаДокумента.Форма(371)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
   НовыйGUID = Новый УникальныйИдентификатор(ГУИД);
по причине:
Недопустимое значение параметра (параметр номер '1')
22 Gobo
 
06.07.13
16:34
И всегда возвращает одинаковое значение
ГУИД=ЗначениеВСтрокуВнутр(НовыйДокумент.Ссылка.УникальныйИдентификатор());

Хотя создан через COM другой документ.
23 mikeA
 
06.07.13
17:25
(21) ГУИД=Строка(НовыйДокумент.Ссылка.УникальныйИдентификатор());
24 Gobo
 
06.07.13
18:21
Сообщить показывает
ГУИД=COMОбъект
25 kosts
 
06.07.13
19:02
Через COM можно протащить гуид в строковом формате.
26 Gobo
 
07.07.13
06:49
Вот так правильно ?
ГУИД=База82.String(НовыйДокумент.Ссылка.УникальныйИдентификатор());
27 Defender aka LINN
 
07.07.13
08:54
(19) ЭтаФорма.Записать(), очевидно же
28 Gobo
 
07.07.13
21:26
(27) , на клиенте написал:
Записать();

А я ранее пытался делать на сервере.
На счет (26), правильно ?
29 mikeA
 
07.07.13
21:47
(28) если новый документ в базе 82, так правильно
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан