Цель лекции: разработать новые и модифицировать существующие документы для работы с бухгалтерской подсистемой, создать отчеты с использованием СКД
Любая конфигурация, используемая для целей ведения бухгалтерского учета, не обходится без документа, который позволяет непосредственно формировать бухгалтерские записи. Несмотря на огромное количество документов таких конфигураций, которые, наряду с другими функциями (движения по регистрам накопления и регистрам сведений, вывод печатных форм) выполняют и бухгалтерские проводки, документ "Бухгалтерская операция" (или подобный ему) просто обязан присутствовать. Строго говоря, в таком случае должен иметься и документ, позволяющий формировать движения и по другим регистрам конфигурации, в реально используемых конфигурациях обычно присутствуют механизмы, реализующие "ручную" работу с регистрами, позволяющие, при необходимости, вносить в них "ручные" правки. В то же время, некоторые операции, характерные и необходимые исключительно для бухгалтерского учета затрагивают исключительно бухгалтерскую подсистему, поэтому даже в тиражных конфигурациях такие операции нередко выполняются с помощью документа "Бухгалтерская операция".
Дело в том, что в бухгалтерском учете возможны ситуации, для отражения которых в системе не предусмотрено специализированных документов. Например, к таким ситуациям часто относится ввод начальных остатков по счетам при начале работы с системой (для таких операций обычно используют служебный счет 000 или 00) или ввод в систему очень редко используемых проводок, для которых просто нерационально, да и порой не нужно, создавать отдельные документы.
Таким документом можно не только вводить новые проводки, но и корректировать существующие бухгалтерские данные, вводя сторно-проводки, то есть – проводки с отрицательной суммой. Если рассматривать теорию бухгалтерского учета, то окажется, что отрицательных чисел там не предусмотрено. Но в бухгалтерских программах отрицательные суммы в проводках – не редкость.
Создадим новый документ, дадим ему имя БухгалтерскаяОперация. Включим его в подсистему БухгалтерскийУчет.
На вкладке Движения отметим, что документ будет формировать движения по
Запретим проведение документа, установив параметр ). Документ не будет проводиться – все необходимые данные будут вводиться в его форме, при записи документа они будут попадать в регистр бухгалтерии.
(рис 2.1) Создание документа Бухгалтерская операция
Перейдем на вкладку .
(рис 2.2) Форма документа Бухгалтерская операция
Для того, чтобы добавить на форму документов таблицу набора записей
(рис 2.3) Форма документа Бухгалтерская операция, таблица регистра бухгалтерии
Мы собираемся заполнять поле Период в таблице автоматически, устанавливая период равным дате документа. Для этого сначала уберем поле период из таблицы, удалив его из окна Элементы, после чего создадим в модуле объекта процедуру ПередЗаписью(), приведем ее к следующему виду:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Для каждого Проводка из Движения.Хозрасчетный Цикл
Проводка.Период = Дата;
КонецЦикла;
КонецПроцедуры
Теперь решим следующую задачу. В текущей редакции документа БухгалтерскаяОперация для того, чтобы бухгалтерская запись, приведенная в документе, не оказывала влияния на бухгалтерский учет, то есть, например, не попадала в отчеты, не влияла на состояние остатков по счетам и т.д., нам нужно либо удалить эту запись из документа, либо, если речь идет обо всех записях, которые формирует документ, удалить сам документ. Так поступать не очень удобно – возможно, нам нужно лишь проверить состояние учета без этих, временно ненужных проводок, потом – с ними, и для проведения этой, вполне обычной, операции нам понадобится сначала удалять записи, потом снова создавать.
Лучший выход – возможность произвольного включения и отключения активности проводок. Однако, в табличном поле редактирование поля Активность по умолчанию недоступно. Попытка отключить активность отдельной проводки в документе приводит к ошибке при его записи. Можно включить редактирование этого поля (переместив реквизит Активность со вкладки Реквизиты на вкладку Элементы), но при необходимости отключения активности проводок, придется вручную редактировать это свойство для каждой из них, что не очень удобно. Для того чтобы проводки в документе можно было бы "отключать", не удаляя их, можно доработать форму документа таким образом, чтобы можно было по нажатию одной кнопки включать или отключать активность всех проводок.
В конструкторе форм добавим новую команду, назовем ее Активность, создадим ее обработчик, перетащим эту команду на командную панель формы, где она, по умолчанию, будет представлена в виде кнопки. Обработчик команды будет объявлен с директивой компиляции НаКлиенте, для работы с коллекцией движений объекта нам понадобится серверная процедура или функция. В итоге мы приходим к такому коду:
НаКлиенте
Процедура Активность(Команда)
ПереключитьАктивностьПроводок();
КонецПроцедуры
НаСервере
Процедура ПереключитьАктивностьПроводок()
Записи = Объект.Движения.Хозрасчетный;
Если Записи.Количество()>0 Тогда
Для каждого Запись из Записи Цикл
Запись.Активность=НЕ Запись.Активность;
Конеццикла;
КонецЕсли;
КонецПроцедуры
Здесь мы получаем в переменную Записи набор записей по регистру Хозрасчетный, после чего, в цикле обхода записей, инвертируем их признак Активность. То есть, если до нажатия на кнопку Активность флаг Активность установлен, мы его сбрасываем, если сброшен – устанавливаем.
Для того, чтобы пользователь мог видеть, активны ли проводки, перетащим поле Активность с вкладки Реквизиты на вкладку Элементы в состав реквизитов табличного поля и установим для этого поля свойство Только просмотр.
Вот как, в итоге, выглядит форма нашего доработанного документа в режиме 1С:Предприятие (рис 2.4) после того, как мы ввели в него некоторые данные и однократно нажали на кнопку Активность в панели управления табличного поля. По умолчанию флаг Активность установлен, нажатие привело к сбрасыванию этого флага.
(рис 2.4) Форма документа Бухгалтерская операция, активность проводок отключена
Часто, в реально существующих конфигурациях, документ, подобный только что созданному, используют для
Предположим, что пользователь конфигурации решил ввести с его помощью начальные остатки по счетам на конец 2010 года. Пусть это будут следующие остатки:
Капитал: 103000 руб.
Расчеты с поставщиками: 20000 руб. (ООО "Полет")
Касса: 29000 руб.
Расчеты с покупателями: 82000 руб. (ООО "Покупатель")
Материалы для производства:
УФ-гель (Петров П.П. (Парикмахерская)),
Сумма – 12000,
количество – 10 упаковок.
Несложно заметить, что сумма остатков по
(рис 2.5) Создание нового счета в плане счетов Хозрасчетный
После нажатия на кнопку Записать и закрыть, новый счет будет добавлен в план счетов, мы сможем пользоваться им при составлении проводок.
Создадим в пользовательском режиме новый документ Бухгалтерская операция. Установим дату – 31.12.2010, время – 23:59:59. Начальные остатки обычно вводят именно такой датой. Заполним табличное поле документа в соответствии с вышеприведенными данными.
При вводе записей с помощью документа Бухгалтерская операция система автоматически ограничивает ввод данных в поля табличной части после указания счета дебета или счета кредита таким образом, чтобы мы не могли ввести то, что не нужно при формировании проводки по данному счету. Например, в случае со счетом 00 мы можем ввести лишь сам счет и сумму по нему, в случае со счетом Материалы для производства мы можем, помимо данных о счете и сумме, заполнить сведения о двух
После того, как мы ввели начальные остатки по счетам, создадим инструмент для анализа состояния учета, один из базовых бухгалтерских отчетов – Оборотно-сальдовую ведомость. Этот отчет должен предоставлять нам следующие данные за определенный период:
Добавим в систему новый отчет, назовем его ОборотноСальдоваяВедомость, добавим отчет в подсистему БухгалтерскийУчет, на закладке Основные создадим основную схему компоновки данных. В конструкторе СКД добавим новый набор данных – Запрос.
Воспользуемся .
Счет СуммаНачальныйОстатокДт СуммаНачальныйОстатокКт СуммаОборотДт СуммаОборотКт СуммаКонечныйОстатокДт СуммаКонечныйОстатокКт
(рис 2.6) Конструирование запроса для построения отчета
Выбрав указанные поля, нажмем в окне конструктора запроса кнопку ОК. Теперь, на закладке окна конструктора СКД Наборы данных для полей СуммаНачальныйОстатокДТ, СуммаНачальныйОстатокКТ, СуммаКонечныйОстатокДТ, СуммаКонечныйОстатокКТ, установим свойство Роль в значение . Без этой установки система неправильно сформирует нужный нам отчет, а именно, при настройках по умолчанию не будет формировать итоговые показатели по начальным и конечным остаткам (сальдо), а
(рис 2.7) Настройка ролей для полей отчета
Теперь в конструкторе СКД перейдем на закладку Ресурсы, нажмем на кнопку добавления всех ресурсов (на ней изображены две стрелки, направленные вправо). В состав ресурсов будут добавлены все поля, кроме поля Счет. На закладке Настройки включим отображение параметров Начало периода и Конец периода в пользовательском интерфейсе (кнопка Свойства элемента пользовательских настроек).
Воспользуемся конструктором настроек компоновки данных, добавим новый отчет. Тип отчета – :
Счет СуммаНачальныйОстатокДт СуммаНачальныйОстатокКт СуммаОборотДт СуммаОборотКт СуммаКонечныйОстатокДт СуммаКонечныйОстатокКт
(рис 2.8) Выбор полей, отображаемых в отчете
В окне настройки группировки отчета в поле Строки добавим поле Счет. В качестве типа группировки выберем Иерархия – нам хотелось бы, чтобы данные по счетам выводились с учетом иерархии счетов.
В качестве поля для упорядочения таблицы выберем поле ), направление сортировки – по возрастанию.
(рис 2.9) Настройка упорядочивания отчета
Теперь откроем отчет в 1С:Предприятие и посмотрим, как он будет выглядеть, рис 2.10.
(рис 2.10) Готовый отчет
Как видите, наш отчет выводит все необходимые данные, счета отсортированы в соответствии с их порядком, итоги по показателям подсчитаны и выведены, счета представлены в соответствии с их иерархией.
Выше, создавая подсистему учета, мы указали в настройках плана счетов, что максимальное количество
Предположим, организации понадобился новый счет с кодом 10.3, который планируется использовать для учета специальной одежды, выданной сотрудникам организации. Этот счет должен иметь три
В соответствии с особенностями работы, в организации выделяется три группы спецодежды.
Запустим систему в режиме 1С:Предприятие, откроем План счетов. Создадим новый счет, заполним его параметры следующим образом:
Код: 10.3 Наименование: "Спецодежда" Порядок: 10. 3 Вид: Активный Родитель: Материалы Признак Количественный: Установлен
Добавим в его список
(рис 2.11) Разработка нового счета
Как производить записи по этому счету? У пользователя, без использования конфигуратора, есть лишь одна возможность – применить документ .
(рис 2.12) Работа с новым субконто при заполнении параметров документа Бухгалтерская операция
Сформируем бухгалтерскую запись, показывающую поступление спецодежды со следующими параметрами
Счет Дт: Спецодежда Субконто1 Дт: Одежда для парикмахера Субконто2 Дт: Иванов И.И. (Парикмахерская) Субконто3 Дт: Первая группа Количество Дт: 5 Счет Кт: Расчеты с поставщиками в валюте Субконто1 Кт: ООО "Полет" Валюта Кт: USD Валютная сумма Кт: 500 Сумма: 15000 Содержание: Поступила спецодежда, оплата в валюте
После записи документа построим .
(рис 2.13) Результаты построения отчета Оборотно-сальдовая ведомость после ввода новой операции
Займемся документом ПоступлениеМатериалов, подготовим его к проведению по бухгалтерскому учету.
Добавим к документу новый реквизит, назовем его Валюта, тип – СправочникСсылка.Валюта. В этом реквизите мы будем указывать валюту документа.
Кроме того, создадим реквизит СчетУчета, тип – ПланСчетовСсылка.Хозрасчетный. Используя этот реквизит, мы будем задавать счет, на который следует принять материалы, перечисленные в документе. Документ можно будет проводить либо по счету Материалы для производства, либо – по счету Прочие материалы. Выбор другого счета в данном поле будет восприниматься системой как ошибочный.
На закладке Движения укажем, что документ будет проводиться по
Добавим документ в состав подсистемы БухгалтерскийУчет.
Откроем форму документа и разместим в форме новые реквизиты .
(рис 2.14) Обновленная форма документа ПоступлениеМатериалов
Теперь мы можем заняться процедурой проведения документа.
При ее конструировании нужно учесть то, что при указании валюты в реквизите Валюта документ будет проводиться по счету расчетов с поставщиками в валюте, если валюта в поле не указана – по счету учета в рублях. Кроме того, подразумевается, что указав валюту в реквизите Валюта мы вводим в табличную часть документа сведения о стоимости материалов в валюте, то есть, для заполнения "рублевых" полей в записях нам понадобится конвертировать валютные суммы в рублевые.
Сейчас процедура проведения нашего документа, который до этого выполнял движения лишь по регистру накопления ОстаткиМатериалов, выглядит следующим образом:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаМатериалы.Номенклатура;
Движение.ОтветственныйСотрудник = ОтветственныйСотрудник;
Движение.Количество = ТекСтрокаМатериалы.Количество;
Движение.Сумма = ТекСтрокаМатериалы.Сумма;
КонецЦикла;
КонецПроцедуры
Нам придется полностью переработать эту процедуру, так как, во-первых, нас теперь интересует не только проведение по регистру накопления ОстаткиМатериалов, но и по
В итоге мы пришли к такому коду процедуры проведения документа ПоступлениеМатериалов:
Процедура ОбработкаПроведения(Отказ, Режим)
//Переменная для хранения курса валюты
Перем КурсВалюты;
//Проверим, указан ли один из необходимых счетов
//Для учета номенклатуры
Если СчетУчета<>ПланыСчетов.Хозрасчетный.ПрочиеМатериалы И
СчетУчета<>ПланыСчетов.Хозрасчетный.МатериалыДляПроизводства Тогда
Сообщить("Нужно указать либо счет Прочие материалы, либо счет Материалы для производства");
Отказ=Истина;
Возврат;
КонецЕсли;
//Проверим, указана ли в документе валюта
Если Валюта = Справочники.Валюты.ПустаяСсылка() Тогда
//Формирование движений по документу, данные в котором
//заданы в рублях
//Получаем табличную часть текущего документа, сгруппированную по полю Номенклатура
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеМатериаловМатериалы.Номенклатура,
| СУММА(ПоступлениеМатериаловМатериалы.Количество) КАК Количество,
| СУММА(ПоступлениеМатериаловМатериалы.Сумма) КАК Сумма
|ИЗ
| Документ.ПоступлениеМатериалов.Материалы КАК ПоступлениеМатериаловМатериалы
|ГДЕ
| ПоступлениеМатериаловМатериалы.Ссылка.Ссылка = Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеМатериаловМатериалы.Номенклатура";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.Хозрасчетный.Записывать=Истина;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//Формируем движения по регистру накопления ОстаткиМатериалов
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.ОтветственныйСотрудник = ОтветственныйСотрудник;
Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма;
//Формируем движения по регистру бухгалтерии Хозрасчетный
Движение=Движения.Хозрасчетный.Добавить();
Движение.Период=Дата;
Движение.СчетДт=СчетУчета;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура]=
ВыборкаДетальныеЗаписи.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Сотрудники]=
ОтветственныйСотрудник;
Движение.КоличествоДт=ВыборкаДетальныеЗаписи.Количество;
Движение.СчетКт=ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиВРублях;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты]=
Контрагент;
Движение.Сумма=ВыборкаДетальныеЗаписи.Сумма;
КонецЦикла;
Иначе
//Формирование движений по документу, данные в котором
//заданы в валюте
//Получаем курс валюты, заданной в документе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КурсыВалютСрезПоследних.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(МоментВремени, Валюта = Валюта) КАК КурсыВалютСрезПоследних";
Запрос.УстановитьПараметр("Валюта", Валюта);
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
КурсВалюты=ВыборкаДетальныеЗаписи.Курс;
Иначе
Сообщить("Не найден курс валюты!");
Отказ=Истина;
Возврат;
КонецЕсли;
//Получаем табличную часть текущего документа, сгруппированную по полю Номенклатура
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеМатериаловМатериалы.Номенклатура,
| СУММА(ПоступлениеМатериаловМатериалы.Количество) КАК Количество,
| СУММА(ПоступлениеМатериаловМатериалы.Сумма) КАК Сумма
|ИЗ
| Документ.ПоступлениеМатериалов.Материалы КАК ПоступлениеМатериаловМатериалы
|ГДЕ
| ПоступлениеМатериаловМатериалы.Ссылка.Ссылка = Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеМатериаловМатериалы.Номенклатура";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.Хозрасчетный.Записывать=Истина;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//Формируем движения по регистру накопления ОстаткиМатериалов
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.ОтветственныйСотрудник = ОтветственныйСотрудник;
Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма*КурсВалюты;
//Формируем движения по регистру бухгалтерии Хозрасчетный
Движение=Движения.Хозрасчетный.Добавить();
Движение.Период=Дата;
Движение.СчетДт=СчетУчета;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура]=
ВыборкаДетальныеЗаписи.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Сотрудники]=
ОтветственныйСотрудник;
Движение.КоличествоДт=ВыборкаДетальныеЗаписи.Количество;
Движение.СчетКт=ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиВВалюте;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты]=
Контрагент;
Движение.ВалютаКт=Валюта;
Движение.ВалютнаяСуммаКт=ВыборкаДетальныеЗаписи.Сумма;
Движение.Сумма=ВыборкаДетальныеЗаписи.Сумма*КурсВалюты;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
В первую очередь мы проверяем является ли счет учета материалов, указанный в документе, одним из тех счетов, по которым мы планируем его проводить. В нашем случае это пара счетов – Прочие материалы и Материалы для производства. Они являются предопределенными элементами плана счетов Хозрасчетный, поэтому мы можем обращаться к ним по именам непосредственно из кода.
Если выбранный счет не относится к тем, движения по которым выполняет документ, мы выдаем пользователю сообщение об ошибке, отказываемся от проведения документа и выходим из процедуры проведения.
Дальнейшая работа процедуры проведения документа делится на две ветви. Первая ветвь выполняется в том случае, если валюта в реквизите Валюта не указана. При таком варианте развития событий валюта документа принимается за валюту регламентированного учета, движения формируются в рублях без пересчета.
В первой ветви мы получаем из табличной части документа данные о номенклатурных позициях, их количестве и общей стоимости, сгруппированные по полю Номенклатура, после чего формируем движения по регистру ОстаткиМатериалов (если вас интересуют подробности о проведении документов по регистрам накопления, обратитесь к нашему курсу, который посвящен основам разработки и модификации прикладных решений для платформы 1С:Предприятие 8.2.) и по
Данные движения по Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Сотрудники]. Так как
Вторая ветвь проведения документа активизируется в том случае, если при проверке реквизита Валюта оказалось, что он не пуст, что подразумевает сразу несколько последствий – данные о цене и сумме приведены в валюте, то есть, требуется их конвертация в рубли, учет данной операции должен вестись на счете валютных расчетов с поставщиками.
Во второй ветви мы, в первую очередь, получаем из регистра сведений КурсыВалют самое свежее значение курса для выбранной валюты на дату проведения документа. В данном случае вся ответственность за корректность курса и за своевременность ввода свежих данных в регистр накопления лежит на пользователе.
Если курс валюты получить не удалось – мы сообщаем пользователю об ошибке, отказываемся от проведения документа и выходим из процедуры. Если же найден – мы записываем его в ранее объявленную переменную КурсВалюты для последующего использования.
Далее во второй ветви мы получаем данные из табличной части документа, сгруппировав их по полю Номенклатура, после чего формируем движения – сначала по регистру накопления ОстаткиМатериалов, конвертируя (Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма*КурсВалюты;) значение суммовой стоимости поступившей номенклатурной позиции в рубли путем умножения валютной суммы на найденный курс валюты.
При формировании движений по
Движение.ВалютаКт=Валюта;
Движение.ВалютнаяСуммаКт=ВыборкаДетальныеЗаписи.Сумма;
Движение.Сумма=ВыборкаДетальныеЗаписи.Сумма*КурсВалюты;
После того, как работа над процедурой проведения завершена, следует проверить проведение документа в режиме 1С:Предприятие, проконтролировав правильность отражения движений в зависимости от указания валюты и выбора счетов учета материалов, а так же – обратив особое внимание на правильное отражение в учете данных о суммах и валютных суммах отраженных операций.
Построим отчет, который будет выводить сведения о количественных остатках материалов по данным бухгалтерского учета. Строго говоря, данные о материальных ценностях могут храниться не только на счетах, родителем которых является счет Материалы, но на любых других счетах, которые отличаются, во-первых, тем, что являются активными, во-вторых – тем, что имеют установленный признак учета Количественный, и, в-третьих – тем, что имеют
Добавим в систему новый отчет .
(рис 2.15) Выбор полей в Конструкторе запроса
Откроем окно параметров виртуальной таблицы (кнопка ):
УсловиеСчета: Счет.Количественный и Счет.Вид=Активный Субконто: ВидСубконто
(рис 2.16) Настройка параметров виртуальной таблицы
В конструкторе запроса на закладке .
(рис 2.17) Настройка псевдонимов полей
Завершим работу с конструктором запросов, перейдем на закладку Ресурсы конструктора СКД, выберем в качестве ресурса Количество.
Перейдем на закладку Параметры, здесь мы видим три параметра – Период, Активный и ВидСубконто. По умолчанию для двух последних параметров назначены значений .
(рис 2.18) Закладка Параметры до настройки
Нас такое состояние дел не устраивает – укажем (с помощью кнопок Выбрать у соответствующих полей) для параметра Активный значение .
(рис 2.19) Закладка Параметры после настройки
Перейдем на закладку Настройки. Включим отображение поля ввода параметра Период в пользовательском интерфейсе и воспользуемся конструктором настроек для задания внешнего вида отчета. Выберем вид отчета – Таблица. На этапе выбора полей, которые будут отображаться в отчете, укажем поля Номенклатура и Количество. Группировку строк произведем по полю Номенклатура, тип группировки – Иерархия. Поле упорядочивания – Номенклатура, по возрастанию.
Построим отчет в режиме 1С:Предприятие, рис 2.20.
(рис 2.20) Готовый отчет Остатки материалов по бухучету
Мы, перед построением отчета, отменили проведение документов, фиксирующих поступление материалов, за исключением, во-первых – документа Бухгалтерская операция, которым мы вводили начальные остатки, во-вторых – документа Бухгалтерская операция, с помощью которого мы сформировали движение по счету Спецодежда, созданному в пользовательском режиме. Результаты соответствуют ожидаемым. Проведение других документов поступления материалов показывают, что отчет правильно выводит нужные данные. В частности, мы провели документ ПоступлениеМатериалов, который отражает поступление различных номенклатурных позиций с одинаковым количеством – ). Надо отметить, что логика нашего решения позволяет принимать к учёту одежду для парикмахера с помощью документа Поступление материалов. Одежда не является, в общепринятом смысле, материалом. В реально используемой конфигурации подобную операцию нужно оформлять либо с помощью бухгалтерской справки и соответствующей ручной правки регистров, либо - разработать для этой цели специальный документ, который позволит отразить механизм учёта, характерный именно для одежды или других подобных объектов учёта.
(рис 2.21) Отчет Остатки материалов по бухучету после проведения документа ПоступлениеМатериалов
В этой лекции мы разработали документ, позволяющий отражать произвольные бухгалтерские записи в подсистеме бухгалтерского учета, доработали документ ПоступлениеМатериалов таким образом, чтобы он мог использоваться для отражения поступления материалов от поставщиков, расчеты с которыми производятся в рублях, либо в валюте, построили отчеты по
В нашей следующей лекцией мы займемся проведением по бухгалтерскому учету документов, отражающих расход материалов и разработкой документа, фиксирующего в учете отклонения, вызванные изменением курсов валют.
Для данной лекции подготовлен видеоурок.
Цель лекции: разработать новые и модифицировать существующие документы для работы с бухгалтерской подсистемой, создать отчеты с использованием СКД
Любая конфигурация, используемая для целей ведения бухгалтерского учета, не обходится без документа, который позволяет непосредственно формировать бухгалтерские записи. Несмотря на огромное количество документов таких конфигураций, которые, наряду с другими функциями (движения по регистрам накопления и регистрам сведений, вывод печатных форм) выполняют и бухгалтерские проводки, документ "Бухгалтерская операция" (или подобный ему) просто обязан присутствовать. Строго говоря, в таком случае должен иметься и документ, позволяющий формировать движения и по другим регистрам конфигурации, в реально используемых конфигурациях обычно присутствуют механизмы, реализующие "ручную" работу с регистрами, позволяющие, при необходимости, вносить в них "ручные" правки. В то же время, некоторые операции, характерные и необходимые исключительно для бухгалтерского учета затрагивают исключительно бухгалтерскую подсистему, поэтому даже в тиражных конфигурациях такие операции нередко выполняются с помощью документа "Бухгалтерская операция".
Дело в том, что в бухгалтерском учете возможны ситуации, для отражения которых в системе не предусмотрено специализированных документов. Например, к таким ситуациям часто относится ввод начальных остатков по счетам при начале работы с системой (для таких операций обычно используют служебный счет 000 или 00) или ввод в систему очень редко используемых проводок, для которых просто нерационально, да и порой не нужно, создавать отдельные документы.
Таким документом можно не только вводить новые проводки, но и корректировать существующие бухгалтерские данные, вводя сторно-проводки, то есть – проводки с отрицательной суммой. Если рассматривать теорию бухгалтерского учета, то окажется, что отрицательных чисел там не предусмотрено. Но в бухгалтерских программах отрицательные суммы в проводках – не редкость.
Создадим новый документ, дадим ему имя БухгалтерскаяОперация. Включим его в подсистему БухгалтерскийУчет.
На вкладке Движения отметим, что документ будет формировать движения по
Запретим проведение документа, установив параметр ). Документ не будет проводиться – все необходимые данные будут вводиться в его форме, при записи документа они будут попадать в регистр бухгалтерии.
(рис 2.1) Создание документа Бухгалтерская операция
Перейдем на вкладку .
(рис 2.2) Форма документа Бухгалтерская операция
Для того, чтобы добавить на форму документов таблицу набора записей
(рис 2.3) Форма документа Бухгалтерская операция, таблица регистра бухгалтерии
Мы собираемся заполнять поле Период в таблице автоматически, устанавливая период равным дате документа. Для этого сначала уберем поле период из таблицы, удалив его из окна Элементы, после чего создадим в модуле объекта процедуру ПередЗаписью(), приведем ее к следующему виду:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Для каждого Проводка из Движения.Хозрасчетный Цикл
Проводка.Период = Дата;
КонецЦикла;
КонецПроцедуры
Теперь решим следующую задачу. В текущей редакции документа БухгалтерскаяОперация для того, чтобы бухгалтерская запись, приведенная в документе, не оказывала влияния на бухгалтерский учет, то есть, например, не попадала в отчеты, не влияла на состояние остатков по счетам и т.д., нам нужно либо удалить эту запись из документа, либо, если речь идет обо всех записях, которые формирует документ, удалить сам документ. Так поступать не очень удобно – возможно, нам нужно лишь проверить состояние учета без этих, временно ненужных проводок, потом – с ними, и для проведения этой, вполне обычной, операции нам понадобится сначала удалять записи, потом снова создавать.
Лучший выход – возможность произвольного включения и отключения активности проводок. Однако, в табличном поле редактирование поля Активность по умолчанию недоступно. Попытка отключить активность отдельной проводки в документе приводит к ошибке при его записи. Можно включить редактирование этого поля (переместив реквизит Активность со вкладки Реквизиты на вкладку Элементы), но при необходимости отключения активности проводок, придется вручную редактировать это свойство для каждой из них, что не очень удобно. Для того чтобы проводки в документе можно было бы "отключать", не удаляя их, можно доработать форму документа таким образом, чтобы можно было по нажатию одной кнопки включать или отключать активность всех проводок.
В конструкторе форм добавим новую команду, назовем ее Активность, создадим ее обработчик, перетащим эту команду на командную панель формы, где она, по умолчанию, будет представлена в виде кнопки. Обработчик команды будет объявлен с директивой компиляции НаКлиенте, для работы с коллекцией движений объекта нам понадобится серверная процедура или функция. В итоге мы приходим к такому коду:
НаКлиенте
Процедура Активность(Команда)
ПереключитьАктивностьПроводок();
КонецПроцедуры
НаСервере
Процедура ПереключитьАктивностьПроводок()
Записи = Объект.Движения.Хозрасчетный;
Если Записи.Количество()>0 Тогда
Для каждого Запись из Записи Цикл
Запись.Активность=НЕ Запись.Активность;
Конеццикла;
КонецЕсли;
КонецПроцедуры
Здесь мы получаем в переменную Записи набор записей по регистру Хозрасчетный, после чего, в цикле обхода записей, инвертируем их признак Активность. То есть, если до нажатия на кнопку Активность флаг Активность установлен, мы его сбрасываем, если сброшен – устанавливаем.
Для того, чтобы пользователь мог видеть, активны ли проводки, перетащим поле Активность с вкладки Реквизиты на вкладку Элементы в состав реквизитов табличного поля и установим для этого поля свойство Только просмотр.
Вот как, в итоге, выглядит форма нашего доработанного документа в режиме 1С:Предприятие (рис 2.4) после того, как мы ввели в него некоторые данные и однократно нажали на кнопку Активность в панели управления табличного поля. По умолчанию флаг Активность установлен, нажатие привело к сбрасыванию этого флага.
(рис 2.4) Форма документа Бухгалтерская операция, активность проводок отключена
Часто, в реально существующих конфигурациях, документ, подобный только что созданному, используют для
Предположим, что пользователь конфигурации решил ввести с его помощью начальные остатки по счетам на конец 2010 года. Пусть это будут следующие остатки:
Капитал: 103000 руб.
Расчеты с поставщиками: 20000 руб. (ООО "Полет")
Касса: 29000 руб.
Расчеты с покупателями: 82000 руб. (ООО "Покупатель")
Материалы для производства:
УФ-гель (Петров П.П. (Парикмахерская)),
Сумма – 12000,
количество – 10 упаковок.
Несложно заметить, что сумма остатков по
(рис 2.5) Создание нового счета в плане счетов Хозрасчетный
После нажатия на кнопку Записать и закрыть, новый счет будет добавлен в план счетов, мы сможем пользоваться им при составлении проводок.
Создадим в пользовательском режиме новый документ Бухгалтерская операция. Установим дату – 31.12.2010, время – 23:59:59. Начальные остатки обычно вводят именно такой датой. Заполним табличное поле документа в соответствии с вышеприведенными данными.
При вводе записей с помощью документа Бухгалтерская операция система автоматически ограничивает ввод данных в поля табличной части после указания счета дебета или счета кредита таким образом, чтобы мы не могли ввести то, что не нужно при формировании проводки по данному счету. Например, в случае со счетом 00 мы можем ввести лишь сам счет и сумму по нему, в случае со счетом Материалы для производства мы можем, помимо данных о счете и сумме, заполнить сведения о двух
После того, как мы ввели начальные остатки по счетам, создадим инструмент для анализа состояния учета, один из базовых бухгалтерских отчетов – Оборотно-сальдовую ведомость. Этот отчет должен предоставлять нам следующие данные за определенный период:
Добавим в систему новый отчет, назовем его ОборотноСальдоваяВедомость, добавим отчет в подсистему БухгалтерскийУчет, на закладке Основные создадим основную схему компоновки данных. В конструкторе СКД добавим новый набор данных – Запрос.
Воспользуемся .
Счет СуммаНачальныйОстатокДт СуммаНачальныйОстатокКт СуммаОборотДт СуммаОборотКт СуммаКонечныйОстатокДт СуммаКонечныйОстатокКт
(рис 2.6) Конструирование запроса для построения отчета
Выбрав указанные поля, нажмем в окне конструктора запроса кнопку ОК. Теперь, на закладке окна конструктора СКД Наборы данных для полей СуммаНачальныйОстатокДТ, СуммаНачальныйОстатокКТ, СуммаКонечныйОстатокДТ, СуммаКонечныйОстатокКТ, установим свойство Роль в значение . Без этой установки система неправильно сформирует нужный нам отчет, а именно, при настройках по умолчанию не будет формировать итоговые показатели по начальным и конечным остаткам (сальдо), а
(рис 2.7) Настройка ролей для полей отчета
Теперь в конструкторе СКД перейдем на закладку Ресурсы, нажмем на кнопку добавления всех ресурсов (на ней изображены две стрелки, направленные вправо). В состав ресурсов будут добавлены все поля, кроме поля Счет. На закладке Настройки включим отображение параметров Начало периода и Конец периода в пользовательском интерфейсе (кнопка Свойства элемента пользовательских настроек).
Воспользуемся конструктором настроек компоновки данных, добавим новый отчет. Тип отчета – :
Счет СуммаНачальныйОстатокДт СуммаНачальныйОстатокКт СуммаОборотДт СуммаОборотКт СуммаКонечныйОстатокДт СуммаКонечныйОстатокКт
(рис 2.8) Выбор полей, отображаемых в отчете
В окне настройки группировки отчета в поле Строки добавим поле Счет. В качестве типа группировки выберем Иерархия – нам хотелось бы, чтобы данные по счетам выводились с учетом иерархии счетов.
В качестве поля для упорядочения таблицы выберем поле ), направление сортировки – по возрастанию.
(рис 2.9) Настройка упорядочивания отчета
Теперь откроем отчет в 1С:Предприятие и посмотрим, как он будет выглядеть, рис 2.10.
(рис 2.10) Готовый отчет
Как видите, наш отчет выводит все необходимые данные, счета отсортированы в соответствии с их порядком, итоги по показателям подсчитаны и выведены, счета представлены в соответствии с их иерархией.
Выше, создавая подсистему учета, мы указали в настройках плана счетов, что максимальное количество
Предположим, организации понадобился новый счет с кодом 10.3, который планируется использовать для учета специальной одежды, выданной сотрудникам организации. Этот счет должен иметь три
В соответствии с особенностями работы, в организации выделяется три группы спецодежды.
Запустим систему в режиме 1С:Предприятие, откроем План счетов. Создадим новый счет, заполним его параметры следующим образом:
Код: 10.3 Наименование: "Спецодежда" Порядок: 10. 3 Вид: Активный Родитель: Материалы Признак Количественный: Установлен
Добавим в его список
(рис 2.11) Разработка нового счета
Как производить записи по этому счету? У пользователя, без использования конфигуратора, есть лишь одна возможность – применить документ .
(рис 2.12) Работа с новым субконто при заполнении параметров документа Бухгалтерская операция
Сформируем бухгалтерскую запись, показывающую поступление спецодежды со следующими параметрами
Счет Дт: Спецодежда Субконто1 Дт: Одежда для парикмахера Субконто2 Дт: Иванов И.И. (Парикмахерская) Субконто3 Дт: Первая группа Количество Дт: 5 Счет Кт: Расчеты с поставщиками в валюте Субконто1 Кт: ООО "Полет" Валюта Кт: USD Валютная сумма Кт: 500 Сумма: 15000 Содержание: Поступила спецодежда, оплата в валюте
После записи документа построим .
(рис 2.13) Результаты построения отчета Оборотно-сальдовая ведомость после ввода новой операции
Займемся документом ПоступлениеМатериалов, подготовим его к проведению по бухгалтерскому учету.
Добавим к документу новый реквизит, назовем его Валюта, тип – СправочникСсылка.Валюта. В этом реквизите мы будем указывать валюту документа.
Кроме того, создадим реквизит СчетУчета, тип – ПланСчетовСсылка.Хозрасчетный. Используя этот реквизит, мы будем задавать счет, на который следует принять материалы, перечисленные в документе. Документ можно будет проводить либо по счету Материалы для производства, либо – по счету Прочие материалы. Выбор другого счета в данном поле будет восприниматься системой как ошибочный.
На закладке Движения укажем, что документ будет проводиться по
Добавим документ в состав подсистемы БухгалтерскийУчет.
Откроем форму документа и разместим в форме новые реквизиты .
(рис 2.14) Обновленная форма документа ПоступлениеМатериалов
Теперь мы можем заняться процедурой проведения документа.
При ее конструировании нужно учесть то, что при указании валюты в реквизите Валюта документ будет проводиться по счету расчетов с поставщиками в валюте, если валюта в поле не указана – по счету учета в рублях. Кроме того, подразумевается, что указав валюту в реквизите Валюта мы вводим в табличную часть документа сведения о стоимости материалов в валюте, то есть, для заполнения "рублевых" полей в записях нам понадобится конвертировать валютные суммы в рублевые.
Сейчас процедура проведения нашего документа, который до этого выполнял движения лишь по регистру накопления ОстаткиМатериалов, выглядит следующим образом:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаМатериалы.Номенклатура;
Движение.ОтветственныйСотрудник = ОтветственныйСотрудник;
Движение.Количество = ТекСтрокаМатериалы.Количество;
Движение.Сумма = ТекСтрокаМатериалы.Сумма;
КонецЦикла;
КонецПроцедуры
Нам придется полностью переработать эту процедуру, так как, во-первых, нас теперь интересует не только проведение по регистру накопления ОстаткиМатериалов, но и по
В итоге мы пришли к такому коду процедуры проведения документа ПоступлениеМатериалов:
Процедура ОбработкаПроведения(Отказ, Режим)
//Переменная для хранения курса валюты
Перем КурсВалюты;
//Проверим, указан ли один из необходимых счетов
//Для учета номенклатуры
Если СчетУчета<>ПланыСчетов.Хозрасчетный.ПрочиеМатериалы И
СчетУчета<>ПланыСчетов.Хозрасчетный.МатериалыДляПроизводства Тогда
Сообщить("Нужно указать либо счет Прочие материалы, либо счет Материалы для производства");
Отказ=Истина;
Возврат;
КонецЕсли;
//Проверим, указана ли в документе валюта
Если Валюта = Справочники.Валюты.ПустаяСсылка() Тогда
//Формирование движений по документу, данные в котором
//заданы в рублях
//Получаем табличную часть текущего документа, сгруппированную по полю Номенклатура
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеМатериаловМатериалы.Номенклатура,
| СУММА(ПоступлениеМатериаловМатериалы.Количество) КАК Количество,
| СУММА(ПоступлениеМатериаловМатериалы.Сумма) КАК Сумма
|ИЗ
| Документ.ПоступлениеМатериалов.Материалы КАК ПоступлениеМатериаловМатериалы
|ГДЕ
| ПоступлениеМатериаловМатериалы.Ссылка.Ссылка = Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеМатериаловМатериалы.Номенклатура";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.Хозрасчетный.Записывать=Истина;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//Формируем движения по регистру накопления ОстаткиМатериалов
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.ОтветственныйСотрудник = ОтветственныйСотрудник;
Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма;
//Формируем движения по регистру бухгалтерии Хозрасчетный
Движение=Движения.Хозрасчетный.Добавить();
Движение.Период=Дата;
Движение.СчетДт=СчетУчета;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура]=
ВыборкаДетальныеЗаписи.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Сотрудники]=
ОтветственныйСотрудник;
Движение.КоличествоДт=ВыборкаДетальныеЗаписи.Количество;
Движение.СчетКт=ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиВРублях;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты]=
Контрагент;
Движение.Сумма=ВыборкаДетальныеЗаписи.Сумма;
КонецЦикла;
Иначе
//Формирование движений по документу, данные в котором
//заданы в валюте
//Получаем курс валюты, заданной в документе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КурсыВалютСрезПоследних.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(МоментВремени, Валюта = Валюта) КАК КурсыВалютСрезПоследних";
Запрос.УстановитьПараметр("Валюта", Валюта);
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
КурсВалюты=ВыборкаДетальныеЗаписи.Курс;
Иначе
Сообщить("Не найден курс валюты!");
Отказ=Истина;
Возврат;
КонецЕсли;
//Получаем табличную часть текущего документа, сгруппированную по полю Номенклатура
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеМатериаловМатериалы.Номенклатура,
| СУММА(ПоступлениеМатериаловМатериалы.Количество) КАК Количество,
| СУММА(ПоступлениеМатериаловМатериалы.Сумма) КАК Сумма
|ИЗ
| Документ.ПоступлениеМатериалов.Материалы КАК ПоступлениеМатериаловМатериалы
|ГДЕ
| ПоступлениеМатериаловМатериалы.Ссылка.Ссылка = Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеМатериаловМатериалы.Номенклатура";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.Хозрасчетный.Записывать=Истина;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//Формируем движения по регистру накопления ОстаткиМатериалов
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.ОтветственныйСотрудник = ОтветственныйСотрудник;
Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма*КурсВалюты;
//Формируем движения по регистру бухгалтерии Хозрасчетный
Движение=Движения.Хозрасчетный.Добавить();
Движение.Период=Дата;
Движение.СчетДт=СчетУчета;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура]=
ВыборкаДетальныеЗаписи.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Сотрудники]=
ОтветственныйСотрудник;
Движение.КоличествоДт=ВыборкаДетальныеЗаписи.Количество;
Движение.СчетКт=ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиВВалюте;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты]=
Контрагент;
Движение.ВалютаКт=Валюта;
Движение.ВалютнаяСуммаКт=ВыборкаДетальныеЗаписи.Сумма;
Движение.Сумма=ВыборкаДетальныеЗаписи.Сумма*КурсВалюты;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
В первую очередь мы проверяем является ли счет учета материалов, указанный в документе, одним из тех счетов, по которым мы планируем его проводить. В нашем случае это пара счетов – Прочие материалы и Материалы для производства. Они являются предопределенными элементами плана счетов Хозрасчетный, поэтому мы можем обращаться к ним по именам непосредственно из кода.
Если выбранный счет не относится к тем, движения по которым выполняет документ, мы выдаем пользователю сообщение об ошибке, отказываемся от проведения документа и выходим из процедуры проведения.
Дальнейшая работа процедуры проведения документа делится на две ветви. Первая ветвь выполняется в том случае, если валюта в реквизите Валюта не указана. При таком варианте развития событий валюта документа принимается за валюту регламентированного учета, движения формируются в рублях без пересчета.
В первой ветви мы получаем из табличной части документа данные о номенклатурных позициях, их количестве и общей стоимости, сгруппированные по полю Номенклатура, после чего формируем движения по регистру ОстаткиМатериалов (если вас интересуют подробности о проведении документов по регистрам накопления, обратитесь к нашему курсу, который посвящен основам разработки и модификации прикладных решений для платформы 1С:Предприятие 8.2.) и по
Данные движения по Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Сотрудники]. Так как
Вторая ветвь проведения документа активизируется в том случае, если при проверке реквизита Валюта оказалось, что он не пуст, что подразумевает сразу несколько последствий – данные о цене и сумме приведены в валюте, то есть, требуется их конвертация в рубли, учет данной операции должен вестись на счете валютных расчетов с поставщиками.
Во второй ветви мы, в первую очередь, получаем из регистра сведений КурсыВалют самое свежее значение курса для выбранной валюты на дату проведения документа. В данном случае вся ответственность за корректность курса и за своевременность ввода свежих данных в регистр накопления лежит на пользователе.
Если курс валюты получить не удалось – мы сообщаем пользователю об ошибке, отказываемся от проведения документа и выходим из процедуры. Если же найден – мы записываем его в ранее объявленную переменную КурсВалюты для последующего использования.
Далее во второй ветви мы получаем данные из табличной части документа, сгруппировав их по полю Номенклатура, после чего формируем движения – сначала по регистру накопления ОстаткиМатериалов, конвертируя (Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма*КурсВалюты;) значение суммовой стоимости поступившей номенклатурной позиции в рубли путем умножения валютной суммы на найденный курс валюты.
При формировании движений по
Движение.ВалютаКт=Валюта;
Движение.ВалютнаяСуммаКт=ВыборкаДетальныеЗаписи.Сумма;
Движение.Сумма=ВыборкаДетальныеЗаписи.Сумма*КурсВалюты;
После того, как работа над процедурой проведения завершена, следует проверить проведение документа в режиме 1С:Предприятие, проконтролировав правильность отражения движений в зависимости от указания валюты и выбора счетов учета материалов, а так же – обратив особое внимание на правильное отражение в учете данных о суммах и валютных суммах отраженных операций.
Построим отчет, который будет выводить сведения о количественных остатках материалов по данным бухгалтерского учета. Строго говоря, данные о материальных ценностях могут храниться не только на счетах, родителем которых является счет Материалы, но на любых других счетах, которые отличаются, во-первых, тем, что являются активными, во-вторых – тем, что имеют установленный признак учета Количественный, и, в-третьих – тем, что имеют
Добавим в систему новый отчет .
(рис 2.15) Выбор полей в Конструкторе запроса
Откроем окно параметров виртуальной таблицы (кнопка ):
УсловиеСчета: Счет.Количественный и Счет.Вид=Активный Субконто: ВидСубконто
(рис 2.16) Настройка параметров виртуальной таблицы
В конструкторе запроса на закладке .
(рис 2.17) Настройка псевдонимов полей
Завершим работу с конструктором запросов, перейдем на закладку Ресурсы конструктора СКД, выберем в качестве ресурса Количество.
Перейдем на закладку Параметры, здесь мы видим три параметра – Период, Активный и ВидСубконто. По умолчанию для двух последних параметров назначены значений .
(рис 2.18) Закладка Параметры до настройки
Нас такое состояние дел не устраивает – укажем (с помощью кнопок Выбрать у соответствующих полей) для параметра Активный значение .
(рис 2.19) Закладка Параметры после настройки
Перейдем на закладку Настройки. Включим отображение поля ввода параметра Период в пользовательском интерфейсе и воспользуемся конструктором настроек для задания внешнего вида отчета. Выберем вид отчета – Таблица. На этапе выбора полей, которые будут отображаться в отчете, укажем поля Номенклатура и Количество. Группировку строк произведем по полю Номенклатура, тип группировки – Иерархия. Поле упорядочивания – Номенклатура, по возрастанию.
Построим отчет в режиме 1С:Предприятие, рис 2.20.
(рис 2.20) Готовый отчет Остатки материалов по бухучету
Мы, перед построением отчета, отменили проведение документов, фиксирующих поступление материалов, за исключением, во-первых – документа Бухгалтерская операция, которым мы вводили начальные остатки, во-вторых – документа Бухгалтерская операция, с помощью которого мы сформировали движение по счету Спецодежда, созданному в пользовательском режиме. Результаты соответствуют ожидаемым. Проведение других документов поступления материалов показывают, что отчет правильно выводит нужные данные. В частности, мы провели документ ПоступлениеМатериалов, который отражает поступление различных номенклатурных позиций с одинаковым количеством – ). Надо отметить, что логика нашего решения позволяет принимать к учёту одежду для парикмахера с помощью документа Поступление материалов. Одежда не является, в общепринятом смысле, материалом. В реально используемой конфигурации подобную операцию нужно оформлять либо с помощью бухгалтерской справки и соответствующей ручной правки регистров, либо - разработать для этой цели специальный документ, который позволит отразить механизм учёта, характерный именно для одежды или других подобных объектов учёта.
(рис 2.21) Отчет Остатки материалов по бухучету после проведения документа ПоступлениеМатериалов
В этой лекции мы разработали документ, позволяющий отражать произвольные бухгалтерские записи в подсистеме бухгалтерского учета, доработали документ ПоступлениеМатериалов таким образом, чтобы он мог использоваться для отражения поступления материалов от поставщиков, расчеты с которыми производятся в рублях, либо в валюте, построили отчеты по
В нашей следующей лекцией мы займемся проведением по бухгалтерскому учету документов, отражающих расход материалов и разработкой документа, фиксирующего в учете отклонения, вызванные изменением курсов валют.
Для данной лекции подготовлен видеоурок.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.