Как исключить внутренние обороты в 1с

Обновлено: 07.07.2024

Все мы знакомы с такой замечательной регламентной операцией как "Закрытие месяца" в 1С:Бухгалтерии 8.3 (редакция 3.0).

Ситуация

И все мы были в ситуации, когда нужно закрыть период, а программа начинает требовать перепровести и закрыть предшествующий период.

Начинаешь закрывать предыдущий период, а она снова требует перепровести ранние периоды.

И так до бесконечности. Перепроводишь старые периоды - ползут цифры, а отчетность уже сдана. И год закрыт. Это настоящий кошмар для бухгалтера. Что делать?

Делаем резервную копию

Прежде всего, перед тем как закрывать период - я настоятельно рекомендую сделать резервную копию базы. Это позволит нам смело перепроводить документы, зная, что в случае чего всегда сможем вернуться к первоначальному состоянию. О том как сделать резервную копию написано здесь.

Вдумчиво читаем ошибки

Следующий момент. Если мы собираемся проделать все закрытия месяца, скажем, за 2013 год - сначала нужно отменить все закрытия месяца за год, а потом последовательно, начиная с января 2013 года выполнять закрытие месяца за закрытием месяца.

Дальше. Вдумчиво вчитывайтесь в ошибки, которые пишет программа. Делайте пропуск операции только в самом крайнем случае. Обычно достаточно правильно настроить параметры и корректно провести закрытие первого месяца в году и дальше всё идет как по нотам. Потратьте время, разберитесь с этими ошибками один раз и забудьте про них навсегда.

Но вот, предположим у нас уже закрыты все года до 2013 (или нам вообще перенесли все документы из старой редакции 2.0 в 1С 8.3) и нам нужно делать закрытие 2013 года, не изменяя прошлые года. Начинаем проводить закрытие января 2013 года, а программа ругается - мол повторите закрытие декабря 2012! Не поддавайтесь. Потому что если начнете перепроводить закрытие 2012 - поползут все цифры, а год уже закрыт.

Обманываем программу

В этом случае правильно заставить 1С:Бухгалтерию 8.3 думать, что 2012 год закрыт верно и перепроводить там ничего не нужно.

О том как это сделать ниже по шагам.

Очищаем регистр "Неактуальные регламентные операции"

  1. Откройте пункт меню "Функции для технического специалиста. ". О том как это сделать написано здесь.
  2. Найдите в открывшемся окне пункт "Регистры сведений". Раскройте его на плюсик.
  3. В списке регистров найдите пункт "Неактуальные регламентные операции". Откройте его.
  4. Удалите все элементы из этого окна. Выделяйте по очереди и нажимайте Delete или кнопку удаления на панели.

Настраиваем регистр "Исключенные из перепроведения месяцы"

Внимание! В новых версиях Бухгалтерии Предприятия (с версии 3.0.63.20 точно) больше не используется регистр "Исключенные из перепроведения месяцы".

Теперь прямо в закрытии месяца можно кликнуть по ссылки "Перепроведение документов" и выбрать вариант "Перепроведение не требуется".

Если закрытие месяца всё ещё требует повторного проведения документов за прошлый год - снова откройте меню "Функции для технического специалиста. ", найдите и откройте в нём регистр сведений "Исключенные из перепроведения месяцы".

Ваша задача создать на каждый месяц 2012 года (напоминаю, что мы пытаемся делать закрытие 2013 года, а 1С ругается на то, что нужно перепроводить 2012) отдельную запись в этом регистре (при помощи кнопки Создать):


Исключим из перепроведения январь 2012 - запись будет такой:


Нажмём кнопку "Записать и закрыть".

Затем февраль 2012:


И так далее до декабря.

Теперь у вас должно получиться провести закрытие месяца за январь 2013.

Какие ещё есть варианты?

Здесь буду описывать истории от читателей, которыми они делятся при разборах ошибки закрытия месяца у себя.

Читательница из Брянска пишет:

В 1с 8.3 работаем с 2016 г., а сама фирма с 2013 года. Сейчас попробовала удалить приемы на работу сотрудников с 2013, приняла их с 01.12.15 года (остатки по з/п вводила). И ВСЕ ЗАРАБОТАЛО)))) УРА!

Иван Ватумский делится своим случаем:

Пользователи перепровели документы в 2015, после чего потребовалось вновь перезакрыть 2015 год.

Тут выяснилось, что в операции "Закрытие месяца" за нужный период не отображается ни одной операции.

Оказалось, что причина этого в регистре сведений "Даты ввода начальных остатков", которые были установлены как раз на 31.12.2015 и тем самым давали указание программе не совершать регламентные операции закрытия месяца.

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нужно в него добавить дополнительное условие:
Исключить из оборотов счета с определенной аналитикой.
Список этих счетов с аналитикой заполняется скажем в РС "ИсключаемаяАналитика"
с реквизитами:
-Счет
-СубКонто1
-СубКонто2
-СубКонто3

где обязательны к заполнению Счет и хотя бы одно из СубКонто

Вопрос:
Как всунуть в вышеприведенный текст запроса условие исключения этих записей из РС?

создаёте временную таблицу ИсключаемыеСчета

а потом в параметрах виртуальной таблицы Обороты добавляете фильтрацию Счета по ВТ ИсключаемыеСчета

romansun пишет:
в параметрах виртуальной таблицы Обороты добавляете фильтрацию Счета по ВТ ИсключаемыеСчета

Но ведь нужна фильтрация не просто по счетам а по счетам с определенной аналитикой

(3) хм, мне надо обдумать Ваш совет

(4)
ну так вы напишите такой запрос, который отберет вам в исключаемую таблицу только счета с определенной аналитикой, и вообще с каким-либо угодным условием

а если возможно обойтись условием по субконто, то, да - (3)

romansun пишет:
запрос, который отберет вам в исключаемую таблицу только счета с определенной аналитикой,
По условию нужно отбирать все аналитики кроме некоторых исключаемых.
В параметры, я так понимаю, (я пока плохо с этим разбираюсь) это условие не засунешь, ибо параметр Счет не поймет ограничения по СубКонто, а параметр СубКонто не поймет ограничения по Счету.

Похоже мне нужно смотреть в комментарий (3).
Итак, мне нужно:
- получить список исключаемых субконто
- разбить их на три списка по номерам субконто 1, 2, 3
- и добавить в параметр Условие:

нет, что-то слишком коряво вышло

P.S.
Я только что уточнил задание (на обеде все были не у кого было уточнить ранее), что счет в исключаемых аналитиках тот же что и в условии Счет.
Так что tango в (3) быстро просек всю ситуацию даже с неполными входящими и дал лаконичный, но точный ответ :)
Спасибо.
Но все же мне не нравится мое корявое решение с разбиением ограничений на три списка.
Как бы все это совместить в одном.

что в условие по счету, что по субконто можно писать запросы вида

Счет не в (Выбрать Счет из . где . )
Субконто1 не в (Выбрать Субконто из . где . )

т.е. полноценные выборки, которые на выходе дадут счет (список счетов) или субконто (список субконт). Этим можно оперировать при констурировании параметров у виртуальных таблиц.

PS
вот, кстати и пиар типа - возможно станет яснее с параметрами :)

romansun пишет:
что в условие по счету, что по субконто можно писать запросы вида

Счет не в (Выбрать Счет из . где . ) Субконто1 не в (Выбрать Субконто из . где . )

т.е. полноценные выборки, которые на выходе дадут счет (список счетов) или субконто (список субконт).

мне сдается, что в этом случае получится что условия не пересекаются, ведь тут ИЛИ,
и не попадет ли на другой счет субконто?
Тут нужно И (счет И субконто вместе в связке)
Здается мне что тут нужно смотреть 6 параметр УСЛОВИЕ, там где "Организация = &Организация".
Читаю цитату из "Проф. разработки" Габеца и ко.
"параметр Условие - содержит конструкцию языка запросов. Позволяет установить отбор данных виртуальной таблицы по значениям субконто и измерений регистра бухгалтерии".
Хотя, впрочем нет, ведь здесь тоже не написано про счет, ведь счет это не измерение.
Ну счас проверю.


Выборка из регистра бухгалтерии и работа с виртуальными таблицами мало чем отличается от выборки из регистра накопления. Поэтому перед чтением данной статьи рекомендую ознакомиться со статьей про работу с виртуальными таблица регистра накопления. В данной статье подробно будет рассмотрена только та функциональность, которая есть только у регистра бухгалтерии.

Выборка из регистра бухгалтерии

Помимо выборки из основной таблицы регистра бухгалтерии в запросе можно выбрать данные из таблицы субконто.

РегистрБухгалтерии.РегистрБухгалтерии1 КАК РегистрБухгалтерии1


Выборка значений субконто:

РегистрБухгалтерии1Субконто.Регистратор КАК Регистратор , РегистрБухгалтерии1Субконто.МоментВремени КАК МоментВремени , РегистрБухгалтерии1Субконто.НомерСтроки КАК НомерСтроки , РегистрБухгалтерии1Субконто.ВидДвижения КАК ВидДвижения , РегистрБухгалтерии.РегистрБухгалтерии1.Субконто КАК РегистрБухгалтерии1Субконто


Виртуальные таблицы регистра бухгалтерии

У регистра бухгалтерии немного больше виртуальных таблиц, чем у регистра накопления:

При этом у регистра бухгалтерии без поддержки корреспонденции не будет виртуальной таблицы ОборотыДтКт.

ДвиженияССубконто

Виртуальная таблица ДвиженияССубконто содержит в себе поля как основной таблицы регистра бухгалтерии, так и таблицы значений субконто:


Данная таблица получается соединением основной таблицы и таблицы значений субконто. Из всех виртуальных таблиц только данная таблица может содержать неактивные записи (поле Активность = Ложь), но при этом в самой таблице есть поле Активность, поэтому неактивные записи можно будет исключить в запросе.

Таблица ДвиженияССубконто имеет следующие параметры:

  • С помощью параметров НачалоПериода и КонецПериода можно ограничить выборку записей по периоду. Тип может быть Дата, МоментВремени, Граница.
  • Параметр Условие позволяет наложить отбор на любые поля таблицы.
  • Параметр Упорядочивание позволяет задать поле по которому нужно отсортировать таблицу. После имени поля можно указать ВОЗР или УБЫВ для определения порядка сортировки (по возрастанию или по убыванию).
  • Параметр Первые позволяет ограничить количество выбираемых записей.
РегистрБухгалтерии1ДвиженияССубконто.СчетДт КАК СчетДт , РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1 , РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт2 КАК СубконтоДт2 , РегистрБухгалтерии1ДвиженияССубконто.СчетКт КАК СчетКт , РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт1 КАК СубконтоКт1 , РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт2 КАК СубконтоКт2 , РегистрБухгалтерии1ДвиженияССубконто.Сумма КАК Сумма РегистрБухгалтерии.РегистрБухгалтерии1.ДвиженияССубконто ( &НачДата , &КонДата , СчетДт = &СчетДт , Организация , 10 ) КАК РегистрБухгалтерии1ДвиженияССубконто

Данный запрос выберет первые 10 записей за период между &НачДата и &КонДата, с отбором по счету дебета = &СчетДт, выборка будет отсортирована по полю Организация.

Все отборы, сортировку и ограничение количества записей можно указать не в параметрах виртуальной таблицы, а в тексте запроса. Преимущество использования параметров в том, что они будут использованы в процессе формирования виртуальной таблицы, что положительно скажется на производительности запроса.

Как правило данную таблицу используют для получения проводок вместе с субконто.

Виртуальная таблица остатки

Отличия от виртуальной таблицы регистра накопления

Виртуальная таблица остатков регистра бухгалтерии очень сильно похожа на виртуальную таблицу остатков регистра накопления, поэтому рассмотрим только основные отличия.

Во-первых помимо измерений регистра бухгалтерии в таблице остатков присутствуют поля Счет и субконто. Количество субконто равно максимальному количеству субконто в плане счетов.


В нашем примере в настройках плана счетов было указано максимум два субконто, поэтому в таблице есть два поля для субконто: Субконто1 и Субконто2. Если на каком-то счете присутствует только одно субконто, то в поле Субконто2 будет NULL.

Во-вторых, для каждого ресурса создается по пять полей:

  • Остаток
  • ОстатокДт
  • ОстатокКт
  • РазвернутыйОстатокДт
  • РазвернутыйОстатокКт

В поле Остаток будет остаток, как он хранится в таблице итогов. Дебетовый остаток будет больше нуля, кредитовый меньше.

Поля ОстатокДт и ОстатокКт рассчитываются по разному, в зависимости от вида счета:

  • Для активного счета ОстатокКт всегда равен нулю, а ОстатокДт = Остаток.
  • Для пассивного счета ОстатокДт всегда равен нулю, а ОстатокКт = -Остаток.
  • Для активно-пассивного счета, если Остаток > 0, то ОстатокДт = Остаток, а ОстатокКт = 0. Если Остаток < 0, то ОстатокДт = 0, а ОстатокКт = -Остаток.

Даже если у активного счета остаток будет меньше нуля, то он будет отображаться как дебетовый остаток, но с минусом. Аналогично с пассивным счетом: если остаток больше нуля, то он будет по кредиту, но с минусом:


Признак Балансовый у измерений и ресурсов никак не влияет на количество полей.

В-четвертых, есть два новых параметра: УсловиеСчета и Субконто:


УсловиеСчета позволяет задать отбор по счетам учета, можно указать несколько счетов.

В параметре Условие можно задать отбор по измерениям и субконто, данный параметр аналогичен параметру для виртуальной таблицы регистра накопления.

Читайте также: