Как исправить ошибки при переносе данных из Торговли и склад 7.7 в Бухгалтерию предприятия 3.0

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

Перенос данных из устаревших систем учета, таких как 1С:Торговля и склад 7.7 (ТиС), в современные конфигурации на платформе 1С:Предприятие 8.3 (например, 1С:Бухгалтерия предприятия 3.0) часто превращается в серьезную проблему для программистов и системных администраторов. Поскольку фирма «1С» давно прекратила активную поддержку и тестирование правил обмена для платформы 7.7, стандартный файл правил Tr9Ac830.xml содержит множество несовместимостей с современными релизами БП 3.0.

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

1. Ошибка инициализации «КомиссияПоСтрокамТабличнойЧасти»

При попытке загрузить XML-файл в современный релиз БП 3.0 пользователи часто сталкиваются с фатальной ошибкой встроенного языка в обработчике события ПередЗагрузкойДанных: Поле объекта не обнаружено (КомиссияПоСтрокамТабличнойЧасти).

Выясним причину этой ошибки. В старых версиях правил обмена коллекция Параметры инициализировалась как объект типа Соответствие, что позволяло использовать динамическое создание свойств через обычное присвоение. В современных версиях Библиотеки стандартных подсистем (БСП) в БП 3.0 эта коллекция принудительно приводится к типу Структура. В платформе 1С попытка обратиться к несуществующему ключу структуры через точку вызывает фатальный сбой.

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

  1. Откроем файл правил обмена Tr9Ac830.xml в текстовом редакторе (рекомендуется использовать Notepad++ для корректной работы с большими файлами).
  2. Найдем строку, инициализирующую данный параметр: //Параметры.КомиссияПоСтрокамТабличнойЧасти = Новый Соответствие;
  3. Заменим ее на корректную инициализацию свойства структуры: Параметры.Вставить("КомиссияПоСтрокамТабличнойЧасти", Новый Соответствие);

Полезный совет: Если выгружаемый файл данных имеет огромный размер (более 300 Мб), редактировать его вручную может быть затруднительно. В этом случае вы можете воспользоваться внешней обработкой «Универсальный обмен данными XML» (версии 2.1.8 или выше). Запуск обмена через внешнюю обработку позволяет обойти жесткие ограничения БСП встроенного механизма загрузки, и процесс проходит успешно без ручной правки XML.

2. Ошибка метода «ЗаполнитьСчетаУчетаВТабличнойЧасти»

Другим камнем преткновения является ошибка при загрузке документов поступления (например, Поступление товаров и услуг): Метод объекта не обнаружен (ЗаполнитьСчетаУчетаВТабличнойЧасти).

Проанализируем ситуацию. В ранних версиях БП 2.0 процедуры заполнения счетов учета в табличной части находились непосредственно в Модуле объекта документа и были доступны напрямую. С переходом БП 3.0 на управляемые формы и клиент-серверную архитектуру разработчики перенесли эти процедуры в Модуль менеджера документа, ограничив их область действия директивой компиляции #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда.

Поскольку при загрузке из XML создается непосредственно объект документа, вызов метода через контекст Объект.ЗаполнитьСчетаУчетаВТабличнойЧасти более не работает. Чтобы решить эту проблему, нам нужно переписать вызовы методов в правилах обмена (в обработчиках «После загрузки объекта» для соответствующих ПКО):

3. Удаление классификатора ОКАТО и ошибки сопоставления

При переносе справочника Организации или контрагентов загрузка может прерваться из-за отсутствия реквизита КодПоОКАТО.

Дело в том, что в последних релизах БП 3.0 фирма «1С» полностью исключила классификатор ОКАТО из метаданных многих объектов, перейдя на более актуальный классификатор ОКТМО. Старые правила обмена из ТиС 7.7 все еще пытаются передать и сопоставить этот реквизит.

Решить эту проблему можно двумя путями:

  1. Удалить строки, содержащие упоминание КодПоОКАТО, непосредственно из XML-файла выгруженных данных или из самого файла правил обмена.
  2. Открыть правила обмена в конфигурации Конвертация данных 2.0, найти ПКО Организации, перейти на вкладку «Правила конвертации свойств» (ПКС) и снять флаг активности с реквизита КодПоОКАТО.

4. Список критических изменений метаданных в БП 3.0.31+

С выходом обновлений БП 3.0 многие реквизиты документов и справочников были переименованы, помечены на удаление или перенесены в другие общие модули. Рассмотрим сводную таблицу необходимых исправлений в правилах обмена:

  1. Перечисление видов ставок ЕСН и ПФР: Вместо старого значения ПеречислениеСсылка.ВидыСтавокЕСНиПФР теперь нужно использовать переименованное системное значение ПеречислениеСсылка.УдалитьВидыСтавокЕСНиПФР.
  2. Заполнение услуг в реализации: Вместо устаревшего вызова метода объекта Объект.ЗаполнитьСчетаУчетаВТабЧастиУслуги(Истина); следует использовать вызов через менеджер:
    
    Документы.РеализацияТоваровУслуг.ЗаполнитьСчетаУчетаВТабличнойЧасти(Объект, "Услуги");
    
  3. Расчет суммы НДС: Вызовы функций общего модуля УчетНДС.ПолучитьСуммуДокументаСНДС(...) необходимо перенаправить на переопределяемый модуль: УчетНДСПереопределяемый.ПолучитьСуммуДокументаСНДС(...).
  4. Получение текущего пользователя: Вместо устаревшей функции 7.7/8.1 глЗначениеПеременной("глТекущийПользователь") используйте современный вызов прикладного интерфейса БСП: Пользователи.ТекущийПользователь.
  5. Документ перемещения: В современных релизах БП 3.0 объект ПеремещениеТМЦ был разделен. Ссылки вида ДокументСсылка.ПеремещениеТМЦ в кодовой базе правил обмена необходимо переписать на ДокументСсылка.ПеремещениеТоваров.
  6. Счет-фактура выданный: Табличная часть ДатаНомерДокументовОплаты в актуальных релизах переименована в ПлатежноРасчетныеДокументы. Также метод инициализации параметров Объект.ОпределениеПараметровСчетаФактуры; был заменен разработчиками на Объект.ОпределениеПараметровСчетаФактурыНаРеализацию;.

5. Проблема разделителя ИНН/КПП («\») и дублирования организаций

Часто при импорте контрагентов или собственных организаций в БП 3.0 создаются дубли с пустыми реквизитами. Проанализируем причину этого явления.

В базах 1С:Торговля и склад 7.7 ИНН и КПП часто записывались в одно строковое поле через обратный слэш (например, 7701020304\770101001). Стандартный алгоритм парсинга ИНН в правилах обмена пытается выделить ИНН по количеству символов, но из-за некорректных пробелов или нестандартного формата записи захватывает символ слэша \ и часть символов КПП. Поиск по такому некорректному ИНН в БП 3.0 не дает результатов, и система создает новую (дублирующую) карточку контрагента.

Для исправления этого алгоритма в правилах обмена (ПКО Контрагенты/Организации, перед выгрузкой ИНН) рекомендуется использовать следующий скорректированный код:


Если Источник.ЭтоГруппа = 0 Тогда
    Если (Источник.ЮрФизЛицо.Вид = "ЮрЛица") Или (Источник.ЮрФизЛицо.Вид = "СвоиЮрЛица") Тогда
        ИНН = Лев(Источник.ЮрФизЛицо.ИНН, 10);
    ИначеЕсли Источник.ЮрФизЛицо.Вид = "ФизЛица" Тогда
        ИНН = Лев(Источник.ЮрФизЛицо.ИНН, 12);
    КонецЕсли;
    Значение = ИНН;
Иначе
    Отказ = 1;
КонецЕсли;

Также обратите внимание на сопоставление кодов организаций. Код организации в БП 3.0 должен строго соответствовать коду этой же организации в базе ТиС 7.7. Если в интерфейсе БП 3.0 поле Код скрыто, его можно вывести через команду «Еще – Изменить форму».

6. Автоматическое проведение документов при загрузке

По умолчанию все документы из ТиС 7.7 загружаются в БП 3.0 в непроведенном состоянии. Бухгалтерам приходится вручную заходить в каждый документ и проводить его, что существенно замедляет работу. Как автоматизировать этот процесс?

Мы можем создать в конфигурации БП 3.0 новую подписку на событие ПослеЗаписиДокумента. В обработчике этой подписки мы можем прописать программное проведение загруженных документов:


Процедура ПослеЗаписиДокументаПриОбмене(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    // Проверяем, что запись происходит в режиме загрузки данных обмена
    Если Источник.ОбменДанными.Загрузка Тогда
        Попытка
            Если Источник.Проведен = Ложь Тогда
                Источник.Записать(РежимЗаписиДокумента.Проведение);
            КонецЕсли;
        Исключение
            // Записываем ошибку проведения в журнал регистрации
            ЗаписьЖурналаРегистрации("ОбменДанными.Проведение", УровеньЖурналаРегистрации.Предупреждение,,, ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
КонецПроцедуры

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

7. Где найти «Универсальный обмен данными XML» в БП 3.0

В современном интерфейсе «Такси» конфигурации БП 3.0 стандартная обработка для загрузки XML-данных скрыта от обычных пользователей. Чтобы запустить ее, выполните следующие шаги:

  1. В главном меню программы откройте раздел Сервис и настройки (значок шестеренки в правом верхнем углу).
  2. Выберите пункт Функции для технического специалиста (в старых релизах этот пункт назывался «Все функции»). Если этого пункта нет, его нужно предварительно включить в меню «Настройки – Параметры», установив флаг «Режим технического специалиста».
  3. В открывшемся окне в строке поиска введите «Универсальный обмен».
  4. Выберите из списка обработку Универсальный обмен данными в формате XML. Для удобства вы можете получить на нее навигационную ссылку и добавить в раздел «Избранное».

Заключение

Мы подробно разобрали основные технические проблемы, возникающие при интеграции устаревшей торговой системы 7.7 с актуальной бухгалтерией 8.3. Внесение точечных изменений в XML-код правил обмена Tr9Ac830.xml позволяет полностью автоматизировать перенос документов и справочников.

Тем не менее, в долгосрочной перспективе поддержка связки ТиС 7.7 - БП 3.0 будет требовать все больше ресурсов из-за постоянного развития БП 3.0. Рекомендуется рассмотреть возможность полноценного перехода с «1С:Торговля и склад 7.7» на современное решение на платформе 8.3 (например, 1С:Управление торговлей 11 или 1С:Управление нашей фирмой), где механизмы синхронизации данных поддерживаются разработчиками 1С в актуальном и работоспособном состоянии.

← На главную