Версия для печати темы (https://pro1c.org.ua/index.php?s=e59eb06610b455f948de5def1f6b2fc4&showtopic=62953)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Проблема с перебросом данных через объект ComConnector (1с 8.3.1690)

Автор: andrew76 17.11.20, 16:39

Добрый вечер !

Имеется 2-sql базы.Соединение между базами идет через объект ComConnector.
Соединение происходит нормально.Только при попытке записать данные из табличной части
документа Командировочные из одной базы в другую (в аналогичный Документ Командировочные),
выскакивает ошибка.При просмотре отладчиком выясняется следующее: (таблица источникsmile.gif
ТабличнаяЧасть1 - Значение COMObject
Add - метод не найден.
Count - метод не найден и так далее...
Столбцов ТЧ тоже не видно в отладчике.
Реквизиты же шапки документа читаются нормально.

В чем может быть проблема ?

Автор: andrew76 18.11.20, 17:02

andrew76 @ Вчера, 19:39 * ,

В общем у всех документов с ТЧ при попытке чтения данных из этих ТЧ вываливается
следующая ошибка :
Произошла исключительная ситуация (1C:Enterprise 8.3.13.1690): Объект недоступен для изменения.
Реквизиты шапки документов читаются.

Где искать ? Что гонит ? Сервер (Windows Server 2012 Standard x 64) ? Сам компонент COMConnector ?




Автор: Vofka 18.11.20, 17:07

Есть мнение, что пример вашего кода может ускорить ответ.

Автор: andrew76 18.11.20, 17:13

Vofka @ Сегодня, 20:07 * ,

Выложил пока скриншоты.Код завтра выложу.

Автор: Vofka 18.11.20, 18:12

Вы пробуете именно метод Add() выполнить? А если Добавить()?

Автор: andrew76 18.11.20, 18:20

Vofka @ Сегодня, 21:12 * ,

На методе Добавить и вылетает ошибка:
Произошла исключительная ситуация (1C:Enterprise 8.3.13.1690): Объект недоступен для изменения.

Автор: Vofka 18.11.20, 19:23

Телепатиру, что ИскомыйДокумент у вас - это ссылка. А манипулировать надо объектом:

ИскомыйДокументОбъект = ИскомыйДокумент.ПолучитьОбъект();
Строка = ИскомыйДокументОбъект.ТабличнаяЧасть1.Добавить();

Автор: andrew76 19.11.20, 16:40

Vofka @ Вчера, 22:23 * ,
ПолучитьОбъект() - насколько я понимаю,просто открывает объект для записи.
Но в отладчике я же не вижу столбцов ТЧ (скриншот 2).Поэтому и открывать для записи нечего.
Ничего не понимаю.

andrew76 @ Сегодня, 19:12 * ,

ИскомыйДокументОбъект = ИскомыйДокумент.ПолучитьОбъект();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.13.1690): Ошибка инициализации модуля: Документ.Командировочные.МодульОбъекта


Предыстория событий :
Одна бухгалтерша,«замриялась», и находясь в этом режиме, удалила документ Командировочные, в ТЧ которого было 400 записей.
После ,выйдя из нирваны, начались вопли и вопросы есть ли в 1с подобие
Корзины для удаленных объектов, как в MS Windows.
Моя задача была в следующем : найти этот документ в архивной базе,и оттуда
Перенести содержимое этого документа в рабочую базу.


Коннектор=Новый COMОбъект("V83.ComConnector");  

ИмяСервера="server";
ИмяБазы="buhg";
Логин="Администратор";
Пасворд="0101";


Попытка
    v8=Коннектор.Connect("Srvr="""+СокрЛП(ИмяСервера)+""";Ref="""+СокрЛП(ИмяБазы)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
    сообщить("Соединение установлено !");
Исключение
    Предупреждение("База данных не открыта!!!");
    Возврат;
КонецПопытки;

ссылка_источник=Неопределено;

  Запрос = Новый Запрос;
  Запрос.Текст =
        "ВЫБРАТЬ
        |   Ссылка
        |ИЗ
        |   Документ.Командировочные КАК Командировочные
        |ГДЕ
        |   Дата МЕЖДУ &НачДата И &КонДата И
        |   Номер = &ВыбНомер";

    Запрос.УстановитьПараметр("НачДата", '20201001');
    Запрос.УстановитьПараметр("КонДата", '20201031');
    Запрос.УстановитьПараметр("ВыбНомер", "октяб");

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДокументов = РезультатЗапроса.Выбрать();

    Если ВыборкаДокументов.Следующий() Тогда
         ссылка_источник=ВыборкаДокументов.Ссылка;
         Сообщить(ВыборкаДокументов.Ссылка);        
    Иначе
         Сообщить("Документ с таким номером не существует!");
    КонецЕсли;



ВыборкаДокументов = v8.Документы.Командировочные.Выбрать(НачалоГода(ТекущаяДата()), КонецГода(ТекущаяДата()));
Пока ВыборкаДокументов.Следующий() Цикл
    
     Если СокрЛП(ВыборкаДокументов.Номер)="окт1" тогда
          ИскомыйДокумент=ВыборкаДокументов;         
     КонецЕсли;
      
КонецЦикла;


ИскомыйДокументОбъект = ИскомыйДокумент.ПолучитьОбъект();  //вот здесь и начинает гнать
Строка = ИскомыйДокументОбъект.ТабличнаяЧасть1.Добавить()

Автор: mut 19.11.20, 17:45

В архивной базе, в модуле внешнего соединения, можно прописать функцию, которая сделает нужную выборку и вернет структуру с данными, такую процедуру вы можете вызвать через коннектор и получить эти данные. Я так обычно делаю smile.gif

Автор: sava1 19.11.20, 18:15

Цитата(andrew76 @ 19.11.20, 16:40) *
Моя задача была в следующем : найти этот документ в архивной базе,и оттуда
Перенести содержимое этого документа в рабочую базу.


А нафига огород городить?
В архиве Выгрузить - в рабочей - Загрузить

Автор: Petre 19.11.20, 20:49

QUOTE (andrew76 @ 19.11.20, 16:40) *
ИскомыйДокумент=ВыборкаДокументов;

"Што?" (с)
ИскомыйДокумент = ВыборкаДокументов.Ссылка;

Автор: andrew76 20.11.20, 3:46

Цитата(sava1 @ 19.11.20, 21:15) *
В архиве Выгрузить - в рабочей - Загрузить

ради одного документа ?

Автор: sava1 20.11.20, 8:25

Цитата(andrew76 @ 20.11.20, 3:46) *
ради одного документа ?


т.е. написать целую обработку - это фигня, а взять готовую "ради одного документа" - это ОФИГЕТЬ ?

Автор: Vofka 20.11.20, 10:19

Цитата(sava1 @ 20.11.20, 8:25) *
т.е. написать целую обработку - это фигня, а взять готовую "ради одного документа" - это ОФИГЕТЬ ?

Я бы вообще его распечатал и дал тёте, что бы ввела его руками. 32542460.gif

Автор: andrew76 20.11.20, 16:18

Цитата(Vofka @ 20.11.20, 13:19) *
т.е. написать целую обработку - это фигня, а взять готовую "ради одного документа" - это ОФИГЕТЬ ?


В этом уникальном случае,мне лучше было написать коротенькую обработку,потому что с момента
удаления документа прошло несколько дней (женшена хватилась не сразу),другие же бухгалтера
тоже с базой работали.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua