При переходе на новую систему или при необходимости быстро восстановить учет в 1С часто возникает задача «наполнить» базу информацией о долгах клиентов. В этой статье мы проанализируем ситуацию, когда необходимо программно перенести данные из внешнего файла (например, Excel) в 1С:Бухгалтерия предприятия 3.0 (БП 3.0) так, чтобы итоговый Акт сверки взаиморасчетов выглядел корректно и содержал ссылки на первичные документы.
Рассмотрим первоначальную идею автора: использовать документ КорректировкаДолга. Этот объект метаданных предназначен для специфических операций: зачета авансов, переноса задолженности с одного контрагента на другого или списания безнадежного долга. Пытаться создать им «первичный» долг методологически неверно по нескольким причинам:
62.01 (Расчеты с покупателями и заказчиками) нужен кредит (например, счет 000 для остатков или 90.01 для реализации). КорректировкаДолга в режиме «Зачет авансов» ожидает наличие уже существующей задолженности в регистрах.Выясним, какие инструменты в 1С БП 3.0 подходят для этой задачи лучше всего.
Проанализируем самый правильный путь для пустой базы. Документ ВводНачальныхОстатков предназначен именно для того, чтобы «закинуть» сальдо на счета в корреспонденции со вспомогательным счетом 000.
Разберем по шагам, как это реализовать программно:
1. Создание вспомогательного документа расчетов. Чтобы в Акте сверки была видна информация о счете из Excel, на субсчетах 62 счета используется третье субконто — ДокументыРасчетовСКонтрагентами. Рекомендуется программно создавать объект ДокументРасчетовСКонтрагентом (ручной учет), в котором вы укажете номер и дату реального счета из вашего файла.
2. Заполнение табличной части «Данные по взаиморасчетам». В документе ВводНачальныхОстатков необходимо программно заполнить строки, указав:
ДокументРасчетов;62.01 для долга или 62.02 для аванса).Посмотрим на пример логики заполнения:
НовыйДок = Документы.ВводНачальныхОстатков.СоздатьДокумент();
НовыйДок.Дата = НачалоГода; // Обычно остатки вводятся на начало периода
НовыйДок.РазделУчета = Перечисления.РазделыУчетаДляВводаОстатков.РасчетыСПокупателямиИЗаказчиками;
НоваяСтрока = НовыйДок.ДанныеПоВзаиморасчетам.Добавить();
НоваяСтрока.Контрагент = СсылкаНаКонтрагента;
НоваяСтрока.Договор = СсылкаНаДоговор;
НоваяСтрока.СчетУчета = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями;
НоваяСтрока.СуммаОстаток = СуммаИзExcel;
НоваяСтрока.ДокументРасчетов = СсылкаНаСозданныйДокументРасчетов;
// Не забываем про валютные реквизиты, даже если учет в рублях
НоваяСтрока.КурсВзаиморасчетов = 1;
НоваяСтрока.КратностьВзаиморасчетов = 1;
НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
Если задача разовая и максимально простая, можно использовать объект ОперацияБух. Этот способ проще в реализации, но требует внимательности при заполнении субконто.
Выясним причину, почему этот способ иногда критикуют: при ручной операции не заполняются специальные регистры накопления (например, по НДС), что может «аукнуться» при последующих зачетах авансов. Однако для формирования только лишь Акта сверки этого будет достаточно.
Рассмотрим структуру проводки:
Дебет 62.01 — Субконто1: Контрагент, Субконто2: Договор, Субконто3: Документ расчетов.
Кредит 000 — (Вспомогательный счет ввода остатков).
При программном создании ОперацияБух важно правильно обращаться к набору записей регистра бухгалтерии:
Операция = Документы.ОперацияБух.СоздатьДокумент();
Операция.Дата = ТекущаяДата();
Операция.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН", "...");
Операция.Записать();
РегистрБух = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегистрБух.Отбор.Регистратор.Установить(Операция.Ссылка);
Проводка = РегистрБух.Добавить();
Проводка.Период = Операция.Дата;
Проводка.Организация = Операция.Организация;
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями;
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, "Контрагенты", СсылкаКонтрагент);
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, "Договоры", СсылкаДоговор);
// Третье субконто критично для Акта сверки!
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, "ДокументыРасчетовСКонтрагентами", ДокРасчетов);
Проводка.СчетКт = ПланыСчетов.Хозрасчетный.Вспомогательный;
Проводка.Сумма = СуммаИзФайла;
РегистрБух.Записать();
Если вы загружаете данные за текущий отчетный период, логичнее всего создавать документы РеализацияТоваровУслуг. Это позволит не только увидеть долг в Акте сверки, но и сформировать финансовый результат (выручку).
Проанализируем ситуацию: если налоги уже были уплачены в другой системе, создание реализаций в текущем периоде приведет к повторному начислению НДС и Налога на прибыль. В этом случае используйте Вариант 1, но датой, предшествующей началу ведения учета (например, 31 декабря предыдущего года).
При программном заполнении данных из Excel обратите внимание на следующие моменты:
ВидДоговора соответствовал операции (для счета 62 это «С покупателем»). Программно это проверяется так: Если СсылкаДоговор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем Тогда ....61.02 — это не счет расчетов с покупателями. Используйте 62.01 (основной долг) или 76.05/76.09 (прочие расчеты), если специфика услуг того требует.Чтобы Акт сверки в итоге содержал красивые строки типа "Счет №123 от 01.01.2023", выполните следующие действия:
ДокументРасчетовСКонтрагентом (ручной учет), заполнив его дату и номер данными из Excel.ВводНачальныхОстатков, где в качестве документа расчетов укажите созданный на шаге 1 объект.Таким образом, мы выяснили, что использование Корректировки долга для ввода начального сальдо — это тупиковый путь. Правильное использование механизмов ввода остатков обеспечит вам чистоту учета и корректность всех последующих регламентных операций в 1С.