8.х 1С 8.1 и MS SQL 2005

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем Titov, 15 фев 2012.

  1. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    Добрый день! Подскажите, плиз, кто может..

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

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

    :blink:
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Вряд-ли:(
  3. Неназываемый
    Offline

    Неназываемый Опытный в 1С Команда форума

    Регистрация:
    2 фев 2007
    Сообщения:
    507
    Симпатии:
    7
    Баллы:
    29
    Двоичные данные показывает SQL Management Studio, на самом деле там вполне читабельные данные.
    Можете выполнить запрос select * from _ReferenceXX (XX - номер справочника Номенклатура в вашей БД), и убедиться.

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

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

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

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Сделать то можно - "двоичные данные" ... а уже сказали выше.
    Другое дело, что делать этого НЕ НУЖНО!

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

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

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

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

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

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


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

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    Спасибо за ответы:) А есть аналоги среды SQL Management Studio чтобы показывали двоичные данные?

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

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

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

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Да, скрипт на стороне сайта, который будет выгружать в 1С заявки/бронь.

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

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

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

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

    Неназываемый Опытный в 1С Команда форума

    Регистрация:
    2 фев 2007
    Сообщения:
    507
    Симпатии:
    7
    Баллы:
    29
    Если скорее всего ДБ сайта MySQL.
    Можно сделать регламентное задание которое будет подключатся к БД сайта и загружать заявки/бронь в 1С, с интервалом хоть в минуту.
    На форуме много тем о том как реализовать подключение к сторонним БД.

Поделиться этой страницей