Приложение А. Текст программы




 

Содержание общего модуля «Работа с документами»:

 

Процедура РассчитатьСумму (СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;

КонецПроцедуры

 

Процедура РассчитатьСуммуБезНДС (СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.СуммаБезНДС = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;

КонецПроцедуры

 

Процедура РассчитатьСтоимость (СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.Стоимость =СтрокаТабличнойЧасти.СуммаБезНДС + (СтрокаТабличнойЧасти.СуммаБезНДС * СтрокаТабличнойЧасти.Процент);

КонецПроцедуры

 

Содержание общего модуля «Работа со справочниками»:

 

Функция РоничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.Цена;

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.НомерШтрихКодаТовара;

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.НомерКодаТовара;

КонецФункции

 

Функция ШтрихКод(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.ШтрихКод;

КонецФункции

 

Функция Артикул(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.Артикул;

КонецФункции

 

Функция Цена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.Цена;

КонецФункции

 

Функция Скидка(АктуальнаяДата, ЭлементПользователи) Экспорт

Отбор = Новый Структура("Пользователь", ЭлементПользователи);

ЗначенияРесурсов = РегистрыСведений.НакопительнаяСистема.ПолучитьПоследнее(АктуальнаяДата,Отбор);

Возврат ЗначенияРесурсов.Скидка;

КонецФункции

 

Содержание общего модуля «Скидка»:

Процедура РассчитатьСуммуСоСкидкой (СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.Итого = СтрокаТабличнойЧасти.СуммаБезСкидки + (СтрокаТабличнойЧасти.СуммаБезСкидки * СтрокаТабличнойЧасти.Скидка);

КонецПроцедуры

Содержание общего модуля «Проведение расчетов»:

 

Процедура РассчитатьНачисления(НаборЗаписейРегистра, ТребуемыйВидРасчета,

СписокСотрудников) Экспорт

Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение;

Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма,

| НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,

| НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки

|ИЗ

| РегистрРасчета.Начисления.ДанныеГрафика(Регистратор = &Регистратор И

| ВидРасчета = &ВидРасчета И Сотрудник В (&СписокСотрудников))

| КАК НачисленияДанныеГрафика";

Запрос.УстановитьПараметр("Регистратор", Регистратор);

Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);

Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);

ВыборкаРезультата = Запрос.Выполнить().Выбрать();

Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл

СтруктураНомер = Новый Структура("НомерСтроки");

СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;

ВыборкаРезультата.Сбросить();

Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда

Если ВыборкаРезультата.Норма = 0 Тогда

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Вид расчета: Оклад – Нет рабочих дней в заданном периоде";

Сообщение.Сообщить();

ЗаписьРегистра.Результат = 0;

Иначе

 

ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные/ВыборкаРезультата.Норма) * ВыборкаРезультата.Факт;

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Выполнен расчет " + ЗаписьРегистра.Регистратор

+ " – " + ЗаписьРегистра.ВидРасчета + " – " +

ЗаписьРегистра.Сотрудник;

Сообщение.Сообщить();

КонецЕсли;

КонецЕсли;

КонецЦикла;

 

ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| НачисленияБазаНачисления.РезультатБаза КАК База,

| НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки

|ИЗ

| РегистрРасчета.Начисления.БазаНачисления(&ИзмеренияОсновного,

| &ИзмеренияБазового,, Регистратор =

| &Регистратор И ВидРасчета = &ВидРасчета И

| Сотрудник В (&СписокСотрудников))

| КАК НачисленияБазаНачисления";

Измер = Новый Массив(1);

Измер[0] = "Сотрудник";

Запрос.УстановитьПараметр("ИзмеренияОсновного", Измер);

Запрос.УстановитьПараметр("ИзмеренияБазового", Измер);

Запрос.УстановитьПараметр("Регистратор", Регистратор);

Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);

Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);

ВыборкаРезультата = Запрос.Выполнить().Выбрать();

Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл

СтруктураНомер = Новый Структура("НомерСтроки");

СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;

ВыборкаРезультата.Сбросить();

Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда

ЗаписьРегистра.Результат = ВыборкаРезультата.База * (10 / 100);

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Выполнен расчет " + ЗаписьРегистра.Регистратор + " – " +

ЗаписьРегистра.ВидРасчета + " – " + ЗаписьРегистра.Сотрудник;

Сообщение.Сообщить();

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецПроцедуры

Процедура ПерерассчитатьНачисления(ТребуемыйВидРасчета) Экспорт

Запрос = Новый Запрос(

"ВЫБРАТЬ

| НачисленияПерерасчет.ОбъектПерерасчета КАК ОбъектПерерасчета,

| НачисленияПерерасчет.Сотрудник

|ИЗ

| РегистрРасчета.Начисления.Перерасчет КАК НачисленияПерерасчет

|ГДЕ

| НачисленияПерерасчет.ВидРасчета = &ТребуемыйВидРасчета

|ИТОГИ ПО

| ОбъектПерерасчета");

Запрос.УстановитьПараметр("ТребуемыйВидРасчета", ТребуемыйВидРасчета);

СписокСотрудников = Новый СписокЗначений;

ВыборкаПоРегистратору = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаПоРегистратору.Следующий() Цикл

Регистратор = ВыборкаПоРегистратору.ОбъектПерерасчета;

ВыборкаПоСотрудникам = ВыборкаПоРегистратору.Выбрать();

СписокСотрудников.Очистить();

Пока ВыборкаПоСотрудникам.Следующий() Цикл

СписокСотрудников.Добавить(ВыборкаПоСотрудникам.Сотрудник);

КонецЦикла;

НаборЗаписей = РегистрыРасчета.Начисления.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Регистратор.Значение = Регистратор;

НаборЗаписей.Прочитать();

РассчитатьНачисления(НаборЗаписей, ТребуемыйВидРасчета, СписокСотрудников);

НаборЗаписей.Записать(, Истина);

 

НаборЗаписейПерерасчета =

РегистрыРасчета.Начисления.Перерасчеты.Перерасчет.СоздатьНаборЗаписей();

НаборЗаписейПерерасчета.Отбор.ОбъектПерерасчета.Значение = Регистратор;

НаборЗаписейПерерасчета.Записать();

КонецЦикла;

КонецПроцедуры

 

Содержание модуля объекта «Продажа»:

 

Процедура ОбработкаПроведения(Отказ, Режим)

Движения.ОстаткиМатериалов.Записывать = Истина;

Движения.СтоимостьМатериалов.Записывать = Истина;

Движения.Продажи.Записывать = Истина;

Движения.Управленческий.Записывать = Истина;

 

МенеджерВТ = Новый МенеджерВременныхТаблиц;

 

Запрос = Новый Запрос;

 

Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

 

Запрос.Текст =

"ВЫБРАТЬ

| ПродажаТовары.Наименование КАК Наименование,

| СУММА(ПродажаТовары.Сумма) КАК СуммаВДокументе,

| СУММА(ПродажаТовары.Количество) КАК КоличествоВДокументе,

| ПродажаТовары.Наименование.ВидНомеклатура КАК ВидНоменклатуры

|ПОМЕСТИТЬ ТоварыДокумента

|ИЗ

| Документ.Продажа.Товары КАК ПродажаТовары

| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Продажа КАК Продажа

| ПО ПродажаТовары.Ссылка = Продажа.Ссылка

|ГДЕ

| ПродажаТовары.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

| ПродажаТовары.Наименование.ВидНомеклатура,

| ПродажаТовары.Наименование";

 

Запрос.УстановитьПараметр("Ссылка", Ссылка);

 

Результат = Запрос.Выполнить();

Запрос2 = Новый Запрос;

Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос2.Текст = "ВЫБРАТЬ

| ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество,

| ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,

| ТоварыДокумента.Наименование,

| ТоварыДокумента.ВидНоменклатуры,

| ТоварыДокумента.СуммаВДокументе,

| ТоварыДокумента.КоличествоВДокументе

|ИЗ

| ТоварыДокумента КАК ТоварыДокумента

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки

| ПО ТоварыДокумента.Наименование = ОстаткиМатериаловОстатки.Материал

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки КАК СтоимостьМатериаловОстатки

| ПО ТоварыДокумента.Наименование = СтоимостьМатериаловОстатки.Материал";

 

Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина;

Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина;

 

Движения.СтоимостьМатериалов.Записать();

Движения.ОстаткиМатериалов.Записать();

 

Результат = Запрос2.Выполнить();

 

ТЗ=Результат.Выгрузить();

 

ТекСтрокаТовары = Результат.Выбрать();

 

Пока ТекСтрокаТовары.Следующий() Цикл

Если ТекСтрокаТовары.Количество = 0 Тогда

СтоимостьМатериала = 0;

Иначе

СтоимостьМатериала = ТекСтрокаТовары.Стоимость / ТекСтрокаТовары.Количество;

КонецЕсли;

если ТекСтрокаТовары.Наименование.ВидНомеклатура = Перечисления.ВидыНоменклатуры.Товар тогда

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Основной.ТоварыВРознице;

Движение.СчетКт = ПланыСчетов.Основной.Касса;

Движение.Период = Дата;

Движение.КоличествоДт = ТекСтрокаТовары.КоличествоВДокументе;

Движение.Сумма = ТекСтрокаТовары.СуммаВДокументе;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ТекСтрокаТовары.Наименование;

 

Движение = Движения.Продажи.Добавить();

Движение.Период = Дата;

Движение.Номенклатура = ТекСтрокаТовары.Наименование;

Движение.Кассир = Кассир;

Движение.Количество = ТекСтрокаТовары.КоличествоВДокументе;

Движение.Выручка = ТекСтрокаТовары.СуммаВДокументе;

 

Движение = Движения.СтоимостьМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаТовары.Наименование;

Движение.Стоимость = ТекСтрокаТовары.СуммаВДокументе;

 

 

Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаТовары.Наименование;

Движение.Количество = ТекСтрокаТовары.КоличествоВДокументе;

КонецЕсли;

КонецЦикла;

Движения.Записать();

Если Режим = РежимПроведенияДокумента.Оперативный Тогда

Запрос3 = Новый Запрос;

Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос3.Текст = "ВЫБРАТЬ

| ОстаткиМатериаловОстатки.Материал,

| ОстаткиМатериаловОстатки.КоличествоОстаток

|ИЗ

| РегистрНакопления.ОстаткиМатериалов.Остатки(

|,

| Материал В

| (ВЫБРАТЬ

| ТоварыДокумента.Наименование

| ИЗ

| ТоварыДокумента)) КАК ОстаткиМатериаловОстатки

|ГДЕ

| ОстаткиМатериаловОстатки.КоличествоОстаток < 0";

Запрос3.УстановитьПараметр("Склад", Склад);

РезультатЗапроса = Запрос3.Выполнить();

ТекСтрокаТовары = РезультатЗапроса.Выбрать();

Пока ТекСтрокаТовары.Следующий() Цикл

Сообщение = Новый СообщениеПользователю();

Сообщение.Текст = "Не хватает " + Строка(- ТекСтрокаТовары.КоличествоОстаток) +

" единиц материала """ + ТекСтрокаТовары.Материал + """";

Сообщение.Сообщить();

Отказ = Истина;

КонецЦикла;

КонецЕсли;

 

КонецПроцедуры

 

Содержание модуля менеджера «Продажа»:

 

Процедура Печать(ТабДок, Ссылка) Экспорт

//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)

Макет = Документы.Продажа.ПолучитьМакет("Печать");

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Продажа.Дата,

| Продажа.Кассир,

| Продажа.Номер,

| Продажа.Склад,

| Продажа.ПереченьНоменклатуры.(

| НомерСтроки,

| Номеклатура,

| Количество,

| Цена,

| Сумма

|)

|ИЗ

| Документ.Продажа КАК Продажа

|ГДЕ

| Продажа.Ссылка В (&Ссылка)";

Запрос.Параметры.Вставить("Ссылка", Ссылка);

Выборка = Запрос.Выполнить().Выбрать();

 

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

Шапка = Макет.ПолучитьОбласть("Шапка");

ОбластьПереченьНоменклатурыШапка = Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");

ОбластьПереченьНоменклатуры = Макет.ПолучитьОбласть("ПереченьНоменклатуры");

ОбластьИтог = Макет.ПолучитьОбласть("Всего");

ТабДок.Очистить();

 

ВставлятьРазделительСтраниц = Ложь;

Пока Выборка.Следующий() Цикл

Если ВставлятьРазделительСтраниц Тогда

ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

КонецЕсли;

 

ТабДок.Вывести(ОбластьЗаголовок);

 

Шапка.Параметры.Заполнить(Выборка);

ТабДок.Вывести(Шапка, Выборка.Уровень());

 

ТабДок.Вывести(ОбластьПереченьНоменклатурыШапка);

ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();

СуммаИтог = 0;

Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл

ОбластьПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);

ТабДок.Вывести(ОбластьПереченьНоменклатуры, ВыборкаПереченьНоменклатуры.Уровень());

СуммаИтог = СуммаИтог + ВыборкаПереченьНоменклатуры.Сумма;

КонецЦикла;

 

ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог;

ТабДок.Вывести(ОбластьИтог);

 

ВставлятьРазделительСтраниц = Истина;

КонецЦикла;

//}}

КонецПроцедуры

 

Содержание модуля объекта «Приходная накладная»:

Процедура ОбработкаПроведения(Отказ, Режим)

Движения.ОстаткиМатериалов.Записывать = Истина;

Движения.СтоимостьМатериалов.Записывать = Истина;

Движения.Управленческий.Записывать = Истина;

 

Для Каждого ТекСтрокаСодержание Из Содержание Цикл

 

Движение = Движения.СтоимостьМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаСодержание.Наименование;

Движение.Стоимость = ТекСтрокаСодержание.СуммаБезНДС;

 

 

Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаСодержание.Наименование;

Движение.Количество = ТекСтрокаСодержание.Количество;

 

 

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Основной.Товары;

Движение.СчетКт = ПланыСчетов.Основной.РасчетыСПоставщиками;

Движение.Период = Дата;

Движение.КоличествоДт = ТекСтрокаСодержание.Количество;

Движение.Сумма = ТекСтрокаСодержание.СуммаБезНДС;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ТекСтрокаСодержание.Наименование;

КонецЦикла

КонецПроцедуры

 

Содержание модуля менеджера «Приходная накладная»:

 

Процедура Печать(ТабДок, Ссылка) Экспорт

//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать1)

Макет = Документы.ПриходнаяНакладная.ПолучитьМакет("ТоварНаклад");

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| ПриходнаяНакладная.Номер,

| ПриходнаяНакладная.Дата,

| ПриходнаяНакладная.Поставщик,

| ПриходнаяНакладная.Плательщик,

| ПриходнаяНакладная.Содержание.(

| Наименование,

| Код,

| Цена,

| Количество,

| СуммаБезНДС,

| Ставка,

| Процент,

| Стоимость

|)

|ИЗ

| Документ.ПриходнаяНакладная КАК ПриходнаяНакладная

|ГДЕ

| ПриходнаяНакладная.Ссылка В(&Ссылка)";

Запрос.Параметры.Вставить("Ссылка", Ссылка);

Выборка = Запрос.Выполнить().Выбрать();

 

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

Шапка = Макет.ПолучитьОбласть("Шапка");

ОбластьСодержаниеШапка = Макет.ПолучитьОбласть("СодержаниеШапка");

ОбластьСодержание = Макет.ПолучитьОбласть("Содержание");

ОбластьИтог = Макет.ПолучитьОбласть("Итого");

ТабДок.Очистить();

 

ВставлятьРазделительСтраниц = Ложь;

Пока Выборка.Следующий() Цикл

Если ВставлятьРазделительСтраниц Тогда

ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

КонецЕсли;

 

ТабДок.Вывести(ОбластьЗаголовок);

 

Шапка.Параметры.Заполнить(Выборка);

ТабДок.Вывести(Шапка, Выборка.Уровень());

 

ТабДок.Вывести(ОбластьСодержаниеШапка);

ВыборкаСодержание = Выборка.Содержание.Выбрать();

 

ЦенаИтог = 0;

СуммаИтог=0;

КоличествоИтог=0;

СтоимостьИтог=0;

 

Пока ВыборкаСодержание.Следующий() Цикл

ОбластьСодержание.Параметры.Заполнить(ВыборкаСодержание);

ТабДок.Вывести(ОбластьСодержание, ВыборкаСодержание.Уровень());

СуммаИтог=СуммаИтог + ВыборкаСодержание.СуммаБезНДС;

КоличествоИтог=КоличествоИтог + ВыборкаСодержание.Количество;

ЦенаИтог=ЦенаИтог + ВыборкаСодержание.Цена;

СтоимостьИтог=СтоимостьИтог + ВыборкаСодержание.Стоимость;

КонецЦикла;

 

ОбластьИтог.Параметры.ВсегоЦена = ЦенаИтог;

ОбластьИтог.Параметры.ВсегоКоличество = КоличествоИтог;

ОбластьИтог.Параметры.ВсегоСуммаБезНДС = СуммаИтог;

ОбластьИтог.Параметры.ВсегоСтоимость = СтоимостьИтог;

ТабДок.Вывести(ОбластьИтог);

 

 

ВставлятьРазделительСтраниц = Истина;

КонецЦикла;

//}}

КонецПроцедуры

 

Содержание модуля объекта «Расходная накладная»:

 

Процедура ОбработкаПроведения(Отказ, Режим)

Движения.ОстаткиМатериалов.Записывать = Истина;

Движения.СтоимостьМатериалов.Записывать = Истина;

Движения.Продажи.Записывать = Истина;

Движения.Управленческий.Записывать = Истина;

 

МенеджерВТ = Новый МенеджерВременныхТаблиц;

 

Запрос = Новый Запрос;

 

Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

 

Запрос.Текст =

 

"ВЫБРАТЬ

| РасходнаяНакладнаяСодержание.Наименование,

| РасходнаяНакладнаяСодержание.Наименование.ВидНомеклатура КАК ВидНоменклатуры,

| СУММА(РасходнаяНакладнаяСодержание.Количество) КАК КоличествоВДокументе,

| СУММА(РасходнаяНакладнаяСодержание.Сумма) КАК СуммаВДокументе

|ПОМЕСТИТЬ ТоварыДокумента

|ИЗ

| Документ.РасходнаяНакладная.Содержание КАК РасходнаяНакладнаяСодержание

|ГДЕ

| РасходнаяНакладнаяСодержание.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

| РасходнаяНакладнаяСодержание.Наименование,

| РасходнаяНакладнаяСодержание.Наименование.ВидНомеклатура";

 

 

Запрос.УстановитьПараметр("Ссылка", Ссылка);

 

Результат = Запрос.Выполнить();

Запрос2 = Новый Запрос;

Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос2.Текст = "ВЫБРАТЬ

| ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество,

| ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,

| ТоварыДокумента.Наименование,

| ТоварыДокумента.ВидНоменклатуры,

| ТоварыДокумента.СуммаВДокументе,

| ТоварыДокумента.КоличествоВДокументе

|ИЗ

| ТоварыДокумента КАК ТоварыДокумента

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки

| ПО ТоварыДокумента.Наименование = ОстаткиМатериаловОстатки.Материал

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки КАК СтоимостьМатериаловОстатки

| ПО ТоварыДокумента.Наименование = СтоимостьМатериаловОстатки.Материал";

 

Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина;

Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина;

 

Движения.СтоимостьМатериалов.Записать();

Движения.ОстаткиМатериалов.Записать();

 

Результат = Запрос2.Выполнить();

 

ТЗ=Результат.Выгрузить();

 

ТекСтрокаТовары = Результат.Выбрать();

 

Пока ТекСтрокаТовары.Следующий() Цикл

Если ТекСтрокаТовары.Количество = 0 Тогда

СтоимостьМатериала = 0;

Иначе

СтоимостьМатериала = ТекСтрокаТовары.Стоимость / ТекСтрокаТовары.Количество;

КонецЕсли;

если ТекСтрокаТовары.Наименование.ВидНомеклатура = Перечисления.ВидыНоменклатуры.Материал тогда

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Основной.ТоварыВРознице;

Движение.СчетКт = ПланыСчетов.Основной.Касса;

Движение.Период = Дата;

Движение.КоличествоДт = ТекСтрокаТовары.КоличествоВДокументе;

Движение.Сумма = ТекСтрокаТовары.СуммаВДокументе;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ТекСтрокаТовары.Наименование;

 

Движение = Движения.Продажи.Добавить();

Движение.Период = Дата;

Движение.Номенклатура = ТекСтрокаТовары.Наименование;

 

Движение.Количество = ТекСтрокаТовары.КоличествоВДокументе;

Движение.Выручка = ТекСтрокаТовары.СуммаВДокументе;

 

Движение = Движения.СтоимостьМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаТовары.Наименование;

Движение.Стоимость = ТекСтрокаТовары.СуммаВДокументе;

 

 

Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаТовары.Наименование;

Движение.Количество = ТекСтрокаТовары.КоличествоВДокументе;

КонецЕсли;

КонецЦикла;

Движения.Записать();

Если Режим = РежимПроведенияДокумента.Оперативный Тогда

Запрос3 = Новый Запрос;

Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос3.Текст = "ВЫБРАТЬ

| ОстаткиМатериаловОстатки.Материал,

| ОстаткиМатериаловОстатки.КоличествоОстаток

|ИЗ

| РегистрНакопления.ОстаткиМатериалов.Остатки(

|,

| Материал В

| (ВЫБРАТЬ

| ТоварыДокумента.Наименование

| ИЗ

| ТоварыДокумента)) КАК ОстаткиМатериаловОстатки

|ГДЕ

| ОстаткиМатериаловОстатки.КоличествоОстаток < 0";

 

РезультатЗапроса = Запрос3.Выполнить();

ТекСтрокаТовары = РезультатЗапроса.Выбрать();

Пока ТекСтрокаТовары.Следующий() Цикл

Сообщение = Новый СообщениеПользователю();

Сообщение.Текст = "Не хватает " + Строка(- ТекСтрокаТовары.КоличествоОстаток) +

" единиц материала """ + ТекСтрокаТовары.Материал + """";

Сообщение.Сообщить();

Отказ = Истина;

КонецЦикла;

КонецЕсли;

 

КонецПроцедуры

 

Содержание модуля менеджера документа «Расходная накладная»:

 

Процедура Печать(ТабДок, Ссылка) Экспорт

//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать1)

Макет = Документы.РасходнаяНакладная.ПолучитьМакет("РасНаклад");

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| РасходнаяНакладная.Номер,

| РасходнаяНакладная.Дата,

| РасходнаяНакладная.Поставщик,

| РасходнаяНакладная.Плательщик,

| РасходнаяНакладная.Содержание.(

| НомерСтроки,

| Наименование,

| Код,

| Цена,

| Количество,

| Сумма

|)

|ИЗ

| Документ.РасходнаяНакладная КАК РасходнаяНакладная

|ГДЕ

| РасходнаяНакладная.Ссылка В(&Ссылка)";

Запрос.Параметры.Вставить("Ссылка", Ссылка);

Выборка = Запрос.Выполнить().Выбрать();

 

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

Шапка = Макет.ПолучитьОбласть("Шапка");

ОбластьСодержаниеШапка = Макет.ПолучитьОбласть("СодержаниеШапка");

ОбластьСодержание = Макет.ПолучитьОбласть("Содержание");

ОбластьИтог = Макет.ПолучитьОбласть("Итого");

ТабДок.Очистить();

 

ВставлятьРазделительСтраниц = Ложь;

Пока Выборка.Следующий() Цикл

Если ВставлятьРазделительСтраниц Тогда

ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

КонецЕсли;

 

ТабДок.Вывести(ОбластьЗаголовок);

 

Шапка.Параметры.Заполнить(Выборка);

ТабДок.Вывести(Шапка, Выборка.Уровень());

 

ТабДок.Вывести(ОбластьСодержаниеШапка);

ВыборкаСодержание = Выборка.Содержание.Выбрать();

 

ЦенаИтог = 0;

СуммаИтог=0;

КоличествоИтог=0;

 

Пока ВыборкаСодержание.Следующий() Цикл

ОбластьСодержание.Параметры.Заполнить(ВыборкаСодержание);

ТабДок.Вывести(ОбластьСодержание, ВыборкаСодержание.Уровень());

СуммаИтог=СуммаИтог + ВыборкаСодержание.Сумма;

КоличествоИтог=КоличествоИтог + ВыборкаСодержание.Количество;

ЦенаИтог=ЦенаИтог + ВыборкаСодержание.Цена;

 

КонецЦикла;

 

ОбластьИтог.Параметры.ВсегоЦена = ЦенаИтог;

ОбластьИтог.Параметры.ВсегоКоличество = КоличествоИтог;

ОбластьИтог.Параметры.ВсегоСумма = СуммаИтог;

ТабДок.Вывести(ОбластьИтог);

 

 

ВставлятьРазделительСтраниц = Истина;

КонецЦикла;

//}}

КонецПроцедуры

 

Содержание модуля объекта документа «Акт списания товаров»:

Процедура ОбработкаПроведения(Отказ, Режим)

Движения.ОстаткиМатериалов.Записывать = Истина;

Движения.СтоимостьМатериалов.Записывать = Истина;

Движения.Управленческий.Записывать = Истина;

 

Для Каждого ТекСтрокаСодержание Из Содержание Цикл

 

Движение = Движения.СтоимостьМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаСодержание.Наименование;

Движение.Стоимость = ТекСтрокаСодержание.Сумма;

 

 

Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаСодержание.Наименование;

Движение.Количество = ТекСтрокаСодержание.Количество;

 

 

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Основной.РасходыНаПродажу;

Движение.СчетКт = ПланыСчетов.Основной.Товары;

Движение.Период = Дата;

Движение.КоличествоДт = ТекСтрокаСодержание.Количество;

Движение.КоличествоКт = ТекСтрокаСодержание.Количество;

Движение.Сумма = ТекСтрокаСодержание.Сумма;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ТекСтрокаСодержание.Наименование;

 

КонецЦикла;

 

КонецПроцедуры

 

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПриходнаяНакладная") Тогда

// Заполнение шапки

Организация = ДанныеЗаполнения.Плательщик;

Для Каждого ТекСтрокаСодержание Из ДанныеЗаполнения.Содержание Цикл

НоваяСтрока = Содержание.Добавить();

НоваяСтрока.Код = ТекСтрокаСодержание.Код;

НоваяСтрока.Количество = ТекСтрокаСодержание.Количество;

НоваяСтрока.Наименование = ТекСтрокаСодержание.Наименование;

НоваяСтрока.Сумма = ТекСтрокаСодержание.СуммаБезНДС;

НоваяСтрока.Цена = ТекСтрокаСодержание.Цена;

КонецЦикла;

ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Продажа") Тогда

// Заполнение шапки

Для Каждого ТекСтрокаРасчет Из ДанныеЗаполнения.Расчет Цикл

НоваяСтрока = Содержание.Добавить();

НоваяСтрока.Сумма = ТекСтрокаРасчет.СуммаБезСкидки;

КонецЦикла;

Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл

НоваяСтрока = Содержание.Добавить();

НоваяСтрока.Количество = ТекСтрокаТовары.Количество;

НоваяСтрока.Наименование = ТекСтрокаТовары.Наименование;

НоваяСтрока.Код = ТекСтрокаТовары.Номер;

НоваяСтрока.Цена = ТекСтрокаТовары.Цена;

КонецЦикла;

КонецЕсли;

//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ

КонецПроцедуры

 

Содержание модуля менеджера документа «Акт о списании товаров»

 

Процедура Печать(ТабДок, Ссылка) Экспорт

//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать1)

Макет = Документы.АктОСписанииТовара.ПолучитьМакет("Акт");

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| АктОСписанииТовара.Номер,

| АктОСписанииТовара.Дата,

| АктОСписанииТовара.Содержание.(

| НомерСтроки,

| Наименование,

| Артикул,

| Цена,

| Количество,

| Сумма,

| ПричинаСписания

|),

| АктОСписанииТовара.Организация,

| АктОСписанииТовара.ФИО,

| АктОСписанииТовара.Должность

|ИЗ

| Документ.АктОСписанииТовара КАК АктОСписанииТовара

|ГДЕ

| АктОСписанииТовара.Ссылка В(&Ссылка)";

Запрос.Параметры.Вставить("Ссылка", Ссылка);

Выборка = Запрос.Выполнить().Выбрать();

 

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

Шапка = Макет.ПолучитьОбласть("Шапка");

ОбластьСодержаниеШапка = Макет.ПолучитьОбласть("СодержаниеШапка");

ОбластьСодержание = Макет.ПолучитьОбласть("Содержание");

ОбластьИтог = Макет.ПолучитьОбласть("Итого");

ТабДок.Очистить();

 

ВставлятьРазделительСтраниц = Ложь;

Пока Выборка.Следующий() Цикл

Если ВставлятьРазделительСтраниц Тогда

ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

КонецЕсли;

 

ТабДок.Вывести(ОбластьЗаголовок);

 

Шапка.Параметры.Заполнить(Выборка);

ТабДок.Вывести(Шапка, Выборка.Уровень());

 

ТабДок.Вывести(ОбластьСодержаниеШапка);

ВыборкаСодержание = Выборка.Содержание.Выбрать();

 

ЦенаИтог = 0;

СуммаИтог=0;

КоличествоИтог=0;

 

Пока ВыборкаСодержание.Следующий() Цикл

ОбластьСодержание.Параметры.Заполнить(ВыборкаСодержание);

ТабДок.Вывести(ОбластьСодержание, ВыборкаСодержание.Уровень());

СуммаИтог=СуммаИтог + ВыборкаСодержание.Сумма;

КоличествоИтог=КоличествоИтог + ВыборкаСодержание.Количество;

ЦенаИтог=ЦенаИтог + ВыборкаСодержание.Цена;

 

КонецЦикла;

 

ОбластьИтог.Параметры.ВсегоЦена = ЦенаИтог;

ОбластьИтог.Параметры.ВсегоКоличество = КоличествоИтог;

ОбластьИтог.Параметры.ВсегоСумма = СуммаИтог;

ТабДок.Вывести(ОбластьИтог);

 

 

ВставлятьРазделительСтраниц = Истина;

КонецЦикла;

//}}

КонецПроцедуры

 

Содержание модуля объекта документа «Начисления сотрудникам»:

 

Процедура ОбработкаПроведения(Отказ, Режим)

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

 

// регистр Начисления

Движения.Начисления.Записывать = Истина;

Для Каждого ТекСтрокаНачисления Из Начисления Цикл

Движение = Движения.Начисления.Добавить();

Движение.Сторно = Ложь;

Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета;

Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала;

Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);

Движение.ПериодРегистрации = Дата;

Движение.БазовыйПериодНачало = ТекСтрокаНачисления.ДатаНачала;

Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);

Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;

Движение.ГрафикРаботы = ТекСтрокаНачисления.ГрафикРаботы;

Движение.ИсходныеДанные = ТекСтрокаНачисления.Начислено;

КонецЦикла;

Движения.Начисления.Записать();

 

Запрос = Новый Запрос("ВЫБРАТЬ

| НачисленияСотрудникамНачисления.Сотрудник КАК Сотрудник

|ИЗ

| Документ.НачисленияСотрудникам.Начисления КАК НачисленияСотрудникамНачисления

|ГДЕ

| НачисленияСотрудникамНачисления.Ссылка = &ТекущийДокумент");

Запрос.УстановитьПараметр("ТекущийДокумент",Ссылка);

 

ТаблЗнач = Запрос.Выполнить().Выгрузить();

 

МассивСотрудников = ТаблЗнач.ВыгрузитьКолонку("Сотрудник");

 

ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления,ПланыВидовРасчета.ОсновныеНачисления.Оклад, МассивСотрудников);

 

Движения.Начисления.Записать(, Истина);

 

ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, МассивСотрудников);

 

Движения.Начисления.Записать(, Истина);

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры

 

Содержание запроса в отчете «Материалы»:

 

ВЫБРАТЬ

ОстаткиМатериаловОстаткиИОбороты.Материал,

ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток,

ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход,

ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход,

ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток

ИЗ

РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты КАК ОстаткиМатериаловОстаткиИОбороты

 

Содержание запроса в отчете «Реестр документов оказание услуги»:

 

ВЫБРАТЬ

Продажа.Ссылка КАК Документ,

Продажа.Склад,

Продажа.Кассир

ИЗ

Документ.Продажа КАК Продажа

 

УПОРЯДОЧИТЬ ПО

Документ

 

Содержание запроса в отчете «Выручка»:

 

ВЫБРАТЬ

ПродажиОбороты.Период,

ПродажиОбороты.Кассир,

ПродажиОбороты.ВыручкаОборот КАК Выручка

ИЗ

РегистрНакопления.Продажи.Обороты(,, День,) КАК ПродажиОбороты

 

Содержание запроса в отчете «Универсальный»:

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: