Довольно часто в практике работы с 1С:Бухгалтерия 3.0 возникает ситуация, когда на начальном этапе внедрения учет по складам не ведется. Бухгалтерия работает в режиме «суммового» учета или учета по организации в целом. Однако со временем бизнес расширяется, появляются новые места хранения, и возникает необходимость включить признак «Учета по складам» в настройках параметров учета. В этот момент пользователи сталкиваются с проблемой: старые документы реализации, созданные до включения складов, не имеют заполненного субконто Склады. При попытке сделать Корректировку реализации в текущем периоде для таких «старых» документов система выдает ошибку и отказывается проводить документ.
В данной статье мы разберем причины этой проблемы и рассмотрим несколько способов ее решения — от программного изменения логики системы до стандартных инструментов платформы.
Проанализируем техническую сторону вопроса. В 1С:Бухгалтерии при включении складского учета в плане счетов на счетах учета ТМЦ (таких как 41 «Товары», 43 «Готовая продукция», 10 «Материалы») активируется дополнительный разрез аналитики — субконто Склады. Для программного ядра системы записи с пустым значением этого субконто и записи с указанным конкретным складом — это принципиально разные данные.
Когда мы создаем документ Корректировка реализации, программа пытается сопоставить данные текущего документа с движениями исходного документа реализации. Если исходная реализация была проведена до включения учета по складам, в регистре Хозрасчетный (бухгалтерские проводки) по счету 41 или 43 поле Субконто2 (или Субконто1, в зависимости от настроек) осталось пустым. Корректировка пытается «сторнировать» или изменить эти движения, обращаясь к остаткам именно по пустому складу. Но так как после включения учета по складам все остатки обычно переносятся на конкретные склады через Помощник ввода остатков, система не находит нужного количества на «пустом» складе и блокирует проведение документа.
Рассмотрим вариант, который предложил автор темы. Этот метод заключается в точечном изменении кода конфигурации (или создании расширения), чтобы система игнорировала отсутствие складских движений в документах-основаниях прошлого периода. Выясним причину ошибки в программном коде: она кроется в общем модуле УчетТоваров.
В этом модуле реализован запрос, который проверяет наличие движений по складу у документа-основания. Чтобы «шаманить», как выразился автор темы, необходимо найти место проверки остатков и внести изменения в запрос или логику проверки. Примерно логика может выглядеть следующим образом (в упрощенном виде):
// В модуле УчетТоваров находим запрос, проверяющий движения по складам
// Добавляем условие, которое проверяет, заполнено ли субконто Склад в реализации
// Если не заполнено и дата документа меньше даты включения учета по складам,
// позволяем провести корректировку без жесткой привязки к складу основания.
Если НЕ ЗначениеЗаполнено(СкладОснования) И ДатаДокумента < ДатаПереходаНаСклады Тогда
// Пропускаем проверку или подставляем виртуальный пустой склад
КонецЕсли;
Важно: Мы крайне рекомендуем использовать для таких правок Механизм расширений, чтобы не снимать конфигурацию с поддержки и не создавать проблем при последующих обновлениях 1С:Бухгалтерия.
Если мы не хотим лезть в код, разберем более «мирный» способ. Мы можем попробовать привести старые документы в соответствие с новой учетной политикой. Для этого можно воспользоваться обработкой Групповое изменение реквизитов.
Реализация (акты, накладные).Склад (в шапке) и склад в табличной части (если настройка «Склады в табличной части» включена).Однако помните: простая перезапись документа без перепроведения не изменит проводки в регистре Хозрасчетный. Корректировка реализации по-прежнему может видеть пустые склады в движениях. В этом случае может потребоваться временное открытие периода и групповое перепроведение документов, что не всегда приемлемо для бухгалтерии.
Рассмотрим ситуацию, когда перепроводить старые периоды категорически нельзя. В этом случае мы можем воспользоваться документом Корректировка записей регистров. Посмотрим, как это сделать по шагам:
Корректировка записей регистров.Хозрасчетный.Этот метод требует ювелирной точности, так как нужно понимать, какие именно записи ожидает увидеть алгоритм проведения корректировки.
При решении данной задачи проанализируем еще несколько важных моментов, которые часто упускают из виду:
1. Счета расчетов и продаж. Помните, что счета 62.01, 90.01, 90.03 не имеют субконто Склады. По ним переносить остатки или менять аналитику не нужно. Ошибка возникает исключительно при попытке сформировать проводки по счетам 41, 43 или 10, так как именно на них влияет настройка складского учета.
2. Регистры НДС. Если ваша организация работает на ОСНО, корректировка реализации затрагивает регистры НДС (НДС Продажи). В этих регистрах склад обычно не фигурирует, но связь с документом-основанием критична. Если вы правите код, как в Способе 1, убедитесь, что записи по НДС формируются корректно и попадают в книгу покупок/продаж.
3. Проверка настроек номенклатуры. Перейдем в Администрирование — Параметры учета — Настройки номенклатуры. Проверим, как установлена настройка «Счета учета в табличной части». Если вы решите массово проставлять склады в старых документах, эта настройка определит, где именно вам нужно заполнять данные — в шапке документа или в каждой строке товара.
Подводя итог, можно сказать, что самым быстрым, но «грязным» способом является правка общего модуля УчетТоваров (Способ 1). Это позволяет сразу провести документ без трогания старых периодов. Однако наиболее правильным с точки зрения методологии 1С является приведение данных прошлого периода в порядок (Способ 2) через заполнение склада, хотя это и более трудозатратно из-за необходимости работы с закрытыми периодами.
Рассмотрим рекомендации по безопасности: перед любыми массовыми изменениями или правками кода обязательно создавайте резервную копию базы данных. Проверяйте результат на копии, формируя отчет Оборотно-сальдовая ведомость по счету 41 с группировкой по складам, чтобы убедиться, что у вас не «повисли» отрицательные остатки на пустом складе и положительные на основном.