Перейти к содержимому


- - - - -

1c 8.1 и MS SQL 2005


  • Вы не можете ответить в тему
Сообщений в теме: 7

#1 Titov

    Участник


  • 177 сообщений

Отправлено 15 февраля 2012 - 12:15

Добрый день! Подскажите, плиз, кто может..

Возникла необходимость другим приложением добавлять в базу 1с (MS SQL 2005) данные.

Нашел справочник Номенклатура в БД. Почти все реквизиты отображаются как "<Двоичные данные>" можно ли сделать чтобы эти данные символьно отображались? Чтобы я знал какие значения писать в эту базу из другого приложения..

:blink:

#2 alexburn

    Suum cuique


  • 4 688 сообщений

Отправлено 15 февраля 2012 - 12:18

Вряд-ли:(
Героем можешь ты не быть,
Но человеком быть обязан!

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

#3 Неназываемый

    Участник


  • 212 сообщений

Отправлено 15 февраля 2012 - 12:37

Двоичные данные показывает SQL Management Studio, на самом деле там вполне читабельные данные.
Можете выполнить запрос select * from _ReferenceXX (XX - номер справочника Номенклатура в вашей БД), и убедиться.

Другое дело что делать INSERT или UPDATE для SQL-ных таблиц 1С это очень опасное дело. Чревато косяками в базе и может привести к ошибкам в логической структуре.
Плюс, названия полей могут изменится при обновлении или изменении БД. Допустим решите вы сделать бэкап из ДТ файла, и до свидания. Ваша таблица номенклатуры уже имеет другой номер.

Если нужно добавлять в справочник Номенклатуры новые позиции из сторонней программы, уж лучше написать импорт из например текстового файла. А в сторонней программе делать экспорт.

Сообщение отредактировал Неназываемый: 15 февраля 2012 - 12:40


#4 uza

    1С, VBA (EXCEL), VB (.NET + WEB)


  • 1 349 сообщений

Отправлено 15 февраля 2012 - 12:46

Сделать то можно - "двоичные данные" ... а уже сказали выше.
Другое дело, что делать этого НЕ НУЖНО!

1) Номенклатура - это не только ценный мех набор записей в одной физ.таблице, но еще и связь с другими справочниками и регистрами.
На уровне СУБД это может быть сильно не одна таблица (например, если у справочника есть Табл.Часть - то это уже ДВЕ таблицы).

2) Структура этих таблиц, к тому же, может (и будет!) меняться при изменениях конфигурации и обновлениях платформы.

3) Изменения идущие "мимо" 1С прямо в БД не отображаются в журнале регистрации 1С (что может быть фатально при "разборе полетов")

4) Таким решением вы жестко привяжете себя к пулемету одной СУБД, без возможности перейти на другую (Oracle, DB2, Postgree, а хотя бы и файл).

5) В момент создания записи номенклатуры через 1С происходят различные проверки. Как на уровне видимого кода (модуль формы, модуль объекта), так и на уровне платформы 1С (ядра, или базиса - языком SAPёров). Каковые проверки не будут пройдены при прямом обращении к СУБД.

6) В момент записи через 1С, могут инициализироваться записи и в других таблицах (справочники, документы, регистры) (смотрим снова модуль объекта и модуль формы)


Что не позволяет заставить стороннее приложение работать с базой 1С через функционал самой 1С: внешние соединение, ака COM-сервер (COM-соединение) или Automation (ака OLE Сервер)?
Ну или через промежуточные файлы или базы данных (что еще более универсально и не требует компонентов 1Ски на стороне того самого приложения)?

Сообщение отредактировал uza: 15 февраля 2012 - 12:49

Не все полезно - что в БД залезло

#5 Titov

    Участник


  • 177 сообщений

Отправлено 15 февраля 2012 - 12:53

Спасибо за ответы:) А есть аналоги среды SQL Management Studio чтобы показывали двоичные данные?

Я номенклатура написал чтобы проще было объяснить что сделать надо)

На самом деле не про номенклатуру дело - есть Кафе в котором надо делать бронь столов, менеджеры это делают в 1с, а сейчас руководство хочет чтобы бронь делалась еще и через сайт обычными людьми. Тогда получается надо синхронизацию какую то частую делать.. если не использовать прямую запись в mssql.

Можете тогда предложить варианты синхронизации?

#6 alexburn

    Suum cuique


  • 4 688 сообщений

Отправлено 15 февраля 2012 - 13:10

Да, скрипт на стороне сайта, который будет выгружать в 1С заявки/бронь.

Или можно цепляться из 1С к веб-серверу (SQL).
Или можно сделать веб-интерфейс, если у вас 8.2.

Сообщение отредактировал alexburn: 15 февраля 2012 - 13:10

Героем можешь ты не быть,
Но человеком быть обязан!

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

#7 uza

    1С, VBA (EXCEL), VB (.NET + WEB)


  • 1 349 сообщений

Отправлено 15 февраля 2012 - 13:11

Выше я писал про COM соединение. Не знаю как оно там реализуется через похапэ, например. А вот в случае когда сайт на ASP - все работает чуть ли не из коробки.
Создал соездинение - и попер.
Да и "частая синхронизация" может быть вообще с частотой в 1-2 секунды легко.
Имеем постоянно запущенный клиент 1С (или фоновое задание) которое тупо засылает в стороннюю БД запрос "SELECT * FROM NoviyeBleadBroni WHERE UzheZapisalV1C = 0" и смотрит что вернулось назад.
Ежли чего вернулось -так оформить броньку в 1Ске и выставить флаг в этой сторонней БД ("update ... WHERE ID = " + ИДПроведеннойБрони)

Саму 1С бешанное чтение из сторонней БД нисколько не нагрузит (ну или нагрузит, но на сущие доли процента от общей нагрузки).

Сообщение отредактировал uza: 15 февраля 2012 - 13:11

Не все полезно - что в БД залезло

#8 Неназываемый

    Участник


  • 212 сообщений

Отправлено 15 февраля 2012 - 13:13

Если скорее всего ДБ сайта MySQL.
Можно сделать регламентное задание которое будет подключатся к БД сайта и загружать заявки/бронь в 1С, с интервалом хоть в минуту.
На форуме много тем о том как реализовать подключение к сторонним БД.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных