Взаимодействие между базами 1С через COM

Публикация № 387577

Разработка - Обмен данными 1С - Перенос данных из 1C8 в 1C8

COM 1С DCOM COM+ COM проблемы COM разные версии

445
Рассмотрено много особенностей взаимодействия между базами 1С по COM технологии

Взаимодействие между базами 1С через COM

В этой статье я расскажу о многих особенностях взаимодействия между базами 1С по COM технологии, накопленных за годы развития и использования интеграционного коммерческого продукта 2iS:Интеграция нашей компании 2iS.

Термины

ОС – операционная система

COM-клиент – процесс(поток) ОС, запросивший создание COM-объекта

COM-сервер – COM-объект, созданный по запросу клиента

Издание платформы – подстрока до 2-й точки версии платформы (например 8.2, 8.3)

Com-соединитель – COM-объект V8X.ComСonnector для создания внешних соединений с базами 1С

Automation-сервер – он же OLE-сервер, COM-объект V8X.Application для создания приложений 1С

Сборка платформы – полная строка версии платформы (например 8.2.19.130, 8.2.16.352)

COM классы платформы

Виды COM классов

Для каждого издания платформы в системном реестре регистрируются собственные классы для взаимодействия с базами. Символ “X” обозначает место подстановки номера издания платформы (например 0,1,2,3,4).

  1. V8X.ComСonnector - Com-соединитель / Менеджер COM-соединений

    1. С помощью данного объекта выполняется установка внешнего соединения с информационной базой 1С:Предприятия 8 и администрирование кластера серверов. С помощью одного экземпляра объекта может быть установлено неограниченное число соединений.

    2. Регистрация и отмена регистрации выполняется отдельно для каждой разрядности (32b и 64b)

      1. Регистрация: Regsvr32 “<ПутьНужнойРазрядности>\bin\comcntr.dll”

      2. Отмена регистрации: Regsvr32 “<ПутьНужнойРазрядности>\bin\comcntr.dll” /u

  2. V8X.Application - Automation-сервер толстого клиента

    1. Предоставляет доступ ко всем свойствам и методам глобального контекста клиентского приложения, а также включение и выключение пользовательского интерфейса (главного окна приложения).

    2. Может запускать как обычное, так и управляемое приложение в зависимости от параметров конфигурации и пользователя базы, но явно задавать тип приложения нельзя.

    3. Регистрация и отмена регистрации

      1. Регистрация - 1cv8.exe /regserver

      2. Отмена регистрации - 1cv8.exe /unregserver

  3. V8Xc.Application - Automation-сервер тонкого клиента

    1. Предоставляет доступ ко всем свойствам и методам глобального контекста клиентского приложения, а также включение и выключение пользовательского интерфейса (главного окна приложения).

    2. Регистрация и отмена регистрации

      1. Регистрация - 1cv8c.exe /regserver

      2. Отмена регистрации - 1cv8c.exe /unregserver

Привязка COM классов к dll-файлам

Привязка имени COM класса к конкретному dll-файлу осуществляется через ветку HKEY_CLASSES_ROOT системного реестра, которая собирается следующим образом:

  1. Берется содержимое ветки HKEY_CURRENT_USER\Software\Classes

  2. Добавляется содержимое ветки HKEY_LOCAL_MACHINE\Software\Classes, но только те ключи, которые отсутствуют в п.1.

Поэтому регистрация класса от имени пользователя имеет приоритет над общей регистрацией.

Для 32-b и 64-b режимов исполнения кода в реестре хранятся отдельные ветки и соответственно отдельные привязки. Поэтому управление COM-классами для них осуществляется независимо. В частности это касается класса V8X.ComConnector (на 64-b операционной системе)

  1. 64-b - c:\Program Files\1cv8*\<Версия>\bin\comcntr.dll

  2. 32-b - c:\Program Files (x86)\1cv8*\<Версия>\bin\comcntr.dll

Подключение внешнего соединения

Рассмотрим алгоритм подключения внешнего соединения в деталях

  1. Создание COM-объекта Com-соединитель (Имя класса - V8X.ComConnector). Варианты:

      1. Внутрипроцессное (inproc)

        1. Должен быть зарегистрирован класс V8X.ComConnector той же разрядности, что и COM-клиент

          1. Если издание платформы COM-клиента совпадает с изданием платформы COM-сервера, то также требуется равенство сборки платформы COM-клиента и COM-сервера.

          2. Он регистрируется при установке платформы с опцией «Внешнее соединение». В любой момент его можно зарегистрировать командой «Regsvr32 comcntr.dll» в каталоге исполняемых файлов платформы.

        2. COM-объект создается в памяти COM-клиента

        3. Затраты на создание примерно – 0.01(первое)/0.001(второе) cек

        4. Пример
          КомСоединитель = Новый COMОбъект(“V83.ComConnector”);
          ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);

      2. Внепроцессное локальное (local)

        1. Должен быть зарегистрирован класс V8X.ComConnector любой разрядности и сборки платформы. Необходимо настроить через dcomcnfg.exe COM+ приложение с активацией «серверное приложение»/«Server apllication». Подробнее рассмотрено далее.

        2. COM-объект создается в памяти служебного хост-процесса (dllhost.exe) на компьютере COM-клиента

        3. Затраты на создание примерно – 0.06(первое)/0.03(второе) сек

        4. Пример
          КомСоединитель = Новый COMОбъект(“V83.ComConnector”);
          ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);

      3. Внепроцессное нелокальное (DCOM)

        1. На нелокальном компьютере должен быть зарегистрирован класс V8X.ComConnector любой разрядности и сборки платформы. Необходимо настроить на нелокальном компьютере через dcomcnfg.exe COM+ приложение с активацией «Cерверное приложение»/«Server apllication». Подробнее рассмотрено далее.

        2. Необходимо настроить на нелокальном компьютере роль «Сервер приложений»/«Application server» и включить нелокальный доступ к COM+, выбрав опцию «Сетевой доступ к COM+»/”COM+ network access”. Подробнее рассмотрено далее.

        3. COM-объект создается в памяти служебного хост-процесса (dllhost.exe) на другом компьютере

        4. Затраты на создание примерно

          1. Экспериментальные данные

Задержка канала, мс

Длительность создания COM-объекта, мс

0

60

30

700

80

2000

170

4000


На графике видно, что длительность создания этого COM-объекта прямо пропорциональна задержке канала и коэффициент пропорциональности составляет  примерно 24. Можно предположить, что при создании этого COM-объекта происходит 24 вызова через канал.

        1. Пример
          КомСоединитель = Новый COMОбъект(“V83.ComConnector”, ИмяКомпьютера);
          ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);

         2. Выполнение метода Connect (создание внешнего соединения)

      1. Создание сеанса – 1 сек

      2. Инициализация сеанса – [0;?] сек

        1. Подгрузка нужных метаданных (кэш метаданных не используется)

        2. Инициализация параметров сеанса

        3. Событие ПриНачалеРаботыСистемы

Подключение Automation-сервера (OLE)

  1. Создание COM-объекта Automation-сервера (Имя класса - V8X.Application).

    1. Затраты на создание примерно – 0.5 cек

  2. Выполнение метода Connect

    1. Создание сеанса – 1 сек

    2. Инициализация сеанса – [0;?] сек

      1. Подгрузка нужных метаданных (кэш метаданных используется, если база есть в списке пользователя)

      2. Инициализация параметров сеанса
      3. ПередНачаломРаботыСистемы

      4. ПриНачалеРаботыСистемы

  3. Пример
    AutomationСервер = Новый COMОбъект("V83.Application");
    AutomationСервер.Connect(СтрокаСоединения);

Затраты на COM-вызовы

Каждый раз, когда мы обращаемся во встроенном языке к свойству или методу COM-объекта (выполняем COM-вызов), происходит ряд дополнительных действий по сравнению с обращением к родному объекту встроенного языка. Если COM-сервер находится в другом локальном процессе, то при этом еще сначала выполняется перенос всех параметров из COM-клиента в COM-сервер и в конце выполняется обратный перенос параметров в COM-клиент. Для такого переноса информация естественно должна быть сериализована на стороне отправителя и  затем десериализована на стороне получателя, что в совокупности с некоторыми другими действиями получило название маршалинга и демаршалинга. В нелокальном режиме (DCOM) такой перенос будет еще тратить время на сетевые коммуникации и при первом обращении к новому COM-объекту на передачу его «скелета», и поэтому задержка канала будет играть решающую роль (Подробнее о COM вызовах, DCOM в википедии, Технический обзор DCOM,)

Соотношение затрат на вызов по типам расположения COM-сервера

  1. Минимальные для внутрипроцессного Com-сервера

  1. Средние для локального внепроцессного Com-сервера

  2. От средних до больших для нелокального внепроцессного Cоm-сервера в зависимости от качества канала связи

Минимизация количества COM-вызовов

  1. Создаем базовую внешнюю обработку с набором общих методов для приема вызовов от COM-клиента на стороне COM-сервера

    1. Теперь нам не нужно изменять конфигурацию базы COM-сервера, чтобы использовать там сложный функционал.

    2. В нашем продукте мы назвали ее «Сервисный процессор». На ее передачу и инициализацию уходит около 1 сек

    3. Пример универсальной передачи файла в COM-сервер
      ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайлаЛокальное);
      ЗаписьХмл = Новый ЗаписьXML;
      ЗаписьХмл.УстановитьСтроку();
      ЗаписатьXML(ЗаписьХмл, ДвоичныеДанные);
      ЧтениеХмлНаСервере = COMСервер.NewObject("ЧтениеXML");
      ЧтениеХмлНаСервере.УстановитьСтроку(ЗаписьХмл.Закрыть());
      ДвоичныеДанныеНаСервере = COMСервер.ПрочитатьXML(ЧтениеХмлНаСервере);
      ИмяФайлаНаCOMСервере = COMСервер.ПолучитьИмяВременногоФайла(Файл.Расширение);
      ДвоичныеДанныеНаСервере.Записать(ИмяФайлаНаCOMСервере);
    4. Пример вызова обработки
      COMОбработка = COMСервер.ВнешниеОбработки.Создать(ИмяФайлаНаCOMСервере, Ложь);
      Результат = COMОбработка.МойМетод(ПараметрыXML);
  2. Проектируем взаимодействие с COM-сервером по принципу "минимум COM-вызовов”, т.е. готовим все нужное на стороне COM-клиента и передаем в качестве параметров "большого" вызова

    1. Создаем встроенную обработку для выполнения такого вызова в COM-клиенте

    2. Передача агрегатных объектов

      1. Сериализуем все входные параметры на стороне COM-клиента

      2. Десериализуем все входные параметры на стороне COM-сервера

      3. Выполняем действия с параметрами на стороне COM-сервера
      4. Сериализуем все выходные параметры на стороне COM-сервера

      5. Десериализуем все выходные параметры на стороне COM-клиента

    3. В нашем продукте мы назвали ее «Выполнение сервиса инфобазы»

  1. Для многократных COM-вызовов предусматриваем регулируемую частоту

    1. Например, информационные вызовы могут выполняться с изменяемой частотой

Обратная связь

При использовании принципа «минимум COM-вызовов» значительную часть времени код будет выполняться в чужом контексте, что серьезно усиливает некоторые неудобства COM-вызовов:

  1. Нельзя прервать поток COM-Клиента и его соединение с сервером приложений 1С, пока не завершится вызов COM-сервера

  2. У COM-Клиента нет информации о прогрессе выполнения вызова в COM-сервере

Для борьбы с этими неудобствами можно организовать обратную связь от COM-сервера к COM-клиенту, передав COM-Серверу ссылку на общий модуль COM-клиента и периодически вызывая через нее COM-клиент. Нужно отметить, что есть ошибки платформы (https://partners.v8.1c.ru/forum/t/1382465/m/1382465 ), проявляющиеся при создании ссылок на один общий модуль более чем в одном COM-севере сеанса. Поэтому пока лучше очищать ссылки на общий модуль во всех удерживаемых COM-серверах перед помещением в новый. В обратных вызовах можно передавать:

  1. информацию о прогрессе выполнения

  2. накопленные сообщения пользователю (получать функцией ПолучитьСообщенияПользователю(Истина))

Схема принципа “минимум COM-вызовов”

Такая схема дружественна к большим задержкам каналов связи. Поэтому она во многом похожа на вызов веб-сервиса. А следовательно используя ее для COM взаимодействия, вы значительно снижаете затраты на возможные переходы между COM и веб-сервисом в обоих направлениях.

Отладка

При использовании принципа «минимум COM-вызовов» облегчить отладку выполнения кода на COM-сервере можно, сделав опциональное модальное окно подключения к базе в COM-клиенте. В этом окне должны быть возможности задания одноразовых параметров подключения, выполнения вспомогательных функций и просмотра информации о подключенном сеансе. Ниже в качестве примера показано такое окно из нашего продукта

Чтобы включить возможность отладки внешних соединений, в подкаталоге conf нужно создать файл comcntrcfg.xml с соответствующим содержимым. В окне подключения можно сделать кнопку/флажок для программного создания такого файла. Однако много версий платформы содержат ошибку, из-за которой предметы отладки внешних соединений не видны в отладчике даже с этим корректно настроенным файлом. На платформе 8.3 эти проблемы вроде бы решены.

Пример файла comcntrcfg.xml:
<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
   <debugconfig debug="true" debuggerURL="tcp://localhost:1560"/>
</config>

Также нельзя забывать о необходимости запускать конфигуратор для отладки с той же (до регистра букв) строкой соединения, что и предмет отладки. Поэтому в этом диалоге нужно сделать кнопку для запуска конфигуратора COM-сервера с правильной строкой соединения.

В какой-то мере обойти проблему невидимости предмета отладки внешнего соединения и ряд других неудобств можно путем однократного выполнения кода  на толстом клиенте с заменой режима «Внешнее соединение» на «Automation-сервер» (приложение), т.е. используя COM класс V8X.Application и включенную видимость. Поэтому в окне подключения нужны параметры для выбора режима подключения.

После создания подключения на стороне COM-клиента обычно требуется подключение отладчика базы COM-сервера и установка там точки останова в нужном месте. Поэтому в окне подключения нужно расположить кнопку подключения отладчика/конфигуратора COM-сервера. Если COM-сервер запущен в режиме видимого приложения, то для подключения отладчика можно воспользоваться асинхронным вызовом исключения в нем. Из диалога с ошибкой в приложении COM-сервера через кнопку «Конфигуратор» можно будет открыть конфигуратор и в большинстве случаев сразу подключить отладчик. Если подключение отладчика таким способом недоступно, то оператору поможет отображение информации о сеансе (его номера) в базе COM-сервера. Также нужна кнопка открытия в открытом отладчике файла внешней обработки, которая будет выполняться в нем.

Управление COM+ приложениями 1С

Осуществляется через оснастку dcomcnfg.exe. Для регистрации 1С в качестве COM+ приложения необходимо открыть оснастку "dcomcnfg". В ней в ветке "Службы компонентов"-"Компьютеры"-"Мой компьютер"-"Приложения COM+"(COM+ Applications) необходимо добавить новое приложение (application). При добавлении можно указать любое имя. Далее необходимо указать пользователя, от имени которого будет работать COM+ приложение, на закладке Идентификация (Identity). Также нужно задать доступ к приложению для нужных пользователей путем добавления, если отсутствует, роли с любым именем в ветке Роли (Roles), и добавления в ее ветку Пользователи (Users) пользователя "Прошедшие проверку" (Authenticated Users). После добавления приложения необходимо создать новую компоненту. Для этого в ветке "Компоненты" созданного приложения необходимо выбрать пункт меню "Создать"-"Компонент". При создании выбрать импорт уже зарегистрированных компонентов и найдите в списке (желательно 64-битную) компоненту 1С (V8x.COMConnector.1). Подробнее о настройке COM+ приложений читайте Интерфейс пользователя: службы компонентов

Далее можно изменить тип активации (внутрипроцессный/внепроцессный) на закладке Активация/Activation.

В нашем продукте имеется инструмент «Управление COM классами 1С» для просмотра/регистрации/изменения всех COM классов и COM+ приложений 1С на указанном компьютере:

Настройка DCOM-сервера

Для Windows 2008 Server нужно добавить роль «Сервер приложений» (Application server). Для этого необходимо открыть панель управления компьютером, щелкнуть правой кнопкой мыши в ветки "Роли" и выбрать пункт меню "Добавить роль".

Появится око в котором необходимо выбрать роль "Сервер приложений"/"Application server". На этапе выбора ролей сервера приложений необходимо указать пункт "Сетевой доступ к COM+"/"COM+ network access". Если это не сделать, то при попытке создания COM-объекта вы будете получать ошибку "Ошибка при вызове конструктора (COMОбъект): The component or application containing the component has been disabled".

Настройка сетевого экрана

DCOM процессам для связи между собой динамически выдаются порты из диапазона (по умолчанию) от 1024 до 65535. Поэтому в сетевых экранах обоих компьютеров (com-клиента и com-сервера) должны быть открыты порты RPC (135, 139, 445, 593) и диапазон 1024-65535 (TCP/UDP).

Можно ограничить этот диапазон портов. Для этого открываем Администрирование – Службы компонентов (или в командной строке набираем dcomcnfg.exe). В открывшейся программе находим ветку «Мой компьютер» и открываем её свойства (см. скриншот).

DCOM Config

В свойствах открываем вкладку «Набор протоколов», там, в свою очередь, открываем свойства «TCP/IP с ориентацией на подключения»

Набор протоколов DCOM

В свойствах TCP/IP по умолчанию – пустой список. В него можно добавить конкретный диапазон портов, которые будут использоваться DCOM. Какие именно порты выбрать – решать вам. Главное, чтобы не было других стандартных служб, уже занявших выбранные порты. Мне встречались рекомендации открывать не менее 1000 портов, так как очень многие системные программы используют DCOM. Так на скриншоте ниже я указываю, что DCOM должен работать по диапазону портов 20000-21000.

Добавление диапазона портов DCOM

После этого нужно перезагрузить компьютер (перезапустить отдельно DCOM нельзя, слишком много на него завязано), и DCOM станет работать только по указанным портам.

Проблемы

  1. Высокие затраты на подключение/инициализацию

    1. Удержание com-серверов – эффективное средство борьбы. Варианты:

      1. Временное хранилище. Производитель не рекомендует, но деваться больше некуда. //catalog.mista.ru/public/331683/

      2. Повторное использование возвращаемых значений. Очищаются каждые 20 мин

      3. COM+ пулинг. v82Server.dll - Технология Microsoft COM+ для доступа к 1C82
  2. Разные сборки платформы клиента и сервера при одинаковом издании платформы

    1. Для обхода для каждой отличной от COM-клиента сборки платформы назначаем и настраиваем DCOM сервер

  3. Отсутствие информации о типах вложенных в COM-объекты объектов 1С (вместо типа объекта 1С везде получаем тип «COMОбъект») и отсутствие контекстной подсказки по ним

    1. Для обхода применяем принцип «минимум COM-вызовов»

  4. При передаче исключения из COM-сервера оно принимает краткую форму из-за ошибки платформы

    1. Для обхода оборачиваем каждый вызов на стороне COM-сервера в попытку и в исключении перевызываем исключение с полным описанием ошибки

  5. При создании COM-объекта ошибка “Версия компоненты 'comcntr' (8.X.XX.XXX) отличается от версии корневого модуля 'core82' (8.X.YY.YYY)”

    1. Для обхода создаем COM+ приложение с внепроцессной активацией. Тогда COM-сервер будет создаваться в отдельном процессе и совпадения версий этих модулей не потребуется.

  6. Медленные каналы (большие задержки)

    1. Каждой подсети за отдельным медленным каналом назначаем и настраиваем свой DCOM сервер и при обращении к базам за этим каналом COM-серверы создаем на этом компьютере, минимизируя количество и объемы вызовов Com-клиент<->Com-сервер

    2. Кешируем (повторно используем) COM-серверы

  7. Невозможно разорвать соединение рабочего процесса, в котором ожидается завершение вызова COM-сервера

    1. Для обхода можно использовать создание COM-объектов в выделенных хост-процессах, настроив соответствующим образом COM+ приложение, и регистрировать идентификаторы этих процессов в привязке к сеансам COM-клиентов. Тогда при необходимости завершить серверное соединение такого сеанса можно сначала убить процесс COM-сервера, а потом и сам сеанс.

  8. При обращении к COM-объекту может возникать ошибка «Неизвестная ошибка». Возможные причины:

    1. Com-сервер перестал существовать. Возможные причины:

      1. Переполнение стека

      2. Невосстановимая ошибка

      3. Хост-процесс завершился

    2. Потеря связи с нелокальным COM-сервером

  9. Совпадение имен свойств и методов без параметров объекта создает неоднозначность обращения к ним через COM

    1. Например, если у справочника есть реквизит ПолноеНаименование, то из-за наличия метода ПолноеНаименование() обращение к реквизиту ПолноеНаименование через COM может привести к вызову метода ПолноеНаименование()

    2. Для обхода используем принцип “минимум COM-вызовов”

  10. При создании COM-объекта через DCOM может возникать ошибка "Сервер RPC недоступен"

    1. Проверьте работу службы “Remote Procedure Call (RPC)” на обоих компьютерах

    2. Проверьте настройки сетевого экрана на обоих компьютерах

Com-технология VS веб-сервисы в локальной сети

Недостатки

  1. Рассмотренные выше сложности с взаимодействием разных сборок платформы 1C, требующие для своего решения сервисный механизм

  2. Высокие затраты на подключение/инициализацию, поэтому при отсутствии кеширования неэффективно для частых мелких вызовов

  3. Привязка к семейству операционных систем (платформе) Windows

  4. Требуется закрытая сеть (LAN, VPN)

Преимущества

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

  2. Широкая функциональность

  3. Проще отладка

  4. Не требуется разворачивать и поддерживать веб-сервер

  5. Программно доступен интерактивный режим подключенной базы

Захват клиентских лицензий

В большинстве случаев всем клиентским приложениям, частным случаем которого являются Automation-сервер и внешнее соединение, в одном сеансе ОС требуется всего лишь одна на всех лицензия. Однако если клиентскому приложению не удалось получить аппаратную лицензию (от локального HASP или сетевого HASP) и программную лицензию (платформы или базовой конфигурации), то предпринимается попытка получить отдельную лицензию с сервера 1С:Предприятия. Сервер 1С:Предприятия может выдать лицензию только, если в свойствах базы разрешена выдача лицензий сервером 1С:Предприятия. В таком случае каждое клиентское приложение и внешнее соединение может захватывать свою собственную лицензию.

Заключение

Если вы хотите подробнее узнать об описанных особенностях, приобретайте продукт 2iS:Администратор. Несмотря на наличие в конфигурации защищенного модуля, 99% программного кода конфигурации открыто, то есть Вы можете изучить реализацию описанных приемов.

Полезные ссылки на its.1c.ru:

445

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. anig99 2704 10.08.15 10:28 Сейчас в теме
Блин. На 4 дня опоздали со статьей (:
В статье среди проблем надо бы ещё упомянуть про научное представление числа при работе с COM. Понятно, что это прописано на ИТС, но не сразу натыкаешься на это.
7. dgolovanov 10.08.15 19:06 Сейчас в теме
(1) anig99, так написали бы, о чем речь, пусть эта статья будет как закладка - FAQ по теме, в т.ч. и дополненная комментариями?
2. DenisCh 10.08.15 10:49 Сейчас в теме
Спасибо.
Новой (для меня) информации - немного, но всё очень систематизировано.
Добавил в закладки, спасибо ещё раз.
dragonCat; +1 Ответить
3. DexterMorgan777 3 10.08.15 11:31 Сейчас в теме
Спасибо. Добавил в закладки.
4. Yashazz 2905 10.08.15 14:36 Сейчас в теме
Совершенно ничего нового, но какая статья, чёрт побери, прям всем смотреть и учиться так публикации готовить. Приятно видеть грамотную работу. Может, по размышлении свои 5 копеек подкину, а пока однозначный плюс. Вот это уровень, это подход! Браво!
TeMochkiN; bulpi; Taktic; artbear; Fox-trot; Evil Beaver; baton_pk; +7 Ответить
5. Yashazz 2905 10.08.15 15:12 Сейчас в теме
Кстати, коллеги, если я верно помню, в ком-соединении до сих пор не работают функции "Тип" и "ТипЗнч", и только относительно недавно заработала "ЗначениеЗаполнено" (да и то за 8.2 не поручусь). Ну и "Выполнить" тоже не хотела фурычить. Это так?
6. Yashazz 2905 10.08.15 15:30 Сейчас в теме
И ещё, из области экзотики. Был у нас ком-обмен на 8.2 в толстом клиенте, читавший данные из конфы в режиме совместимости 8.1, обычный внутрипроцессный COMConnector. Релиз уже точно не скажу, что-то вроде 19.102.
И была там структура, заполняемая всяким разным, в т.ч. ком-объектами, и хранимая путём кэширования повторного использования, в рамках сеанса. Ну, тогда так сделали. Так вот, вроде бы ком-объекты сохранялись все, НО: последний по времени добавления ключ структуры всегда получал значение предпоследнего, если сам являлся ком-объектом. Т.е. код вида:
стру=Новый Структура;
стру.Вставить("КомОбъект1",ком1);
стру.Вставить("ПростоеЧисло",666);
стру.Вставить("КомОбъект2",ком2);
всегда давал по возвращении этой структуры, что значение в ключе "КомОбъект2" равно 666. Как только последним в структуре оказывался не ком, а нечто иное, эффект пропадал. Два ком-значения, поставленные последним и предпоследним, давали тот же эффект - 1С их приравнивала первому предыдущему не-ком-значению. Если такового не было, то все, кроме последнего, опять были нормальные. Во, чего бывало.
8. DoctorRoza 11.08.15 08:55 Сейчас в теме
Статья рискует быть честно скоммунизжена перепечатана в учебники 1С. :)
wowik; Fynjy; bulpi; maksa2005; CSiER; EmpireSer; Evil Beaver; Yashazz; +8 Ответить
9. avto1c 11.08.15 11:32 Сейчас в теме
Через веб-сервисы значительно быстрее обмен идет, но требует более грамотного сопровождения, в том числе админского при обновлении платформы.
11. tormozit 5638 11.08.15 11:48 Сейчас в теме
(9) С таким утверждением не соглашусь, т.к. оно слишком категоричное. Однако бесспорно обмен через веб-сервисы в каких то случаях будет значительно быстрее аналогичного через COM. В статье в частности указан недостаток COM по сравнению с веб-сервисом "Высокие затраты на подключение/инициализацию, поэтому при отсутствии кеширования неэффективно для частых мелких вызовов". Например, если передавать по одному мелкому объекту за вызов, то веб-сервис будет значительно быстрее COM без кеширования.
artbear; Yashazz; +2 Ответить
12. Yashazz 2905 12.08.15 08:48 Сейчас в теме
(9) avto1c, учитывая, какую кучу барахла тянет с собой SOAP и сколько втихаря бесконтрольно вытворяет - имхо, COM управляемее. Хотя, как уже верно сказали, всё имеет плюсы и минусы.
10. Evil Beaver 6402 11.08.15 11:47 Сейчас в теме
Люто, люто плюсую и выказываю всяческий респект!
13. Gridleak 12.08.15 12:39 Сейчас в теме
Спасибо, все очень четко расписано. Вопрос: какие права должны быть у пользователя, от имени которого работает COM-приложение?
14. tormozit 5638 12.08.15 15:13 Сейчас в теме
(13) Под COM-приложение имеется ввиду Automation-сервер или внепроцессное COM+ приложение? Под "должны быть" имеется ввиду "какие права получит приложение" или "какие права нужны приложению для выполнения какой то задачи"?
15. Gridleak 13.08.15 11:47 Сейчас в теме
В статье, в разделе "Управление COM+ приложениями" через оснастку dcomcnfg.exe, есть фраза "Далее необходимо указать пользователя, от имени которого будет работать COM+ приложение, на закладке Идентификация (Identity)." Меня интересует - какие минимально необходимые права должны быть у этого пользователя?
16. tormozit 5638 13.08.15 12:02 Сейчас в теме
(15) Это определяется тем, какие задачи будут решаться во внешних соединениях. По умолчанию выбрана системная учетная запись <InteraciveUser>, т.е. интерактивно вошедший пользователь. Можно указать LocalService (Локальная служба), как самую безопасную из системых. Можно указать NetworkService (Сетевая служба), если требуется доступ к сетевым ресурсам. Можно создать и назначить новую учетную запись и добавлять ей права по мере необходимости.
17. Gridleak 13.08.15 12:31 Сейчас в теме
18. Dach 285 26.08.15 10:00 Сейчас в теме
Пару лет назад столкнулся вот с чем. Нужно было работать с 32-битным COM на стороне 64-битного сервера.

Оснастку делал как рекомендовано здесь:

http://www.steeltrace.ru/details/articleid/22/регистрация-1с-com-компонента-для-работы-с-64-битными-приложениями.aspx

Однако, оказалось, что нужно помимо всего прочего, отключить принудительную проверку доступа на закладке "безопасность".
19. tormozit 5638 26.08.15 10:24 Сейчас в теме
(18) Про разрядность у меня вроде бы четко описано в самом начале
Внепроцессное локальное (local)
Должен быть зарегистрирован класс V8X.ComConnector любой разрядности и сборки платформы.

Про
нужно помимо всего прочего, отключить принудительную проверку доступа на закладке "безопасность"

мне неизвестно. Поэтому если уж хочешь поделиться знаниями, то пожалуйста поясни причину, по которой пришлось "отключить принудительную проверку доступа на закладке "безопасность""
20. Dach 285 27.08.15 10:25 Сейчас в теме
(19)

У меня было так:

ОбъектПодключения = "V82.COMConnector";
ТекCOMПодключение = Новый COMОбъект(ОбъектПодключения);

Выдавалась ошибка "доступ запрещен"

Ошибка при вызове конструктора (COMОбъект): Access is denied.: Access is denied.

1С-ка запущена под тем же юзером, под которым компонента запущена, юзер был добавлен в owners компоненты.

Пока проверку доступа не отключил - не работало, почему так - не знаю. Релиз платформы не помню за давностью этой ошибки....
21. alex_4x 81 31.08.15 09:19 Сейчас в теме
Скажите, почему при получении цифровых значений через COM соединение иногда (не всегда) происходит следующее:
Число меняется свою разрядность и значение. Ну например было 100.20 , а по COM соединению получишь 100.199999999
Если сделать округление до нужной точности - то всё будет нормально.
Изменение разрядности не очень удивляет, но то, что происходит такое интеллектуальное изменение числового значения - просто интересен сам факт и почему же так происходит.
Если вы такой эффект не наблюдали - сделайте запрос любой и выполните его через COM на подключенной базе, а результирующую таблицу верните в вызывающий COM соединение 1С.
22. Cyberhawk 117 21.09.15 09:57 Сейчас в теме
(21) alex_4x, это давно известно и нормально (потому что дробные числа в этом случае передаются как double, и при преобразовании туда-обратно накапливается погрешность).
41. alex_4x 81 25.01.16 10:06 Сейчас в теме
(22) Cyberhawk, Ваш ответ предсказуем. Но на секундочку, при преобразовании из инта в дабл или из инта в флоат - никакой погрешности не накапливается, не придумывайте и не смешите.
Погрешность может накопиться при преобразовании из дабл значения, у которого большая точнасть в флоат с меньшей точностью, из флоата и дабла с дробной частью в инт без дробной части.
А предсказуем Ваш ответ потому, что так же это нормальным считает сама контора 1С, также как и многие другие косяки, выдавая это за "фишку". Это косяк, причем этот косяк говорит о том, что данные в процессе передачи некорректно обрабатываются. Я даже могу придумать пример, когда это приведет к фатальному для логики программы результату. Да я думаю и Вы можете придумать, тут ничего сложного нет.
При чем эта ошибка будет присутствовать даже в случае если передается таблица с типизированными типами колонок, если передается результат запроса с типизированными результатами. Короче это просто сказка.
И еще раз. Чтобы снова ту же чушь не писал, уважаемый поросенок на тракторе. От того что это давно известно - совершенно не следует что это нормально.
Если есть аргументы, почему Вы это считаете нормальным, пожалуйста потрудитесь привести эти аргументы. Развернуто и с ссылками на официальную документацию.
LordKim; bulpi; +2 Ответить
23. unoDosTres 07.10.15 09:34 Сейчас в теме
Доброго дня!
никто не сталкивался с такой проблемой по DCOM

код следующий
КомСоединитель = Новый COMОбъект(“V83.ComConnector”, ИмяКомпьютера);
ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);


Когда использую в первой строке Только ИмяКомпьютера (без указания порта кластера сервера 1с ), например se-1011 то ком Объект создается, но Connect не проходит (т.е. в переменную ВнешнееСоединение передается Неопределено), по правильной строке соединения( имею ввиду что пароль логин и реквизиты базы верные), а когда начинаю в первой строке кода писать не только ИмяКомпьютера но и Порт кластера сервера 1с (se-1011:1541), то выдает ошибку "Сервер RPC недоступен". подскажите как вообще правильно просто указывать имяКопьютера без порта или обязательно с портом, как вообще осущесnвить Внепроцессное нелокальное ком соединение, о котором упоминается в статье?
24. tormozit 5638 07.10.15 10:03 Сейчас в теме
(23) ИмяКомпьютера должно содержать буквально имя компьютера. Подключение к нему COM механизм выполняет через RPC протокол, у которого есть фиксированный порт для установки соединения. Поэтому порт там указывать не нужно.
unoDosTres; +1 Ответить
25. unoDosTres 07.10.15 10:11 Сейчас в теме
(24)
тогда не пойму почему не проходит соединение, если просто по ком пробовать соединение проходит, т.е. вот так
КомСоединитель = Новый COMОбъект(“V83.ComConnector”);
ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);

а как указал в (23) с той же строкой соединения в переменную ВнешнееСОединение возвращается неопределено?
26. unoDosTres 07.10.15 10:40 Сейчас в теме
может быть строка соединения должна быть какой то другой, у меня сейчас примерно вот так

СтрокаСоединения    = "Srvr=""se-1011:1541"";"+"Ref=""Baza1"";Usr=""ExternalUsr"";Pwd=""123456789"";";  

с такой строкой спокойно подключается по локальному КОМ, может нужно ключи какие то в строкусоединения дописывать для Dcom?
30. tormozit 5638 07.10.15 12:19 Сейчас в теме
(26) Никаких отличий в строке соединения к серверу 1с не требуется, т.к. она применяется непосредственно внутри процесса на DCOM сервере.
27. unoDosTres 07.10.15 11:03 Сейчас в теме
что заметил из отладки так это вот что

если создавать ком объект вот так
КомСоединитель = Новый COMОбъект(“V83.ComConnector”
, то вот что по нему в отладчике выходит


а если создавать вот так
КомСоединитель = Новый COMОбъект(“V83.ComConnector”, ИмяКомпьютера);

то в отладчике следующая картина

почему порты кластера серверов не заполняются при dcom?
28. tormozit 5638 07.10.15 11:38 Сейчас в теме
(27) Это порты по умолчанию. Если создать объект локально на том компьютере, который выступает в роли DCOM сервера, то какие будут значения?
unoDosTres; +1 Ответить
29. unoDosTres 07.10.15 12:09 Сейчас в теме
(28)

Если создать объект локально на том компьютере, который выступает в роли DCOM сервера то следующие

31. tormozit 5638 07.10.15 12:23 Сейчас в теме
(27) Какая версия платформы и операционная система? Возможно причина в сетевом экране.
32. unoDosTres 07.10.15 12:24 Сейчас в теме
ИЗначально я пробовал с базы на земле подключится к базе в облаке, Сейчас попробовал подключится в обратную сторону по Дком с облака на Землю, так подключение проходит, видимо в облаке что то недонастроено по службе Дком, спасибо за помощь, Сергей, буду копать в настройках Дком на стороне облака
33. tormozit 5638 07.10.15 12:29 Сейчас в теме
(32) Не забудь поделиться с нами результатами раскопок.
34. unoDosTres 08.10.15 14:16 Сейчас в теме
(33)
в результате помог почему то снос службы КОМ (именно КОМ а не дком) и повтрная его установка.

вообще обменом dCOM оказался недоволен, само соединение происходит относительно быстро порядка 5-7 секунд, (использовал dCOM для ХМЛ обмена), а вот само создание документов на основе правил занимает много времени, интервал между созданием документов от 30 сек до 1 минуты (в итоге порядка 38 объектов в базу грузилось минут 13), в то время если это выполнять вручную выгрузить в файл ХМЛьку потом открыть универсальный обмен и загрузить ХМЛьку в базе приемнике это занимает порядка 20--30 сек в общем.
ранее когда обе базы находились на земле обмен по Com происходил тоже быстро. печаль в общем, придется пробовать веб-сервис видимо, а так не хочется
35. tormozit 5638 08.10.15 14:30 Сейчас в теме
(34) Странно. Вроде бы я в статье причины наблюдаемых тобой неудобств описал. Обойти их можно применяя принцип "минимум COM-вызовов". Очевидно ты его не стал применять. Мы же его успешно и широко применяем. Поэтому веб-сервисы делаем только там, где они сильно выигрывают.
36. unoDosTres 08.10.15 21:35 Сейчас в теме
(35)
ну да тут ты прав, использование просто универсального обмена никакого отношения к принципу "минимума com-вызовов" не имеет ) там конечно же все шуруется через обращение к ком объекту и вызывает как и описано в статье "маршалинг и демаршалинг"
37. unoDosTres 11.10.15 12:58 Сейчас в теме
(35) еще раз внимательно перечитал статью.
в общем переделал алгоритм обмена в типовой универсальной обработке обмена ХМЛ, там основной косяк был в том что сколько объектов выгружалось (чтение в фалеобмена ПКО и ПКС..) столько раз и происходило обращение к комОбъекту, этот код был перенесен на сторону базы приемника (создано две новые экспортные процедуры и вызовз одной из них был сделан единожды как обращение ком), что значительно ускорило обмен. также было в обработке дописан вариант соединения по DCOM (это значительно ускорило соединение земля-облако с 5 минут время упало до 5 секунд по сравнению с обычным Com). в результат изменения обмен по нужным правилам обмена удалось сократить до 2 минут. спасибо за статью, Сергей
38. tormozit 5638 14.12.15 18:42 Сейчас в теме
Добавлен раздел "Настройка DCOM-сервера / Настройка сетевого экрана"
39. tormozit 5638 17.12.15 19:12 Сейчас в теме
Добавлен раздел "Привязка COM классов к dll-файлам"
40. tormozit 5638 27.12.15 00:57 Сейчас в теме
Добавлен раздел "Подключение Automation-сервера (OLE)"
57. M_Volkov 2 18.07.19 17:04 Сейчас в теме
(40)
Добавлен раздел "Подключение Automation-сервера (OLE)"
Куда добавлен, и как, где почитать подробнее? Основной вопрос в (56).
58. tormozit 5638 18.07.19 23:22 Сейчас в теме
(57) А к чему относятся эти комментарии? В то и добавлен. В любом браузере есть функция поиска по тексту страницы. Вставляй туда эту строку и он тебе покажет нужное место.
59. M_Volkov 2 19.07.19 05:13 Сейчас в теме
(58) Извиняюсь за свой глупый (заданный впопыхах), искал ответ на вопрос: Возможно ли в консоли Службы компонентов создать обертку OLE соединения V83.Application (56)?
В разделе "Подключение Automation-сервера (OLE)" ответ не нашел. Спс, что откликнулись.
42. tormozit 5638 26.01.16 16:57 Сейчас в теме
Добавлен раздел "COM классы платформы"
43. tormozit 5638 09.02.16 17:49 Сейчас в теме
В разделе "Минимизация количества COM-вызовов" добавлен пример универсальной передачи файла.
44. tank68 17 24.03.16 10:08 Сейчас в теме
При обновлении сервера 1с не однократно нарывался что не корректно регистрируются DLL спасают
regsvr32 "C:\Program Files\1cv8\Папка с версией\bin\comcntr.dll"
regsvr32 "C:\Program Files (x86)\1cv8\\Папка с версией\bin\comcntr.dll"
Например если версия 8.3.6.2014 то выглядит так:
regsvr32 "C:\Program Files\1cv8\8.3.6.2014\bin\comcntr.dll"
45. tormozit 5638 13.05.16 17:26 Сейчас в теме
Прошу поправить меня в новом абзаце, если он не точен
Привязка имен классов к dll-файлам кэшируется (запоминается) в процессе ОС. Поэтому, если процесс обратился к COM-классу, то он закэшировал (запомнил) привязку. Если после этого измененить (зарегистрировать) в реестре новую привязку, то чтобы такой процесс ее увидел, потребуется его перезапуск.

46. dr2c 37 16.01.17 12:40 Сейчас в теме
Обновил платформу до 8.3.9.2033
Сервер у нас х64 на Лине.
При попытке произвести обмены между базами (стандартные или универсальный xml) стали появляться сообщения "При попытке соединения с COM-сервером произошла следующая ошибка:
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13798)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса"
regsvr32 делал.
Данный метод (регистрации 1С в качестве COM+ приложения)- для сервера на Win.
А, что делать с Lin?
47. dr2c 37 16.01.17 12:45 Сейчас в теме
(46) А может линь и не причем. сейчас попробовал обменяться м/у двумя файловыми базами- тоже самое...
gubanoff; +1 Ответить
48. disa_da 17.03.17 13:59 Сейчас в теме
"2. Разные сборки платформы клиента и сервера при одинаковом издании платформы
a. Для обхода для каждой отличной от COM-клиента сборки платформы назначаем и настраиваем DCOM сервер"

Уточните, пожалуйста, способ решения проблемы подключения к разным версиям платформы одного издания на одном сервере (например, 8.3.5 и 8.3.6):
- что значит "назначаем и настраиваем DCOM сервер"?
- как после этого будет выглядеть создание COM объекта ("Новый COMОбъект("КакоеДругоеИмяАНеV83.ComConnector)")?
49. trio-tlt 15.07.17 09:49 Сейчас в теме
Сергей, прошу добавить в статью:

Компонента comcntr.dll и другие компоненты платформы используют несколько статически линкуемых библиотек, например, core83.dll. В процесс возможно загрузить только один экземпляр такой библиотеки. Поэтому, например, из платформы 8.3.8 не получится воспользоваться comcntr.dll версии 8.3.9.
Другими словами из клиента 1С 8.3.8 не получится подключиться базе на сервере 8.3.9 без дополнительных трудностей. Клиент 1С 8.3.8 при запуске подгружает core83.dll версии 8.3.8, и при попытке создать СОМ объект версии 8.3.9 получается ошибка "Версия компоненты 'comcntr' (8.3.8.2167) отличается от версии корневого модуля 'core83' (8.3.9.2466)".
Обойти это можно, если создавать СОМ объект ВНЕ процесса клиента 1С:
1) Создать внепроцессное СОМ+ приложение(см. этой статье)
2) Использовать V83.Application - здесь создается отдельный процесс, в рамках которого comcntrl.dll и core83.dll будут одной версии.
56. M_Volkov 2 18.07.19 12:40 Сейчас в теме
(49)
Использовать V83.Application

Понадобилась 2-я платформа 8.3 более высокой версии (для КА2.4, а Альфа-Авто более чем 8.3.10 не работает), и все Com-обмены между базами, работающих на разных платформах, рухнули. Попалась одна статья: COM соединения с базами 1С на различных версиях платформы "Без перерегистрации и СМС". По ней создал обертку COM соединения V83.COMConnector, но она меня не устраивает: с ограниченными возможностями, запускается небольшая серверная часть. Возможно ли в консоли Службы компонентов создать обертку OLE соединения V83.Application, или перенастроить имеющуюся COM соединения V83.COMConnector?
Прикрепленные файлы:
50. trio-tlt 15.07.17 10:50 Сейчас в теме
Решил свою проблему "Версия компоненты 'comcntr' (8.3.8.2167) отличается от версии корневого модуля 'core83' (8.3.9.2466)"
Сделал отдельное СОМ+ приложение (см главу "Управление COM+ приложениями 1С") и все получилось.

Огромное спасибо!
51. identificator 18 16.07.17 19:41 Сейчас в теме
Не получается получить свойство Метаданные.Версия по COM-соединению V83.ComConnector
Возникает ошибка
52. b-dm 169 07.08.17 15:27 Сейчас в теме
Отличная статья,прекрасно объяснено!
53. agaraev 18.03.18 18:45 Сейчас в теме
Спасибо за статью! Очень помогло!
54. wowik 620 01.07.18 10:34 Сейчас в теме
в баннере мой заначек, я его сам когда-то рисовал) - https://infostart.ru/public/164976/
55. kholkin 54 10.06.19 11:08 Сейчас в теме
Подскажите, а есть какие-то статьи, публикации, дополнительные источники информации по "неизвестной ошибке". Как можно диагностировать точную причину ее возникновения, может быть как-то настроить ТЖ? У заказчика периодически возникают такие ошибки, но не можем понять в чем причина.
60. romulanin 05.09.19 11:41 Сейчас в теме
где можно взять ПО управление ком классами как на скриншоте ?
61. tormozit 5638 05.09.19 12:06 Сейчас в теме
(60) На скриншоте форма коммерческого продукта "2iS Интеграция". Есть менее функциональный аналог (без управления COM+ приложениями) этого инструмента в подсистеме Инструменты разработчика. Называется "Управление COM классами 1С".
Оставьте свое сообщение

См. также

Конвертация ставок НДС: из Перечисления в Справочник (правила обмена в конвертации 2.0) 3

Статья Программист Нет файла v8 КД Россия НДС Бесплатно (free) Перенос данных из 1C8 в 1C8

При написании правил обмена между "более старой" и "более новой" конфигурациями можно столкнуться с тем, что в одной конфигурации ставки НДС - это перечисление, а в другой - справочник (или наоборот, но мой пример именно из перечисления в справочник). Ситуация несложная, но нестандартная, поэтому выкладываю работающий пример, может, кому пригодится.

09.11.2019    1393    vikulinamari    1       

Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.

29700 руб.

Настройка синхронизации между конфигурациями Бухгалтерия для Беларуси 2.1 и Управление торговлей для Беларуси 3.4 2

Статья no Нет файла v8 БП3.0 УТ11 Беларусь Бесплатно (free) Перенос данных из 1C8 в 1C8

Пошаговое описание настройки типового обмена между конфигурациями Бухгалтерия для Беларуси 2.1 и Управление торговлей для Беларуси 3.4

21.10.2019    1797    OlesiaM    1       

Объединение организаций в ЗУП при реорганизации с переносом данных из ЗУП 2.5 в ЗУП 3.1 10

Статья Программист Нет файла v8 v8::СПР ЗУП2.5 ЗУП3.x БУ Бесплатно (free) Зарплата Управление персоналом (HRM) Перенос данных из 1C8 в 1C8

В этой статье описан опыт объединения 2-х организаций при реорганизации в ЗУП 3.1 с переносом данных одной организации из ЗУП 2.5 (релизы баз более или менее свежие, но не самые последние на момент перехода, примерно двух- и трехмесячной давности). За основу было взято решение из этой статьи https://infostart.ru/public/833658/, в которой описан алгоритм решения задачи, за что автору статьи огромная благодарность! Здесь же даны некоторые комментарии и пояснения к алгоритму переноса и объединения, описаны выявленные мною ошибки. Также приведена небольшая инструкция по использованию обработки ирПодборИОбработкаОбъектовБД — она будет полезна для пользователей — «не программистов», впервые работающих в не управляемых формах.

09.10.2019    2057    Neti    0       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

EnterpriseData: простой способ защиты данных в базе получателя при одностороннем обмене 22

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Перенос данных из 1C8 в 1C8

Очень часто бухгалтеры ругаются, когда уже отраженные документы в бухгалтерском учета меняются сотрудниками.

04.10.2019    2943    handscenter    12       

Дозагрузка измененных данных при помощи КД2 7

Статья Программист Нет файла v8 Россия Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Иногда во время каких-то регламентных действий по обслуживанию базы(например, при обновлении измененной базы на много релизов) требуется обеспечить бесперебойность работы пользователей. Если конфигурации баз до и после идентичны, то тут сам Бог велел воспользоваться обработкой "ВыгрузкаЗагрузкаДанныхXML", либо такой же но с отбором(на Инфостарте есть такая). Но что если конфигурации баз различаются/значительно различаются? Ниже опишу, как вышел из положения я.

12.09.2019    2138    al_zzz    2       

Очный семинар по регулярному менеджменту Александра Фридмана "Вы или Хаос", 12 декабря 2019 г. , Санкт-Петербург Промо

Семинар по регулярному менеджменту от Александра Фридмана для собственников, первых лиц и топов. Технология управленческого планирования, комплексного управления временем и другими ресурсами, выполнением поручений, делами, информацией, контактами (встречи-звонки-почта).

от 11000 до 29000 рублей

Конвертация Данных. Нюансы использования конструкции "НеЗамещатьОбъект = Истина" в обработчике события "ПриЗагрузке" 29

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8

У конвертации данных есть «особенности», которые «пьют кровь» программистов. Эта статья про очередную обнаруженную «особенность».

10.09.2019    3203    ivanek    21       

Обмен данными через Web Сервисы 83

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Ознакомительная статья о том, как загружать\выгружать данные с одной базы в другую, используя Web Сервисы.

02.09.2019    6448    user5300    29       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Выгрузка и загрузка документов с движениями 13

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8

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

02.09.2019    2450    human_new    7       

EnterpriseData – часть 3. Загрузка данных, идентификация объектов 64

Статья Программист Нет файла v8 v8::УФ 1cv8.cf ОС Бесплатно (free) Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    5293    ids79    7       

Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо

Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.

29700 руб.

Перенос дополнительных реквизитов в Конвертации данных 2.0 18

Статья Программист Нет файла v8 КД Россия УУ Бесплатно (free) Перенос данных из 1C8 в 1C8

Пример написания правил обмена (КД 2.0) для переноса дополнительных реквизитов справочника "Номенклатура", в том числе перенос ПВХ с разными типами значений.

13.08.2019    3368    vikulinamari    6       

Синхронизация данных между 1С: ЗУП 3.1 и Бухгалтерией 3.0 через файл 1

Статья Программист Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Перенос данных из 1C8 в 1C8

Публикация описывает последовательность синхронизации данных между 1С: ЗУП 3.1 и Бухгалтерией 3.0 через файл.

23.04.2019    4338    saveliev    3       

Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500/9500 рублей

Полезные приемы при работе с Конвертацией данных 2.1. Логирование, интерактивное управление, дозаполнение и постпроведение документов 44

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8

Некоторые полезные приемы для КД 2.1, которые могут пригодиться как при доработке типовых правил, так и самописных.

22.04.2019    5125    maks_20    9       

Как прикрутить ГУИД к регистру сведений 23

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    10431    m-rv    16       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Работа с ComОбъектом 1С 8.2; 8.3 101

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Определение типов и значений через COM соединение между конфигурациями.

15.04.2019    12288    vik070777    12       

Обмен данными между УПП 1.3.64.х и БП 3.0 по расписанию через Универсальный обмен данными + План обмена 2

Статья Программист Нет файла v8 УПП1 Россия Windows Бесплатно (free) Обмен через XML Перенос данных из 1C8 в 1C8

Описание доработки конфигурации УПП 1.3.64.х для выполнения обмена данными по расписанию в БП 3.0. через обработку Универсальный Обмен Данными XML и План Обмена.

09.04.2019    3284    mrcamomile    0       

Онлайн-интенсив "Бизнес-процессы для подготовки к экзамену 1С:Специалист по платформе" 12 декабря 2019 г. Промо

На интенсиве будут рассмотрены все теоретические вопросы, связанные с устройством механизма бизнес-процессов – это необходимо для успешной сдачи экзамена 1С:Специалист по платформе. Также, в качестве практического примера, будет решена задача, аналогичная экзаменационной.

777 рублей

RabbitMQ + Конвертация Данных 3.0 181

Статья Системный администратор Программист Бизнес-аналитик Руководитель проекта Нет файла v8 КД Бесплатно (free) Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8

Предлагаем ознакомиться с хронологией проекта, проследить ход мыслей от снятия потребностей до реализации, и решить, удалось ли проектной команде найти оптимальное архитектурное решение под конкретный кейс заказчика путем совмещения двух известных, но до сих пор не пересекавшихся технологий, и получилось ли сложить плюсы и устранить минусы каждой из них.

21.03.2019    15548    barelpro    82       

Конвертация данных 2.1: поиск по условию 19

Статья Программист Нет файла v8 КД ERP2 Windows Бесплатно (free) Перенос данных из 1C8 в 1C8

Задача. При обмене документами "Реализация товаров и услуг", поиск контрагента осуществлять по полям "ИНН", "КПП". Если вид договора с комиссионером, то поиск осуществлять по полям "ИНН", "КПП", "Наименование".

15.01.2019    7361    wowik    13       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Проверка COM-соединения 7

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Сервисные утилиты

Универсальная внешняя обработка (СДРПроверкаCOMСоединения) для проверки COM-соединения с базами 1С и прочими COM-объектами. Платформа 8.3, управляемые формы. Версия 007 от 19.10.2019

1 стартмани

23.12.2018    4911    39    ROL32    1       

Заметки КД 2.1: Как передать файл, динамически создаваемый в источнике, в справочник присоединенных файлов приемника 25

Статья Программист Нет файла v8 КД Россия Windows Бесплатно (free) Перенос данных из 1C8 в 1C8

В БП 3.0 есть документ "Книга Продаж Для Передачи В ЭлектронномВиде" из которого выгружается XML файл. Задача: Нужно из БП 3.0 посредством правил обмена, вместе с документом книга продаж сформировать и перенести XML файл в базу приемник. В приемнике файл будет храниться в справочнике "Книга Продаж Присоединенные Файлы".

10.10.2018    6098    Viktor_Ermakov    6       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.

29700 руб.

Практические рекомендации по настройке бесшовной интеграции 1С:ERP и 1С:Документооборот КОРП 41

Статья Системный администратор Программист Нет файла v8::Бизнес-процессы ERP2 Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

В настоящей статье мы пошагово рассмотрим, как настроить бесшовную интеграцию 1С:Документооброт КОРП (1С:ДО) с 1С:ERP.

28.09.2018    12171    Апрель-С    7       

Планы обмена 1С 171

Статья Программист Нет файла v8 Бесплатно (free) Перенос данных из 1C8 в 1C8

В статье - мастер-классе Дмитрий Жичкин рассказывает, для чего нужны планы обмена 1С и какие задачи они решают. Он подробно описывает физическую структуру планов обмена и механизмов регистрации изменений, рассматривает основные проблемы, возникающие при выгрузке изменений и предлагает методы их решения.

10.09.2018    35154    zhichkin    18       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

Конвертация 2.0. Обмен данными между справочниками по сопоставлению артикулов с помощью регистра сведений (пример). 13

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Пример обмена данными между справочниками по сопоставлению артикулов с помощью регистра сведений

27.08.2018    5326    Lyubogradov.P    0       

Альтернатива переноса ТЗ в конвертации данных 2.1 5

Статья Программист Нет файла v8 КД Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Здравствуйте уважаемые. Решил выложить альтернативный способ переноса данных в конвертации данных из источника к приемнику, с последующим сбором их в ТЗ в месте ПослеЗагрузки. Т.е.можно готовый перенесенный объект доработать либо создать что-то еще на базе данных. Метод сам разработан с учетом простого понимания Конвертации без использования всех её многочисленных тонкостей и сложностей. В примере рассматривается перенос Операции. И вот еще что. Я не привожу тут готовое решение, я всего лишь показываю концепцию того, как можно делать в КД. Без использования глобальных переменных.

20.08.2018    4747    dinopopyys    6       

С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо

Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.

Конвертация 2.0. Перенос независимого справочника в подчиненный (пример). 9

Статья Программист Нет файла v8 КД Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Пример переноса независимого справочника в подчиненный с помощью Конвертации 2.0.

15.08.2018    6360    Lyubogradov.P    6       

Конвертация 2.0. Перенос элементов и групп справочника, имеющих различный вид иерархии (пример). 12

Статья Программист Нет файла v8 КД Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Пример переноса справочника, имеющего различный вид иерархии, с помощью Конвертации 2.0.

13.08.2018    6219    Lyubogradov.P    0