|
28.04.2017, 11:51 | #1 |
Участник
|
Цитата:
Есть возможность получение данных через OData, есть возможность делать Rest через http-сервисы. Вроде в последней версии сделали возможность держать сеанс, это позволяет ускорить работу сервисов. Быстро или не быстро зависит от ваших задач. |
|
02.05.2017, 19:30 | #2 |
Участник
|
Цитата:
А вот такая строчка кода в Ax не прокатывает, ибо с русскими буквами Ax не дружит.
catalogObject = comApplication.Справочники.Контрагенты.СоздатьЭлемент(); Как обратится к справочнику "Контрагенты" в данном случае? |
|
02.05.2017, 20:51 | #3 |
Administrator
|
Цитата:
Тут нужно разделить задачи. Задача 1. Обратиться к объекту 1С, как к объекту метаданных (в терминах АХ - обратиться к форме через класс TreeNode). Здесь все работает и получается. Задача 2. Обратиться к объекту 1С как к хранилищу данных и выбрать из него данные. Это решается запросом, пример которого я приводил. Задача 3. Обратиться к объекту 1С, как к хранилищу данных и записать в него данные. Здесь с одной стороны - Вам в помощь синтаксис-помощник, с помощью которого Вы может быть и добьетесь выполнения команды СоздатьЭлемент, но с другой стороны - Вы не сможете в реквизиты с русскими названиями записать данные. И это тоже ограничение COM. (Если я не ошибаюсь - проблем с общими реквизитами может и не возникнуть, но 100% возникнут проблемы с реквизитами, добавленными вручную). Цитата:
Есть вариант решения задачи без программирования на стороне 1С. Сейчас нет 1С под рукой, чтобы точно ткнуть в нужный пункт меню, но по-моему это называется то ли универсальная обработка данных, то ли универсальный импорт данных. В общем - идея основывается на основе идеи, заложенной в конфигурации "Конвертация данных". В 1С существует механизм, который позволяет перекачивать данные между двумя различными конфигурациями. Для этого конфигурация "Конвертация данных" анализирует обе конфигурации и создает правила обмена, которые представляют собой XML-файлик, в котором замэплены все реквизиты всех объектов одной конфигурации на соответствующие реквизиты объектов другой конфигурации. С т.з. 1С - для универсального импорта данных - необходим файл-источник (с данными) и правила обмена.Оба файла представляют собой XML-файлики. Формат файлика правил обмена легко понятен - достаточно один раз на него взглянуть любым XML-редактором. Форма файлика - источника - тоже понятен. Оба файлика можно легко запрограммировать создавать в АХ и единственная проблема, которая встанет в этом случае - это мэппинг реквизитов 1С на поля/методы в АХ. Сейчас этот мэппинг делается вручную (Вы в коде в АХ в явном виде заполняете конкретные реквизиты 1С, либо создаете внешнюю обработку, в которой все равно в коде указываете эти реквизиты). Заодно в файлике можно указывать (для документов) - требуется ли его проведение после создания. Связка между ID в АХ и ID в 1С у Вас будет, т.к. данные все генерит АХ. Собственно, все. Дальше в 1С процедура импорта данных (если мы говорим о выгрузке данных из АХ в 1С) оформляется, как регламентная (аналог пакетника в АХ) и система "хрюкает" безо всяких доработок. Любое обновление конфигурации 1Са потребует соответственно изменений на стороне АХ, но не на стороне 1С. Высший пилотаж - это если Вы в АХ еще и реализуете некий конструктор мэппинга, чтобы и в АХ можно было бы не программировать. Но это уже по сравнению с написанием внешней обработки - на порядок сложнее задача.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 02.05.2017 в 20:56. |
|
|
За это сообщение автора поблагодарили: mazzy (2), TravellerInTime (1), gl00mie (2). |
03.05.2017, 08:29 | #4 |
Участник
|
Всем спасибо!
У меня на настоящий момент не стоит задачи отдать данные из Ax в 1С. Я просто разбираюсь с возможностями Automation-сервера 1С. На вопрос, который я задал и не получил ответа, отвечу сам себе, может кому пригодиться. Чтобы обратится к справочнику по русскому имени, можно использовать класс COMDispFunction. X++: c = application1S.Catalogs(); f = new COMDispFunction(c, 'Контрагенты', COMDispContext::PropertyGet); v = new COMVariant(COMVariantInOut::OUT_RETVAL, COMVariantType::VT_DISPATCH); f.call(v); c = COM::createFromVariant(v); |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), sukhanchik (5), Logger (1). |
03.05.2017, 09:12 | #5 |
Administrator
|
А что это за объект? Ну т.е. какие с ним действия можно сделать? Создать запись?
__________________
Возможно сделать все. Вопрос времени |
|
03.05.2017, 12:00 | #6 |
Участник
|
|
|
03.05.2017, 12:07 | #7 |
Участник
|
|
|
|
|