powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Обмен данными между 1С и MS SQL
21 сообщений из 46, страница 2 из 2
Обмен данными между 1С и MS SQL
    #38412092
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FduchunНеобходимо с заданной периодичностью организовать выгрузку данных (справочников и документов) из 1С в SQL-ю базу (не 1С - овскую), которая в свою очередь развернута на MS SQL 2012.

Вот в этой SQL-базе, если она на том же сервере, что и файловая, слепи регламентное задание.
Или переведи файловую на скуль - надёжнее будет.
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38431709
Fduchun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !
Всем спасибо за помощь. Решил воспользоваться вашими рекомендациями и организовать обмен между 1С и MSSQL с помощью плана обмена и соответственно выгружать изменения в SQL - ю базу. В связи с этим возникло 2 вопроса:

1. Для обеспечения целостности данных возникла необходимость выгружать не только сами рабочие данные, но и внутренние идентификаторы (UID) объектов 1С. Вопрос в следующем - какой тип данных назначить для UID в SQL - й базе ? Достаточно ли назначить тип данных char(36) (для всех справочников метод УникальныйИдентификатор() выдает идентификатор разрядностью 36 символов) или все-таки это не гарантирует корректность данных и необходимо преобразовывать char в binary(16), т.к. именно в таком формате хранятся все uid-ы в SQL-м варианте 1С-х баз ?
2. Для обеспечения уникальности данных по uid необходимо ли назначать данное поле в качестве ключевого ? С точки зрения производительности лучше всего суррогатные ключи, само собой, но как тогда быть с механизмом обеспечения уникальности uid-ов ? Организовывать проверку с помощью триггеров ?
Всем заранее спасибо !
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38431737
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Для обеспечения уникальности данных по uid необходимо ли назначать данное поле в качестве ключевого ?

а зачем? сами что-то генерить будете?
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38432379
Fduchun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это необходимо для обеспечения ссылочной целостности - я выгружаю информацию в связанные таблицы - грубо говоря, несколько справочников, а также документов, реквизитами которых и являются выгружаемые элементы справочников. Элементы справочников и документов могут быть удалены, а на этапе анализа изменений из плана обмена я могу отслеживать такие объекты только по UID. Кроме того, коды справочников и документов могут также изменяться, соответственно, коды нельзя будет использовать в качестве ключевых полей. По моему мнению, UID - самый идеальный вариант в данном случае.
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38455552
Fduchun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос еще актуален. Неужели никто не сталкивался с подобными вопросами при решении аналогичных задач ?
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38461512
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FduchunВопрос еще актуален. Неужели никто не сталкивался с подобными вопросами при решении аналогичных задач ?
Да сталкивались! Только при вашем подходе ожидать что взлетит не стоит.
ИМХО:
1. 1C перевести на MS SQL.
2. Разобраться со структурой таблиц 1С ( вот обработка например) и организовать прямой доступ к данным.
3. Действовать в соответствии с правилами реинжиниринга - всеми силами избегать копирования информации. Если данные уже есть в базе 1С - не надо их копировать еще куда-то. Организуйте транзитную БД на SQL сервере, создайте там необходимые view с вменяемыми названиями полей, необходимые таблицы связи ваших не1С-ных сущностей с объектами 1С и вперед.
4. Если все же копировать информацию - то только средствами SQL без всякого тормознутого обмена данных.
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38461534
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Организуйте транзитную БД на SQL сервере, создайте там необходимые view с вменяемыми названиями полей, необходимые таблицы связи ваших не1С-ных сущностей с объектами 1С и вперед.

при частых обновлениях связи будут рассыпаться... да и выковыривать данные из полей составного типа - удовольствие ниже среднего
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38461556
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ>Организуйте транзитную БД на SQL сервере, создайте там необходимые view с вменяемыми названиями полей, необходимые таблицы связи ваших не1С-ных сущностей с объектами 1С и вперед.

при частых обновлениях связи будут рассыпаться...
Любые связи рассыпаются при частых обновлениях. В том числе правила обмена, но частые обновления структуры данных заканчиваются вместе с разработкой конфигурации и началом нормальной эксплуатации.

автор да и выковыривать данные из полей составного типа - удовольствие ниже среднего

Создание/пересоздание view, основанных на несущих таблицах 1С легко автоматизировать.
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38461667
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В том числе правила обмена, но частые обновления структуры данных заканчиваются вместе с разработкой конфигурации и началом нормальной эксплуатации

покой нам только снится
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38461978
Fduchun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, интересно конечно - сначала одни убеждают в целесообразности использования для обмена встроенных механизмов платформы, в частности, планов обмена, затем - при прочих равных условиях другие же критикуют подобный подход, приводя в защиту не менее веские аргументы. Чувствую, что действительно при подобном подходе в решению задач так и буду топтаться на месте.

Спасибо всем за полезно-бесполезные советы !!!
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38462008
Fduchun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirKrПоследний выдох ГПЖ>Организуйте транзитную БД на SQL сервере, создайте там необходимые view с вменяемыми названиями полей, необходимые таблицы связи ваших не1С-ных сущностей с объектами 1С и вперед.

при частых обновлениях связи будут рассыпаться...
Любые связи рассыпаются при частых обновлениях. В том числе правила обмена, но частые обновления структуры данных заканчиваются вместе с разработкой конфигурации и началом нормальной эксплуатации.

автор да и выковыривать данные из полей составного типа - удовольствие ниже среднего

Создание/пересоздание view, основанных на несущих таблицах 1С легко автоматизировать.

Учитывая, что моем случае база 1С постоянно дорабатывается несколькими программистами, в т.ч. из удаленных филиалов, расположенных в других часовых полюсах, мне придется отложить решение остальных задач и регулярно, 24 часа в сутки только и заниматься, что пересоздавать вьюхи.
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38462020
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FduchunVladimirKrпропущено...

Любые связи рассыпаются при частых обновлениях. В том числе правила обмена, но частые обновления структуры данных заканчиваются вместе с разработкой конфигурации и началом нормальной эксплуатации.

пропущено...


Создание/пересоздание view, основанных на несущих таблицах 1С легко автоматизировать.

Учитывая, что моем случае база 1С постоянно дорабатывается несколькими программистами, в т.ч. из удаленных филиалов, расположенных в других часовых полюсах, мне придется отложить решение остальных задач и регулярно, 24 часа в сутки только и заниматься, что пересоздавать вьюхи.

эту обезьянью работу может делать сама 1с на основании своих метаданных например по регламентному заданию из обработки
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38462023
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FduchunВообще, интересно конечно - сначала одни убеждают в целесообразности использования для обмена встроенных механизмов платформы, в частности, планов обмена, затем - при прочих равных условиях другие же критикуют подобный подход, приводя в защиту не менее веские аргументы. Чувствую, что действительно при подобном подходе в решению задач так и буду топтаться на месте.

Спасибо всем за полезно-бесполезные советы !!!

в микроскоп можно смотреть, а можно гвозди забивать... дьявол в деталях
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38462039
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖFduchunВообще, интересно конечно - сначала одни убеждают в целесообразности использования для обмена встроенных механизмов платформы, в частности, планов обмена, затем - при прочих равных условиях другие же критикуют подобный подход, приводя в защиту не менее веские аргументы. Чувствую, что действительно при подобном подходе в решению задач так и буду топтаться на месте.

Спасибо всем за полезно-бесполезные советы !!!

в микроскоп можно смотреть, а можно гвозди забивать... дьявол в деталях

и вообще, описали что и так можно и так - осталось только примериться к реальной ситуации и выбрать, а вы хотите чтобы вам "морковкой жованой в рот поплевали"?
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38462083
Fduchun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я самостоятельно привык решать поставленные мне задачи - и на этом форуме я сижу не в поисках халявы, а в надежде получить советы по поводу тех или иных проблем, описанных более чем конкретно.
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38462090
Fduchun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с самого начала указал, что база в файловом режиме - если бы была возможность перевода ее в sql вариант, я бы так и сделал с самого начала.
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38462181
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С-объекты?
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38462454
Fduchun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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С, я планировал изначально использовать уникальные идентификаторы исключительно для обеспечения целостности.
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38463092
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
create function [dbo].[getStringUUID] (@binaryUUID binary(16))
returns char(40)
as
begin
	declare @buffer varchar(40)
	select @buffer = replace(convert(varchar(40),cast(@binaryUUID as uniqueidentifier)), '-', '')

	return 
	right(@buffer, 8) + '-' +
	substring(@buffer, 21, 4) + '-' +
	substring(@buffer, 17, 4) + '-' +
	substring(@buffer, 7, 2) +
	substring(@buffer, 5, 2) + '-' +

	substring(@buffer, 3, 2) +
	substring(@buffer, 1, 2) +
	substring(@buffer, 11, 2) +
	substring(@buffer, 9, 2) +
	substring(@buffer, 15, 2) +
	substring(@buffer, 13, 2)
end 



выполните код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
declare @r binary(16)
select @r=0x00010002000300040005000600070008
select 
	@r,
	dbo.getStringUUID(@r),
	cast(dbo.getStringUUID(@r) as uniqueidentifier),
	cast(cast(dbo.getStringUUID(@r) as uniqueidentifier) as binary(16))

и увидите, что прямое обратное преобразование не дает исходное значение @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.
CREATE function [dbo].[fn_getbinaryid] (@unidentifier char(36)) 
returns binary(16) 
as 
begin 
	declare @binvalue varbinary(16)
	declare @hexstring varchar(36)
	select @hexstring = '0x'+ 
	substring(@unidentifier,20,4)
	+right(@unidentifier,12) 
	+substring(@unidentifier,15,4) 
	+substring(@unidentifier,10,4)  
	+left(@unidentifier, 8)
	select @binvalue = CONVERT(varbinary(max), @hexstring, 1) 
	return ( @binvalue ) 
end
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38463722
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖи вообще, описали что и так можно и так - осталось только примериться к реальной ситуации и выбрать, а вы хотите чтобы вам "морковкой жованой в рот поплевали"?Это не гигиенично!
...
Рейтинг: 0 / 0
Обмен данными между 1С и MS SQL
    #38463726
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirKrВы не ответили на вопрос выше: Собираетесь сами без 1С создавать 1С-объекты?А как он в файловой создать "объекты 1С" "без самой 1С"?

Я думаю, что если принципиально надо работать только в файловой, для лечения перевести в скуль, полечить и вертать взад в файловую. ИМХО.
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / [игнор отключен] [закрыт для гостей] / Обмен данными между 1С и MS SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]