AXForum  
Вернуться   AXForum > Рынок > Сравнение ERP-систем
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.05.2006, 15:14   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,160 / 1289 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Recoilme
Можно ли добавить запись средствами СУБД без доработок?
Теоретически можно все, но себе дороже, так как придется учесть кучу всяких зависимых данных. Так что на несколько порядков проще и правильнее вызывать 1С по COM соединению и управлять им.
Цитата:
Сообщение от Гений 1С
Значит верно ли я думаю, что в аксапте получаем некий курсор из таблицы Sales_Talbe, где содерждатся заказы по контрагенту, затем получаем одним запросом все строчки, принадлежащие этим таблицам или, наоборот, перебираем по одному заказу и получаем для него все строчки, ну и далее изменяем цену.
Ну и соответственно после завершения вызов метода update у выборки строк.
Пока я правильно иду?
Зависит от задачи и взаимосвязей в системе. Можнешь делать любым перечисленным способом, включая обновление какого-либо поля совокупности записей одной командой. А конкретно твой пример некорректен ,ведь мало изменить цены, нужно пересчитать некоторые связанные данные.
Старый 06.05.2006, 15:25   #2  
Гений 1С is offline
Гений 1С
Участник
Аватар для Гений 1С
 
263 / -11 (0) +
Регистрация: 05.05.2006
Адрес: Москва
Talking
Цитата:
А конкретно твой пример некорректен ,ведь мало изменить цены, нужно пересчитать некоторые связанные данные.
Это уже специфика, да и об этом позже, пока интересует физика.

Цитата:
Зависит от задачи и взаимосвязей в системе. Можнешь делать любым перечисленным способом, включая обновление какого-либо поля совокупности записей одной командой.
Что значит "обновление какого-либо поля совокупности записей одной командой", т.е. если у меня есть 10 записей, я могу сказать что-то типа умножить у каждой записи поле цена на 1.1?

Или ты имеешь ввиду, что я могу записать одной командой сразу 10 записей?

Но в общем понятно. А теперь вопрос:

1. Могу ли я сделать штатно (или написать класс), которому передаю id записи из Sales_Table, она считывает все связанные строки из всех табличных частей в один объект в памяти, чтобы можно было в памяти его исправить и сделать обратную запись? (аналог документа в 80)

2. Хранятся ли в базе данных некие метаданные, где описывается, что таблица Sales_Line ссылается на Sales_Table в отношении M:1 (думаю такая информация может храниться в описании ключа таблицы Sales_Line). Кроме этого, можно ли получить из Sales_Line отдельные списки: табличных частей и таблиц, в которых генерятся некоторые записи в различных табличках (ну так выразился один из участников или движения по 1С). Эти таблицы тоже соотносятся с Sales_Table в отношении 1:М, но имеют другое назначение. Может ли программа на Axapte узнать, какая из связанных таблиц является табличной частью, а какая - движениями или еще чем-то?
Старый 06.05.2006, 15:49   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Гений 1С
1. Могу ли я сделать штатно (или написать класс), которому передаю id записи из Sales_Table, она считывает все связанные строки из всех табличных частей в один объект в памяти, чтобы можно было в памяти его исправить и сделать обратную запись? (аналог документа в 80)
Если действовать в рамках как принято в Аксапте - то это делается через транзакции. Т.е. открывается транзакция, далее идет цикл по курсору с обновлением (вызовом update()), затем транзакци закрывается. Очевидно - что пишется либо все либо ничего.
Далее - по хорошему - этот код оформляется в класс, которому дается указание создаться на сервере. Соотв этот код отрабатывает на сервере.
Т.е. в память как в 1С ничего не грузится. Хотя в принципе - возможно (и нужно с помощью специальных механизмов) при массовой вставке данных действовать через память

Цитата:
Сообщение от Гений 1С
2. Хранятся ли в базе данных некие метаданные, где описывается, что таблица Sales_Line ссылается на Sales_Table в отношении M:1 (думаю такая информация может храниться в описании ключа таблицы Sales_Line). Кроме этого, можно ли получить из Sales_Line отдельные списки: табличных частей и таблиц, в которых генерятся некоторые записи в различных табличках (ну так выразился один из участников или движения по 1С). Эти таблицы тоже соотносятся с Sales_Table в отношении 1:М, но имеют другое назначение. Может ли программа на Axapte узнать, какая из связанных таблиц является табличной частью, а какая - движениями или еще чем-то?
У таблицы (это же объект) есть такие понятия как Relations (отношения) - которые делают намеки на это. Эти же понятия присутствуют и в расширенном типе данных. Он тоже может показывать информацию
Чтобы узнать про таблицы в которых хранятся проводки обычно действуют так (если не знают как они называются):
Вариант 1: Открываем форму в которой отображаются данные из этих таблиц. Из формы можно достучаться до таблицы.
Вариант 2: Идентифицируем по названию (ну как SalesTable - заказы)
Вариант 3: Строим перекрестные ссылки. Они показывают - что где и в каком виде используется в коде, связях и пр.
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 06.05.2006 в 15:52.
Старый 06.05.2006, 15:57   #4  
Гений 1С is offline
Гений 1С
Участник
Аватар для Гений 1С
 
263 / -11 (0) +
Регистрация: 05.05.2006
Адрес: Москва
Talking
Цитата:
Если действовать в рамках как принято в Аксапте - то это делается через транзакции. Т.е. открывается транзакция, далее идет цикл по курсору с обновлением (вызовом update()), затем транзакци закрывается. Очевидно - что пишется либо все либо ничего.
Далее - по хорошему - этот код оформляется в класс, которому дается указание создаться на сервере. Соотв этот код отрабатывает на сервере.
Т.е. в память как в 1С ничего не грузится. Хотя в принципе - возможно (и нужно с помощью специальных механизмов) при массовой вставке данных действовать через память
Окей, в 1С происходит именно так, как я сказал - т.е. через объект в памяти, в который считываются все строки из всех табличных частей. Напрямую строки менять нельзя. Т.е. можно сказать что 1С проще, Аксапта гибче.
Вот здесь методическая разница видна. Окей, вопрос прояснен.

Цитата:
У таблицы (это же объект) есть такие понятия как Relations (отношения) - которые делают намеки на это. Эти же понятия присутствуют и в расширенном типе данных. Он тоже может показывать информацию
Чтобы узнать про таблицы в которых хранятся проводки обычно действуют так (если не знают как они называются):
Вариант 1: Открываем форму в которой отображаются данные из этих таблиц. Из формы можно достучаться до таблицы.
Вариант 2: Идентифицируем по названию (ну как SalesTable - заказы)
Вариант 3: Строим перекрестные ссылки. Они показывают - что где и в каком виде используется в коде, связях и пр
А вот для этого в 1С есть метаданные, которые описывают назначение таблиц и для выяснения who is who обращаются к метаданным без всяких анализов.

Вообще выяснять что означает таблица через форму - ИМХО явное извращение, возможно только в системах, где формы годами не меняются.

По крайней мере в этом вопросе в 1С лучше. Хотя казалось бы, почему бы Аксапте не помечать типы таблиц в некой служебной таблице, как она это делает с именами таблиц? Ну видимо, т.к. у Аксапты стабильное ядро (в отличие от 1С, где таблицы могут быть разными), программист в коде может сам указать что значит какая таблица, ориентируясь на заранее известные имена. Но в этом вобщем говоря, недоделка Аксапты, хотя наверное аксаптерам она не сильно жить мешает.

Последний раз редактировалось Гений 1С; 06.05.2006 в 16:01.
Старый 06.05.2006, 16:08   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Гений 1С
А вот для этого в 1С есть метаданные, которые описывают назначение таблиц и для выяснения who is who обращаются к метаданным без всяких анализов.
Вообще выяснять что означает таблица через форму - ИМХО явное извращение, возможно только в системах, где формы годами не меняются.
По крайней мере в этом вопросе в 1С лучше. Хотя казалось бы, почему бы Аксапте не помечать типы таблиц в некой служебной таблице, как она это делает с именами таблиц? Ну видимо, т.к. у Аксапты стабильное ядро (в отличие от 1С, где таблицы могут быть разными), программист в коде может сам указать что значит какая таблица, ориентируясь на заранее известные имена. Но в этом вобщем говоря, недоделка Аксапты, хотя наверное аксаптерам она не сильно жить мешает.
описанные варианты - лишь предполагают как будет действовать программист (не система). А тут Вы правы - система предполагает - что названия таблиц меняться не будут. Тут нельзя забывать про то, что чем крупнее бизнес, тем более стандартны механизмы учета в нем. В связи с этим чем более крупных клиентов обслуживает та или иная система - тем меньше она (система) предполагает разработок. Отсюда и все последствия. Т.е. нельзя это назвать недоделкой. Это как вопрос - можно ли авто с правым рулем считать недоделкой? Дело привычки. Зато смотря на БД без Аксапты - хорошо понимаешь ее структуру
__________________
Возможно сделать все. Вопрос времени
Старый 06.05.2006, 16:11   #6  
Гений 1С is offline
Гений 1С
Участник
Аватар для Гений 1С
 
263 / -11 (0) +
Регистрация: 05.05.2006
Адрес: Москва
Talking
Цитата:
Сообщение от sukhanchik
описанные варианты - лишь предполагают как будет действовать программист (не система). А тут Вы правы - система предполагает - что названия таблиц меняться не будут. Тут нельзя забывать про то, что чем крупнее бизнес, тем более стандартны механизмы учета в нем. В связи с этим чем более крупных клиентов обслуживает та или иная система - тем меньше она (система) предполагает разработок. Отсюда и все последствия. Т.е. нельзя это назвать недоделкой. Это как вопрос - можно ли авто с правым рулем считать недоделкой? Дело привычки. Зато смотря на БД без Аксапты - хорошо понимаешь ее структуру
Вот видите, мы потихоньку продвигаемся, исходя из возможных способов построения СУБД и даже не зная Аксапты. А вы не верили!
Старый 06.05.2006, 16:28   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Гений 1С
Вот видите, мы потихоньку продвигаемся, исходя из возможных способов построения СУБД и даже не зная Аксапты. А вы не верили!
Продвигаемся - потому что сегодня у меня день такой... не будет времени отвечать - и не продвинемся

По статусам:
Цитата:
Сообщение от Гений 1С
Если не затруднит, еще вопрос по статусам.
У документа в 1С есть такие статусы:
Проведен-Не проведен.
Помечен на удаление.
Помеченный на удаление не может быть проведенным, но может быть снят с удаления.
Проведенный может быть снят с проведения и наоборот.
Движения могут быть только у проведенного документа.
Проведенный документ можно еще раз провести - при этом в одной транзакции он сначала снимается с проведения, потом проводится.

Как с этим в аксапте?
В Аксе изначально отсутствует понятие распроведения. Разнести можно только один раз. Корректировка только с помощью сторно (и то не везде).
Удалять очевидно также нельзя (если были проводки). Поэтому из вышеприведенного перечня остается только понятие проведен-не проведен.
А это сильно зависит от места (я уже говорил - нет понятия документа).
Например у заказа 4 статуса. У накладной на услуги - 2. У ПКО/РКО - 3.

Более того - отсутствие распроведения - позволяет Аксе оставлять "аудиторский след", что в случае сертификации для выхода на IPO весьма нелишне. Напоминаю - что АКса - это изначально европейская система (Дания)
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 06.05.2006 в 16:31.
Старый 10.05.2006, 19:56   #8  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от Гений 1С
Окей, в 1С происходит именно так, как я сказал - т.е. через объект в памяти, в который считываются все строки из всех табличных частей. Напрямую строки менять нельзя. Т.е. можно сказать что 1С проще, Аксапта гибче.
Вот здесь методическая разница видна. Окей, вопрос прояснен.

Да вот как раз и не прояснен!
Что значит "объект в памяти, в который считываются все строки из всех табличных частей" это и есть то что в аксе называется "табличная переменная" или экземпляр объекта-таблица и в Аксе напрямую никто ничего не меняет, а исключительно в "памяти" т.е. в "табличной переменной" и только после запуска специального метода update() этого объекта, происходит физическая запись изменений собственно в таблицу.
ИМХО эти механизмы, по крайней мере внешне, одинаковы и в 1с и в Аксе.
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 10.05.2006, 20:54   #9  
Гений 1С is offline
Гений 1С
Участник
Аватар для Гений 1С
 
263 / -11 (0) +
Регистрация: 05.05.2006
Адрес: Москва
Цитата:
Сообщение от blokva
Что значит "объект в памяти, в который считываются все строки из всех табличных частей" это и есть то что в аксе называется "табличная переменная" или экземпляр объекта-таблица и в Аксе напрямую никто ничего не меняет, а исключительно в "памяти" т.е. в "табличной переменной" и только после запуска специального метода update() этого объекта, происходит физическая запись изменений собственно в таблицу.
ИМХО эти механизмы, по крайней мере внешне, одинаковы и в 1с и в Аксе.
Это понятно, вопрос был глубже - можно ли завести как вы называете табличную переменную, содержащую одновременно строку из текущей таблицы и все связанные строки из нескольких других таблиц и метод update в таком случае в одной транзакции обновит как строку таблицы, так и связанные строки.

Так работает метод Записать() документа в 1С.
Причем связанные строки загружаются в объект сами по метаданным. Не говорю, плохо это или хорошо. Так работает в 1С.
Старый 11.05.2006, 14:53   #10  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от Гений 1С
Это понятно, вопрос был глубже - можно ли завести как вы называете табличную переменную, содержащую одновременно строку из текущей таблицы и все связанные строки из нескольких других таблиц и метод update в таком случае в одной транзакции обновит как строку таблицы, так и связанные строки.

Так работает метод Записать() документа в 1С.
Причем связанные строки загружаются в объект сами по метаданным. Не говорю, плохо это или хорошо. Так работает в 1С.
Нет так нельзя, т.к. таблица - это не наследуемый класс в аксе, поэтому нельзя создать класс наследник из нескольких таблиц и соответственно его экземпляр!
НО!
Если таблицы связаны логикой, то метод update() на главной таблице может включать в себя запуск таких же методов на связанных таблицах, что в принципе полностью соответствует приведенной схеме в 1с, если резюмировать, то это не жесткое правило и формируется исходя из требований бизнес-лгики.
Если в 1с этот механизм реализован на уровне ядра, то в аксе нет, тогда Вы правы по поводу "проще" и "гибче"
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Теги
сравнение систем, 1c

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Давайте сравним 1С CRM и MS Dynamics CRM Сабитов Андрей Сравнение ERP-систем 6 13.10.2008 03:34
1с и аксапта Funkyr Сравнение ERP-систем 67 26.05.2008 23:16
Изменения ассортимента, цен, условий поставки и сопровождения ряда продуктов «1С:Предприятия 7.7» mazzy Другие системы на рынке 40 30.04.2008 23:31
Обсуждение документа "Сравнение 1С и AX" Кузнецов Александр Сравнение ERP-систем 44 20.02.2008 13:56
Платформа «1С:Предприятие» как средство разработки бизнес-приложений Morpheus Другие системы на рынке 1 26.12.2006 13:10

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

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

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