January 28

Билет 15, бухгалтерский учет (1С СПЕЦ)

Задача:

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

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

В документе «Приходная накладная» склад указывается в табличной части для каждой строки и формируются следующие проводки:

Дт «Товары» - Кт «Поставщики» на количество и сумму закупаемого товара.

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

Документ «Расходная накладная» реализует следующие проводки:

Дт «Прибыли и убытки» - Кт «Товары» на количество и сумму себестоимости;

Дт «Покупатели» - Кт «Прибыли и убытки» на сумму в продажных ценах.

При продаже товара списание партий этого товара производится либо по дисциплине LIFO («последним пришел, первым ушел»), либо FIFO («первым пришел, первым ушел»). Какая из дисциплин будет использоваться, определяется в начале года и в течение года не меняется.

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

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

Необходимо построить отчет о продажах товаров. Дополнительно данные в отчете должны быть сгруппированы по выбранной характеристике.

Продажи товаров за период с 01.01.2014 по 31.01.2014

Решение:

Для начала, требуется создать и настроить в каркасной конфигурации регистр бухгалтерии "Управленческий".

Создаем новый документ «Операция». У него не будет ни реквизитов, ни табличных частей. На закладке Движения запрещаем проведение документа и указываем, что документ является регистратором для регистра бухгалтерии «Управленческий».

Создаем форму документа «Операция».

В редакторе формы на закладке Реквизиты из коллекции Движения перетаскиваем набор записей регистра бухгалтерии «Управленческий» на закладку Элементы. При появлении вопроса «Добавить колонки...» отвечаем «Да».

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

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

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

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

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

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Для Каждого Проводка Из Движения.Управленческий Цикл
        Проводка.Период = Дата;
    КонецЦикла;
КонецПроцедуры

Особенности документа "Операция":

Если вам требуется отменить участие документа "Операция" в учете, то установка пометки удаления не отменяет его проводки. Можете убедиться в этом сами - поставьте пометку удаления у созданного вами документа и проверьте, что по регистру бухгалтерии "Управленческий" проводки остались на месте.

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

Реализуем синхронизацию пометки удаления документа «Операция» и значений активности движений документа. При установке пометки удаления будем отключать активность движений, при снятии пометки удаления будем включать активность движений. Автоматическое заполнение периода в движениях также будем выполнять:

Для этого в модуле объекта документа «Операция» добавим программный код:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    Активность = Не ПометкаУдаления;    
    
    Проводки = Движения.Управленческий;
       
    Если  Не Проводки.Записывать Тогда
        Проводки.Прочитать();
    КонецЕсли;
    
    НужноЗаписывать = Проводки.Записывать;
    
    Для Каждого Проводка Из Проводки Цикл
        
        Если Проводка.Период <> Дата Тогда
            Проводка.Период = Дата;
            НужноЗаписывать = Истина;
        КонецЕсли;
        
        Если Проводка.Активность <> Активность Тогда
            Проводка.Активность = Активность;
            НужноЗаписывать = Истина;
        КонецЕсли;
        
    КонецЦикла;
    
    Проводки.Записывать = НужноЗаписывать;  

КонецПроцедуры

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

Приходная накладная: