Перенос данных из 1С 7.7 в 1С 8.3 — это комплексная задача, особенно когда речь идет о нетиповых конфигурациях 1С 7.7 и необходимости сохранения специфических бухгалтерских проводок. Рассмотрим ситуацию, когда база-источник (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С 7.7 аналитика могла быть произвольной, а в 1С 8.3 она строго типизирована (например, СправочникСсылка.Контрагенты, СправочникСсылка.Договоры), это потребует кропотливой работы по маппингу.
Для переноса движений, в отличие от справочников и документов, нам потребуется более сложная логика. Недостаточно просто перенести документ, ожидая, что он сделает нужные проводки. Вместо этого, мы будем передавать информацию о проводках как отдельный набор данных.
Мы рекомендуем создавать отдельные ПКО для каждого типа регистра бухгалтерии, куда мы планируем записать движения. В этих ПКО мы будем использовать коллекцию типа ТаблицаЗначений для временного хранения данных о проводках. Каждая строка этой таблицы будет представлять собой отдельную проводку со всеми необходимыми реквизитами.
Рассмотрим пример структуры такой ТаблицыЗначений для передачи проводок:
// Пример структуры ТаблицыЗначений для хранения проводок
ТаблицаПроводок = Новый ТаблицаЗначений;
ТаблицаПроводок.Колонки.Добавить("СчетДт", Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
ТаблицаПроводок.Колонки.Добавить("СубконтоДт1", Новый ОписаниеТипов("ХарактеристикаСсылка.ВидыСубконтоХозрасчетные"));
ТаблицаПроводок.Колонки.Добавить("СубконтоДт2", Новый ОписаниеТипов("ХарактеристикаСсылка.ВидыСубконтоХозрасчетные"));
ТаблицаПроводок.Колонки.Добавить("СчетКт", Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
ТаблицаПроводок.Колонки.Добавить("СубконтоКт1", Новый ОписаниеТипов("ХарактеристикаСсылка.ВидыСубконтоХозрасчетные"));
ТаблицаПроводок.Колонки.Добавить("СубконтоКт2", Новый ОписаниеТипов("ХарактеристикаСсылка.ВидыСубконтоХозрасчетные"));
ТаблицаПроводок.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число", , Новый КвалификаторыЧисла(15, 2)));
ТаблицаПроводок.Колонки.Добавить("Содержание", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200)));
// ... и другие необходимые реквизиты проводок
В правилах выгрузки данных из 1С 7.7 мы будем извлекать проводки для каждого документа и заполнять эту ТаблицуЗначений. Важно учесть все нюансы: валютные суммы, количество, флаги, аналитика и прочее.
После того как мы извлекли проводки и сформировали ТаблицуЗначений, нам необходимо передать ее вместе с самим документом в 1С 8.3. Мы можем сделать это, используя обработчик «Перед выгрузкой» в ПКО для документа-источника. В этом обработчике мы добавляем нашу ТаблицуЗначений в параметры, которые будут доступны при создании документа-приемника.
Пример кода в обработчике «ПередВыгрузкой» для ПКО документа-источника:
// Предполагаем, что Источник - это ссылка на документ 1С 7.7
// и ТаблицаПроводок уже заполнена данными из регистра бухгалтерии 1С 7.7
Если Не ЗначениеЗаполнено(Источник.Ссылка) Тогда
Возврат;
КонецЕсли;
// Получаем движения документа в 1С 7.7
ТаблицаПроводок = ПолучитьДвиженияДокументаИз77(Источник.Ссылка); // Пользовательская функция для извлечения проводок
// Добавляем ТаблицуПроводок как параметр для приемника
Если ТаблицаПроводок.Количество() > 0 Тогда
Параметры.Вставить("ДвиженияДокумента", ТаблицаПроводок);
КонецЕсли;
Эта ТаблицаЗначений будет передана в 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.
Преимущества и недостатки подхода:
Это более распространенный и часто рекомендуемый подход, особенно если в 1С 7.7 отсутствуют действительно уникальные проводки, которые невозможно воспроизвести в 1С 8.3 даже с минимальными доработками. Основная идея заключается в том, чтобы перенести только справочники и сами документы, а затем позволить 1С 8.3 самостоятельно сформировать движения по своим типовым алгоритмам.
Мы используем стандартные правила конвертации для переноса всех необходимых справочников (контрагенты, номенклатура, статьи затрат и т.д.) и документов (поступления, реализации, платежи и т.д.) из 1С 7.7 в 1С 8.3. На этом этапе движения документов не переносятся или переносятся минимально, в виде ссылок на сами документы, но без детальных проводок.
После успешной загрузки справочников и документов, мы программно или интерактивно проводим все перенесенные документы в базе 1С 8.3. При проведении, документы сформируют движения согласно алгоритмам, заложенным в типовой конфигурации «Бухгалтерия для Казахстана». Это обеспечит корректное заполнение не только регистра бухгалтерии, но и всех сопутствующих операционных и служебных регистров (регистры накопления, регистры сведений).
После проведения всех документов мы приступаем к самому трудоемкому этапу — сверке данных. Нам необходимо сравнить оборотно-сальдовую ведомость (ОСВ) и другие ключевые отчеты из 1С 7.7 с аналогичными отчетами из 1С 8.3 за тот же период. Выявленные расхождения анализируются и устраняются. Причинами расхождений могут быть:
Корректировка может производиться следующими способами:
Преимущества и недостатки подхода:
Независимо от выбранного подхода, существует ряд фундаментальных моментов, которые необходимо учитывать при переносе данных из 1С 7.7 в 1С 8.3:
Различия в архитектуре и структуре данных: Мы должны понимать, что 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С 8.3 предотвращает их перезапись при перепроведении документа. Это полезно для сохранения перенесенных проводок. Однако, этот механизм не решает проблему новых документов — они будут формировать движения по типовым алгоритмам. Если нетиповые проводки критичны для постоянной работы, необходимо рассмотреть доработку конфигурации 1С 8.3.
Перенос не с начала года: Если переход выполняется не с 1 января, то задача усложняется. Нам придется переносить не только текущие документы, но и обороты по счетам (например, 90, 91, 99 для расчета прибыли; 68 для налогового учета; 60, 62 для дебиторской/кредиторской задолженности), которые влияют на закрытие периода и формирование годовой отчетности. В таких случаях эксперты настоятельно рекомендуют вести параллельный учет в обеих системах (1С 7.7 и 1С 8.3) в течение первых нескольких месяцев работы с новой базой. Это позволит своевременно выявлять и исправлять ошибки, а также иметь возможность сдать годовой отчет в старой базе, если новая еще не полностью выверена.
Проверка базы-источника: Перед началом переноса крайне важно провести полную проверку базы 1С 7.7. Мы должны убедиться в актуальности и корректности данных, провести все регламентные операции (переоценка валюты, расчет налогов, начисление амортизации, закрытие расходов будущих периодов), а также протестировать базу на наличие ошибок с помощью стандартных средств 1С 7.7 (например, «Тестирование и исправление»). Перенос некорректных данных только усугубит проблемы в новой системе.
Трудоемкость и ручные исправления: Автоматический перенос, особенно нетиповых баз, почти всегда требует значительных ручных исправлений и корректировок после запуска. Время на сверку и корректировку оборотов после переноса может в разы превышать время самого переноса данных. В некоторых случаях процесс «выравнивания» данных может занимать несколько месяцев.
Риски и ответственность: При таком сложном переносе, особенно если были даны обещания о «лучшем виде и кратчайших сроках», мы должны четко осознавать риски. Любые ошибки, приводящие к некорректным остаткам, расхождениям в регистрах или проблемам с отчетностью, могут иметь серьезные последствия для заказчика. Поэтому рекомендуется привлекать высококвалифицированных специалистов и четко документировать все этапы работы.
Выбор оптимальной стратегии переноса данных из 1С 7.7 в 1С 8.3 с сохранением нетиповых движений зависит от многих факторов: сложности нетиповых проводок, объема данных, сроков, доступных ресурсов и готовности заказчика к компромиссам или доработкам. Если нетиповые проводки являются критически важными и не могут быть воспроизведены в 1С 8.3 типовым способом, подход с прямым переносом движений и использованием «Ручной корректировки» является технически возможным, но требует огромных усилий и сопряжен с высокими рисками, особенно из-за игнорирования служебных регистров. В большинстве случаев, подход с перепроведением документов в 1С 8.3 и последующей тщательной сверкой и корректировкой оказывается более надежным, так как он обеспечивает корректное формирование всех внутренних механизмов 1С 8.3.
Мы настоятельно рекомендуем тщательно взвесить все «за» и «против» каждого подхода, оценить риски и обсудить их с заказчиком. Если есть возможность, лучше всего начинать работу в новой базе с начала нового отчетного периода (года), перенеся только начальные остатки. Это значительно упростит процесс и снизит вероятность ошибок. Если это невозможно, параллельный учет в обеих системах является хорошей страховкой от непредвиденных проблем.