Как адаптировать обработку интеграции Мегаплана от 1С:БП для работы в 1С:Управление торговлей 11

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

При настройке обмена данными между CRM-системой Мегаплан и решениями на платформе 1С предприятия специалисты часто сталкиваются с ситуацией, когда готовая внешняя обработка, предназначенная для конфигурации Бухгалтерия предприятия (БП), переносится в среду Управление торговлей (УТ). Из-за существенных различий в архитектуре этих конфигураций процесс запуска сопровождается многочисленными ошибками в запросах к базе данных.

В этой статье мы подробно разберем, почему возникают ошибки при обращении к таблицам изменений документов и регистров сведений, как адаптировать старый код обработки БП под метаданные УТ 11, а также рассмотрим современную альтернативу в виде официального бесплатного модуля интеграции.

Анализ и решение ошибки отсутствия таблицы «СчетНаОплатуПокупателю.Изменения»

При первой попытке загрузки счетов из Мегаплана в 1С:Управление торговлей вы можете столкнуться со следующей ошибкой выполнения запроса:


{ВнешняяОбработка.СинхронизацияМегаплан.Форма.ЗагрузкаСчетовИзМегаплана.Форма(938)}: Ошибка при вызове метода контекста (Выполнить)
    ТЗ = Запрос.Выполнить().Выгрузить();
по причине:
{(10, 2)}: Таблица не найдена "Документ.СчетНаОплатуПокупателю.Изменения"
<<?>>Документ.СчетНаОплатуПокупателю.Изменения КАК СчетНаОплатуПокупателюИзменения

Давайте выясним причину этой ошибки. Конструкция вида Документ.ИмяДокумента.Изменения представляет собой обращение к виртуальной таблице регистрации изменений конкретного объекта в планах обмена. Ошибка возникает по двум ключевым причинам:

  1. Различие в именах объектов метаданных: В конфигурации Бухгалтерия предприятия основной документ для выставления счетов называется СчетНаОплатуПокупателю. Однако в конфигурации Управление торговлей 11 этот объект переименован разработчиками фирмы «1С» и носит имя СчетНаОплатуКлиенту.
  2. Регистрация в планах обмена: Для того чтобы виртуальная таблица .Изменения существовала и была доступна в запросе, соответствующий документ должен быть включен в состав используемого плана обмена в качестве объекта авторегистрации.

Для исправления этой ошибки выполним следующие шаги в конфигураторе:

  1. Откроем внешнюю обработку в режиме конфигуратора и перейдем к коду формы ЗагрузкаСчетовИзМегаплана.
  2. Найдем строку 938 (или выполним глобальный поиск по тексту Документ.СчетНаОплатуПокупателю.Изменения).
  3. Заменим имя таблицы в тексте запроса на актуальное для УТ 11: Документ.СчетНаОплатуКлиенту.Изменения.

Пример скорректированного участка кода:


// Было (ориентировано на БП):
ТекстЗапроса = 
"ВЫБРАТЬ
|	СчетНаОплатуПокупателюИзменения.Ссылка КАК Ссылка
|ИЗ
|	Документ.СчетНаОплатуПокупателю.Изменения КАК СчетНаОплатуПокупателюИзменения";

// Стало (адаптировано под УТ 11):
ТекстЗапроса = 
"ВЫБРАТЬ
|	СчетНаОплатуКлиентуИзменения.Ссылка КАК Ссылка
|ИЗ
|	Документ.СчетНаОплатуКлиенту.Изменения КАК СчетНаОплатуКлиентуИзменения";

Анализ и решение ошибки отсутствия регистра «СтатусыДокументов.Изменения»

После успешного исправления ошибки со счетами обработка продолжит выполнение, но прервется на следующем шаге:


{ВнешняяОбработка.СинхронизацияМегаплан.Форма.ЗагрузкаСчетовИзМегаплана.Форма(940)}: Ошибка при вызове метода контекста (Выполнить)
    ТЗ = Запрос.Выполнить().Выгрузить();
по причине:
{(27, 2)}: Таблица не найдена "РегистрСведений.СтатусыДокументов.Изменения"
<<?>>РегистрСведений.СтатусыДокументов.Изменения КАК СтатусыДокументовИзменения

Проанализируем архитектуру хранения статусов в различных конфигурациях 1С. В БП используется специализированный независимый регистр сведений СтатусыДокументов для хранения текущих состояний счетов и других первичных документов. В конфигурации УТ 11 архитектура абсолютно иная. Статусы документов (например, счетов на оплату или заказов клиентов) хранятся непосредственно внутри самих документов в виде реквизита Статус (например, перечисление СтатусыСчетовНаОплатуКлиентам со значениями НеСогласован, Согласован, Аннулирован).

Так как регистра сведений СтатусыДокументов в УТ 11 не существует, обращение к его таблице изменений вызывает закономерный сбой. Чтобы решить эту проблему, рассмотрим два варианта обхода:

Вариант 1: Исключение отслеживания изменений статусов из запроса

Если для бизнес-процессов вашей компании не критична мгновенная синхронизация изменения статусов из 1С в Мегаплан, наиболее простым решением будет полное комментирование или удаление этого участка запроса в коде обработки. Изменения по самому документу СчетНаОплатуКлиенту все равно будут регистрироваться и передаваться при обновлении реквизитов.

Вариант 2: Переписывание логики под реквизиты документа УТ 11

Если синхронизация статусов необходима, вам потребуется переписать логику формирования пакета обмена. Вместо отслеживания изменений отдельного регистра сведений, необходимо анализировать изменение реквизита Статус непосредственно в измененных документах СчетНаОплатуКлиенту. Ниже приведен пример схемы запроса для получения измененных документов вместе с их текущими статусами:


Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	СчетИзменения.Ссылка КАК Ссылка,
|	СчетИзменения.Ссылка.Статус КАК Статус
|ИЗ
|	Документ.СчетНаОплатуКлиенту.Изменения КАК СчетИзменения";
ТЗ = Запрос.Выполнить().Выгрузить();

После получения таблицы изменений вам потребуется сопоставить внутренние статусы 1С УТ 11 со статусами счетов в Мегаплане через модуль сопоставления значений в коде внешней обработки.

Использование официального модуля интеграции Мегаплана для 1С:УТ

Переделка сложной логики планов обмена и структуры запросов вручную требует глубоких знаний архитектуры обеих конфигураций. К счастью, на сегодняшний день разработчиками Мегаплана выпущен официальный специализированный модуль интеграции для 1С:Управление торговлей 11. Использование готового модуля исключает необходимость ручной правки кода.

Рассмотрим ключевые возможности и технические требования официального модуля:

Для стабильной работы официального модуля интеграции необходимо соблюдение следующих условий:

  1. Конфигурация 1С:УТ должна быть актуальной версии (поддерживаются редакции 11.4 и 11.5).
  2. Работа с внешней обработкой должна осуществляться исключительно через Тонкий клиент 1С. Работа в Веб-клиенте через браузер не поддерживается.
  3. В личном кабинете Мегаплана в разделе «Настройки» -> «Настройка» -> «Система» должен быть обязательно включен протокол защищенного соединения HTTPS.
  4. Ваш тарифный план в Мегаплане должен быть не ниже уровня «CRM: Клиенты и продажи+» или «CRM: Бизнес» (на младших тарифах доступ к API для интеграции с 1С заблокирован).

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

← На главную