// регистр СебестоимостьТоваров Приход
Движение = Движения.СебестоимостьТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Товар; Движение.Сумма = ТекСтрокаТовары.Сумма; Движение.Количество = ТекСтрокаТовары.Количество;
КонецЦикла;
// регистр РегистрБухУчет Движения.РегистрБухУчет.Записывать = Истина; Движение = Движения.РегистрБухУчет.Добавить();
Движение.СчетДт = ПланыСчетов.БухгалтерскийУчет.Товары; Движение.СчетКт = ПланыСчетов.БухгалтерскийУчет.Поставщики; Движение.Период = Дата;
Движение.Сумма = СуммаДокумента; КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) СуммаДокумента = Товары.Итог("Сумма");
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПоступлениеТоваров")
Тогда
// Заполнение шапки
Ответственный = ДанныеЗаполнения.Ответственный; Клиент = ДанныеЗаполнения.Ссылка; СуммаДокумента = СуммаДокумента;
Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл НоваяСтрока = Товары.Добавить(); НоваяСтрока.Количество = ТекСтрокаТовары.Количество; НоваяСтрока.Сумма = ТекСтрокаТовары.Сумма; НоваяСтрока.Товар = ТекСтрокаТовары.Товар; НоваяСтрока.Цена = ТекСтрокаТовары.Цена;
КонецЦикла; КонецЕсли;
КонецПроцедуры Процедура ОбработкаПроведения(Отказ, Режим) // регистр ОстаткиТоваров Расход Движения.ОстаткиТоваров.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Товар; Движение.Количество = ТекСтрокаТовары.Количество; Движение.Цена = ТекСтрокаТовары.Цена;
КонецЦикла; Движения.Записать();
Если Режим = РежимПроведенияДокумента.Оперативный Тогда Запрос = Новый Запрос; Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиТоваровОстатки.Номенклатура КАК Номенклатура,
| -ОстаткиТоваровОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(
| ,
| Номенклатура В
| (ВЫБРАТЬ
| РеализацияТоваровТова-
ры.Товар КАК Товар
| ИЗ
| Документ.РеализацияТова -
ров.Товары КАК РеализацияТоваровТовары
| ГДЕ
| РеализацияТоваровТова-
ры.Ссылка = &Ссылка)) КАК ОстаткиТоваровОстатки
|ГДЕ
| ОстаткиТоваровОстатки.КоличествоОстаток < 0"; Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
|
Если
| НЕ РезультатЗапроса.Пустой() Тогда Отказ = Истина;
|
|
|
Модуль объекта документ РеализацияТоваровИУслуг
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить("Недостаточно товара "+ВыборкаДетальныеЗаписи.- Номенклатура+" в количестве "+ВыборкаДетальныеЗаписи.Количество);
КонецЦикла; КонецЕсли;
КонецЕсли;
Если Отказ Тогда
Возврат; КонецЕсли;
Движения.СебестоимостьТоваров.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Запрос = Новый Запрос.Текст =
Запрос;
"ВЫБРАТЬ
| СебестоимостьТоваровОстатки.Номенклатура КАК Номенклату- ра,
| СебестоимостьТоваровОстатки.СуммаОстаток КАК Сумма,
| СебестоимостьТоваровОстатки.КоличествоОстаток КАК Количе- ство
|ИЗ
| РегистрНакопления.СебестоимостьТоваров.Остатки(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ
| РеализацияТоваровТова-ры.Товар КАК Товар
| ИЗ
| Документ.РеализацияТова -
ров.Товары КАК РеализацияТоваровТовары
| ГДЕ
| РеализацияТоваровТовары.Ссылка = &Ссылка)) КАК СебестоимостьТо- варовОстатки";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СуммаСебестоимости = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество <> 0 Тогда СебестоимостьЕдиницы = ВыборкаДетальныеЗаписи.Сумма/Вы-
боркаДетальныеЗаписи.Количество;
Иначе
вар");
СебестоимостьЕдиницы =
0;
КонецЕсли;
Движение =
Движения.
СебестоимостьТоваров.
Добавить();
Движение.
ВидДвижения =
ВидДвиженияНакопления.
Расход;
Движение.
Период =
Дата;
СтрокаТЧ =
Товары.
Найти(
ВыборкаДетальныеЗаписи.
Номенклатура,
"То-
Движение.
Номенклатура =
ВыборкаДетальныеЗаписи.
Номенклатура;
Движение.
Количество =
СтрокаТЧ.
Количество;
ство;
СебестоимостьСписания = СебестоимостьЕдиницы *СтрокаТЧ.Количе- Движение.Сумма = СебестоимостьСписания;
Движение =
Движения.
Продажи.
Добавить();
Движение.
Период =
Дата;
Движение.
Клиент =
Клиент;
Движение.
Номенклатура =
ВыборкаДетальныеЗаписи.
Номенклатура;
Движение.
Количество =
СтрокаТЧ.
Количество;
Движение.
Сумма =
СтрокаТЧ.
Сумма ;
Движение.
Себестоимость =
СебестоимостьСписания;
СуммаСебестоимости =
СуммаСебестоимости +
СебестоимостьСписания;
КонецЦикла;
//регист бухучетДвижения.
РегистрБухУчет.
Записывать =
Истина;
Проводка =
Движения.
РегистрБухУчет.
Добавить();
Проводка.
Период =
Дата;
Проводка.
СчетДт =
ПланыСчетов.
БухгалтерскийУчет.
Покупатели;
Проводка.
СчетКт =
ПланыСчетов.
БухгалтерскийУчет.
Выручка;
Проводка.
Сумма =
СуммаДокумента;
Проводка =
Движения.
РегистрБухУчет.
Добавить();
Проводка.
Период =
Дата;
Проводка.
СчетДт =
ПланыСчетов.
БухгалтерскийУчет.
Себестоимость;
Проводка.
СчетКт =
ПланыСчетов.
БухгалтерскийУчет.
Товары;
Проводка.
Сумма =
СуммаСебестоимости;
КонецПроцедурыПроцедура ПередЗаписью(
Отказ,
РежимЗаписи,
РежимПроведения)
СуммаДокумента =
0;
Для Каждого СтрокаТЧ Из
Товары ЦиклСуммаДокумента =
СуммаДокумента +
СтрокаТЧ.
Сумма;
КонецЦиклаКонецПроцедурыПроцедура ОбработкаПроверкиЗаполнения(
Отказ,
ПроверяемыеРеквизиты)
Если Клиент.
Клиент =
Ложь ТогдаОтказ=Истина;
Сообщить(
"Ошибка, укажите клиента");
КонецЕслиКонецПроцедур
МодульдокументаЗакрытиеМесяца
ФункцияОстатокПоСчету(
Счет,
Период)
Запрос = Новый Запрос.Текст =
Запрос;
"ВЫБРАТЬ
| РегистрБухУчетОстатки.СуммаОстатокДт КАК СуммаОстатокДт,
| РегистрБухУчетОстатки.СуммаОстатокКт КАК СуммаОстатокКт
|ИЗ
| РегистрБухгалтерии.РегистрБухУчет.Остатки(&Период, Счет = &Счет, ) КАК РегистрБухУчетОстатки";
Запрос.УстановитьПараметр("Период", Период); Запрос.УстановитьПараметр("Счет", Счет);
РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда
Возврат 0; КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий(); Если Счет.Вид = ВидСчета.Активный Тогда
Возврат ВыборкаДетальныеЗаписи.СуммаОстатокДт;
Иначе
Возврат
ВыборкаДетальныеЗаписи.СуммаОстатокКт;
КонецЕсли;
КонецФункции
Процедура ОбработкаПроведения(Отказ, РежимПроведения) КонецПериода = КонецМесяца(Дата)+1;
ОстатокВыручка = ОстатокПоСчету(ПланыСчетов.БухгалтерскийУчет.Выручка,Ко- нецПериода);
ОстатокСебестоимость = ОстатокПоСчету(ПланыСчетов.БухгалтерскийУчет.Себе- стоимость,КонецПериода);
Движения.РегистрБухУчет.Записывать = Истина; Проводка = Движения.РегистрБухУчет.Добавить(); Проводка.Период = Дата;
Проводка.СчетДт = ПланыСчетов.БухгалтерскийУчет.Выручка; Проводка.СчетКт = ПланыСчетов.БухгалтерскийУчет.Прибыль; Проводка.Сумма = ОстатокВыручка;
Проводка = Движения.РегистрБухУчет.Добавить(); Проводка.Период = Дата;
Проводка.СчетДт = ПланыСчетов.БухгалтерскийУчет.Прибыль; Проводка.СчетКт = ПланыСчетов.БухгалтерскийУчет.Себестоимость; Проводка.Сумма = ОстатокСебестоимость;
КонецПроцедуры
ОтчетОстаткипосчетамбухучета ибаланс
Рис.19«Документбухгалтерскаяоперация»
Пользователь может выбрать период на которой проверяются остатки и счет
Модульзарплата
Рис.20«Подсистемазарплата,Начисления»Начисление ЗП это подмножество класса задач, где требуются сложные периодические расчеты.НачислениеЗПпроисходитвконце/началеследующегомесяца,когдавседанныеоботсутствии сотрудников,окладах ипремийвнесены.Для отражения начислений и удержаний нужен регистр расчетов Начисления. В нем проводится документ НачислениеОклада, документ НевыходСотрудникаиРасчетПремии.Оклад расчитывается в данной системе расчитывается методом отклонений,т.е.невыходвытесняет оклад.Создаемпланвидов расчетаНачисления:
Рис.21 «ПланвидоврасчетаНачисления»Затем утверждение графика работ:
Рис.22«Утверждениеграфикаработ»Системныетребованиякграфикуработ:
-
Должен определяться с помощью регистра сведений;
-
Непериодический
-
Измерение — тип данных Дата
-
Ресурс — тип данных Число
-
Заполнение графика Документ «Утверждение графика работ»
Рис.23«Процедуразаполнениярегистраграфикработы»Заработная плата должна рассчитываться в разрезе сотрудников, для этого есть регистр Расчета, каждая запись в этом регистре может иметь протяженность во времени (прогул с 1 по 5 января), и результат ЗП накапливается.