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