Последовательность списания или "Продлеваем жизнь 7-ке"

Предлагаю решение проблемы, связанной с расчетом себестоимости товаров при большом объеме приходных/расходных документов в пределах одной даты. Текст модуля с комментариями для Бухгалтерии 7.7  прилагается

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

Опишу суть проблемы. Расчет себестоимости по средней (имеется ввиду по средней на момент списания, как в Бухгалтерии 7.7). Имеем два поступления (Поступление 1 и Поступление 2) и одно списание (Списание 1) в пределах одной даты. Рассмотрим следующий порядок поступления условного товара.

Поступление 1: 3 ед. на сумму 300 рублей

Поступление 2: 2 ед. на сумму 300 рублей

Списание 1: 2 ед.

Стоимость списания 2-х единиц на момент документа Списание 1 = 2*600/5 = 2*125=250.

 

При альтернативной последовательности того же набора документов:

Поступление 1: 3 ед. на сумму 300 рублей

Списание 1: 2 ед.

Поступление 2: 2 ед. на сумму 300 рублей

Очевидно, что на этот раз стоимость списания 2-х единиц на момент документа Списание 1 = 2*300/3 = 2*100=200.

 

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

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

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

Какие выходы можно найти? Да, конечно же –  перейти на версию 8.х.

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

 

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

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

Раздумывая на извечным русским вопросом, я в порядке эксперимента предложил такой вариант. Проведение автоматической группировки документов по виду в следующем порядке: Поступления, Производство, Списания.

Реализовано было следующим образом. Поступления, невзирая на текущее время, автоматически записываются друг за другом с интервалом 10 секунд, начиная с 10 утра. Производства, начиная с 14:00. Списания с 17:00.

После некоторого «отладочного периода» решение вполне удачно заработало. Все остались довольны.

 

Теперь, как это все реализовать с использованием встроенного языка.

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

Шаблон текста с комментариями приведен во вложении.

 

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

9 Comments

  1. validat

    Надо попробовать, хотя никогда не сталкивался с такой проблемой, большой объем приходных/расходных документов в пределах одной даты. Семерка, по-прежнему, работает на многих торговых предприятиях. Любит народ её, поэтому любые расширения возможностей и функциональности полезны.

    Reply
  2. unichkin

    имхо, чем копаться в модулях документов, проще заюзать 1С++ и через перехватчик определить необходимые события. Таким образом настраивал запись документов на 10 сек. раньше документа «Закрытие месяца».

    Reply
  3. Sergey1CSpb

    Вполне возможно!

    Только в моем случае «копание в модулях документов» заключалось условно в 3-х копипастах.

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

    Reply
  4. Cvetic

    Можно использовать последовательность документов.

    Reply
  5. Sergey1CSpb

    (4) Cvetic,

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

    А уж вопрос, как заставить следить за ГП десяток бухгалтеров я вообще упущу.

    На практике же, «последовательность» не «ответит» однозначно на вопрос «Как правильно они должны стоять?». Я же предложил такой ответ: правильно так — утром — приходы, днем — производство, вечером — реализация.

    Конечно мысли об использовании ГП посещали, но в данном случае не прижились.

    Reply
  6. Romarius

    Как правило в каждом модуле формы документа в процедуре ПриЗаписи() есть вызов процедуры глПроверкаДатыДок или подобная. В ней можно реализовать установку времени документа средствами: УстановитьВремя(Час,Минута,Секунда)

    Для каких документов и в какой оси времени стоят, перед этим определяете.

    Я так понимаю, что здесь описана ситуация списания про среднему. При ФИФО такая проблема выдавала бы одинаковый результут. Главное, чтобы остаток на момент списания был.

    Раньше делал обработку, которая в конце месяца устанавливала время документов в определенной последованности, а потом перепроводил все документы. Также, можно написать обработку, которая определяет для каждой номенклатуры конечный остаток каждого документа, не зашол он в минус. И если на начало и конец дня был положительный остаток, то определяет в каких документах нужно изменить время. Делается это пока не будет определено, что при изменении времени результат не меняется или до N-го количества, чтобы небыло зацикливания. Это актуально, если задним числом вносят/изменяют приходы/расходы.

    Reply
  7. Sergey1CSpb

    (6) Romarius,

    1. Наверное Вы имеете ввиду глМожноЗаписатьДокумент() или глКонтрольДатыДокумента()

    Так у меня же написано: «При желании, часть общих действий можно вынести в Глобальный модуль.». Так что не спорю.

    2. Да, описана ситуация «по среднему» (Бух 7.7). Но для ЛИФО и ФИФО имеем абсолютно такую же проблему!

    3. Да, тоже делал что-то подобное. Но расставлять сразу гораздо проще, чем перетаскивать потом, согласитесь.

    А в качестве отчета для проверки последовательности, я в частности пользовался

    http://infostart.ru/public/186097/

    Reply
  8. Romarius

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

    В итоге перед закрытием периода делаю следующее:

    1. Проверяю, не появились отрицательные остатки на промежутке любого документа. Делает это обработка, которую запускают сами бухгалтера. Она сама меняет время документа, где «считает нужным» (не всем подряд, а только чтобы небыло минуса в остатке). А что не получилось, показывает. Тогда бухгалтера принимают сами решения, в каком документе поменять дату (расход перед приходом).

    Когда получается пустая таблица — тогда можно приступать к второму этапу.

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

    3. Блокирую период, чтобы не изменяли ничего задним числом.

    Перепроведение запускаю вечерком или удаленно.

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

    А то, что при разных ситуациях спишется разная себестоимость — это не существенно. Сегодня спишется одно, завтра остальное.

    Reply
  9. Sergey1CSpb

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

    «при разных ситуациях спишется разная себестоимость — это не существенно»

    Это не всегда так. Не буду приводить конкертных цифр разницы в нашей организации, но она бывает внушительна.

    «Сегодня спишется одно, завтра остальное» — тоже верно. Но естественная корректировка неправильной себестоимости на 31.12.12 новым списанием, например, 10.01.13 несколько влияет на финансовые результаты года.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *