AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.04.2017, 11:51   #1  
brahma is offline
brahma
Участник
1C
 
278 / 80 (3) ++++
Регистрация: 01.12.2005
Цитата:
Сообщение от TravellerInTime Посмотреть сообщение
Значит я всё правильно разобрался, что нужен именно Application.
Для открытия формы нужен Application. Другое дело стоит ли вообще связываться с открытием формы.
Цитата:
Сообщение от TravellerInTime Посмотреть сообщение
Получение данных из 1С планируется в настоящий момент через web-service. С ним еще не игрался, может тоже возникнет куча вопросов. Кстати, а как по скорости web service 1С?
Есть возможность получение данных через OData, есть возможность делать Rest через http-сервисы. Вроде в последней версии сделали возможность держать сеанс, это позволяет ускорить работу сервисов. Быстро или не быстро зависит от ваших задач.
Старый 02.05.2017, 19:30   #2  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
А вот такая строчка кода в Ax не прокатывает, ибо с русскими буквами Ax не дружит.
catalogObject = comApplication.Справочники.Контрагенты.СоздатьЭлемент();
Как обратится к справочнику "Контрагенты" в данном случае?
Мы для таких вещей сделали внешнюю обработку в 1С, которую дергаем из Аксапты, и весь код на русском - внутри обработки. Правда, у нас интеграция с 1С в одну сторону - выгружаем документы из Аксапты. Поэтому формы 1С из Аксапты нам открывать не нужно.
Старый 02.05.2017, 20:51   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,283 / 3491 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от TravellerInTime Посмотреть сообщение
Продолжаю изучать тему. С методанными вроде разобрался.
А вот такая строчка кода в Ax не прокатывает, ибо с русскими буквами Ax не дружит.
catalogObject = comApplication.Справочники.Контрагенты.СоздатьЭлемент();
Как обратится к справочнику "Контрагенты" в данном случае?
Русские буквы нигде не прокатывают - это ограничение COM со стороны Windows.
Тут нужно разделить задачи.
Задача 1. Обратиться к объекту 1С, как к объекту метаданных (в терминах АХ - обратиться к форме через класс TreeNode). Здесь все работает и получается.
Задача 2. Обратиться к объекту 1С как к хранилищу данных и выбрать из него данные. Это решается запросом, пример которого я приводил.
Задача 3. Обратиться к объекту 1С, как к хранилищу данных и записать в него данные. Здесь с одной стороны - Вам в помощь синтаксис-помощник, с помощью которого Вы может быть и добьетесь выполнения команды СоздатьЭлемент, но с другой стороны - Вы не сможете в реквизиты с русскими названиями записать данные. И это тоже ограничение COM. (Если я не ошибаюсь - проблем с общими реквизитами может и не возникнуть, но 100% возникнут проблемы с реквизитами, добавленными вручную).

Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
Мы для таких вещей сделали внешнюю обработку в 1С, которую дергаем из Аксапты, и весь код на русском - внутри обработки. Правда, у нас интеграция с 1С в одну сторону - выгружаем документы из Аксапты. Поэтому формы 1С из Аксапты нам открывать не нужно.
Верно - это один из вариантов решения. Самый простой по реализации, но несущий в себе необходимость программирования на стороне 1С.
Есть вариант решения задачи без программирования на стороне 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  
TravellerInTime is offline
TravellerInTime
Участник
Аватар для TravellerInTime
 
130 / 36 (2) +++
Регистрация: 14.07.2003
Адрес: Россия, Тула
Всем спасибо!
У меня на настоящий момент не стоит задачи отдать данные из 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);
Теперь в "c" искомый справочник.
За это сообщение автора поблагодарили: S.Kuskov (2), sukhanchik (5), Logger (1).
Старый 03.05.2017, 09:12   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,283 / 3491 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от TravellerInTime Посмотреть сообщение
Теперь в "c" искомый справочник.
А что это за объект? Ну т.е. какие с ним действия можно сделать? Создать запись?
__________________
Возможно сделать все. Вопрос времени
Старый 03.05.2017, 12:00   #6  
TravellerInTime is offline
TravellerInTime
Участник
Аватар для TravellerInTime
 
130 / 36 (2) +++
Регистрация: 14.07.2003
Адрес: Россия, Тула
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
А что это за объект?
СправочникМенеджер.
Я не пробовал создавать запись, но, судя по описанию, можно.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance - What information and data to collect when you want to open a support case Blog bot DAX Blogs 0 29.09.2015 15:11
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
axinthefield: Compatibility Testing for Microsoft Dynamics AX Blog bot DAX Blogs 0 23.06.2012 02:26
axforum blogs: Квест: Подружим Dynamics Ax 2009 Sp1 RU7 c SharePoint Foundation 2010 - Этап 2 Blog bot DAX Blogs 0 12.07.2011 14:11
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:37.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.