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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.04.2017, 16:38   #1  
brahma is offline
brahma
Участник
1C
 
278 / 80 (3) ++++
Регистрация: 01.12.2005
Тип называется либо СправочникОбъект.Контрагенты, либо СправочникСсылка.Контрагенты, в зависимости от того, что вы хотите создать. Вообще создавать таким образом ни объект, ни ссылку не стоит. Для создания объекта нужно использовать метод менеджера справочника СоздатьЭлемент(), или СоздатьГруппу(). Типа
catalogObject = comApplication.Справочники.Контрагенты.СоздатьЭлемент();
....
catalogObject.Записать();

И да, лучше использовать ComConnector.
За это сообщение автора поблагодарили: sukhanchik (2).
Старый 27.04.2017, 16:56   #2  
TravellerInTime is offline
TravellerInTime
Участник
Аватар для TravellerInTime
 
130 / 36 (2) +++
Регистрация: 14.07.2003
Адрес: Россия, Тула
Цитата:
Сообщение от brahma Посмотреть сообщение
И да, лучше использовать ComConnector.
С его помощью я могу открыть форму документа, справочника?
Старый 27.04.2017, 17:06   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от TravellerInTime Посмотреть сообщение
С его помощью я могу открыть форму документа, справочника?
С помощь COMConnector можно:
  • Получить данные из БД
  • Получить метаданные конфигурации.
Ряд методов/свойств в COMConnector не работает. Подробнее - см. синтаксис-помощник в 1С.
Также соединение относительно небыстрое. Т.е. для целей получения метаданных или относительно небольшого количества данных - подойдет. Но для целей регулярной интеграции документов с большим количеством строк (или большого кол-ва документов) не подойдет.
Визуальные вещи также не запускаются (т.е. COMConnector не управляет поведением клиента 1С).
__________________
Возможно сделать все. Вопрос времени
Старый 28.04.2017, 07:59   #4  
TravellerInTime is offline
TravellerInTime
Участник
Аватар для TravellerInTime
 
130 / 36 (2) +++
Регистрация: 14.07.2003
Адрес: Россия, Тула
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
С помощь COMConnector можно:
Визуальные вещи также не запускаются (т.е. COMConnector не управляет поведением клиента 1С).
Значит я всё правильно разобрался, что нужен именно Application.
Получение данных из 1С планируется в настоящий момент через web-service. С ним еще не игрался, может тоже возникнет куча вопросов. Кстати, а как по скорости web service 1С?

PS: Странно форум настроен, не могу поставить благодарность, пишет, что нужно 3 дня подождать.
Старый 28.04.2017, 11:51   #5  
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   #6  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
А вот такая строчка кода в Ax не прокатывает, ибо с русскими буквами Ax не дружит.
catalogObject = comApplication.Справочники.Контрагенты.СоздатьЭлемент();
Как обратится к справочнику "Контрагенты" в данном случае?
Мы для таких вещей сделали внешнюю обработку в 1С, которую дергаем из Аксапты, и весь код на русском - внутри обработки. Правда, у нас интеграция с 1С в одну сторону - выгружаем документы из Аксапты. Поэтому формы 1С из Аксапты нам открывать не нужно.
Старый 02.05.2017, 20:51   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 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).
Старый 28.04.2017, 11:22   #8  
TravellerInTime is offline
TravellerInTime
Участник
Аватар для TravellerInTime
 
130 / 36 (2) +++
Регистрация: 14.07.2003
Адрес: Россия, Тула
Продолжаю изучать тему. С методанными вроде разобрался.
А вот такая строчка кода в Ax не прокатывает, ибо с русскими буквами Ax не дружит.
catalogObject = comApplication.Справочники.Контрагенты.СоздатьЭлемент();
Как обратится к справочнику "Контрагенты" в данном случае?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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, время: 22:41.