06.05.2006, 13:59 | #41 |
Axapta
|
Цитата:
Сообщение от Гений 1С
Если рассматривать 1С не как вещь в себе, а в совокупности:
1С+файл данных или 1С+MS SQL (она может быть в двух режимах), то 1С - самая настоящая СУБД. |
|
06.05.2006, 14:03 | #42 |
Участник
|
Подход к сравнению.
Цитата:
Сообщение от Гений 1С
Флеймите, батенька? Может вернемся к предмету обсуждения?
Очень жаль, что такое благое дело идет хаотично . до начала сравнения необходимо определить: - цель сравнения;(Зачем сравниваем?) - подходы к сравнению;(Что сравниваем?) - методика сравнения;(Как сравниваем?) - результаты сравнения.(В каком виде и какие нам нужны результаты?) Начинать сравнение не ответив на все вопросы просто неконструктивно и является потерей времени. |
|
06.05.2006, 14:25 | #43 |
Участник
|
Цитата:
Это неважно. Код - един.
Цитата:
Просто доношу так, чтобы было понятно даже простым сметртным. Хотя в душе - согласен с Mazzy - в плане бестолковости такого подхода к написанию статьи. Ну да Бог с ним. Меня с этого не убудет
Цитата:
А вот тут уже затрагивается функционал. Это уже не просто разработка. Да, конечно такого рода данные (не хочу называть их документами - это не по аксаптийному) располагаются в двух и более таблицах.
Именуются они по аглицки - переводятся по логическому названию. Например Заказы - есть шапка - SalesTable и строки SalesLine. Но на самом деле в форме заказов торчат 3 таблицы - а не 2. И вот тут уже начинаются затруднения - в том, чтобы объяснять просто, для так сказать новичков. Потому что надо будет в таком случае рассказывать - откуда растут ноги и почему именно так организована структура. И как формируется тот же счет. И что из себя представляет складская аналитика в Аксапте - и почему она торчит 3-й таблицей в заказах. Ибо к примеру разноска (проведение по 1С-овски) делает записи в N таблицах. А есть формы и большим количеством датасорсов. Теперь продолжим далее (вернее начнем с начала, но уже на конкретных данных). Когда заказ делается активным/проведенным? Можно ли это сделать в аксапте SQL-подобным запросом UPDATE Set active=true WHERE Sales_id=..., т.е. привязан ли триггер к таблице SalesTable или же обращение идет через некоторый класс типа Record, т.е.: Record.Get(Sales_Table, Sales_id=...) Record.Active=true Record.Save |
|
06.05.2006, 14:27 | #44 |
Участник
|
Цитата:
Сообщение от MBE
Извините, что вмешиваюсь.
Начинать сравнение не ответив на все вопросы просто неконструктивно и является потерей времени. Моя цель - как программисту представить себе, чем занимаются программисты на Аксапте. Думаю не все разделы статьи буду расписывать. Так назначение и схемы учета меня не особо интересуют, больше интересуют объекты Аксапты - операции, справочники там... |
|
06.05.2006, 14:27 | #45 |
Участник
|
Цитата:
Сообщение от oip
А если рассматривать Аксапту не как вещь в себе, а в совокупности: Аксапта +Виндоуз, то Аксапта - самая настоящая ОС!
Подберите шутку получше. |
|
06.05.2006, 14:28 | #46 |
Участник
|
Цитата:
Сообщение от Гений 1С
Гоните, Аксапта+Виндоус - ОС, Notepad+Виндоус - тоже ОС.
Подберите шутку получше. |
|
06.05.2006, 14:39 | #47 |
Administrator
|
Цитата:
Сообщение от Гений 1С
Когда заказ делается активным/проведенным?
Можно ли это сделать в аксапте SQL-подобным запросом UPDATE Set active=true WHERE Sales_id=..., т.е. привязан ли триггер к таблице SalesTable или же обращение идет через некоторый класс типа Record, т.е.: Да, в X++ есть SQL-подобные конструкции аналогично 1С 8.0 - но это неполноценный SQL (как в 8.0) - а его некоторый кусочек (большей частью SELECT). И это не врезка языка SQL - а именно SQL-подобные конструкции. В тех ссылках которые я приводил - там есть код обновления данных в таблицах. Просто в отличии от 1С - в Аксе есть понятие - табличная переменная - содержащая в себе текущий курсор. У заказа есть ряд статусов (поле статус). Каждое значение статуса - соответствует некоторому состоянию заказа, в котором генерятся некоторые записи в различных табличках. Разнесенный заказ - также имеет свой статус. За разноску отвечает пачка классов, которая все и делает. Разносится заказ по кнопке Разноска Интересно - какая каша сложилась об Аксапте в результате этого флейма
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 06.05.2006 в 14:41. |
|
06.05.2006, 14:39 | #48 |
Гость
|
Сидят аксаптеры пиво пьют, один спрашивает
-А вы знаете как одинэсники аксапту называют? -Нее.. -СУБД.. -Аха-ха-ха-ха!!!! Жжош, кросафчег!!!! |
|
06.05.2006, 14:40 | #49 |
злыдень
|
Цитата:
Сообщение от NJD
Ну там сделано всё как надо - у тебя есть центральные и переферийные базы, ты настраиваешь правила миграции, разрешение конфликтов. Данные переносятся правильно и без глюков. Фичи типа автоматического отправления пакетов с изменениями...
Есть справочник клиентов. Филиал 1 добавляет клиента с кодом 1 Филиал 2 добавляет клиента с кодом 1 Как разрешена будет эта простейшая коллизия в 1с-репликаторе? Репликация остановится и разгребите ручками? Или там заведен некий составной ключ филиал/идентификатор записи? Или разрешатель конфликтов похерит одну из записей по приоритетам? Или? Это стандартный шункционал 1с или партнерское решение? ЗЫ: Праздный интерес, инстрУмента этого не видел..
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
06.05.2006, 14:50 | #50 |
Administrator
|
2Recoilme: Не остановится... Но выдаст ерроры. Наступал на грабли. Называется гребите ручками. Это было в 7.7. Теоретически - если кодом клиента является GUID - то таких коллизий с большой вероятностью может не быть в ближайшем обозримом будущем.
__________________
Возможно сделать все. Вопрос времени |
|
06.05.2006, 14:52 | #51 |
Участник
|
Хотя и не совсем по теме, но отвечу.
Цитата:
Сообщение от Recoilme
Не верю (c)
Есть справочник клиентов. Филиал 1 добавляет клиента с кодом 1 Филиал 2 добавляет клиента с кодом 1 Как разрешена будет эта простейшая коллизия в 1с-репликаторе? ... |
|
06.05.2006, 14:59 | #52 |
злыдень
|
Цитата:
Сообщение от Raven Melancholic
Хотя и не совсем по теме, но отвечу.
Коллизии с кодами там разруливаются с помощью так называемых "префиков" (получается вроде того, что в аксе для каждой отдельной базы свои номерные серии). А решение это входит в базовый функционал и все достаточно автоматизировано. Ещё маленький вопрос. Можно ли добавить запись средствами СУБД без доработок? Т.е. филиал 1 добавил запись: "Филиал1КодКлиента" - запись В субд запись всталяется например внешним приложением 1С её видит автоматом Или как в аксапте записи должны всенепременно добавляться средствами приложения для обеспечения "неких целостностей"?
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
06.05.2006, 15:03 | #53 |
Участник
|
Цитата:
Сообщение от sukhanchik
В Аксапте таблица является объектом - как класс. У таблицы есть свои методы. В т.ч. у таблицы есть методы update, insert, delete, которые обновляют данные. Экземпляр класса=записи в таблице.
Предположим простейшая задача - пишу обработку, которая в заказе увеличит цену на 10%, но только по одному конкретному указанному контрагенту Значит верно ли я думаю, что в аксапте получаем некий курсор из таблицы Sales_Talbe, где содерждатся заказы по контрагенту, затем получаем одним запросом все строчки, принадлежащие этим таблицам или, наоборот, перебираем по одному заказу и получаем для него все строчки, ну и далее изменяем цену. Ну и соответственно после завершения вызов метода update у выборки строк. Пока я правильно иду? |
|
06.05.2006, 15:09 | #54 |
Участник
|
Цитата:
Сообщение от Recoilme
Спасибо за ответ. Это гуд.
Ещё маленький вопрос. Можно ли добавить запись средствами СУБД без доработок? Т.е. филиал 1 добавил запись: "Филиал1КодКлиента" - запись В субд запись всталяется например внешним приложением 1С её видит автоматом Или как в аксапте записи должны всенепременно добавляться средствами приложения для обеспечения "неких целостностей"? Если не пользователь, а обработка добавит, тоже увидит автоматом. Если же напрямую запишите в SQL (есть и такие спецы), то не увидится автоматом, потому что есть таблицы, где хранится список измененных объектов. Но это способ для извращенцев. УРБД вообще работает как часы и нормально отыгрывает ситуации, когда потерян пакет обмена и т.п. |
|
06.05.2006, 15:14 | #55 |
Участник
|
Цитата:
Сообщение от Recoilme
Можно ли добавить запись средствами СУБД без доработок?
Цитата:
Сообщение от Гений 1С
Значит верно ли я думаю, что в аксапте получаем некий курсор из таблицы Sales_Talbe, где содерждатся заказы по контрагенту, затем получаем одним запросом все строчки, принадлежащие этим таблицам или, наоборот, перебираем по одному заказу и получаем для него все строчки, ну и далее изменяем цену.
Ну и соответственно после завершения вызов метода update у выборки строк. Пока я правильно иду? |
|
06.05.2006, 15:21 | #56 |
злыдень
|
Вывод
Репликация в 1С - гуано
1. Просядет по быстродействию поле первого же миллиона записей. 2. Оффлайн по сути. Вот если бы ультратонкий клиент накатывал скрипты непосредственно в СУБД с минимальной задержкой БЕЗ повторной отработки бизнес-логики во всех реплицируемых компаниях... НО с контролем ссылочной целостности.. Справедливости ради надо сказать: 1. наверно вполне подходит небольшим компаниям в режиме а-ля синхронизация по ночам 2. В аксапте и "такой" штатной разработки непредусмотрено. Ждут пока каналы/железо подешевеют наверно.. Не прав?
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
06.05.2006, 15:25 | #57 |
Участник
|
Цитата:
А конкретно твой пример некорректен ,ведь мало изменить цены, нужно пересчитать некоторые связанные данные.
Цитата:
Зависит от задачи и взаимосвязей в системе. Можнешь делать любым перечисленным способом, включая обновление какого-либо поля совокупности записей одной командой.
Или ты имеешь ввиду, что я могу записать одной командой сразу 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:28 | #58 |
Участник
|
Цитата:
Репликация в 1С - гуано
1. Просядет по быстродействию поле первого же миллиона записей. Цитата:
2. Оффлайн по сути.
Цитата:
Вот если бы ультратонкий клиент накатывал скрипты непосредственно в СУБД с минимальной задержкой БЕЗ повторной отработки бизнес-логики во всех реплицируемых компаниях... НО с контролем ссылочной целостности..
Ничто не мешает в 1С 80 отгружать изменения сразу же по мере надобности в отдельный пакет по одному документу и гнать их получателю. |
|
06.05.2006, 15:33 | #59 |
злыдень
|
Бизнес-логика не отрабатывает!!?? Как это реализовано?
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
06.05.2006, 15:38 | #60 |
Administrator
|
Цитата:
Сообщение от Гений 1С
Предположим простейшая задача - пишу обработку, которая в заказе увеличит цену на 10%, но только по одному конкретному указанному контрагенту
Значит верно ли я думаю, что в аксапте получаем некий курсор из таблицы Sales_Talbe, где содерждатся заказы по контрагенту, затем получаем одним запросом все строчки, принадлежащие этим таблицам или, наоборот, перебираем по одному заказу и получаем для него все строчки, ну и далее изменяем цену. Ну и соответственно после завершения вызов метода update у выборки строк. Пока я правильно иду?
__________________
Возможно сделать все. Вопрос времени |
|
Теги |
сравнение систем, 1c |
|
|