Как перенести движения документов из 1С 7.7 в 1С 8.3, сохраняя нетиповые проводки и избегая перезаписи?

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

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

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

Подход 1: Прямой перенос движений с использованием механизма «Ручная корректировка»

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

  1. Шаг 1: Подготовка к переносу движений и метаданных

    Прежде чем приступать к переносу, необходимо тщательно подготовить обе базы. Мы начнем с выгрузки метаданных:

    • Из базы 1С 7.7 мы выгружаем метаданные, используя стандартные средства или специализированные обработки, которые позволяют получить описание всех объектов, включая структуру регистров и справочников.
    • Из базы 1С 8.3 мы выгружаем конфигурацию с обязательной установкой флага «выгружать движения». Это обеспечит включение в правила обмена информации о регистрах, которые хранят движения документов.

    Сопоставление планов счетов: это критически важный этап. В 1С 7.7 счета часто определяются по кодам, тогда как в 1С 8.3 — по наименованиям. Нам потребуется создать подробную таблицу соответствия между счетами и их субконто в обеих системах. Если планы счетов значительно различаются, возможно, потребуется унифицировать их в базе-приемнике или реализовать сложную логику преобразования в правилах конвертации. В противном случае, дальнейшая работа и формирование отчетности будут затруднены.

    Сопоставление субконто: Аналогично счетам, мы должны сопоставить виды аналитики (субконто) и их значения. Учитывая, что в 1С 7.7 аналитика могла быть произвольной, а в 1С 8.3 она строго типизирована (например, СправочникСсылка.Контрагенты, СправочникСсылка.Договоры), это потребует кропотливой работы по маппингу.

  2. Шаг 2: Создание правил конвертации объектов (ПКО) для движений

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

    Мы рекомендуем создавать отдельные ПКО для каждого типа регистра бухгалтерии, куда мы планируем записать движения. В этих ПКО мы будем использовать коллекцию типа ТаблицаЗначений для временного хранения данных о проводках. Каждая строка этой таблицы будет представлять собой отдельную проводку со всеми необходимыми реквизитами.

    Рассмотрим пример структуры такой ТаблицыЗначений для передачи проводок:

    
    // Пример структуры ТаблицыЗначений для хранения проводок
    ТаблицаПроводок = Новый ТаблицаЗначений;
    ТаблицаПроводок.Колонки.Добавить("СчетДт", Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
    ТаблицаПроводок.Колонки.Добавить("СубконтоДт1", Новый ОписаниеТипов("ХарактеристикаСсылка.ВидыСубконтоХозрасчетные"));
    ТаблицаПроводок.Колонки.Добавить("СубконтоДт2", Новый ОписаниеТипов("ХарактеристикаСсылка.ВидыСубконтоХозрасчетные"));
    ТаблицаПроводок.Колонки.Добавить("СчетКт", Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
    ТаблицаПроводок.Колонки.Добавить("СубконтоКт1", Новый ОписаниеТипов("ХарактеристикаСсылка.ВидыСубконтоХозрасчетные"));
    ТаблицаПроводок.Колонки.Добавить("СубконтоКт2", Новый ОписаниеТипов("ХарактеристикаСсылка.ВидыСубконтоХозрасчетные"));
    ТаблицаПроводок.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число", , Новый КвалификаторыЧисла(15, 2)));
    ТаблицаПроводок.Колонки.Добавить("Содержание", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200)));
    // ... и другие необходимые реквизиты проводок
    

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

  3. Шаг 3: Передача данных в документ-приемник

    После того как мы извлекли проводки и сформировали ТаблицуЗначений, нам необходимо передать ее вместе с самим документом в 1С 8.3. Мы можем сделать это, используя обработчик «Перед выгрузкой» в ПКО для документа-источника. В этом обработчике мы добавляем нашу ТаблицуЗначений в параметры, которые будут доступны при создании документа-приемника.

    Пример кода в обработчике «ПередВыгрузкой» для ПКО документа-источника:

    
    // Предполагаем, что Источник - это ссылка на документ 1С 7.7
    // и ТаблицаПроводок уже заполнена данными из регистра бухгалтерии 1С 7.7
    
    Если Не ЗначениеЗаполнено(Источник.Ссылка) Тогда
        Возврат;
    КонецЕсли;
    
    // Получаем движения документа в 1С 7.7
    ТаблицаПроводок = ПолучитьДвиженияДокументаИз77(Источник.Ссылка); // Пользовательская функция для извлечения проводок
    
    // Добавляем ТаблицуПроводок как параметр для приемника
    Если ТаблицаПроводок.Количество() > 0 Тогда
        Параметры.Вставить("ДвиженияДокумента", ТаблицаПроводок);
    КонецЕсли;
    

    Эта ТаблицаЗначений будет передана в 1С 8.3 как параметр и будет доступна в ПКО документа-приемника, например, в обработчике «ПослеЗагрузки».

  4. Шаг 4: Обработка движений в 1С 8.3

    В 1С 8.3, после загрузки документа и до его записи, мы должны программно создать движения по регистру бухгалтерии, используя переданную ТаблицуЗначений. Ключевым моментом здесь является установка флага РучнаяКорректировка = Истина для набора записей регистра бухгалтерии.

    Этот флаг предотвратит перезапись ваших вручную созданных проводок при последующем перепроведении документа в 1С 8.3. Это критически важно для сохранения нетиповых проводок.

    Пример кода в обработчике «ПослеЗагрузки» для ПКО документа-приемника:

    
    // Предполагаем, что Объект - это загруженный документ-приемник в 1С 8.3
    // и Параметры.ДвиженияДокумента содержит переданную ТаблицуЗначений
    
    Если Параметры.Свойство("ДвиженияДокумента") Тогда
        ТаблицаПроводок = Параметры.ДвиженияДокумента;
    
        // Получаем набор записей регистра бухгалтерии для текущего документа
        НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка);
    
        // Устанавливаем флаг ручной корректировки
        НаборЗаписей.РучнаяКорректировка = Истина;
    
        Для Каждого СтрокаПроводки Из ТаблицаПроводок Цикл
            НоваяЗапись = НаборЗаписей.Добавить();
            НоваяЗапись.Регистратор = Объект.Ссылка;
            НоваяЗапись.Период = Объект.Дата; // Или другая дата проводки, если есть
            НоваяЗапись.ВидДвижения = ВидДвиженияБухгалтерии.Приход; // Или Расход, в зависимости от логики
    
            // Заполняем счета
            НоваяЗапись.СчетДт = СтрокаПроводки.СчетДт;
            НоваяЗапись.СчетКт = СтрокаПроводки.СчетКт;
    
            // Заполняем субконто (пример для двух субконто)
            Если СтрокаПроводки.Свойство("СубконтоДт1") И ЗначениеЗаполнено(СтрокаПроводки.СубконтоДт1) Тогда
                НоваяЗапись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Субконто1] = СтрокаПроводки.СубконтоДт1;
            КонецЕсли;
            Если СтрокаПроводки.Свойство("СубконтоДт2") И ЗначениеЗаполнено(СтрокаПроводки.СубконтоДт2) Тогда
                НоваяЗапись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Субконто2] = СтрокаПроводки.СубконтоДт2;
            КонецЕсли;
    
            Если СтрокаПроводки.Свойство("СубконтоКт1") И ЗначениеЗаполнено(СтрокаПроводки.СубконтоКт1) Тогда
                НоваяЗапись.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Субконто1] = СтрокаПроводки.СубконтоКт1;
            КонецЕсли;
            Если СтрокаПроводки.Свойство("СубконтоКт2") И ЗначениеЗаполнено(СтрокаПроводки.СубконтоКт2) Тогда
                НоваяЗапись.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Субконто2] = СтрокаПроводки.СубконтоКт2;
            КонецЕсли;
    
            НоваяЗапись.Сумма = СтрокаПроводки.Сумма;
            НоваяЗапись.Содержание = СтрокаПроводки.Содержание;
            // ... заполняем остальные реквизиты проводки
        КонецЦикла;
    
        НаборЗаписей.Записать();
    КонецЕсли;
    

    Мы должны быть внимательны при заполнении всех реквизитов проводки, включая субконто (аналитику). Обратите внимание, что в 1С 8.3 субконто привязаны к предопределенным видам характеристик (например, ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Субконто1), что требует их корректного сопоставления с аналитикой из 1С 7.7.

Преимущества и недостатки подхода:

Подход 2: Перепроведение документов в 1С 8.3 с последующей корректировкой

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

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

    Мы используем стандартные правила конвертации для переноса всех необходимых справочников (контрагенты, номенклатура, статьи затрат и т.д.) и документов (поступления, реализации, платежи и т.д.) из 1С 7.7 в 1С 8.3. На этом этапе движения документов не переносятся или переносятся минимально, в виде ссылок на сами документы, но без детальных проводок.

  2. Шаг 2: Проведение документов в 1С 8.3

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

  3. Шаг 3: Сверка и корректировка

    После проведения всех документов мы приступаем к самому трудоемкому этапу — сверке данных. Нам необходимо сравнить оборотно-сальдовую ведомость (ОСВ) и другие ключевые отчеты из 1С 7.7 с аналогичными отчетами из 1С 8.3 за тот же период. Выявленные расхождения анализируются и устраняются. Причинами расхождений могут быть:

    • Различия в алгоритмах: Типовые алгоритмы 1С 8.3 могут отличаться от логики самописной 1С 7.7, что приводит к разным проводкам или суммам.
    • Некорректные исходные данные: В 1С 7.7 могли быть ошибки, которые при перепроведении в 1С 8.3 вылезли наружу.
    • Недостаточное заполнение аналитики: Некоторые реквизиты, необходимые для проведения в 1С 8.3, могли отсутствовать в 1С 7.7 или быть перенесены некорректно.

    Корректировка может производиться следующими способами:

    • Ручные бухгалтерские операции: Для небольших расхождений можно использовать документ «Операция (бухгалтерский и налоговый учет)» в 1С 8.3.
    • Доработка конфигурации 1С 8.3: Если расхождения вызваны отсутствием в типовой 1С 8.3 логики, которая была в 1С 7.7, может потребоваться доработка модулей проведения документов в 1С 8.3 для воспроизведения нужных проводок.
    • Разработка специализированных обработок: Для массовой корректировки данных или заполнения недостающих реквизитов можно написать внешние обработки.

Преимущества и недостатки подхода:

Ключевые аспекты и сложности, о которых нужно помнить при конвертации данных

Независимо от выбранного подхода, существует ряд фундаментальных моментов, которые необходимо учитывать при переносе данных из 1С 7.7 в 1С 8.3:

  1. Различия в архитектуре и структуре данных: Мы должны понимать, что 1С 7.7 и 1С 8.3 — это кардинально разные платформы. В 1С 8.3 многое строится не только на бухгалтерских проводках, но и на множестве других регистров (накопления, сведений), которые определяют всю логику работы программы и влияют на формирование сложной отчетности (например, налоговой, управленческой). Простое копирование проводок из 1С 7.7 в РегистрБухгалтерии 1С 8.3 не гарантирует корректной работы всех остальных подсистем.

  2. Служебные регистры 1С 8.3: В 1С 8.3 существует множество «служебных» регистров, которые заполняются неявно при проведении документов и активно используются в учете. Например, регистры для учета НДС, УСН, а также регистры, хранящие ключи аналитик. Их некорректное заполнение при переносе может привести к фатальным ошибкам в налоговой отчетности, неправильному расчету налогов и невозможности закрытия периода. Если мы выбираем прямой перенос движений, то нам придется вручную создавать логику для заполнения и этих регистров, что значительно усложняет задачу.

  3. План счетов и субконто: Как уже отмечалось, сопоставление планов счетов и аналитики (субконто) является одной из самых трудоемких задач. В 1С 7.7 счета могли иметь до трех субконто с различными типами, которые могли быть привязаны к кодам. В 1С 8.3 план счетов более структурирован, субконто имеют четкие типы (например, только справочники, документы) и привязаны к предопределенным видам характеристик. Мы должны быть готовы к кропотливой ручной работе по маппингу, а также к возможной необходимости свертки аналитики, если прямого соответствия нет.

  4. Механизм «Ручная корректировка»: Мы должны помнить, что установка флага РучнаяКорректировка = Истина для набора записей регистра бухгалтерии в 1С 8.3 предотвращает их перезапись при перепроведении документа. Это полезно для сохранения перенесенных проводок. Однако, этот механизм не решает проблему новых документов — они будут формировать движения по типовым алгоритмам. Если нетиповые проводки критичны для постоянной работы, необходимо рассмотреть доработку конфигурации 1С 8.3.

  5. Перенос не с начала года: Если переход выполняется не с 1 января, то задача усложняется. Нам придется переносить не только текущие документы, но и обороты по счетам (например, 90, 91, 99 для расчета прибыли; 68 для налогового учета; 60, 62 для дебиторской/кредиторской задолженности), которые влияют на закрытие периода и формирование годовой отчетности. В таких случаях эксперты настоятельно рекомендуют вести параллельный учет в обеих системах (1С 7.7 и 1С 8.3) в течение первых нескольких месяцев работы с новой базой. Это позволит своевременно выявлять и исправлять ошибки, а также иметь возможность сдать годовой отчет в старой базе, если новая еще не полностью выверена.

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

  7. Трудоемкость и ручные исправления: Автоматический перенос, особенно нетиповых баз, почти всегда требует значительных ручных исправлений и корректировок после запуска. Время на сверку и корректировку оборотов после переноса может в разы превышать время самого переноса данных. В некоторых случаях процесс «выравнивания» данных может занимать несколько месяцев.

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

Заключение

Выбор оптимальной стратегии переноса данных из 1С 7.7 в 1С 8.3 с сохранением нетиповых движений зависит от многих факторов: сложности нетиповых проводок, объема данных, сроков, доступных ресурсов и готовности заказчика к компромиссам или доработкам. Если нетиповые проводки являются критически важными и не могут быть воспроизведены в 1С 8.3 типовым способом, подход с прямым переносом движений и использованием «Ручной корректировки» является технически возможным, но требует огромных усилий и сопряжен с высокими рисками, особенно из-за игнорирования служебных регистров. В большинстве случаев, подход с перепроведением документов в 1С 8.3 и последующей тщательной сверкой и корректировкой оказывается более надежным, так как он обеспечивает корректное формирование всех внутренних механизмов 1С 8.3.

Мы настоятельно рекомендуем тщательно взвесить все «за» и «против» каждого подхода, оценить риски и обсудить их с заказчиком. Если есть возможность, лучше всего начинать работу в новой базе с начала нового отчетного периода (года), перенеся только начальные остатки. Это значительно упростит процесс и снизит вероятность ошибок. Если это невозможно, параллельный учет в обеих системах является хорошей страховкой от непредвиденных проблем.

← На главную