В настоящей публикации М.А. Власова, преподаватель-консультант Центра сертифицированного обучения компании "1С:Автоматизация", детально рассматривает реализованный в "1С:Комплексной автоматизации 8" механизм осуществления завершающих операций месяца, который предназначен для формирования предусмотренных законодательством проводок, закрытия ряда счетов и определения финансового результата деятельности. Особую актуальность и практическую ценность статье придают рекомендации автора по организации контроля правильности проведения регламентных операций, а также рассмотрение операций по закрытию года.

Процедура закрытия месяца

Процедура закрытия месяца состоит из ряда регламентных операций: начисление амортизации, погашение стоимости спецодежды и спецоснастки, определение стоимости движения МПЗ за месяц, переоценка валютных средств, списание на текущие затраты расходов будущих периодов, определение фактической себестоимости выпущенных продукции и услуг, выявление отклонений в оценках доходов и расходов в бухгалтерском и налоговом учете, начисление налога на прибыль, расчет обязательств по НДС и др. Все эти операции проводятся отдельными регламентными документами, создаваемыми и проводимыми в определенной последовательности.

Для облегчения работы пользователя по проведению регламентных операций в конфигурации "1С:Комплексная автоматизация 8" создан функционал "Закрытие месяца". Он позволяет выполнять настройку и контроль процедуры закрытия месяца и помогает координировать взаимодействие ответственных лиц, выполняющих отдельные регламентные операции.

Настройка процедуры закрытия месяца

Сначала выполняется предварительная настройка (меню - Регламентные операции - Настройка закрытия месяца ). Все настройки закрытия месяца являются элементами одноименного справочника. Каждая настройка создается независимо от организаций, входящих в состав предприятия, и может использоваться для любой из них.

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

На закладке Сводные настройки отмечаются те операции, которые должны быть осуществлены. По умолчанию в настройку закрытия месяца включаются все операции, которые могут выполняться, за исключением тех, которые не соответствуют настройке параметров учета (меню Интерфейс "Заведующий учетом" - Настройка учета - Настройка параметров учета ).

Так, в соответствии с настройкой параметров учета в программе может вестись партионный учет или применяться режим расширенной аналитики учета затрат (РАУЗ). При использовании РАУЗ ресурсоемкие регламентные операции Восстановить последовательность партионного учета и Скорректировать стоимость списания МПЗ не выполняются, поэтому на схеме, представленной на рис. 1, они неактивны, и настроить их применение нельзя.

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

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

Каждой регламентной операции должен быть назначен ответственный. При непосредственном выполнении процедуры закрытия месяца ему программой будет формироваться задание. Ответственные за выполнение регламентных операций назначаются на одноименной закладке. Это просто сделать, выбрав в левом поле операцию, а в правом - пользователя (или группу пользователей), который должен ее выполнить, а затем воспользоваться стрелкой (Рис. 2).

Рис. 2. Назначение пользователей, ответственных за выполнение регламентных операций

На закладке Распределение затрат следует указать способы распределения затрат, которые используются данной настройкой закрытия месяца. По умолчанию все затраты подразделений вида "Основное производство" и "Вспомогательное производство" распределяются по объему выпуска, а затраты подразделений с видом "Прочее" - по плановой себестоимости выпуска.

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

Кроме того, нужно иметь в виду, что для того, чтобы распределение затрат было произведено программой корректно, необходимо, чтобы в базе было настроено соответствие между подразделениями предприятия и подразделениями организаций (меню Интерфейс "Полный" - Справочники - Предприятие - Подразделения ).

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

Как правило, каждой регламентной операции соответствуют один или несколько документов, которые должны быть созданы и проведены. Настройка такого соответствия осуществляется в регистре сведений Список Документы регламентных операций . Он открывается заполненным по умолчанию по нажатии на кнопку командной панели Документы регламентных операций (Рис. 3). Как правило, специально заполнять его не требуется.

Рис. 3. Документы для выполнения регламентных операций

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

  • либо в связи с необходимостью выполнения дополнительных действий (например, может понадобиться ввести процент деятельности по ЕНВД при расчете зарплаты и "зарплатных" налогов);
  • либо в связи с множественностью создаваемых документов, результаты заполнения которых зависят от проведения предыдущих (операция Начислить зарплату и ЕСН );
  • либо в связи с отсутствием документов (регламентная операция может выполняться не только документом, но и специальной обработкой);
  • либо в связи с тем, что порядок выполнения регламентной операции детализируется на отдельной схеме.

Предусмотрена также возможность настройки списка отчетов, который будет доступен пользователю для контроля результатов выполнения регламентной операции из формы Регламентная операция (по кнопке командной панели Отчеты ).

Настройка осуществляется в регистре сведений Список Отчеты регламентных операций (кнопка командной панели формы настройки закрытия месяца Отчеты регламентных операций ). Для одной регламентной операции может быть задано произвольное количество отчетов. Настройка состава отчетов не является обязательной.

Состав и последовательность выполнения операций отражается на графической схеме (документ Настройка закрытия месяца закладка Схема ). Включение/выключение выполнения регламентной операции и назначение ответственных можно выполнять непосредственно на схеме.

Рассмотрим порядок выполнения процедуры закрытия месяца.

Запуск процедуры закрытия месяца

Новая процедура закрытия месяца создается в меню Интерфейс "Заведующий учетом" - Регламентные операции - Процедура закрытия месяца .

В форме Закрытие месяца на закладке Параметры необходимо указать:

  • закрываемый месяц;
  • организацию;
  • настройку закрытия месяца;
  • принадлежность к видам учета (управленческий, бухгалтерский, налоговый).

Затем следует загрузить настройки и запустить процедуру, используя одноименные кнопки.

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

В ходе выполнения процедуры закрытия месяца:

  • автоматически формируются задания ответственным лицам на выполнение регламентных операций;
  • при выполнении очередной регламентной операции автоматически осуществляется переход к следующей операции - происходит формирование новых заданий. При этом некоторые операции могут выполняться параллельно (одновременно).

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

Контроль хода выполнения процедуры

На закладке Схема процедуры Закрытие месяца можно, используя графические изображения, наглядно увидеть текущее состояние отдельных регламентных операций (Рис. 4):

  • не выполняемые (в связи с настройками программы) операции расположены на белом фоне; дополнительно указано: "Не выполняется";
  • отключенные пользователем операции отображены серым цветом;
  • операции, назначенные для выполнения текущему пользователю (или группе пользователей, в которую он входит), обведены жирной рамкой;
  • операции, задания на выполнение которых еще не сформированы, отображены светлым без каких-либо обводок;
  • операции, для которых на текущий момент сформированы задания (и которые ожидают выполнения), обведены красным пунктиром;
  • выполненные операции заштрихованы;
  • у завершенной процедуры закрытия месяца фон схемы становится темным.

Рис. 4. Графическое изображение процедуры закрытия месяца

Текущее состояние процедуры закрытия месяца ("запущена", "завершена") отображается в заголовке формы. Открыть форму регламентного задания можно по двойному щелчку левой кнопки мыши на соответствующем элементе графической схемы либо регламентном задании в списке регламентных операций. С помощью формы регламентного задания можно создать и провести сразу все необходимые для выполнения регламентной операции документы, проверить результаты их проведения по регистрам с помощью кнопок меню, просмотреть отчеты по выполнению регламентных операций (справки-расчеты), а также ввести в программу информацию о том, что данная регламентная операция выполнена.

Выполнение регламентных операций

Ответственные за выполнение регламентных операций могут видеть направленные им задания на выполнение регламентных операций в форме списка "Регламентные операции" (меню Интерфейс "Заведующий учетом" - Регламентные операции - Регламентные операции ).

Для выполнения каждой регламентной операции необходимо провести следующие действия.

1. Создать и провести соответствующие (назначенные регламентной операции) регламентные документы или выполнить обработки. Обработки выполняются отдельно от бизнес-процесса по закрытию месяца, с использованием кнопок основного меню программы. Создание документов можно производить также отдельно от бизнес-процесса, но разумно этот делать из формы регламентного задания - с помощью одноименной кнопки, которая позволяет создавать необходимые документы автоматически. Форма регламентного задания открывается по щелчку левой клавишей мыши по графическому изображению процедуры на схеме закрытия месяца либо при нажатии на соответствующую строку в списке регламентных заданий.

2. Проверить результат.

3. Отметить регламентную операцию как выполненную (кнопка "Отметить как выполненную"). При этом если регламентная операция процедурой Закрытие месяца была назначена, но фактически ее выполнение не требуется (о чем программа выдает соответствующее сообщение), то для такой регламентной операции в ее форме можно назначить действие "Выполнить без проверок".

Рассмотрим операции, входящие в состав регламентных.

Выполнить допроведение документов

Данная операция выполняется одноименной обработкой (меню Интерфейс "Заведующий учетом" - Отложенное проведение - Допроведение документов ). Процедура необходима, когда для организации был установлен режим отложенного проведения документов (Рис. 5).

Рис. 5. Установка режима отложенного проведения

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

После завершения допроведения документов, помечаем регламентную операцию выполненной. При этом в списке регламентных операций программа установит флажки, свидетельствующие о том, что операция выполнена, а на графической схеме элемент, соответствующий выполненной регламентной операции, будет заштрихован (Рис. 6).

Рис. 6. Отметка о выполнении регламентной операции

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

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

Восстановить последовательность расчетов по приобретению (реализации)

Эти регламентные операции выполняются обработкой Восстановление состояния расчетов с контрагентами (меню Интерфейс "Заведующий учетом" - Регламентные операции - Восстановление последовательности расчетов ), которая предназначена для выявления наличия авансов (Рис. 7).

Рис. 7. Восстановление последовательности расчетов с контрагентами

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

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

Восстановить последовательность партионного учета

Если предприятие не использует РАУЗ, то необходимо выполнить дополнительную операцию, выполняемую обработкой Проведение по партиям (меню Интерфейс "Заведующий учетом" - Учет затрат - Проведение по партиям ), которая предназначена:

  • для восстановления правильной последовательности учета партий материально-производственных запасов, если документы оприходования и списания были проведены задним числом;
  • для регламентированного списания стоимости партий запасов в случае, если такое списание не производилось в момент проведения документов (то есть в настройке параметров учета не был установлен флажок Списывать партии при проведении документов).

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

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

Скорректировать стоимость списания МПЗ

Если не применяется РАУЗ, то организация при закрытии месяца должна провести регламентную операцию по корректировке стоимости списанных МПЗ. Она выполняется документом (меню - Документы - Регламентные операции - Корректировка стоимости списания товаров ). Корректировка необходима для:

  • расчета средневзвешенной стоимости списания партий при использовании способа оценки МПЗ "По средней" (в течение месяца стоимость учитывалась по средней скользящей, и данной операцией она пересчитывается).
  • пересчета стоимости товарно-материальных ценностей с включением в нее дополнительных расходов на их приобретение, если отражение в учете таких расходов было произведено после списания ценностей.

Параллельное выполнение регламентных операций

Некоторые регламентные задания могут выполняться параллельно (Рис. 8). Это видно в списке регламентных заданий и еще более наглядно - на графической схеме (задания расположены на одном уровне, каждое обведено пунктирной линией).

Рис. 8. Назначения нескольких регламентных заданий одновременно

Выбираем операцию Начислить амортизацию ОС , которая предназначена для начисления амортизации и при необходимости амортизационной премии в соответствии с настройками, сделанными при принятии основного средства к учету (вводе в эксплуатацию). Открываем окно регламентной операции двойным щелчком левой клавиши мыши по элементу, изображенному на графической схеме, и нажимаем на кнопку "Создать документы". В результате будет создан документ "Амортизация ОС", датированный последним днем закрываемого месяца. Из формы регламентной операции документ, нажав на соответствующие кнопки, можно провести и посмотреть результат проведения в бухгалтерском и налоговом учете (Рис. 9).

Рис. 9. Проведение созданного документа Амортизация ОС

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

Аналогичным образом выполняются следующие операции.

Начислить амортизацию НМА. Эта операция начислит амортизацию нематериальных активов и спишет расходы на научно-исследовательские и опытно-конструкторские работы (НИОКР) при проведении созданного документа Амортизация НМА .

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

Списать РБП. В ходе выполнения данной операции часть стоимости расходов будущих периодов будет перенесена на текущие расходы документом .

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

Рассчитать расходы по страхованию. Создаваемый при выполнении этой операции документ "Расходы на добровольное страхование" предназначен для списания расходов будущих периодов по добровольному страхованию работников в бухгалтерском (76.01.2 "Платежи (взносы) по добровольному страхованию работников") и налоговом учете (97.02 "Расходы будущих периодов на добровольное страхование работников").

Документы следующей регламентной операции Начислить зарплату и ЕСН создаются, минуя ее форму. К таким документам относятся:

  • Начисление зарплаты (меню Интерфейс "Расчет зарплаты работников организаций" - Расчет зарплаты - Начисление зарплаты );
  • Расчет ЕСН (меню Интерфейс "Расчет зарплаты работников организаций" - Налоги - Расчет ЕСН );
  • Отражение зарплаты в регл.учете (меню Интерфейс "Расчет зарплаты работников организаций" - Учет зарплаты - Отражение зарплаты в регл.учете ).

Операция Рассчитать НДС предполагает создание множества регламентных документов, в связи с чем ход ее выполнения можно контролировать с помощью отдельной графической схемы (Рис. 10). После выполнения всех предусмотренных регламентных операций фон схемы темнеет, и операция Рассчитать НДС на основной схеме становится выполненной (заштрихованной).

Рис. 10. Графическая схема выполнения регламентных операций по НДС

Выполнить распределение расходов по видам деятельности, нормирование расходов

При проведении документа Регламентные операции налогового учета (по налогу на прибыль) будут выполнены те регламентные операции, которые отмечены в форме диалога документа.

Распределение расходов по видам деятельности (ЕНВД/не ЕНВД). Данная операция используется, если наряду с деятельностью, подпадающей под уплату ЕНВД, осуществляется деятельность, не подпадающая под указанный спецрежим. Операция осуществляет распределение расходов, которые не могут быть непосредственно отнесены к какому-либо виду деятельности, пропорционально доле доходов от каждого вида деятельности в общем объеме доходов.

Нормирование расходов на рекламу. Нормирование расходов на добровольное страхование и расходов на возмещение затрат работников по уплате процентов. Нормирование представительских расходов. Данные операции используются в отношении указанных расходов, учитываемых для целей налогообложения по нормам, установленным главой 25 НК РФ.

Рассчитать себестоимость (БУ,НУ). Рассчитать себестоимость (УУ)

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

Операция Расчет себестоимости доступна только при использовании РАУЗ. Она выполняется документом Расчет себестоимости выпуска в несколько действий, состав которых может быть различным для разных организаций (Рис. 11).

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

Рис. 11. Расчет себестоимости выпуска

Сформировать финансовый результат

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

Создаваемый документ также может списывать убытки прошлых лет для целей налогового учета, согласно требованиям статьи 283 НК РФ. Сумма убытков рассчитывается следующим образом: если на момент проведения закрытия месяца на счете 97.11 "Убытки прошлых лет" в налоговом учете числится дебетовое сальдо, происходит расчет сумм списания расходов будущих периодов по правилам, указанным в аналитике, построенной на справочнике Расходы будущих периодов . Полученные суммы списываются на счет 99.01 "Прибыли и убытки без налога на прибыль".

Рассчитать налог на прибыль

Документ I выполняет расчет постоянных и отложенных налоговых активов и обязательств в соответствии с нормами ПБУ 18/02 "Учет расчетов по налогу на прибыль", определяет сумму условного расхода (либо дохода) по налогу на прибыль, а также производит начисление текущего налога на прибыль в бюджет (с распределением по уровням бюджетов).

Закрыть год

Документ Закрытие года производит реформацию бухгалтерского баланса и закрытие счетов доходов и расходов в налоговом учете. Такой документ создается при закрытии декабря.

После выполнения всех регламентных операций, предусмотренных запущенной процедурой закрытия месяца, данная процедура считается завершенной. Фон графической схемы, отображающей регламентные операции, темнеет (Рис. 12).

Рис. 12. Графическая схема завершенной процедуры закрытия месяца

Отмена выполнения регламентных операций по закрытию месяца

Если требуется отменить выполнение одной из регламентных операций по закрытию месяца, то следует произвести следующие действия. На схеме запущенной процедуры закрытия месяца (меню Регламентные операции - Закрытие месяца ) нужно щелкнуть правой клавишей мыши по графическому изображению отменяемой операции и выбрать действие Отменить выполнение регламентной операции .

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

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

Справки-расчеты по завершающим операциям месяца

Для создания учетной документации и вывода ее с целью утверждения и хранения на бумажный носитель предусмотрен набор отчетов, именуемых "Справки-расчеты" (меню Интерфейс "Бухгалтерский и налоговый учет" - Регламентные операции - Справки-расчеты ).

В их состав входят следующие справки-расчеты:

  • Переоценка валютных средств (отражаются переоцененные счета в разрезе аналитики, курсовые разницы);
  • Списание расходов будущих периодов (показывает сумму каждого РБП, отнесенную на текущие расходы, остаток несписанной суммы);
  • Нормирование расходов (отчет включает базы для нормирования представительских, рекламных и пр. расходов, суммы, учитываемые при расчете налога на прибыль нарастающим итогом за налоговый период и за закрываемый месяц);
  • Постоянные и временные разницы (отражает постоянные и временные разницы, порядок признания и списания рассчитываемых на их основе постоянных и отложенных налоговых активов и обязательств);
  • Расчет налога на прибыль (сопоставляются учитываемые и не учитываемые для целей главы 25 НК РФ доходы и расходы, выявляется финансовый результат по данным бухучета, показываются корректировки бухгалтерского финансового результата, налоговая база по налогу на прибыль, рассчитывается налог);
  • Пересчет стоимости отложенных активов и обязательств (применялся при пересчете ОНА и ОНО при законодательном уменьшении ставки налога на прибыль с начала 2009 года).

Многие помнят о проблеме медленного проведения и перепроведения документов в связке 1С 7.7 - MS SQL.

С этой же проблемой и я столкнулся когда-то, после того, как перевел торговую базу своего предприятия с DBF на SQL.

Тогда же и была реализована эта технология. Хотя сама идея появилась у меня несколько раньше.

Дано: партионный учет товаров, FIFO, списание себестоимости в момент перепроведения документа. До 2500 документов с движениями по регистрам товарного и денежного учета в день, что составляло около 60000 в месяц. В среднем, 22 строки на документ Реализации ТМЦ. Частые корректировки в товарных документах текущего месяца "задним" числом. Продажи в разрезе ТП. Контроль директором себестоимости/наценки on-line. Среднее время проведения документов Реализация ТМЦ (как самых "тяжелых") 2-2,5 секунды.

Надо: быстро, желательно в пределах 4-5 часов восстанавливать всю последовательность перед закрытием месяца. Причем жизнь показала, что процесс может повториться 2-3 раза. При этом - не внося никаких изменений в структуру и кодинг конфигурации.

Посмотрим на движения по регистру "Партии Наличие" документа Реализация ТМЦ:

Мы знаем, что при списании Партий ТМЦ списывается остаток с той партии, что пришла первой. Если количество списываемого товара более количества на остатке данной партии, происходит списание с последующих партий.

Посмотрим в "Ведомость по партиям ТМЦ":

Есть пересписание по партии. А какие условия могут привести к этому?

1. "Переползание" документов из предыдущей партии;

2. Уменьшение количества/стоимости в документе поступления/оприходования;

3. Увеличение количества в документах списания;

4. Возможно, был удален возврат товара с этой партии;

5. Возможно перемещен документ по времени журнала документов - из конца дня в начало, или более того - из одного дня в другой.

Нас уже не волнует кто, когда, что, где и зачем. Наша цель - убрать "красноту".

Если это делать "руками" что для этого надо? Правильно, перепровести последовательно документы под номерами 3845 и 3846. После этого они "соскользнут" на следующую партию. Затем обновляем отчет, и смотрим, нет ли "красноты" на следующей партии.

При этом для всех остальных документов перепроведение не сыграет никакой роли! Все товары так и останутся в пределах своих "родных" партий.

Ну а что нам мешает написать аналитический модуль, который будет проверять это соответсвие партий? Ничего.

Анализ показал, что подобные подвижки в общей массе движений составляют не более 10% от общего числа документов в месяц. А перепровести 6000 все же проще, чем 60000.

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

Расхождения в остатках и партиях выделены цветом.

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

Кстати, в прямом SQL-запросе возможно реализовать вариант полного анализа подобных ситуаций, что нам и удалось в результате сделать: запрос возвращал нам только строки с недостатком товара. Для данного примера, это были бы строки товаров №№ 3, 6, 8.

Нашли расхождения - перепровели. Потом следующий.

По аналогии был организован анализ оплаты.

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

23/10/2015

Параллельное восстановление партий

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

Типовые конфигурации 1С, например, "1С:Управление производственным предприятием" (УПП) давно предлагают множество механизмов для упрощения данных расчетов, например, инструментарий механизма РАУЗ (расширенной аналитики учета затрат). Данный механизм действительно позволяет в некоторых случаях существенно упростить технически, а значит - ускорить функции расчета себестоимости. Проблема только в том, что использовать данный подход можно не всегда, и предприятиям приходится использовать старый добрый партионный учет, а вместе с ним - использовать процедуру восстановления партинного учета.

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

Первое, с чем приходится сталкиваться при выполнении проектов по оптимизации производительности процедуры восстановления партий - это устаревшие методы выполнения этой процедуры, а именно - полное перепроведение документов. Иногда это только определенные виды документов, участвующие в «партиях», иногда вообще все без разбора. Нам кажется, что данный подход идет с тех времен, когда действительно других альтернатив и не было, либо с тех конфигураций, в которых это единственный способ. Однако, сейчас для рассматриваемой нами конфигурации УПП это не так. В УПП есть более аккуратные и производительные механизмы для выполнения этих задач, а именно:

  • Процедура восстановления последовательности партионного учета (отдельно УУ, БУ, организациям)
  • Процедура восстановления взаиморасчетов (определения авансов)

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

Хорошо, но что если мы используем именно эти обработки и все равно процесс восстановления партий занимает длительное время, например, не успевает выполниться за ночь? При этом серверные мощности, чаще всего, простаивают (не имеют даже 30% загрузки).

По нашему опыту, время обработки одного документа не превышает 0,2 - 0,8 секунд и сам код по корректировке движений написан достаточно хорошо. Чтобы получить существенный прирост, нужно сократить это время, например, с 0,2 сек до 0,05, что кажется практически невыполнимой задачей, даже если рассматривать возможность изменения не только кода конфигурации, но и тотальной замены оборудования на последние поколения процессоров и систем хранения данных на Flash/SSD. Неужели нет выхода?

Оказывается, он есть! Тут нам на помощь приходит наш опыт олимпиадного программирования и пытливый ум, который шепчет, казалось бы, абсурдную фразу - давайте сделаем процесс восстановления "последовательности" - "параллельным"! Казалось бы, это невозможно, ведь мы намеренно "расставляем" документы строго друг за другом и именно так их и обрабатываем. Это и объясняет медлительность процесса - он идет в один поток, ограничен производительностью одного ядра процессора серверов, которые, как правило, имеют достаточно много простаивающих в это время других ядер.

На самом деле, расположение документов друг за другом - это некоторое упрощение, которое намеренно используется и гарантирует корректность учета, но не является единственно возможным решением. Каждый документ в последовательности зависит не от всех предыдущих документов, а только от некоторых, например, от тех документов, в которых есть та же самая номенклатура. При этом все другие документы не требуется проводить «до» нашего выбранного документа, и их можно проводить параллельно!

Откровенно говоря, подобная идея и подход конечно не новы, например, в базе знаний фирмы "1С"по технологическим вопросам есть статья (http://kb.1c.ru/articleView.jsp?id=72), которая описывала подобные подходы. В интернете также можно найти и другие подобные темы, в том числе различные интерпретации таких подходов (например, "блокировочный механизм" http://www.softpoint.ru/article_id375.htm и т.д.). Однако, проблемами всех указанных подходов является то, что они основываются на некоторых допущениях или искусственно формируемых "блоках" обработки данных, и не имеют четкой последовательности обработки. Мы захотели устранить эти недостатки, используя максимально «академический» подход, и считаем, нам это удалось.

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

Второй этап - это непосредственное восстановление (корректировка движений), только уже не по последовательности, в которой регистрируются документы платформой, а по нашему графу. При этом вот что важно - собственно код и алгоритмы формирования движений остаются полностью типовыми, а значит, конфигурация сохраняет возможность обновления. Все наши доработки находятся в отдельной подсистеме и только используют функции общих модулей, которые используются и в типовых обработках. Это гарантирует также и корректность результата - он всегда будет совпадать с типовым, последовательным восстановлением. Более того, это справедливо и для отраслевых решений (например, "1С:Управление птицефабрикой"), где в последовательности могут присутствовать специфические документы. Наличие первого этапа и дальнейший классический обход графа в глубину позволяют даже спрогнозировать и время выполнения обработки, и степень "параллельности" процесса, которая, очевидно, зависит от конкретных данных в базе. С помощью данных механизмов мы можем понять необходимые ресурсы сервера, а также эффективно управлять ими.


Собственно обработка очереди документов по такому графу не представляет собой каких-то сложностей и достаточно типовая - есть управляющее фоновое задание, которое определяет доступные для обработки документы в нужном порядке и запускает необходимое количество рабочих фоновых заданий, каждое из которых занимается обработкой конкретного документа. Весь процесс происходит асинхронно, это значит, что для оператора нет необходимости держать открытым сеанс УПП, в котором был произведен запуск - все будет работать само, динамически отображая процесс на специальной диаграмме. Здесь же можно регулировать нагрузку - максимальное количество потоков (рабочих фоновых), которые будут запущенны одновременно. И здесь же можно даже приостановить этот процесс, поставив обработку на паузу, а также и продолжить его, без необходимости повторного расчет и запуска. Так как на первом этапе мы проводим специальные расчеты для того, чтобы быть уверенными в возможности параллельной обработки документов, в процессе обработки взаимоблокировки и таймауты блокировок практически исключены. Помешать процессу могут только параллельно работающие пользователи, которые могут только немного затормозить его, но от этого ничего не сломается и результат окажется верным в любом случае. Да, вы правильно поняли - восстанавливать последовательность можно достаточно эффективно и при работающих пользователях, главное исключить изменения данных в периоде восстановления.


Итак, проблема, казалось бы, решена, алгоритм написан, проверен и оттестирован в мельчайших деталях, однако запуск на реальной рабочей базе, начав работать в штатном режиме, стал существенно деградировать по производительности к середине обработки графа. Время обработки одного документа стало превышать 10 секунд (вместо плановых - не более секунды), и тут уже были применены стандартные подходы к оптимизации - анализ планов запросов и их оптимизация. В результате этих работ мы нашли типовой запрос в УПП, слегка переписав который можно устранить такую деградацию, при этом его результаты остаются точно такими же, как в типовом виде. Данный "патч" можно применять и при последовательном восстановлении последовательности, и при полном перепроведении документов. Можем предоставить его абсолютно бесплатно, по запросу на нашу электронную почту: .

Вот теперь мы получили именно то, что планировали: многократное сокращение времени восстановления последовательности (более чем в 16 раз!), эффективная загрузка оборудования, удобные и гибкие инструменты для управления процессом. Но самое главное - это наш довольный заказчик, что для нас всегда является главной целью и наивысшей ценностью.


С отзывом совсем скоро Вы сможете ознакомиться на нашем сайте.

И напоследок, небольшой чек-лист для Вас.

Основные приемы восстановления последовательности, от самых простых, до самых инновационных:

  • Перепроведение документов для восстановления последовательности вы выполняете только в части тех документов, что используются в последовательности партионного учета и с сортировкой по моменту времени, а не по дате?
  • Вместо перепроведения используете специализированный механизм восстановления партий и взаиморасчетов (в УПП и аналогичных конфигурациях)?
  • Используете наше фирменное многопоточное, параллельное восстановление партий? J

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

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

Некоторые действия, которые, на мой взгляд, нуждаются в пояснении , будут прокомментированы.

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

Процедуры по шагам

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

Получите 267 видеоуроков по 1С бесплатно:

Исходя из вышесказанного, проводить их целесообразно в нерабочее время. Выполнение обозначенных обработок выполняется перед закрытием месяца в базе 1С УПП 8.2, в случае использования режима учета затрат – . Если используется РАУЗ, исполнение данных обработок не предполагается.

  • Восстановить последовательность расчетов по приобретению – обработка (Восстановление последовательности расчетов).
  • Восстановить последовательность расчетов по реализации – обработка (Восстановление последовательности расчетов).
  • Восстановить последовательность партионного учета – обработка (Проведение по партиям).
  • Корректировка стоимости списания товаров – документ (приводит стоимость к средней скользящей).
  • Амортизация ОС — документ.
  • Погашение стоимости () – документ.
  • – документ.
  • Переоценка валютных средств – документ.
  • – обработка. Находит авансы полученные (остатки на счете 62.02), при нажатии кнопки «Выполнить» создает счета-фактуры на аванс, если такие счета-фактуры уже присутствуют в системе, перезаписывает их (не задваивает).
  • Подтверждение нулевой ставки НДС – документ. Заполняется в случае присутствия в системе соответствующего учета.
  • Формирование записей книги покупок – документ.
  • Формирование записей книги покупок (0%) – документ. Заполняется в случае присутствия в системе соответствующего учета.
  • Формирование записей книги продаж – документ.
  • Формирование записей книги продаж (0%) – документ. Заполняется в случае присутствия в системе соответствующего учета.
  • Расчет себестоимости – документ. Самый важный документ, закрывает затратные счета.
  • Определение финансовых результатов – документ.
  • Расчеты по налогу на прибыль – документ.