Как нам быть с упрощенкой... или партионный учет для всех...

В нашей стране как в Зазеркалье и упрощенная система налогообложения (упрощенка) - это завуалированное название Усложненки. Давайте же попробуем укротить этого монстра и нарисовать Книгу Доходов/Расходов.

Как нам быть с упрощенкой... или партионный учет для всех...

fixin
http://koenigsoft.boom.ru/

Из всех пагтий нам важнее всего пагтия большевиков, товагищи!


В нашей стране как в Зазеркалье и упрощенная система налогообложения (упрощенка) - это завуалированное название Усложненки.
Давайте же попробуем укротить этого монстра и нарисовать Книгу Доходов/Расходов:

Под продажной стоимостью товаров понимается стоимость оплаченного покупателями товара; под покупной стоимостью товара понимается стоимость оплаченного поставщику товара

С доходами просто - это выручка. А вот как быть с расходами? Расходы - это стоимость той части отпущенного товара, которая оплачена поставщику. Т.е. не вся себестоимость проданного товара, а только оплаченная его часть? Ну и как ее определить?

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

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

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

По товару (ПриходТоваров):

Товар Дата_Время Документ Количество

Сумма

НДС

Таблица отсортирована по Товар (по возрастанию), затем по Дата_Время (по убыванию).

По поставщикам (ПриходПоставщиков):

Контрагент Дата Документ Сумма НДС

Таблица отсортирована по контрагенту (по возрастанию), затем по дате (по убыванию).

По расходу (продаже) товара формируется таблица:

По проданному товару (РасходТоваров):

Товар Дата_Время Документ Баланс Количество

Таблица отсортирована по по Дата_Время (по возрастанию).  Баланс - это остаток товара на момент перед движением. Количество - это количество проданного товара.

По остатку долга на конец периода (КонецПериода) формируется таблица:

По оплатам поставщикам (ОстаткиПоставщиков):

Контрагент Баланс

Баланс - это остаток долга поставщика на конец периода.

Определение оплаченных накладных:

Используем метод обратного счета.:
    В таблице ПриходПоставщиков добавляем колонку "ДоляОплаты".
    для всех накладных в ПриходПоставщиков ДоляОплаты=0%
    по каждой строке таблицы ОстаткиПоставщиков делать:
        в таблице ПриходПоставщиков находим первую строку по данному Контрагенту, в которой
        Дата<=КонецПериода;

        Набрано=0; //пробуем набрать сумму Баланс
       спускаясь по строчкам таблицы ПриходПоставщиков в пределах данного Контрагента
        пока (Набрано<ОстаткиПоставщиков.Баланс):
            НеОплачено=min(Сумма, Баланс-Набрано); //какая сумма накладной неоплачена
            Оплачено=Сумма-НеОплачено   //какая сумма накладной оплачена
            ДоляОплаты=Оплачено/Сумма*100%;
            Набрано=Набрано+НеОплачено; //накапливаем набранную сумму

Таким образом, по каждой накладной в ПриходПоставщиков получили, насколько она оплачена на КонецПериода (ДоляОплаты, %). Можно сформировать два таких отчета на начало и конец периода и увидеть, по каким накладным изменилась оплата и насколько за период...

Определение накладной, с которой списан товар (FIFO):

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

Накладная Количество

    по каждой строке таблицы РасходТоваров делать:
       в таблице ПриходТоваров находим первую строку по данному Товару, в которой

       ПриходТоваров.Дата_Время<=РасходТоваров.Дата_Время;
       Набрано=0; (пробуем набрать остаток Баланс)
       спускаясь по строчкам таблицы ПриходТоваров в пределах данного Товара
       пока (Набрано<РасходТоваров.Баланс): //пока еще не набрали всего товара из прихода
           Списано=min(ПриходТоваров.Количество, РасходТоваров.Баланс-Набрано);
           добавить строку в таблицу Партия
   установить в текущей строчке таблицы Партия   Партия. Накладная=ПриходТоваров.Документ;
   установить в текущей строчке таблицы Партия   Партия.Количество=Списано;
           Набрано=Набрано+Списано; //накапливаем набранное количество

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

Определение расходов:

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

Неоплаченные накладные можно запоминать в таблице вида:
Контрагент Накладная Сумма

Где обсчитывать:

Вручную все это просчитать нереально. EXCEL тоже не годится, т.к. если принять в одной приходной накладной в среднем 10 строк, то он позволяет проанализировать только 6000 накладных (количество строк в листе). Возможно ACCESS. Или же писать это все прямо в 1С, что лишает отчет универсальности.
Придумаю - скажу... Конечно, вам придется выкручиваться сейчас в период сдачи книги самим, но может быть следующее поколение упростителей жизни будет жить при коммунизме.
Еще одно применение данного метода - можно иметь партионный учет (и себестоимость :) без использования навороченных методов. Правда получать ее можно только путем больших вычислений, но все же, все же.
Можно брать не весь период, а только 3-6 месяцев, а себестоимость предыдущих периодов брать по последней закупочной цене на начало анализа. Короче, вариантов много. Есть куда приложить руку творческой личности...

P.S.: Прошу прощения за неточности в алгоритмах, если они есть. Ошибки в программах есть всегда, даже в самых гениальных (ну скромный я, пардон). Хотелось побыстрее поделиться идеей.


Комментарии

2
  • Хранитель_врат
    поделился - отдыхай.
    это азбука - придраться не к чиму.
  • Хранитель_врат
    а что если не сопоставлять конкретные накладные, а просто взять валовые поступления товаров и валовую оплату поставщикам. затем валовую отгрузку покупателям и валовые поступления выручки. определить процент оплаты отгруженных товаров и умножить на себестоимость отгруженных товаров. получится сумма себестоимости, приходящаяся на оплаченные покупателями товары.

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

    и не надо учета по наименованиям и накладным :)