Продвинутый курс. Занятие №15
Первое занятие 3-го блока продвинутого курса по программированию.
Необходимо изучить следующие главы текущего блока.
Глава 1. Общие вопросы автоматизации БУ
Глава 2. Настройка объектов БУ
Глава 3. Запросы к регистрам
Глава 4. Развернутое сальдо
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.
Задание выполнено.
Реализовано требуемое проведение документов поступления и реализации по БУ. Добавлен новый документ “Требование-Накладная”, осуществляющий списание ТМЦ на затраты по БУ И УУ. Создан документ “Закрытие месяца”. Доведение средне скользящей оценки до средневзвешенной реализовано аналогично описанию в уроках.
Задание выполнила. Добавила описанные счета. В документы поступления и реализации добавила табл. часть для учета услуг, реализовала проводки. В документ Реализации добавила проводку по товарам Дт Покупатели Кт Выручка. Создала документ ТребованиеНакладная, списание ТМЦ для него по регистрам накопления аналогично док-ту Реализации. Для списания ТМЦ по регистру бухгалтерии сделала подписку на событие ПодпискаНаСобытиеОбработкаПроведения для документов реализации и требования. В ней временная таблица товаров из соотв. док-та(там же необходимый счет Дт) связывается с виртуальной таблицей остатков регистра бухгалтерии для списания себестоимости по среднескользящей. В конце месяца списываемая стоимость доводится регламентным документом(Закрытие месяца) до средневзвешенной.
Задание выполнила. Создала все необходимые счета, максимальное количество субконто увеличила до 3. Сумму списания в проводках по номенклатуре рассчитываю и записываю с помощью подписки на событие “Перед записью” набора записей регистров бухгалтерии. В документе “Закрытие месяца” два запроса, в которых определяется средняя стоимость и сумма досписания по данным регистров накопления и бухгалтерии.
Задание №15 выполнено.
В план счетов Управленческий добавлены все необходимые счета, создана и настроена аналитика, макс. кол-во субконто увеличено до 3. Настроены табличные части Услуги, созданы реквизиты слуга, Количество, Цена, Сумма, в док-те поступление товаров также добавлены реквизиты реквизиты СчетЗатрат, Подразделение, ЗаказПокупателя. Формирование движений по поступлению и реализации услуг никакой сложности не вызывает, вся информация есть в самих документах.
Создан документ ТребованиеНакладная, в табл.части товары реквизиты Номенклатура, Количество, СчетУчета, СчетЗатрат, Заказ, Подразделение, ОбъектЗатрат.
Списание товаров по бух. учету вынесено в отдельную процедуру общего модуля, в которую передается табл.часть документа Товары, набор записей регистра бухгалтерии, момент времени документа и параметр Отказ. Создано перечисление ВидыНоменклатуры с тремя значениями Товар, Продукция и Услуга. В справочнике номенклатура добавлен соответствующий реквизит. Он нужен для того. чтобы при проведении реализации по БУ определить счет учета номенклатуры. Счет затрат в случае реализации принимается равным 90.02. Текст процедуры:
<code>
Процедура СписатьТоварыПоБУ(Товары, НаборЗаписей, МоментВремени, Отказ) Экспорт
НаборЗаписей.Записать();
ТаблТовары = Товары.Выгрузить();
Если ТаблТовары.Колонки.Найти(“СчетУчета”)=Неопределено Тогда
ТаблТовары.Колонки.Добавить(“СчетУчета”,Новый ОписаниеТипов(“ПланСчетовСсылка.Управленческий”));
ТаблТовары.ЗаполнитьЗначения(ПланыСчетов.Управленческий.Товары, “СчетУчета”);
КонецЕсли;
Если ТаблТовары.Колонки.Найти(“СчетЗатрат”)=Неопределено Тогда
ТаблТовары.Колонки.Добавить(“СчетЗатрат”,Новый ОписаниеТипов(“ПланСчетовСсылка.Управленческий”));
ТаблТовары.ЗаполнитьЗначения(ПланыСчетов.Управленческий.Себестоимость, “СчетЗатрат”);
КонецЕсли;
Для каждого СтрТаблТовары Из ТаблТовары Цикл
Если СтрТаблТовары.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Продукция Тогда
СтрТаблТовары.СчетУчета = ПланыСчетов.Управленческий.Продукция;
КонецЕсли;
КонецЦикла;
Табл = ТаблТовары.Скопировать(,”Номенклатура,СчетУчета”);
Табл.Свернуть(“Номенклатура,СчетУчета”);
Запрос = Новый Запрос(
“ВЫБРАТЬ
| ТаблТовары.Номенклатура,
| ТаблТовары.СчетУчета
|ПОМЕСТИТЬ Товары
|ИЗ
| &ТаблТовары КАК ТаблТовары
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.СчетУчета,
| ЕСТЬNULL(РегистрУправленческийОстатки.КоличествоОстатокДт, 0) КАК ОстатокКол,
| ЕСТЬNULL(РегистрУправленческийОстатки.СуммаОстатокДт, 0) КАК ОстатокСум
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрУправленческий.Остатки(
| &МоментВремени,
| Счет В
| (ВЫБРАТЬ
| Товары.СчетУчета
| ИЗ
| Товары КАК Товары),
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары),
| Субконто1 В
| (ВЫБРАТЬ
| Товары.Номенклатура
| ИЗ
| Товары КАК Товары)) КАК РегистрУправленческийОстатки
| ПО Товары.СчетУчета = РегистрУправленческийОстатки.Счет
| И Товары.Номенклатура = РегистрУправленческийОстатки.Субконто1”);
Запрос.УстановитьПараметр(“ТаблТовары”, Табл);
Запрос.УстановитьПараметр(“МоментВремени”, МоментВремени);
ТаблОстатки = Запрос.Выполнить().Выгрузить();
Для каждого Строка Из ТаблТовары Цикл
Если Строка.Количество=0 Тогда
Продолжить;
КонецЕсли;
СчетУчета = Строка.СчетУчета;
Массив = ТаблОстатки.НайтиСтроки(Новый Структура(“Номенклатура,СчетУчета”,Строка.Номенклатура,СчетУчета));
Если Массив.Количество()=0 Тогда
ОстатокКол=0;
ОстатокСум=0;
Иначе
ОстатокКол=Массив[0].ОстатокКол;
ОстатокСум=Массив[0].ОстатокСум;
КонецЕсли;
Если Строка.Количество > ОстатокКол Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Недостаточно кол-ва товара “+Строка.Номенклатура+” на остатках по бух.счету “+Строка.СчетУчета.Код;
Сообщение.Сообщить();
Продолжить;
КонецЕсли;
СписатьСум = Окр(Строка.Количество*ОстатокСум/ОстатокКол,2);
Массив[0].ОстатокКол = Массив[0].ОстатокКол-Строка.Количество;
Массив[0].ОстатокСум = Массив[0].ОстатокСум-СписатьСум;
Если Не Отказ Тогда
СчетЗатрат = Строка.СчетЗатрат;
Проводка = НаборЗаписей.Добавить();
Проводка.Период = МоментВремени.Дата;
Проводка.СчетДт = СчетЗатрат;
Если СчетЗатрат.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконто.Подразделения)<>Неопределено Тогда
Проводка.СубконтоДт.Подразделения = Строка.Подразделение;
КонецЕсли;
Если СчетЗатрат.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконто.ЗаказПокупателя)<>Неопределено Тогда
Проводка.СубконтоДт.ЗаказПокупателя = Строка.Заказ;
КонецЕсли;
Если СчетЗатрат.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконто.Товары)<>Неопределено Тогда
Проводка.СубконтоДт.Товары = Строка.ОбъектЗатрат;
КонецЕсли;
Проводка.СчетКт = СчетУчета;
Проводка.СубконтоКт.Товары = Строка.Номенклатура;
Проводка.КоличествоКт = Строка.Количество;
Проводка.Сумма = СписатьСум;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
</code>
Создан документ ЗакрытиеМесяца, без реквизитов. Месяцем закрытия считается месяц даты документа. Доведение до средневзвешенной стоимости по упр. учету вообще никакой сложности не представляет, а вот по БУ надо учесть, что есть несколько счетов учета и списание возможно на произвольные счета с произвольной аналитикой.
Вся необходимая информация получается пакетным запросом. В 1-м запросе пакета формируется ВТ, содержащая список счетов учета (условия – счет обладает признаком Количественный, а также среди аналитики имеет вид субконто Товары). Во 2-м запросе формируется ВТ, содержащая средневзвешенную стоимость единицы номенклатуры по каждому счету учета (из виртуальной таблицы ОстаткиИОбороты). В 3-м запросе виртуальная таблица Обороты соединяется с предыдущей и определяется сумма коррекции по каждому направлению списания (с учетом аналитики) с каждого счета учета.
В план счетов добавлены предопределенные счета затрат. В документ поступления добавлена табличная часть для указания услуг, при этом в каждой строке табличной части можно указать счет и аналитику затрат. Также поддержка услуг добавлена и в документ реализации. При проведении поступления и реализации формируются необходимые проводки. Добавлен документ “Требование-накладная”, в табличной части которого можно указать счет ТМЦ, счет и аналитику затрат. Списание в затраты осуществляется по среднескользящей оценке, при этом выполняется контроль остатков по количеству. Создан документ “Закрытие месяца”, который делает корректирующие движения по регистру накопления и бухгалтерии. В качестве счетов для корректировки выбираются счета с одним субконто “Номенклатура”. Для упрощения задачи в качестве счета дебета всегда указывается счет себестоимости 90.02.
Задание освоено. Действительно, в ИБ после ДЗ №14 задание полностью выполнено. Подумав, что ИБ выложена ошибочно, воспроизвел решение в ИБ после ДЗ №13, используя “козу”…
Да, это ошибка. Спасибо за информацию.
Задание выполнила в базе после ДЗ №13.
Для обеспечения ввода товаров и услуг в разные табличные части добавим реквизит “Услуга” типа булево в справочник номенклатуры, настроим параметры выборки по реквизиту для номенклатуры в каждой табличной части. В обработке проведения документов скорректируем движения по продажам и взаиморасчетам с учетом услуг.
В ТЧ “Услуги” для поступления добавим реквизиты СчетЗатрат, Подразделение, ЗаказПокупателя. При проведении будем проверять наличие субконто у указанного счета затрат.
В реализации добавим в запрос по ТЧ “Товары” остатки по регистру бухгалтерии, формируем проводки с учетом проверки остатков. При наличии услуг формируем общую проводку по документу.
В документе “Требование-накладная” в ТЧ добавляем реквизиты СчетУчетаТМЦ, СчетЗатрат, Подразделение, ЗаказПокупателя. Настраиваем проведение по регистрам накопления (ОстаткиТоваров, СтоимостьТоваров, РезервыТоваров – поскольку в задаче не указано, требуется ли резервирование по ЗаказуПокупателя, но такой реквизит в ТЧ присутствует, считаем, что резервирование производится аналогично прочим документам).
Формируем движения по регистрам накопления аналогично документа реализации, с учетом того, что в ТЧ счета и аналитика устанавливаются пользователем.
Остатки получаем так:
…ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрУправленческий.Остатки(
&МоментВремени,
Счет В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Товары.СчетУчетаТМЦ
ИЗ
Товары КАК Товары),
&ВидыСубконто,
Субконто1 В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Товары.Номенклатура
ИЗ
Товары КАК Товары)
И Субконто2 В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Товары.Склад
ИЗ
Товары КАК Товары)) КАК РегистрУправленческийОстаткиПоКоличеству
ПО Товары.Номенклатура = РегистрУправленческийОстаткиПоКоличеству.Субконто1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрУправленческий.Остатки(
&МоментВремени,
Счет В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Товары.СчетУчетаТМЦ
ИЗ
Товары КАК Товары),
ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары),
Субконто1 В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Товары.Номенклатура
ИЗ
Товары КАК Товары)) КАК РегистрУправленческийОстаткиПоСумме
ПО Товары.Номенклатура = РегистрУправленческийОстаткиПоСумме.Субконто1
В документе “Закрытие месяца” не удалось окончательно доработать часть по бухгалтерскому учету (по формированию проводок).
В целом для меня задание сложное, т.к. нет практики работы по бухучету.
Домашнее задание в целом затруднений не вызвало.
У номенклатуры создан новый реквизит ТипНоменклатуры(Перечисление, Товар или Услуга). В событие НачалоВыбора номенклатуры в товарах и услугах передаю параметры формы с необходимым отбором. Требуемые проводки в документах формируются.
В документа ТребованиеНакладная добавлены необходимые реквизиты. Для субконто настроил связь по типу со счетом затрат с соответствующим номером элемента. В запросе при обработке проведения не совсем, кажется, оптимальным фильтр ВТ Остатки по двум полям (счет и номенклатура), возможны избыточные данные.
Закрытие месяца реализовал по аналогии как было описано в одном из предыдущих уроков
Написать готово было бы неправильно, так как в конфигурации уже было все готово. Но я занялся тем, что изучал подробно как это сделано и много полезного для себя уяснил.
В конфигурации не может быть все готово, если она не была загружена из какого-то решения. :)
Готово! Для определения услуг в справочнике номенклатуры заведен реквизит булевского типа “Услуга”
В документах ТЧ доработаны. Через параметры выбора отфильтровываю номенклатуру в ТЧ в зависимости от того, является ли она услугой или нет.
Документы “Требование-накладная” и “Закрытие месяца” созданы.
Движения по РБ и РН (для требования-накладной) создаются.
Себестоимость считается. Как по среднескользящей, так и по средневзвешенной. В уроках был подробно расписан механизм расчета.