При долгой работе в программе «1С:Управление торговлей 10.3» (особенно если учет ведется более 10 лет) база данных неизбежно разрастается. Увеличивается время резервного копирования, замедляется проведение документов, а в справочниках накапливается огромное количество неактуальной номенклатуры. Стандартная свертка базы далеко не всегда проходит гладко из-за накопившихся ошибок ведения учета. В таких ситуациях оптимальным решением становится перенос актуальных остатков, цен и взаиморасчетов в чистую базу. Разберем подробно, как выполнить эту процедуру самостоятельно, не прибегая к дорогостоящим услугам программистов.
Рассмотрим частую ошибку начинающих специалистов. При попытке перенести остатки стандартным путем через цепочку документов «Инвентаризация товаров на складе» и «Оприходование товаров» многие сталкиваются с тем, что в оприходование переносится лишь малая часть номенклатуры (например, 226 строк из 2500).
Проанализируем логику работы этих документов в конфигурации «Управление торговлей 10.3». Документ ИнвентаризацияТоваровНаСкладе сам по себе не делает никаких движений по регистрам учета — он лишь фиксирует разницу между учетным количеством в базе и фактическим количеством на складе. Когда мы создаем документ ОприходованиеТоваров на основании инвентаризации, система автоматически переносит туда исключительно излишки (позиции, у которых фактическое количество превышает учетное). Соответственно:
СписаниеТоваров, который также создается на основании этой инвентаризации.Если вы делаете инвентаризацию в старой рабочей базе, программа сопоставляет реальные остатки с текущим учетом и выявляет лишь небольшую долю излишков. Чтобы перенести абсолютно все остатки через инвентаризацию, этот документ следовало бы создавать и заполнять уже в новой, чистой базе, где учетные остатки равны нулю. В таком случае программа посчитает весь объем товаров излишками и полностью перенесет его в оприходование. Однако существует гораздо более простой и надежный способ переноса данных, исключающий рутинные операции.
Для быстрого и безошибочного переноса остатков без написания программного кода мы воспользуемся стандартной и бесплатной обработкой от фирмы 1С — «Загрузка данных из табличного документа» (ЗагрузкаДанныхИзТабличногоДокумента.epf). Ее можно найти на диске ИТС или в каталоге шаблонов обновлений конфигурации.
Разберем весь процесс по шагам.
Прежде чем переносить остатки, нам необходимо создать чистую базу с идентичной структурой метаданных и перенести туда справочники. Выполняем следующие действия:
Теперь подготовим данные по остаткам товаров на складах. Нам потребуется выгрузить их в формат Excel.
Номенклатура.Код (или Артикул), Номенклатура, Склад и показатель КоличествоОстаток. Использование кодов или артикулов критически важно, так как по ним мы будем сопоставлять номенклатуру, что исключит появление дублей.*.xls или *.xlsx).Для продвинутых пользователей альтернативным решением может стать использование консоли запросов. Мы можем написать простой запрос для получения остатков товаров в разрезе складов вместе с актуальными ценами номенклатуры:
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Склад КАК Склад,
ТоварыНаСкладахОстатки.Номенклатура.Код КАК КодНоменклатуры,
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
ТоварыНаСкладахОстатки.КоличествоОстаток * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Сумма
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
Результат выполнения данного запроса также выгружаем в табличный документ Excel.
Переходим к непосредственной загрузке остатков в чистую информационную базу.
ОприходованиеТоваров. Указываем в нем организацию, склад и статью доходов. Записываем документ, но пока не проводим.ОприходованиеТоваров, а в поле «Табличная часть» указываем значение «Товары».Номенклатура устанавливаем режим поиска «По коду» или «По артикулу» (в зависимости от того, какое поле вы выгрузили).Чтобы в новой базе корректно отражались долги покупателей и наши задолженности перед поставщиками, необходимо перенести остатки взаиморасчетов.
Контрагент, Договор, Сделка (если ведется пореквизитный учет). Сохраняем результат в Excel.ЗагрузкаДанныхИзТабличногоДокумента.epf загружаем данные о долгах в табличную часть созданного документа ввода остатков. Сопоставление контрагентов и договоров также рекомендуется делать по кодам или уникальным идентификаторам (UUID), чтобы избежать ошибок дублирования при совпадении наименований.Поскольку мы перенесли справочник номенклатуры целиком из старой базы (которая велась с 2011 года), в новой чистой базе оказалось много устаревших позиций, которые больше никогда не пригодятся в работе. Однако, в отличие от старой базы, в новой базе по этим позициям нет исторических движений по документам. Это дает нам уникальную возможность легко и безопасно удалить весь мусор.
Применим следующий эффективный прием:
ОприходованиеТоваров, ВводНачальныхОстатковПоВзаиморасчетам, а также документы УстановкаЦенНоменклатуры) созданы и успешно проведены.Программа автоматически проанализирует зависимости. Те товары, по которым есть остатки на складах или которые задействованы в документах установки цен, программа удалить не сможет — она автоматически пропустит их и снимет с них пометку на удаление. В то же время вся неиспользуемая номенклатура, по которой нет ни одного движения за все годы, будет безвозвратно и полностью удалена из базы за один клик.
Проанализируем, почему стандартные обработки свертки (такие как SvertkaInformacionnoyBasy.epf) регулярно вызывают сложности у системных администраторов и бухгалтеров. Главная проблема кроется в особенностях архитектуры партионного учета «1С:Управление торговлей 10.3».
В этой конфигурации параллельно ведутся два важнейших регистра накопления: ТоварыНаСкладах (отвечает за физическое наличие товара на складах) и ПартииТоваровНаСкладах (отвечает за финансовую себестоимость этих товаров). За многие годы непрерывной работы из-за проведения документов задним числом, отрицательных остатков и ручных корректировок данные в этих регистрах начинают существенно расходиться.
Стандартный механизм свертки пытается свернуть эти регистры автоматически, создавая документы КорректировкаЗаписейРегистров. В результате все накопленные ошибки партионного учета переносятся в новые документы. База данных начинает вести себя некорректно: себестоимость списывается неверно, а новые документы реализации перестают проводиться из-за мнимого отсутствия партий.
Именно поэтому ручной перенос справочников и ввод чистых остатков через документ оприходования товаров является самым профессиональным и надежным решением. Вы полностью очищаете базу от ошибок прошлых периодов, нормализуете партионный учет и получаете стабильно работающую систему с минимальным размером базы данных.