• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Взять объект на редактирование

Автор dosart, 25.06.20, 09:27:46

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dosart

Здравствуйте.
Подскажите, пожалуйста, как используя API взять объект на редактирование в Лоцман?

Slaviation

Добрый день.
Пример на Python

# -*- coding: utf-8 -*-
#~ https://forum.ascon.ru/index.php?topic=34754.0
#~ Для справки см. ASCON\Loodsman\SDK\AppServer\ЛОЦМАН API.chm (далее справка)

import pythoncom
from win32com.client import Dispatch, gencache

#~ Имя базы данных, идентификатор объекта, его тип, ключевой атрибут, версия, список режимов для метода "GetInfoAboutVersion" (см. справку)
db_name, id_object, obj_type, obj_product, obj_version, mode_list = "DemoMash", 1012, "Сборочная единица", "АГ52.289.047", "1", (2, 3, 7, 8, 9, 10, 11, 12, 13, 15, 16, 19, 20, 22, 23)

data_provider_module = gencache.EnsureModule("{76AA08AD-DEDA-40CB-962B-24440A3E96AD}", 0, 1, 0)
loodsman_connection = data_provider_module.ILoodsmanConnection(Dispatch("{044259A0-FEAE-4B55-B6FE-E9B024FCCD4B}")._oleobj_.QueryInterface(data_provider_module.ILoodsmanConnection.CLSID, pythoncom.IID_IDispatch))
simple_api = loodsman_connection.API8.GetSimpleAPI()
simple_api.RunMethod("ConnectToDB", (db_name,))

#~ Взятие объекта на редактирование
id_checkout = simple_api.RunMethod("CheckOut", ("", "", "", 0))
simple_api.RunMethod("ConnectToCheckOut", (id_checkout, db_name))
simple_api.RunMethod("AddToCheckOut", (str(id_object), True))

#~ Информация об объекте, вызов метода "GetInfoAboutVersion" по всему списку режимов (см. справку)
for mode in mode_list:
    print("mode", mode)
    data_set = simple_api.GetDataSet("GetInfoAboutVersion", (obj_type, obj_product, obj_version, 0, mode))

    for field_index in range(data_set.FieldCount):
        field_name = data_set.FieldName(field_index)
        print(field_name,  data_set.FieldValue(field_name))
    print("\n")
   
#~ Отмена взятия объекта на редактирование
#~ simple_api.RunMethod("CancelCheckOut", (id_checkout, db_name))


dosart

Я всё тоже самое делаю. Только  у меня ошибка странная - "System Error.  Code: 1009.База данных реестра повреждена"