25.09.2008, 11:49 | #1 |
Участник
|
Нужно сделать выборку из нескольких таблиц (в данном случае из четырех).
В продолжение темы Импорт бинарных данных
Столкнулся еще с одной проблемой при импорте из 1С а AX. Буду благодарен, если кто-нибудь поможет.. Нужно сделать выборку из нескольких таблиц (в данном случае из четырех). Т.е. нужно выбрать все образования для физических лиц из таблицы Справочник.ФизическиеЛица.Образование и для выбранных образований вытащить из таблиц Справочник.ФизическиеЛица, Справочник.УчебныеЗаведения и ФизическиеЛицаОбразование.ВидОбразования код сотрудника, название учебного заведения и вид образования соответственно. Код следующий: X++: Text = "ВЫБРАТЬ " +" ФизическиеЛица.Код КАК Код," +" УчебныеЗаведения.Наименование КАК УчебноеЗаведение," +" ВидыОбразованияФизЛиц.Наименование КАК ВидОбразования," +" ФизическиеЛицаОбразование.Диплом как Диплом, " +" ФизическиеЛицаОбразование.ГодОкончания как ГодОкончания," +" ФизическиеЛицаОбразование.Квалификация как Квалификация" +" ИЗ" +" Справочник.ФизическиеЛица.Образование КАК ФизическиеЛицаОбразование" +" ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица" +" ПО ФизическиеЛицаОбразование.Ссылка = ФизическиеЛица.Ссылка" +" ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УчебныеЗаведения КАК УчебныеЗаведения" +" ПО ФизическиеЛицаОбразование.УчебноеЗаведение = УчебныеЗаведения.Ссылка" +" ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыОбразованияФизЛиц КАК ВидыОбразованияФизЛиц" +" ПО ФизическиеЛицаОбразование.ВидОбразования = ВидыОбразованияФизЛиц.Ссылка" +" ГДЕ" +" ФизическиеЛица.Ссылка <> \"000000001\""; Query.Text(Text); // Выполнение запроса Result = Query.Execute(); Choose = Result.Choose(); // Выборка результата выполнения запроса While (Choose.Next()) { i++; info(strFmt('%1 - %2 - %3', i, Choose.(), Choose.(), Choose.())); } Вылетает, как я понимаю, из-за того, что не у всех строчек таблицы Справочник.ФизическиеЛица.Образование заполнено поле УчебноеЗаведение Пробовал делать так: X++: While (Choose.Next()) { i++; if (Choose.()) info(strFmt('%1 - %2 - %3', i, Choose.(), Choose.(), Choose.())); } Пробовал также делать эту выборку за несколько заходов: 1. Сначала выбирать из таблицы Справочник.ФизическиеЛица.Образование все записи, у которых заполнено поле УчебноеЗаведение (точнее ссылка на таблицу Справочник.УчебныеЗаведения). 2. Потом выбирать все записи, у которых заполнено поле ВидОбразования (ссылка на таблицу Справочник.ВидыОбразованияФизЛиц) 3. Связывать эти 2 выборки по ссылке из этой таблицы (типа аксаптовского RecId), но ссылка опять же имеет бинарный формат, который мне не удается как-либо обработать (преобразовать в текст или сравнить например). В общем опять все уперлось в то, с чего я и начал. Как обработать binary в ax Последний раз редактировалось niktata; 25.09.2008 в 12:24. |
|