8.х Запись в таблицу "Контактная информация" через COM

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Vzhik, 17 сен 2007.

  1. TopicStarter Overlay
    Vzhik
    Offline

    Vzhik

    Регистрация:
    17 сен 2007
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Всем привет!
    Столкнулся со следующей проблемой.
    Делаю веб (ASP.NET 2.0) сервис для доступа к данным "1С Предприятие 8.0". Есть необходимость добавлять новые контактные данные для контрагентов. Создаю COM (V8DbConnection) соединение, формирую запрос (V8DbInsertCommand) на таблицу РегистрСведений.КонтактнаяИнформация, выполняю его методом V8DbInsertCommand.ExecuteNonQuery() и получаю exception с сообщением "Вставка не поддерживается. Таблица РегистрСведений.КонтактнаяИнформация". Каким же образом я могу вставить новые данные в контактную информацию через COM??? Может, стоит написать в 1С для этого отдельную экспортную процедуру?
  2. TopicStarter Overlay
    Vzhik
    Offline

    Vzhik

    Регистрация:
    17 сен 2007
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Увы, приходится отвечать самому себе...
    Проблему, к сожалению, нельзя решить при помощи внешних запросов к ИБ 1С через COM. Ответ на вопрос, по какой причине это не разрешается, в открытых источниках мне найти не удалось. Если кто знает, буду очень признателени за информацию.

    Но решение проблемы есть. Необходимо создать процедуру или функцию 1С, доступную для запуска из внешнего соединения (я такие процедуры называю "экспортными" за то, что в их объявлении стоит слово "экспорт"). Эта экспортная процедура или функция содержит всю логику по манипуляции данными обычными средствами встроенного языка 1С. В моем случае - это запись нового контакта для контрагента.

    Вызвать экспортную процедуру можно средствами web-расширения, а именно методом _1C.V8.Data.V8.Call(...). Сама процедура/функция, помимо ключевого слова "экспорт", должна находится в глобальном контексте 1С, причем для модуля, в котором она определена, нужно в свойствах поставить галочку "внешнее соединение".

    Надеюсь, мое решение поможет и еще кому-нибудь...

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