|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
FduchunНеобходимо с заданной периодичностью организовать выгрузку данных (справочников и документов) из 1С в SQL-ю базу (не 1С - овскую), которая в свою очередь развернута на MS SQL 2012. Вот в этой SQL-базе, если она на том же сервере, что и файловая, слепи регламентное задание. Или переведи файловую на скуль - надёжнее будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2013, 16:56 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Добрый день ! Всем спасибо за помощь. Решил воспользоваться вашими рекомендациями и организовать обмен между 1С и MSSQL с помощью плана обмена и соответственно выгружать изменения в SQL - ю базу. В связи с этим возникло 2 вопроса: 1. Для обеспечения целостности данных возникла необходимость выгружать не только сами рабочие данные, но и внутренние идентификаторы (UID) объектов 1С. Вопрос в следующем - какой тип данных назначить для UID в SQL - й базе ? Достаточно ли назначить тип данных char(36) (для всех справочников метод УникальныйИдентификатор() выдает идентификатор разрядностью 36 символов) или все-таки это не гарантирует корректность данных и необходимо преобразовывать char в binary(16), т.к. именно в таком формате хранятся все uid-ы в SQL-м варианте 1С-х баз ? 2. Для обеспечения уникальности данных по uid необходимо ли назначать данное поле в качестве ключевого ? С точки зрения производительности лучше всего суррогатные ключи, само собой, но как тогда быть с механизмом обеспечения уникальности uid-ов ? Организовывать проверку с помощью триггеров ? Всем заранее спасибо ! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2013, 17:54 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
>Для обеспечения уникальности данных по uid необходимо ли назначать данное поле в качестве ключевого ? а зачем? сами что-то генерить будете? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2013, 18:08 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Это необходимо для обеспечения ссылочной целостности - я выгружаю информацию в связанные таблицы - грубо говоря, несколько справочников, а также документов, реквизитами которых и являются выгружаемые элементы справочников. Элементы справочников и документов могут быть удалены, а на этапе анализа изменений из плана обмена я могу отслеживать такие объекты только по UID. Кроме того, коды справочников и документов могут также изменяться, соответственно, коды нельзя будет использовать в качестве ключевых полей. По моему мнению, UID - самый идеальный вариант в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2013, 10:22 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Вопрос еще актуален. Неужели никто не сталкивался с подобными вопросами при решении аналогичных задач ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 09:28 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
FduchunВопрос еще актуален. Неужели никто не сталкивался с подобными вопросами при решении аналогичных задач ? Да сталкивались! Только при вашем подходе ожидать что взлетит не стоит. ИМХО: 1. 1C перевести на MS SQL. 2. Разобраться со структурой таблиц 1С ( вот обработка например) и организовать прямой доступ к данным. 3. Действовать в соответствии с правилами реинжиниринга - всеми силами избегать копирования информации. Если данные уже есть в базе 1С - не надо их копировать еще куда-то. Организуйте транзитную БД на SQL сервере, создайте там необходимые view с вменяемыми названиями полей, необходимые таблицы связи ваших не1С-ных сущностей с объектами 1С и вперед. 4. Если все же копировать информацию - то только средствами SQL без всякого тормознутого обмена данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:26 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
>Организуйте транзитную БД на SQL сервере, создайте там необходимые view с вменяемыми названиями полей, необходимые таблицы связи ваших не1С-ных сущностей с объектами 1С и вперед. при частых обновлениях связи будут рассыпаться... да и выковыривать данные из полей составного типа - удовольствие ниже среднего ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:39 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Последний выдох ГПЖ>Организуйте транзитную БД на SQL сервере, создайте там необходимые view с вменяемыми названиями полей, необходимые таблицы связи ваших не1С-ных сущностей с объектами 1С и вперед. при частых обновлениях связи будут рассыпаться... Любые связи рассыпаются при частых обновлениях. В том числе правила обмена, но частые обновления структуры данных заканчиваются вместе с разработкой конфигурации и началом нормальной эксплуатации. автор да и выковыривать данные из полей составного типа - удовольствие ниже среднего Создание/пересоздание view, основанных на несущих таблицах 1С легко автоматизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:52 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
>В том числе правила обмена, но частые обновления структуры данных заканчиваются вместе с разработкой конфигурации и началом нормальной эксплуатации покой нам только снится ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 12:45 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Вообще, интересно конечно - сначала одни убеждают в целесообразности использования для обмена встроенных механизмов платформы, в частности, планов обмена, затем - при прочих равных условиях другие же критикуют подобный подход, приводя в защиту не менее веские аргументы. Чувствую, что действительно при подобном подходе в решению задач так и буду топтаться на месте. Спасибо всем за полезно-бесполезные советы !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 14:56 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
VladimirKrПоследний выдох ГПЖ>Организуйте транзитную БД на SQL сервере, создайте там необходимые view с вменяемыми названиями полей, необходимые таблицы связи ваших не1С-ных сущностей с объектами 1С и вперед. при частых обновлениях связи будут рассыпаться... Любые связи рассыпаются при частых обновлениях. В том числе правила обмена, но частые обновления структуры данных заканчиваются вместе с разработкой конфигурации и началом нормальной эксплуатации. автор да и выковыривать данные из полей составного типа - удовольствие ниже среднего Создание/пересоздание view, основанных на несущих таблицах 1С легко автоматизировать. Учитывая, что моем случае база 1С постоянно дорабатывается несколькими программистами, в т.ч. из удаленных филиалов, расположенных в других часовых полюсах, мне придется отложить решение остальных задач и регулярно, 24 часа в сутки только и заниматься, что пересоздавать вьюхи. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 15:07 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
FduchunVladimirKrпропущено... Любые связи рассыпаются при частых обновлениях. В том числе правила обмена, но частые обновления структуры данных заканчиваются вместе с разработкой конфигурации и началом нормальной эксплуатации. пропущено... Создание/пересоздание view, основанных на несущих таблицах 1С легко автоматизировать. Учитывая, что моем случае база 1С постоянно дорабатывается несколькими программистами, в т.ч. из удаленных филиалов, расположенных в других часовых полюсах, мне придется отложить решение остальных задач и регулярно, 24 часа в сутки только и заниматься, что пересоздавать вьюхи. эту обезьянью работу может делать сама 1с на основании своих метаданных например по регламентному заданию из обработки ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 15:12 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
FduchunВообще, интересно конечно - сначала одни убеждают в целесообразности использования для обмена встроенных механизмов платформы, в частности, планов обмена, затем - при прочих равных условиях другие же критикуют подобный подход, приводя в защиту не менее веские аргументы. Чувствую, что действительно при подобном подходе в решению задач так и буду топтаться на месте. Спасибо всем за полезно-бесполезные советы !!! в микроскоп можно смотреть, а можно гвозди забивать... дьявол в деталях ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 15:14 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Последний выдох ГПЖFduchunВообще, интересно конечно - сначала одни убеждают в целесообразности использования для обмена встроенных механизмов платформы, в частности, планов обмена, затем - при прочих равных условиях другие же критикуют подобный подход, приводя в защиту не менее веские аргументы. Чувствую, что действительно при подобном подходе в решению задач так и буду топтаться на месте. Спасибо всем за полезно-бесполезные советы !!! в микроскоп можно смотреть, а можно гвозди забивать... дьявол в деталях и вообще, описали что и так можно и так - осталось только примериться к реальной ситуации и выбрать, а вы хотите чтобы вам "морковкой жованой в рот поплевали"? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 15:20 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Я самостоятельно привык решать поставленные мне задачи - и на этом форуме я сижу не в поисках халявы, а в надежде получить советы по поводу тех или иных проблем, описанных более чем конкретно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 15:38 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Я с самого начала указал, что база в файловом режиме - если бы была возможность перевода ее в sql вариант, я бы так и сделал с самого начала. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 15:40 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Ну, раз не хватает денег или наглости перевести на SQL, тогда автор1. Для обеспечения целостности данных возникла необходимость выгружать не только сами рабочие данные, но и внутренние идентификаторы (UID) объектов 1С. Вопрос в следующем - какой тип данных назначить для UID в SQL - й базе ? Достаточно ли назначить тип данных char(36) (для всех справочников метод УникальныйИдентификатор() выдает идентификатор разрядностью 36 символов) или все-таки это не гарантирует корректность данных и необходимо преобразовывать char в binary(16), т.к. именно в таком формате хранятся все uid-ы в SQL-м варианте 1С-х баз ? Назначить лучше uniqueidentifier или binary(16). Но если есть трудности с преобразованиями то достаточно и char(36). автор2. Для обеспечения уникальности данных по uid необходимо ли назначать данное поле в качестве ключевого ? С точки зрения производительности лучше всего суррогатные ключи, само собой, но как тогда быть с механизмом обеспечения уникальности uid-ов ? Организовывать проверку с помощью триггеров ? Всем заранее спасибо ! Вы не ответили на вопрос выше: Собираетесь сами без 1С создавать 1С-объекты? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 16:04 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
VladimirKrНу, раз не хватает денег или наглости перевести на SQL, тогда автор1. Для обеспечения целостности данных возникла необходимость выгружать не только сами рабочие данные, но и внутренние идентификаторы (UID) объектов 1С. Вопрос в следующем - какой тип данных назначить для UID в SQL - й базе ? Достаточно ли назначить тип данных char(36) (для всех справочников метод УникальныйИдентификатор() выдает идентификатор разрядностью 36 символов) или все-таки это не гарантирует корректность данных и необходимо преобразовывать char в binary(16), т.к. именно в таком формате хранятся все uid-ы в SQL-м варианте 1С-х баз ? Назначить лучше uniqueidentifier или binary(16). Но если есть трудности с преобразованиями то достаточно и char(36). автор2. Для обеспечения уникальности данных по uid необходимо ли назначать данное поле в качестве ключевого ? С точки зрения производительности лучше всего суррогатные ключи, само собой, но как тогда быть с механизмом обеспечения уникальности uid-ов ? Организовывать проверку с помощью триггеров ? Всем заранее спасибо ! Вы не ответили на вопрос выше: Собираетесь сами без 1С создавать 1С-объекты? Нет, ввод информации в базу будет осуществляться исключительно средствами 1С, я планировал изначально использовать уникальные идентификаторы исключительно для обеспечения целостности. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 17:48 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Fduchun, авторНет, ввод информации в базу будет осуществляться исключительно средствами 1С, я планировал изначально использовать уникальные идентификаторы исключительно для обеспечения целостности. Используйте, но имейте ввиду: 1С генерирует уникальные uid, более того, в 1С генератор этих значений работает как аналог функции MS SQL NEWSEQUENTIALID(). Дабы при использовании в качестве первичного ключа избежать фрагментации индекса. Однако! функция 1С УникальныйИдентификатор() переставляет байты в binary(16) перед преобразованием в строку. И прямое обратное преобразование убивает монотонность в последовательности. Использлование вот таких значений ведет к фрагментации индекса. вот реализация функции УникальныйИдентификатор() средствами TSQL. На выходе строка УникальныйИдентификатор() для объекта, ссылка которого binary(16) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
выполните код: Код: sql 1. 2. 3. 4. 5. 6. 7.
и увидите, что прямое обратное преобразование не дает исходное значение @r: 0x00010002000300040005000600070008"00070008-0006-0005-0001-000200030004"00070008-0006-0005-0001-0002000300040x08000700060005000001000200030004 то есть ваши uid, построенные прямым преобразованием из УникальныйИдентификатор() будут приводить к фрагментации индекса при использовании в качестве индексных полей. Нужно рисовать обратное преобразование. Мне лень - я работаю в SQL напрямую с binary(16) Вот нашел, но работает только начиная с MS SQL 2008: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2013, 10:52 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
Последний выдох ГПЖи вообще, описали что и так можно и так - осталось только примериться к реальной ситуации и выбрать, а вы хотите чтобы вам "морковкой жованой в рот поплевали"?Это не гигиенично! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2013, 16:51 |
|
Обмен данными между 1С и MS SQL
|
|||
---|---|---|---|
#18+
VladimirKrВы не ответили на вопрос выше: Собираетесь сами без 1С создавать 1С-объекты?А как он в файловой создать "объекты 1С" "без самой 1С"? Я думаю, что если принципиально надо работать только в файловой, для лечения перевести в скуль, полечить и вертать взад в файловую. ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2013, 16:53 |
|
|
start [/forum/topic.php?fid=28&gotonew=1&tid=1519610]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 477ms |
0 / 0 |