|
![]() |
#1 |
Участник
|
Хотя и не совсем по теме, но отвечу.
Цитата:
Сообщение от Recoilme
Не верю (c)
Есть справочник клиентов. Филиал 1 добавляет клиента с кодом 1 Филиал 2 добавляет клиента с кодом 1 Как разрешена будет эта простейшая коллизия в 1с-репликаторе? ... |
|
![]() |
#2 |
злыдень
|
Цитата:
Сообщение от Raven Melancholic
Хотя и не совсем по теме, но отвечу.
Коллизии с кодами там разруливаются с помощью так называемых "префиков" (получается вроде того, что в аксе для каждой отдельной базы свои номерные серии). А решение это входит в базовый функционал и все достаточно автоматизировано. Ещё маленький вопрос. Можно ли добавить запись средствами СУБД без доработок? Т.е. филиал 1 добавил запись: "Филиал1КодКлиента" - запись В субд запись всталяется например внешним приложением 1С её видит автоматом Или как в аксапте записи должны всенепременно добавляться средствами приложения для обеспечения "неких целостностей"?
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
![]() |
#3 |
Участник
|
![]() Цитата:
Сообщение от Recoilme
Спасибо за ответ. Это гуд.
Ещё маленький вопрос. Можно ли добавить запись средствами СУБД без доработок? Т.е. филиал 1 добавил запись: "Филиал1КодКлиента" - запись В субд запись всталяется например внешним приложением 1С её видит автоматом Или как в аксапте записи должны всенепременно добавляться средствами приложения для обеспечения "неких целостностей"? Если не пользователь, а обработка добавит, тоже увидит автоматом. Если же напрямую запишите в SQL (есть и такие спецы), то не увидится автоматом, потому что есть таблицы, где хранится список измененных объектов. Но это способ для извращенцев. УРБД вообще работает как часы и нормально отыгрывает ситуации, когда потерян пакет обмена и т.п. |
|
![]() |
#4 |
сибиряк
|
Цитата:
Сообщение от Гений 1С
УРБД вообще работает как часы и нормально отыгрывает ситуации, когда потерян пакет обмена и т.п.
__________________
С уважением, Вячеслав. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от slava
Часы тоже останавливаются иногда. Бывают сбои и у УРБД. За полгода активной работы 1С УРБД в связке с Аксаптой (филиальная сеть), было пару случаев "конфликтных" ситуаций.
|
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Recoilme
Можно ли добавить запись средствами СУБД без доработок?
Цитата:
Сообщение от Гений 1С
Значит верно ли я думаю, что в аксапте получаем некий курсор из таблицы Sales_Talbe, где содерждатся заказы по контрагенту, затем получаем одним запросом все строчки, принадлежащие этим таблицам или, наоборот, перебираем по одному заказу и получаем для него все строчки, ну и далее изменяем цену.
Ну и соответственно после завершения вызов метода update у выборки строк. Пока я правильно иду? |
|
![]() |
#7 |
Участник
|
![]() Цитата:
А конкретно твой пример некорректен ,ведь мало изменить цены, нужно пересчитать некоторые связанные данные.
Цитата:
Зависит от задачи и взаимосвязей в системе. Можнешь делать любым перечисленным способом, включая обновление какого-либо поля совокупности записей одной командой.
Или ты имеешь ввиду, что я могу записать одной командой сразу 10 записей? Но в общем понятно. А теперь вопрос: 1. Могу ли я сделать штатно (или написать класс), которому передаю id записи из Sales_Table, она считывает все связанные строки из всех табличных частей в один объект в памяти, чтобы можно было в памяти его исправить и сделать обратную запись? (аналог документа в 80) 2. Хранятся ли в базе данных некие метаданные, где описывается, что таблица Sales_Line ссылается на Sales_Table в отношении M:1 (думаю такая информация может храниться в описании ключа таблицы Sales_Line). Кроме этого, можно ли получить из Sales_Line отдельные списки: табличных частей и таблиц, в которых генерятся некоторые записи в различных табличках (ну так выразился один из участников или движения по 1С). Эти таблицы тоже соотносятся с Sales_Table в отношении 1:М, но имеют другое назначение. Может ли программа на Axapte узнать, какая из связанных таблиц является табличной частью, а какая - движениями или еще чем-то? |
|
![]() |
#8 |
Administrator
|
Цитата:
Сообщение от Гений 1С
1. Могу ли я сделать штатно (или написать класс), которому передаю id записи из Sales_Table, она считывает все связанные строки из всех табличных частей в один объект в памяти, чтобы можно было в памяти его исправить и сделать обратную запись? (аналог документа в 80)
Далее - по хорошему - этот код оформляется в класс, которому дается указание создаться на сервере. Соотв этот код отрабатывает на сервере. Т.е. в память как в 1С ничего не грузится. Хотя в принципе - возможно (и нужно с помощью специальных механизмов) при массовой вставке данных действовать через память Цитата:
Сообщение от Гений 1С
2. Хранятся ли в базе данных некие метаданные, где описывается, что таблица Sales_Line ссылается на Sales_Table в отношении M:1 (думаю такая информация может храниться в описании ключа таблицы Sales_Line). Кроме этого, можно ли получить из Sales_Line отдельные списки: табличных частей и таблиц, в которых генерятся некоторые записи в различных табличках (ну так выразился один из участников или движения по 1С). Эти таблицы тоже соотносятся с Sales_Table в отношении 1:М, но имеют другое назначение. Может ли программа на Axapte узнать, какая из связанных таблиц является табличной частью, а какая - движениями или еще чем-то?
Чтобы узнать про таблицы в которых хранятся проводки обычно действуют так (если не знают как они называются): Вариант 1: Открываем форму в которой отображаются данные из этих таблиц. Из формы можно достучаться до таблицы. Вариант 2: Идентифицируем по названию (ну как SalesTable - заказы) Вариант 3: Строим перекрестные ссылки. Они показывают - что где и в каком виде используется в коде, связях и пр.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 06.05.2006 в 15:52. |
|
![]() |
#9 |
Участник
|
![]() Цитата:
Если действовать в рамках как принято в Аксапте - то это делается через транзакции. Т.е. открывается транзакция, далее идет цикл по курсору с обновлением (вызовом update()), затем транзакци закрывается. Очевидно - что пишется либо все либо ничего.
Далее - по хорошему - этот код оформляется в класс, которому дается указание создаться на сервере. Соотв этот код отрабатывает на сервере. Т.е. в память как в 1С ничего не грузится. Хотя в принципе - возможно (и нужно с помощью специальных механизмов) при массовой вставке данных действовать через память Вот здесь методическая разница видна. Окей, вопрос прояснен. Цитата:
У таблицы (это же объект) есть такие понятия как Relations (отношения) - которые делают намеки на это. Эти же понятия присутствуют и в расширенном типе данных. Он тоже может показывать информацию
Чтобы узнать про таблицы в которых хранятся проводки обычно действуют так (если не знают как они называются): Вариант 1: Открываем форму в которой отображаются данные из этих таблиц. Из формы можно достучаться до таблицы. Вариант 2: Идентифицируем по названию (ну как SalesTable - заказы) Вариант 3: Строим перекрестные ссылки. Они показывают - что где и в каком виде используется в коде, связях и пр Вообще выяснять что означает таблица через форму - ИМХО явное извращение, возможно только в системах, где формы годами не меняются. ![]() По крайней мере в этом вопросе в 1С лучше. Хотя казалось бы, почему бы Аксапте не помечать типы таблиц в некой служебной таблице, как она это делает с именами таблиц? Ну видимо, т.к. у Аксапты стабильное ядро (в отличие от 1С, где таблицы могут быть разными), программист в коде может сам указать что значит какая таблица, ориентируясь на заранее известные имена. Но в этом вобщем говоря, недоделка Аксапты, хотя наверное аксаптерам она не сильно жить мешает. ![]() Последний раз редактировалось Гений 1С; 06.05.2006 в 16:01. |
|
![]() |
#10 |
Administrator
|
Цитата:
Сообщение от Гений 1С
А вот для этого в 1С есть метаданные, которые описывают назначение таблиц и для выяснения who is who обращаются к метаданным без всяких анализов.
Вообще выяснять что означает таблица через форму - ИМХО явное извращение, возможно только в системах, где формы годами не меняются. ![]() По крайней мере в этом вопросе в 1С лучше. Хотя казалось бы, почему бы Аксапте не помечать типы таблиц в некой служебной таблице, как она это делает с именами таблиц? Ну видимо, т.к. у Аксапты стабильное ядро (в отличие от 1С, где таблицы могут быть разными), программист в коде может сам указать что значит какая таблица, ориентируясь на заранее известные имена. Но в этом вобщем говоря, недоделка Аксапты, хотя наверное аксаптерам она не сильно жить мешает. ![]()
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#11 |
Пенсионер
|
Цитата:
Сообщение от Гений 1С
Окей, в 1С происходит именно так, как я сказал - т.е. через объект в памяти, в который считываются все строки из всех табличных частей. Напрямую строки менять нельзя. Т.е. можно сказать что 1С проще, Аксапта гибче.
Вот здесь методическая разница видна. Окей, вопрос прояснен. Что значит "объект в памяти, в который считываются все строки из всех табличных частей" это и есть то что в аксе называется "табличная переменная" или экземпляр объекта-таблица и в Аксе напрямую никто ничего не меняет, а исключительно в "памяти" т.е. в "табличной переменной" и только после запуска специального метода update() этого объекта, происходит физическая запись изменений собственно в таблицу. ИМХО эти механизмы, по крайней мере внешне, одинаковы и в 1с и в Аксе.
__________________
![]() А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
Теги |
сравнение систем, 1c |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|