Как настроить перенос проводок и данных по зарплате из ЗУП 3.1 в 1С:Бухгалтерию 7.7?

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

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

Подготовка данных и архитектурные особенности ЗУП 3.1

Прежде чем приступать к разработке механизмов выгрузки, проанализируем, где именно в ЗУП 3.1 хранятся учетные данные:

  1. Документ-источник: Основным источником данных для бухгалтерского учета выступает документ Отражение зарплаты в бухучете. В нем фиксируются начисленные суммы, удержания, НДФЛ и страховые взносы в разрезе физических лиц, подразделений и способов отражения.
  2. Справочник «Способы отражения зарплаты в бухучете»: В ЗУП 3.1 этот справочник содержит лишь текстовые наименования аналитик затрат. Номера счетов бухгалтерского учета в нем отсутствуют. Чтобы связать способы отражения со счетами 1С 7.7 (например, 20, 25, 26, 44), можно использовать шаблоны в наименованиях либо завести дополнительный реквизит сопоставления.
  3. Степень детализации: В настройках учета зарплаты можно настроить выгрузку данных сводно или с детализацией по сотрудникам. Если аналитический учет по счету 70 в Бухгалтерии 7.7 не ведется персонально по каждому работнику, сводный вариант существенно снизит нагрузку на систему и упростит обработку.

Вариант 1. Перенос данных через текстовый файл или таблицу DBF

Рассмотрим популярный и простой в поддержке способ переноса с формированием промежуточного структурированного файла. Обработка на стороне ЗУП 3.1 считывает строки документа ОтражениеЗарплатыВБухучете и формирует файл, который затем считывается внешней обработкой в среде 7.7 с созданием документа Операция.

Разберем пример кода на платформе 8.3 для выгрузки проводок в текстовый файл с разделителями. Обратите внимание на обязательное указание кодировки КодировкаТекста.ANSI (Windows-1251), так как 1С 7.7 некорректно обрабатывает UTF-8:


ТекстовыйФайл = Новый ТекстовыйДокумент;
Для Каждого Стр Из ДокументОтражения.НачисленнаяЗарплатаИВзносы Цикл
    СчетДт = "26";
    СчетКт = "70";
    СубконтоДт1 = Стр.СтатьяЗатрат.Код;
    СубконтоКт1 = Стр.Сотрудник.Код;
    Сумма = Формат(Стр.Сумма, "ЧЦ=15; ЧДЦ=2; ЧГ=0");
    
    СтрокаДанных = СчетДт + ";" + СубконтоДт1 + ";" + СчетКт + ";" + СубконтоКт1 + ";" + Сумма;
    ТекстовыйФайл.ДобавитьСтроку(СтрокаДанных);
КонецЦикла;
ТекстовыйФайл.Записать(ПутьКФайлу, КодировкаТекста.ANSI);

В конфигурации 1С:Бухгалтерия 7.7 файл считывается через объект Текст, после чего создается операция и заполняются субконто по кодам справочников:


Опер = СоздатьОбъект("Операция");
Опер.Новая();
Опер.Документ.ДатаДок = ТекущаяДата();
Опер.Документ.Содержание = "Отражение зарплаты из ЗУП 3.1";

Файл = СоздатьОбъект("Текст");
Файл.Открыть(КаталогЗагрузки + "postings.txt");
Для Ном = 1 По Файл.КоличествоСтрок() Цикл
    Стр = Файл.ПолучитьСтроку(Ном);
    // Разбор строки по разделителю ";" и получение значений
    Опер.НоваяПроводка();
    Опер.Дебет.Счет = СчетПоКоду(СчетДтКод);
    Опер.Кредит.Счет = СчетПоКоду(СчетКтКод);
    Опер.Сумма = Число(СуммаСтр);
КонецЦикла;
Опер.Записать();

Вместо текстового формата можно задействовать файлы XBase (DBF). Использование XBase исключает возможные ошибки разбора строк при наличии символов-разделителей внутри строковых полей.

Вариант 2. Использование правил обмена «Конвертация данных 2.0»

Рассмотрим более гибкий подход на основе правил обмена. Конфигурация 1С 7.7 поддерживает загрузку XML-файлов через специализированную внешнюю обработку V77Imp.ert.

  1. В конфигурации «Конвертация данных 2.0» загружаем метаданные ЗУП 3.1 и Бухгалтерии 7.7.
  2. Создаем правило конвертации объекта (ПКО), в котором источником выступает документ ОтражениеЗарплатыВБухучете, а приемником — документ Операция с набором проводок.
  3. В обработчиках событий («После загрузки» или «Перед выгрузкой») настраиваем алгоритм заполнения счетов дебета и кредита, а также специфических субконто 1С 7.7 (например, предопределенных значений перечисления ВидыПлатежейВБюджет для счетов 68 и 69).
  4. Выгружаем данные из ЗУП 3.1 стандартной обработкой ВыгрузкаЗагрузкаXML, а в 7.7 загружаем полученный XML-файл обработкой V77Imp.ert.

Вариант 3. Прямое OLE/COM-соединение из ЗУП 3.1 в базу 7.7

Выясним, как полностью исключить промежуточные файлы с помощью COM-объекта. Внешняя обработка на стороне ЗУП 3.1 может напрямую подключаться к информационной базе 7.7 и в реальном времени создавать бухгалтерские операции.


База77 = Новый COMОбъект("V77.Application");
КаталогБазы = "C:\1C_Bases\Buh77\";
ПараметрыПодключения = "/D""" + КаталогБазы + """ /N""Admin"" /P""123""";

Если База77.Initialize(База77.RMTrade, ПараметрыПодключения, "NO_SPLASH_SHOW") Тогда
    Операция77 = База77.CreateObject("Операция");
    Операция77.Новая();
    Операция77.Документ.ДатаДок = КонецМесяца(Объект.ПериодРегистрации);
    Операция77.Документ.Содержание = "Зарплата и налоги за " + Формат(Объект.ПериодРегистрации, "ДФ='ММММ гггг'");
    
    // Создание и заполнение проводок
    Операция77.НоваяПроводка();
    Операция77.Дебет.Счет = База77.СчетПоКоду("26");
    Операция77.Кредит.Счет = База77.СчетПоКоду("70");
    Операция77.Сумма = 150000;
    
    Операция77.Записать();
    База77 = Неопределено;
Иначе
    ВызватьИсключение "Не удалось подключиться к базе 1С 7.7!";
КонецЕсли;

Важное ограничение: Вызов COM-объекта V77.Application возможен исключительно в 32-разрядном окружении платформы 1С:Предприятие 8.3.

Важные правила синхронизации справочников

Проанализируем ключевые моменты сопоставления объектов между версиями 8.3 и 7.7:

  1. Синхронизация по коду: Для справочников сотрудников, подразделений и статей затрат предпочтительно использовать поиск по уникальному коду, а не по наименованию. Это защитит от сбоев при случайном изменении пробелов или регистра букв пользователями.
  2. Ограничения по GUID: В платформе 7.7 отсутствует нативная поддержка 128-битных GUID (UUID). При необходимости синхронизации по глобальным идентификаторам в справочники 7.7 добавляют строковый реквизит длиной 36 знаков для хранения GUID из ЗУП.
  3. Ограничения субконто в 7.7: На счетах плана счетов 1С 7.7 может быть привязано не более трех субконто. Каждое субконто имеет жесткую типизацию, поэтому передаваемые значения должны строго соответствовать типам, заданным в конфигураторе 7.7.
← На главную