Билет 15, бухгалтерский учет (1С СПЕЦ)
Задача:
Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность вести проводки с произвольной корреспонденцией счетов. При решении задачи следует учитывать возможность наличия проводок, сформированных с помощью данного документа.
Требуется реализовать возможность ведения учета товаров в разрезе мест хранения и партий товаров. Под партией товара понимается документ, регистрирующий его (товара) поступление.
В документе «Приходная накладная» склад указывается в табличной части для каждой строки и формируются следующие проводки:
Дт «Товары» - Кт «Поставщики» на количество и сумму закупаемого товара.
Продажа товара производится со склада и регистрируется документом «Расходная накладная», cклад указывается в реквизите самого документа. При заполнении документа партия товара не указывается. При проведении производится проверка достаточности количества на указанном складе продаваемого товара.
Документ «Расходная накладная» реализует следующие проводки:
Дт «Прибыли и убытки» - Кт «Товары» на количество и сумму себестоимости;
Дт «Покупатели» - Кт «Прибыли и убытки» на сумму в продажных ценах.
При продаже товара списание партий этого товара производится либо по дисциплине LIFO («последним пришел, первым ушел»), либо FIFO («первым пришел, первым ушел»). Какая из дисциплин будет использоваться, определяется в начале года и в течение года не меняется.
Себестоимость товара рассчитывается в разрезе партий на складе для данного товара.
Используя план видов характеристик необходимо предоставить возможность пользователю добавить произвольное количество дополнительных характеристик к каждому товару (материал, цвет, страна-производитель и т.д.)
Необходимо построить отчет о продажах товаров. Дополнительно данные в отчете должны быть сгруппированы по выбранной характеристике.
Продажи товаров за период с 01.01.2014 по 31.01.2014
Решение:
Для начала, требуется создать и настроить в каркасной конфигурации регистр бухгалтерии "Управленческий".
Создаем новый документ «Операция». У него не будет ни реквизитов, ни табличных частей. На закладке Движения запрещаем проведение документа и указываем, что документ является регистратором для регистра бухгалтерии «Управленческий».
Создаем форму документа «Операция».
В редакторе формы на закладке Реквизиты из коллекции Движения перетаскиваем набор записей регистра бухгалтерии «Управленческий» на закладку Элементы. При появлении вопроса «Добавить колонки...» отвечаем «Да».
Важный момент: так как колонки автоматически добавляются в соответствии со структурой регистра бухгалтерии, то нужно сначала выполнить настройку регистра бухгалтерии и только после этого создавать документ «Операция», т.к. в противном случае окажется, что на форме будет не хватать колонок для ввода данных.
Например, если сначала создать документ «Операция», а потом в регистре бухгалтерии добавить измерение «Организация», то в документе «Операция» организацию указать не будет возможности. Нужно будет вернуться в форму документа «Операция» и доработать ее.
По кнопке "Записать" проводки запишутся в регистр бухгалтерии. Убедимся в этом, открыв форму списка регистра бухгалтерии "Управленческий".
Документ «Операция» готов, и для сдачи экзамена больше ничего и не требуется. Однако, в реальной жизни пользоваться таким документом не очень удобно, и есть смысл произвести еще парочку простых, но очень полезных доработок.
Как правило, период (дата) в проводке всегда совпадает с датой документа-регистратора, поэтому имеет смысл реализовать алгоритм в модуле объекта документа "Операция", который будет заполнять эти данные автоматически. В обработчик события "ПередЗаписью" добавим следующий код:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Для Каждого Проводка Из Движения.Управленческий Цикл
Проводка.Период = Дата;
КонецЦикла;
КонецПроцедурыОсобенности документа "Операция":
Если вам требуется отменить участие документа "Операция" в учете, то установка пометки удаления не отменяет его проводки. Можете убедиться в этом сами - поставьте пометку удаления у созданного вами документа и проверьте, что по регистру бухгалтерии "Управленческий" проводки остались на месте.
Для решения данной задачи можно воспользоваться свойством записи регистра бухгалтерии Активность. Записи со снятой активностью физически остаются в таблице движений регистра бухгалтерии, но в таблицы итогов регистра бухгалтерии такие записи не включаются. Соответственно, отключив активность движений документа, исключим его влияние на состояние учета.
Реализуем синхронизацию пометки удаления документа «Операция» и значений активности движений документа. При установке пометки удаления будем отключать активность движений, при снятии пометки удаления будем включать активность движений. Автоматическое заполнение периода в движениях также будем выполнять:
Для этого в модуле объекта документа «Операция» добавим программный код:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Активность = Не ПометкаУдаления;
Проводки = Движения.Управленческий;
Если Не Проводки.Записывать Тогда
Проводки.Прочитать();
КонецЕсли;
НужноЗаписывать = Проводки.Записывать;
Для Каждого Проводка Из Проводки Цикл
Если Проводка.Период <> Дата Тогда
Проводка.Период = Дата;
НужноЗаписывать = Истина;
КонецЕсли;
Если Проводка.Активность <> Активность Тогда
Проводка.Активность = Активность;
НужноЗаписывать = Истина;
КонецЕсли;
КонецЦикла;
Проводки.Записывать = НужноЗаписывать;
КонецПроцедурыКод требуется разместить именно в модуле объекта, чтобы данный алгоритм корректно отрабатывал даже при работе из списка документов, т.е. даже если документ не открыт пользователем.