Работы проводились на платформе 1С:Предприятие 8.3 (8.3.13.1644), в программе "Управление торговлей", редакция 10.3 (10.3.49.3).
Комментарии Техподдержки к данной публикации являются неотъемлемой частью публикации - все, что не описано в публикации, описано в комментариях к данной публикации.
Цель свертки - свернуть остатки по товарам и по взаиморасчетам с контрагентами.
По товарным остаткам нужно, чтобы остатки в товарном и в партионном учете совпадали (соот-но в разрезе Номенклатуры, Характеристики, Серии и/или Качества). За товарный учет отвечает регистр накопления ТоварыНаСкладах, за партионный учет (в котором отражается себестоимость товара) - регистр накопления ПартииТоваровНаСкладах. Все регистры вы можете открыть через меню Операции - Регистры накопления - далее наложить отборы, чтобы увидеть разрезы учета.
Если у вас задействованы в учете регистры накопления ПартииТоваровПереданные, ТоварыПереданные, ТоварыВРознице, ТоварыВНТТ, то вам не подойдет обработка СоздатьОприходование.
Обновление 07-05-2020г.:
1) добавлена обработка по созданию Установки цен номенклатуры (для товаров и услуг)
2) добавлена обработка по созданию Оприходования товаров с последними приходными ценами (из документов Поступление товаров и услуг или Оприходование товаров) - см. п.1 - п.4
3) добавлена обработка по созданию Корректировки записей регистров накопления ДенежныеСредства и ДенежныеСредстваКомитента - см. пункт 4 - конец раздела
1. Типовая свертка (с диска ИТС или ИТС-онлайн - обработка "Свертка информационной базы" https://its.1c.ru/db/metod8dev#content:3685:hdoc) сворачивает регистры "ТоварыОрганизаций", "ТоварыНаСкладах", "ПартииТоваровНаСкладах". Если в базе начались расхождения по этим регистрам, то в результате проведения типовой свертки вы получите те же расхождения и не сможете свести остатки. Поэтому наилучшим методом является не использовать типовую свертку по товарам, а написать обработку, которая переносит остатки по регистру "ТоварыНаСкладах" в документ "ОприходованиеТоваров". Прикладываю обработку к статье. Себестоимость товаров (которая указывается в поле Цена табл. части документа Оприходование) при этом можно брать по разному - приведу два возможных способа:
1) по средней из регистра "ПартииТоваровНаСкладах" (такой способ реализован в прилагаемой обработке "Создание оприходования")
2) если заданы "Приходные" цены, то из регистра сведений "ЦеныНоменклатуры" (этот способ запрограммирован в обработке "Создание оприходования по последним приходным ценам")
Дополнительные комментарии:
1) по тем товарам, по которым себестоимость не определяется, проставляется 1 руб. (или 1 копейка), в дальнейшем правится руками. Для целей выделения НДС рекомендую ставить 1 руб. Если НДС нет, то 1 копейку.
2) добавил обработку для создания Оприходования товаров с последними приходными ценами. В данном случае цена по номенклатуре берется из последнего документа-регистратора "Поступление товаров и услуг" или "Оприходование товаров" (до даты сворачивания остатков). Обработка в целом будет полезна не только для свертки остатков, но и в дальнейшем в текущей деятельности предприятия.
2. Такой же вариант проведения свертки можно использовать для сворачивания взаиморасчетов по контрагентам. Так, к примеру, типовая свертка сворачивает регистры "ВзаиморасчетыСКонтрагентами", "ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов", "РасчетыСКонтрагентами". При этом по документам расчета не проверяется итоговая задолженность контрагента в целом по договору: по договору в целом задолженности может не быть, а остатки по документам расчета на определенную дату имеются (см.рис.1).
При использовании типовой свертки связь между регистрами "РасчетыСКонтрагентами" и "ВзаиморасчетыСКонтрагентами" теряется.
А если самим перенести остатки по взаиморасчетам с контрагентами в специализированный типовой документ "ВводНачальныхОстатковПоВзаиморасчетам", то связь между регистрами будет выстроена автоматически - через документ-регистратор и закладываемую логику алгоритма проведения этого документа.
Поэтому наилучшим способом будет не использовать типовую свертку, а перенести остатки через обработку создания документов ""ВводНачальныхОстатковПоВзаиморасчетам" (прикладываю к статье).
3. Сделал архивную копию базы, развернул две копии рабочей базы - первая для экспериментов, вторая база - неприкосновенная для сравнения с первоначальной рабочей базой. Вторая база пригодилась с неожиданной стороны. Я начал в рабочей базе восстанавливать последовательность проведения документов (по партионному учету). В итоге остатки по товарам и взаиморасчетам стали "скакать" - остатки по товарам ушли в минус, появились долги по контрагентам.
В результате выяснилось, что в базе имелись документы, в реквизитах которых стояли одни контрагенты или товары, а в проводках были другие. Такие ошибки могут возникать по разным причинам, назову только две известные мне:
1) при обмене документами с другими базами, не производится дальнейшая процедура перепроведения документов (восстановления последовательности);
2) при групповом изменении реквизитов документа, не производится дальнейшая процедура перепроведения документов (восстановления последовательности).
В итоге для исправления ошибок учета менеджеры создавали "Списания товаров", "Корректировку долга", "Оприходования товаров" вместо того, чтобы выявить причину происхождения ошибок и ликвидировать ее.
В общем, вывод такой - не всегда полезно восстанавливать последовательность перед сверткой. А так как мною в рабочей базе за два года были перепроведены документы, текущие остатки никого не устраивали. Пришлось или восстанавливать архив и переносить документы за пару дней работы менеджеров, или найти альтернативный вариант. Так как сворачивать рабочую базу уже было нельзя, а восстанавливать ее было долго, то было сделано так - на второй базе была проведена свертка, далее необходимые документы "Ввод Начальных Остатков По Взаиморасчетам", "Оприходование Товаров", "Корректировка Записей Регистров" были перенесены в рабочую базу с помощью типовой обработки "Выгрузка Загрузка Данных XML 82". В дальнейшем документы в рабочей базе были удалены до даты свертки.
4. При анализе регистров сведений (и регистров накопления) - что сворачивать, а что оставить как есть, обнаружил такой момент. Для своих нетиповых регистров сведений, которые я добавлял в течение года, рекомендуется добавлять в качестве документа-регистратора документ "КорректировкаЗаписейРегистров". Это пригодится не только при создании Корректировки записей этих регистров, но и при сворачивании информации в конце года. Это было небольшое отступление. Что касается свертки :
В изначальной постановке задачи цены по товарам, как и все остальные регистры сведений, было решено не сворачивать!
Но в дальнейшем оказалось удобным именно по ценам свернуть регистр ЦеныНоменклатуры. Это делается так: создается документ Установка цен номенклатуры по каждому используемому типу цен (с помощью прилагаемой обработки), этот документ остается в базе, его следует провести. Остальные документы Установка цен номенклатуры прошлых периодов нужно сначала распровести, затем удалить из базы.
В типовой свертке, чтобы случайно не свернуть регистры сведений и другие регистры накопления, я отключил их обработку через групповое изменение (см.рис.2, 3)
Когда случайно перепутал кнопки - нажал "Свернуть все" вместо "Сформировать" - тогда потерял час времени, поскольку удалились записи по многим регистрам, потом пришлось восстанавливать копию из архива. Чтобы не путаться в кнопках, отключил их доступность совсем (см.рис.4).
Для проведения типовой свертки по определенным регистрам накопления:
"ДенежныеСредства",
"ДенежныеСредстваКСписанию",
"ТоварыВРезервеНаСкладах",
"РазмещениеЗаказовПокупателей",
"ЗаказыПокупателей" -
использовал только кнопку "Сформировать" (см. рис.4).
Добавлено 08-05-2020г:
бывают проекты по свертке, когда типовую обработку "Свертка информационной базы" можно не использовать для переноса остатков и оборотов по регистрам (сведений или накоплений):
- вообще УТ 10.3 интересна тем, что регистров накопления в программе мало...
- среди них отвечающих за определенный блок учета еще меньше - товары, денежные средства, НДС, взаиморасчеты с контрагентами...
- а регистры, которые имеют остатки по своему блоку на конец года (или другую дату) еще меньше, остальные оборотные...
- поэтому иногда проще написать свою обработку, которая собирает остатки по одному-двум регистрам, записывает остатки в документ Корректировка записей регистров - вот вам и документ ввода начальных остатков.
В очередном проекте по свертке остатков я так и поступил - написал обработку для свертки регистров ДенежныеСредства и ДенежныеСредстваКомитента. Остальные "денежные" регистры на конец года остатков не имели. Обработку прикладываю.
Если нужно перенести из одной базы в другую документ Корректировка записей регистров, переносите регистры, а не документ. Сам документ перенесется автоматом по ссылке - см.рис. Укажите только отбор по регистратору.
5. Типовая свертка не сворачивает регистры оборотов: алгоритм не написан, используется вызов команды "Возврат" для оборотных регистров. Получается, что после проведения свертки из базы исчезнут вместе с документами-регистраторами вся накопленная информация по оборотным регистрам!
К примеру, если вы используете накопительные скидки, то вам важно сохранить после свертки информацию по регистру "Продажи по дисконтным картам". В результате я написал обработку для сворачивания оборотов по регистру "Продажи по дисконтным картам", выкладываю здесь. Для других оборотных регистров можно использовать тот же принцип, и доработать алгоритм обработки по аналогии.
6. Так как УТ 10.3 обменивалась с БП 3.0, то перед проведением свертки, я провел обмен и изменил дату переноса документов на Дату свертки.
Так как процедура сворачивания остатков растянулась на несколько вечеров, то пришлось установить "Дату запрета редактирования" на Дату свертки, и включить "Применение даты запрета редактирования для полных прав" (через константу). Помним об этом!
7. После формирования документов остатков, документы за весь прошлый период распровел и пометил на удаление с помощью "Групповой обработки документов и справочников". И впоследствии удалил с помощью обработки "Удаление помеченных объектов без монопольного режима" (ищите на ИС). Хотя нет, удалил непосредственно с помощью обработки "Удалить документы без проверки" (выкладываю здесь).
Последнюю обработку не рекомендую использовать вслепую - требуется адаптация под вашу свертку. Поскольку с помощью нее удаляются все документы помеченные на удаление без проверки наличия ссылок на них, кроме документов, которые входят в записи регистров из документов "Корректировка записей регистров", используемых для отражения наших остатков в свертке базы. Зная какие регистры свернулись и содержат остатки на дату свертки, мы можем по ним исключить из удаления документы, входящие в состав остатков по данным регистрам. В общем, смотрите код обработки, он открыт, адаптируйте под себя!
8. Не использовал в запросах тип "Граница" вместо "Даты" (ДатыСвертки) - хотя по уму надо, и не пришлось анализировать и сворачивать регистры по НДС - и если кому придется, то воспользуйтесь подходом из пункта 2 и документом "Ввод Начальных Остатков НДС" и "Ввод Начальных Остатков НДС по Партиям" соответственно.
ОБНОВЛЕНИЕ от 24-12-2020г
Добавил обработки благодаря новому проекту:
1) "Создать оприходование по партиям товаров" - в очередной базе регистр "ТоварыНаСкладах" НЕ использовался, а все остатки товаров учитывались по регистру "ПартииТоваровНаСкладах". Поэтому для свертки пришлось использовать новую обработку. Обработка смотрит остатки на дату по регистру "ПартииТоваровНаСкладах", если количество положительное, то переносит остаток в документ Оприходование, если сумма остатка меньше или равна нулю, то в Оприходование садится 1 руб.
2) "Установить пометку удаления номенклатуры" - в базе номенклатура создавалась каждый раз при поступлении, товарная матрица обновлялась каждый квартал, поэтому номенклатура, поступившая в 2016-2017-2018 гг, уже не использовалась, но занимала много места.
Обработка смотрит номенклатуру, которой нет в остатках и оборотах регистра "ПартииТоваровНаСкладах". Есть нюанс, если у вас услуги (наборы, комплекты), то они не будут обработаны.
Если товара нет в обороте и на остатках, то он помечается на удаление. В дальнейшем его можно будет отдельной обработкой удалить.
3) "УдалитьСправочникиБезПроверкиСвязанныхСсылок" - в проекте номенклатура обновлялась часто и выходила из оборота каждый квартал (это розничный магазин Кальцедония - описание проекта есть в моих публикациях), поэтому номенклатуру можно было почистить - удалить неиспользуемую.
Я воспользовался уже давно разработанной обработкой - есть отдельные публикации, в которых вы также можете скачать эту обработку. В обработке пометил на удаление Номенклатуру и ЕдиницыИзмерения, запустил удаление.
В результате, база после удаления документов 2016-2018гг уменьшилась с 12,4 Гб до 4,4 Гб, после удаления номенклатуры уменьшилась до 4,3 Гб.
Дополню еще раз инструкцию, исходя из очередного опыта свертки базы.
1) Будьте готовы "сворачивать базу" всю ночь: запаситесь архивом рабочей базы, предупредите пользователей выйти из базы пораньше. Сами остатки на определенную дату формируются очень быстро. Дальнейший процесс распроведения и удаления документов из сворачиваемого периода может занять самое продолжительное время. При этом не получится распараллелить процесс, если у вас файловый режим базы: при удалении разных видов документов по разным организациям одновременно будет блокироваться таблица какого-нибудь общего журнала документов, что вызовет конфликт блокировок.
2) Запаситесь обработкой ВыгрузкаЗагрузкаДанныхXML.epf для обычных форм, которая изначально была разработана на платформе 8.2. Если у вас платформа 8.3 под УТ 10.3, просто откройте ее в конфигураторе для переконвертации под формат. В остальном мне хватило тех обработок, которые выложены здесь, и уже неоднократно применялись.
Для информации: стандартной обработкой от фирмы 1С для проведения свертки я не пользуюсь уже который год, хотя в публикации о ней было много написано.
3) Помните о дате запрета редактирования: есть "Основная дата" для таких документов, как Установка цен номенклатуры, а есть "Ограничение регл. информации" для документов, имеющих поле "Организация". Я слегка помучившись, откатил дату до самого 2000-го года, поскольку не знал от какой даты имеются документы - догадывался по реализациям, что до 2014 года можно удалять - надо было оставить начиная с 2019 года - и по сей день. См. рис.
4) За год забыл, что реализовал в своей же обработке Удаление документов и справочников для любых баз на обычных формах - см. рис. ниже - для того чтобы распровести и удалить документы "Установка цен номенклатуры" до даты 01.01.2019 - нужно было не просто указать в поле выбора вид документа, но и нажать кнопку-гиперссылку "+Добавить документ в список". Если этого не сделать, будут распроводиться и удаляться все документы подряд. Пришлось восстанавливать архив, часть работ и нагонять время.
5) При создании оприходования появлялись строки с пустыми - нулевыми - ценами и суммами. Пришлось не только споткнуться об это, но и вручную заполнить 0.01 в каждой строке. Анализировать ошибку и править код я не всегда расположен. См. рис. ниже - на рисунке на табличную часть наложен отбор, далее копировал 0.01 в каждое поле цены.
Оприходование (! в моем случае) нужно создавать только для одной организации, не зависимо от того, сколько у вас действующих организаций в базе. Это связано с тем, что регистры ТоварыНаСкладах и ПартииТоваровНаСкладах не имеют измерения Организация - регистры не имеют разреза учета по организациям, а склады общие.
Если у вас другая схема учета - когда учитываются остатки в разрезе организаций, то вам или придется задействовать регистр ТоварыОрганизаций, или если каждый склад соотносится с единственной организацией, то сопоставить самим вручную остатки по складу - соответствующей организации. В первом случае, при наличии ошибок в учете, регистр ТоварыОрганизций не поможет - только еще больше увязните в ошибках и потеряете время.
После создания и проведения всех оприходований (! в моем случае) файловая база с 7,3 Гб выросла до 9,3 Гб. Было не известно, хватит ли памяти для дальнейшего сжатия базы.
6) В базе велся и ведется учет по договорам разного формата - есть договора для учета в разрезе документов расчетов, есть договора для учета в целом по договору. Поэтому пришлось использовать обе обработку для создания ВводаНачальныхОстатков по взаиморасчетам с контрагентами - сначала без учета документов расчетов, затем дополнительно с учетом документов расчетов.
Посмотрите рис. ниже - в созданных документах не везде проставились документы оплаты - их нужно создать вручную через типовой механизм документа "ДокументРасчетовСКонтрагентом" (Документ расчетов с контрагентом (ручной учет)).
Создаем документ сами - см. рис.
То же самое касается документов расчетов - см. рис. Эти документы из сворачиваемого периода нужно будет распровести и удалить. Поэтому предварительно такого рода документы (здесь не только поступления товаров, здесь довольно широкий список видов документов заложен) надо заменить на документы "Документ расчетов с контрагентом (ручной учет)". Для быстрой замены надо удалить в каждой строке поле "Документ расчетов", далее нажать кнопку-меню "Заполнить" - автоматом будут созданы документы расчетов. Еще быстрее можно запрограммировать такую логику. Но скажем так, я не был расположен программировать. Поэтому пока только информирую.
То есть в идеале из этой картинки:
- у вас должна появиться вот такая картинка:
7) после распроведения и удаления документов в сворачиваемом периоде нужно провести сжатие базы: если оставить одну галочку напротив "Сжатия инф. базы", то размер базы не уменьшится. Если дополнительно задействовать переиндексацию и пересчет итогов, то размер базы уменьшится. По итогу очередной свертки база с 7.3 Гб - сначала увеличилась до 9.3 Гб - затем после сжатия уменьшилась до 4.3 Гб.
Это еще не конец свертки, поскольку будет еще удалена не используемая номенклатура и помеченные на удаление объекты (справочники и документы) в оставшемся периоде. Но об этом в другой раз напишу.
Дополнение от 27-01-2023г.
В представленном пакете обработок есть обработка "Удаления номенклатуры" - она проверяет товар по регистру "ПартииТоваровНаСкладах": если товар имеется в регистре, то он не удаляется. После тестов на копии, увидел, что есть документы, которые делают проводки по регистру "ТоварыНаСкладах", при этом не делают движений по регистру "ПартииТоваровНаСкладах". Например, документ "Перемещение товаров" или "Корректировка записей регистров" (по регистру "Товары на складах").
После этого переписал обработку для анализа регистра "ТоварыНаСкладах" - вместо регистра "ПартииТоваровНаСкладах". Удалив окончательно номенклатуру, увидел в непроведенных документах "Реализаций товаров и услуг" много-много записей "Объект не найден ..."
Оказывается менеджеры под конец года подготовили много новых номенклатур по новым заявкам от покупателей, создали непроведенные реализации. Пришлось быстро восстанавливать документы через вспомогательную обработку "УниверсальнаяВыгрузкаЗагрузка" для идентичных конфигураций.
Пока что обработку по удалению номенклатур не обновлял в представленном пакете обработок - то есть сейчас анализируется регистр "ПартииТоваровНаСкладах". Просьба быть внимательным!
Спасибо за то, что скачиваете и остаетесь на связи!
Всем добра! :)
С пользой для клиентов, RustIG
1) [Расширение] УНФ. Список заказов + Структура подчиненности
2) [Расширение] УТ 11.4. Счет на оплату с факсимиле
3) [Расширение] БП 3.0. Список счетов/ Список реализаций + Связанные документы
Внешние обработки (не расширения!):
1) Список заказов поставщикам + структура подчиненности
2) Список заказов покупателей + структура подчиненности
3) Список реализаций со структурой подчиненности + реестр документов
4) Список заказов покупателей (Расширенная версия)
Другие публикации:
1) Удаление справочников для любых баз на управляемых формах
2) Удаление документов для любых баз на управляемых формах
3) Удаление чеков ККМ в Рознице 2.2
4) Загрузка товаров, штрихкодов, цен и остатков на УФ - Розница 2.2
5) Отчет Остатки и цены (прайс с остатками)
6) Как почистить характеристики в УТ 10.3
7) [ЦФшник] Доработка конфигурации Конвертация Данных
8) [Внешняя обработка] Ввод показателей план-факта БП 3.0
9) [Шаблоны] Договоры для 1с-ника
11) Адресное хранение: этикетки складских ячеек со стрелками
12) Загрузка свойств товара из эксель
13) Маркировка: привязка марок к товарам и печать марок, поступивших от поставщика
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 10.3, релизы 10.3.49.3