Решение:
Для решения задачи задействуем следующие объекты:
1) ПВХ "Виды субконто".
2) Дорабатываем план счетов.
Скачать решение задачи 2.14
Надеюсь Вам также будет интересен
Этот видеокурс поможет Вам:
1) ПВХ "Виды субконто".
- Заполняем типы значений характеристик и дополнительные значения характеристик.
- Согласно условия задачи заводим 2 предопределенных элемента "Номенклатура" и "Инвентарный номер".
2) Дорабатываем план счетов.
- Добавляем признак учета субконто "количественный",
- на закладке "субконто" заполняяем тип субконто и устанавливаем значение субконто=2.
- Редактируем предопределенные счет "Товары".(признак учета и субконто) и для счета "Покупатели" тоже добавляем субконто товары и инв. номер. (Это весьма нелогичное решение для реальной жизни позволит построить необходимый отчет)
3) Добавляем регистр бухгалтерии "Управленческий".
- Связываем его с планом счетов
- Добавляем ресурсы (количество, сумма)
- Выбираем регистраторы.
4) Не забываем о том, что в задачах бухгалтерского учета необходимо добавить документ, с помощью которого можно добавлять записи в регистр вручную. Назовем его "Ручная операция".
укажем что он является регистратором нашего регистра.
добавим форму
на форму вытащим реквизит Объект-движения-управленческий.
5) Переходим к Приходной накладной.
- В ТЧ добавим реквизит "срок годности".
- Небольшой "тюнинг". Вешаем процедуру пересчета строки на событие "при изменении" количества и цены, записываем реквизит "сумма по документу" при записи документа.
- С помощью конструктора движений формируем обработку проведения.
6) Переходим к "Расходной накладной".
- "Тюнингуем" как Приходную.
- Пишем процедуру проведения.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.Управленческий.Записывать = Истина;
Движения.Управленческий.Очистить();
Движения.Управленческий.Записать();
/////////////////////////////////////
Блокировка = Новый БлокировкаДанных;
Элемент = Блокировка.Добавить("РегистрБухгалтерии.Управленческий");
Элемент.ИсточникДанных = СписокНоменклатуры;
Элемент.ИспользоватьИзИсточникаДанных("Субконто1", "Номенклатура");
Элемент.УстановитьЗначение("Счет", ПланыСчетов.Управленческий.Товары);
Элемент.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
/////////////////////////////////////
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| МАКСИМУМ(РасходнаяНакладнаяСписокНоменклатуры.НомерСтроки) КАК НомерСтроки,
| РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
| СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
| СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма,
| МАКСИМУМ(РасходнаяНакладнаяСписокНоменклатуры.ИнвентарныйНомер) КАК ИнвентарныйНомер
|ПОМЕСТИТЬ ДокТЧ
|ИЗ
| Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.Номенклатура КАК Номенклатура,
| ДокТЧ.Количество КАК Количество,
| ДокТЧ.Сумма КАК Сумма,
| ЕСТЬNULL(УправленческийОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(УправленческийОстатки.СуммаОстатокДт, 0) КАК СуммаОстаток,
| ДокТЧ.НомерСтроки КАК НомерСтроки,
| ДокТЧ.ИнвентарныйНомер КАК ИнвентарныйНомер
|ИЗ
| ДокТЧ КАК ДокТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
| &МоментВремени,
| Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары),
| &мСубконто,
| Субконто1 В
| (ВЫБРАТЬ
| Т.Номенклатура
| ИЗ
| ДокТЧ КАК Т)) КАК УправленческийОстатки
| ПО ДокТЧ.Номенклатура = УправленческийОстатки.Субконто1
|ИТОГИ
| МАКСИМУМ(Количество),
| МАКСИМУМ(Сумма),
| СУММА(КоличествоОстаток),
| СУММА(СуммаОстаток),
| МАКСИМУМ(НомерСтроки),
| МАКСИМУМ(ИнвентарныйНомер)
|ПО
| Номенклатура";
мСубконто = Новый Массив;
мСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
мСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.ИнвентарныйНомер);
///////////////////////////////////////
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("мСубконто", мСубконто);
Результат = Запрос.Выполнить();
ВыборкаИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаИтог.Следующий() Цикл
Если ВыборкаИтог.Количество > ВыборкаИтог.КоличествоОстаток Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не хватает товара - " + ВыборкаИтог.Номенклатура +
", требуется - " + ВыборкаИтог.Количество +
", в наличии - " + ВыборкаИтог.КоличествоОстаток;
Сообщение.Поле = "СписокНоменклатуры[" + (ВыборкаИтог.НомерСтроки - 1) + "].Количество";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
Продолжить;
Иначе
Если Не Отказ Тогда
КСписанию = ВыборкаИтог.Количество;
Если ВыборкаИтог.КоличествоОстаток <> 0 Тогда
Себестоимость = ВыборкаИтог.СуммаОстаток/ВыборкаИтог.КоличествоОстаток ;
КонецЕсли;
Выборка = ВыборкаИтог.Выбрать();
Пока Выборка.Следующий() И КСписанию > 0 Цикл
Списать = Мин(КСписанию, Выборка.КоличествоОстаток);
/////////////////////////////////////////////////////////////////
//1.Дт(Прибыли и убытки) - Кт(Товары)
Движение = Движения.Управленческий.Добавить();
Движение.Период = Дата;
Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
Движение.Сумма = Себестоимость*Списать;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ИнвентарныйНомер] = Выборка.ИнвентарныйНомер;
Движение.Количество = Списать;
/////////////////////////////////
КСписанию = КСписанию - Списать;
КонецЦикла;
КонецЕсли;
//2.Дт(Покупатели) = Кт(Прибыли и убытки)
Движение = Движения.Управленческий.Добавить();
Движение.Период = Дата;
Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаИтог.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ИнвентарныйНомер] = ВыборкаИтог.ИнвентарныйНомер;
Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.Сумма = ВыборкаИтог.Сумма;
КонецЕсли;
КонецЦикла;
///////////////////////////////////
Движения.Управленческий.Записывать = Истина;
///////////////////////////////////////////////
КонецПроцедуры
7) Делаем отчет.
В отчете не мудрствуя лукаво выводим 3 таблицы и соединяем их.
ВЫБРАТЬ
Продажи.СубконтоДт1 КАК Номенклатура,
Продажи.СубконтоДт2 КАК ИнвентарныйНомер,
Закупка.СуммаОборот КАК Закупка,
Себестоимость.СуммаОборот КАК Себестоимость,
Продажи.СуммаОборот КАК Продажа
ИЗ
РегистрБухгалтерии.Управленческий.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Покупатели), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , ) КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары), , ) КАК Себестоимость
ПО Продажи.СубконтоДт1 = Себестоимость.СубконтоКт1
И Продажи.СубконтоДт2 = Себестоимость.СубконтоКт2
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Поставщики), , ) КАК Закупка
ПО Продажи.СубконтоДт1 = Закупка.СубконтоДт1
И Продажи.СубконтоДт2 = Закупка.СубконтоДт2
В отчете не мудрствуя лукаво выводим 3 таблицы и соединяем их.
ВЫБРАТЬ
Продажи.СубконтоДт1 КАК Номенклатура,
Продажи.СубконтоДт2 КАК ИнвентарныйНомер,
Закупка.СуммаОборот КАК Закупка,
Себестоимость.СуммаОборот КАК Себестоимость,
Продажи.СуммаОборот КАК Продажа
ИЗ
РегистрБухгалтерии.Управленческий.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Покупатели), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , ) КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары), , ) КАК Себестоимость
ПО Продажи.СубконтоДт1 = Себестоимость.СубконтоКт1
И Продажи.СубконтоДт2 = Себестоимость.СубконтоКт2
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Поставщики), , ) КАК Закупка
ПО Продажи.СубконтоДт1 = Закупка.СубконтоДт1
И Продажи.СубконтоДт2 = Закупка.СубконтоДт2
Скачать решение задачи 2.14
Надеюсь Вам также будет интересен
Этот видеокурс поможет Вам:
- Избежать типичных и нетипичные ошибок в 1С:Бухгалтерия 8;
- Cэкономить Вам время и силы;
- Более уверенно работать с программой.
Комментариев нет:
Отправить комментарий