Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Аня диплом8.06.doc
Скачиваний:
9
Добавлен:
27.10.2018
Размер:
13.25 Mб
Скачать

Список источников информации

  1. Бартеньев О.В. 1C:Предприятие: программирование для всех. – М.: Диалог-МИФИ, 2008. – 416 с.

  2. Бобошко Д.Д. 1C: Предприятие 8.1. Программирование в примерах. – М.: Кудиц-образ, 2006. – 240 с.

  3. Вахрушина М.А. Бухгалтерский управленческий учет: Учебник. - М.: Омега-Л, 2005. - 576с.

  4. Виноградова М.В., Панина З.И. Организация и планирование деятельности предприятий сферы сервиса:– М.: Издательско-торговая корпорация «Дашков и Ко», 2007. – 464с.

  5. Дубянский В. М. 1C: Предприятие. Конфигурирование и администрирование для начинающих. – М.: НТ Пресс, 2005. - 279 с.

  6. Елисеевой И.И. Эконометрика. – М.: Финстат, 2006.- 576 с.

  7. Керимов В.Э. Управленческий учет. – М.: Маркетинг, 2006. – 519 с.

  8. Колпинский Н.Н. 1С: Предприятие. Практика программирования на платформе v8. – М.: ИКС Технологии, 2002. – 214 с.

  9. Мишин Ю.А. Управленческий учет: Управление затратами и результатами производственной деятельности. – М.: Дело и сервис, 2005. – 412 с.

  10. Михайлов А.Н. 1С Предприятие 7.7/8.0. Системное программирование. – Спб.: 1С-Паблишинг, 2005. – 352 с.

  11. Оганесян А.С., Оганесян И.С. Управление эффективностью торговой сделки //Менеджмент в России и за рубежом. — 2003. — № 3.

  12. Орлов Р. Искусственное дыхание. Консалтинг как средство от застоя // Двойная запись. – 2005. - № 9. – С. 117

  13. Ощенко И.А. 1C:Предприятие. Бухгалтерия для начинающих. - М.: BHV, 2009. – 256 с.

  14. Посадский А.П., Хайниш С.В. Консультационные услуги в России. — М.: Финстатинформ, 2008.

  15. Рязанцев Д.Н., Рязанцева Н.А. 1С: Предприятие. Бухгалтерия. Секреты работы. – М.: BHV, 2007. – 368 с.

  16. Усиков Т.Н. 1С:Предприятие. Эффективное программирование. – М.: Лучшие книги, 2004. – 464 с.

  17. Ханк Д.Э., Уичерн Д.У., Райтс А.Дж. Бизнес-прогнозирование, 7-е издание. : Пер. с англ. - М.: Издательский дом "Вильямс", 2003. - 656 с.: ил. - Парал. тит. англ.

  18. Шелобаев С.И. Математические методы и модели в экономике, финансах, бизнесе: Учеб. пособие. - М.: Юнити, 2000. - 367 с.

  19. Шубина Е.В. Работаем в 1С:Предприятие 7.7. Настройка, эксплуатация, конфигурирование и программирование. – М.: Дашков и К, 2008. – 464с.

  20. http://www.1c.ru/

  21. http://www.aspentech.ru/

  22. http://www.bizeducation.ru/

  23. http://www.forecsys.ru/

  24. http://www.nova-it.ru/

  25. http://www.parker3d.ru/

Приложение 1

Фрагмент программного кода модуля «Анализ экономической эффективности деятельности»

//сформировать отчет

Процедура СформироватьОтчет(Кнопка) Экспорт

ТабДок=Новый ТабличныйДокумент;

Макет=ПолучитьМакет("Макет");

Если Список2.Количество()=0 Тогда

Предупреждение("Не выбрано ни одного подразделения");

Возврат;

КонецЕсли;

//Обнулим переменные

НДСВыр = 0;

Инвест = 0;

Доход = 0;

Расход = 0;

Приток = 0;

Выручка = 0;

ИНДСВыр = 0;

ИСумма = 0;

ИИтогПост = 0;

Доход = 0;

ИРасход = 0;

ИПриток = 0;

ИтогПерем = 0;

ИтогПост = 0;

ТочкаБезубыточности = 0;

ИВыручка=0;

ИБонусРаз = 0;

ИБонусРез = 0;

ИВыручкаСуб = 0;

ИВыручкаПр = 0;

ИОплата = 0;

ИСебестоимость = 0;

ИПриток = 0;

ИДоход = 0;

СМНДС = 0;

//шапка отчета

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

Пробел=Найти(СокрЛП(Дата1)," ");

ТекстДата1=Лев(СокрЛП(Дата1),Пробел-1);

Пробел=Найти(СокрЛП(Дата2)," ");

ТекстДата2=Лев(СокрЛП(Дата2),Пробел-1);

ОбластьШапка.Параметры.Период="За период с "+ТекстДата1+" по "+ТекстДата2;

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

//Текст

Если ФИтКол=Истина Тогда

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

Текст="По подразделениям ";

Для Каждого Строка2 Из Список2 Цикл

Текст=Текст+Строка2.Представление+"; "

КонецЦикла;

ОбластьТекст.Параметры.Текст=Текст;

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

КонецЕсли;

//Названия подразделений в шапке

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

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

ОбластьКолонкаИтог=Макет.ПолучитьОбласть("Подразделение|КолонкаИтог");

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаИтог");

Если ФПроцВ=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаВ");

КонецЕсли;

Если ФПроцС=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаС");

КонецЕсли;

Если ФПроцД=Истина Тогда

ОбластьКолонкаИтог=Макет.ПолучитьОбласть("Подразделение|КолонкаД");

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаД");

КонецЕсли;

//Все подразделения в шапке

Если ФИтКол=Ложь Тогда

Для Каждого Строка2 Из Список2 Цикл

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

ОбластьКолонка_1.Параметры.Представление=Строка2.Представление;

ТабДок.Присоединить(ОбластьКолонка_1,,"Колонка_1");

Если ФПроцВ=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаВ");

КонецЕсли;

Если ФПроцС=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаС");

КонецЕсли;

Если ФПроцД=Истина Тогда

ОбластьКолонкаИтог=Макет.ПолучитьОбласть("Подразделение|КолонкаД");

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаД");

КонецЕсли;

КонецЦикла;

КонецЕсли;

//Только филиалы в шапке

Если ФФилиал=Истина Тогда

ВыборкаФилиалы=Справочники.Филиал.Выбрать();

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

Если ВыборкаФилиалы.Наименование<>"Санкт-Петербургский" Тогда

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

ОбластьКолонка_1.Параметры.Представление=ВыборкаФилиалы.Наименование;

ТабДок.Присоединить(ОбластьКолонка_1,,"Колонка_1");

Если ФПроцВ=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаВ");

КонецЕсли;

Если ФПроцС=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаС");

КонецЕсли;

Если ФПроцД=Истина Тогда

ОбластьКолонкаИтог=Макет.ПолучитьОбласть("Подразделение|КолонкаД");

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаД");

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

//ДОХОДЫ

ОбластьВыручкаТоргШапка=Макет.ПолучитьОбласть("ВыручкаТорг|ШапкаВерх");

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

Если ФБезНДС=Ложь Тогда

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

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

| ХозрасчетныйОбороты.СуммаОборотДт,

| ХозрасчетныйОбороты.СуммаОборотКт,

| ХозрасчетныйОбороты.КоличествоОборотДт,

| ХозрасчетныйОбороты.КоличествоОборотКт,

| ХозрасчетныйОбороты.Счет,

| ХозрасчетныйОбороты.Субконто1,

| ХозрасчетныйОбороты.Субконто2,

| ХозрасчетныйОбороты.Субконто3

|ИЗ

| РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата1, &Дата2, , , , , , ) КАК ХозрасчетныйОбороты

|ГДЕ

| ХозрасчетныйОбороты.Счет В (&Счет1, &Счет2, &Счет3, &Счет4, &Счет5, &Счет6,&Счет7)";

Запрос.УстановитьПараметр("Счет1",ПланыСчетов.Хозрасчетный.НайтиПоКоду("89"));

Запрос.УстановитьПараметр("Счет2",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.11"));

Запрос.УстановитьПараметр("Счет3",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.3"));

Запрос.УстановитьПараметр("Счет4",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.2"));

Запрос.УстановитьПараметр("Счет5",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.3"));

Запрос.УстановитьПараметр("Счет6",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.4"));

Запрос.УстановитьПараметр("Счет7",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.15"));

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

Запрос.УстановитьПараметр("Дата2",КонецДня(Дата2));

ИначеЕсли ФБезНДС=Истина Тогда

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

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

| ХозрасчетныйОбороты.СуммаОборотДт,

| ХозрасчетныйОбороты.СуммаОборотКт,

| ХозрасчетныйОбороты.КоличествоОборотДт,

| ХозрасчетныйОбороты.КоличествоОборотКт,

| ХозрасчетныйОбороты.Счет,

| ХозрасчетныйОбороты.Субконто1,

| ХозрасчетныйОбороты.Субконто2,

| ХозрасчетныйОбороты.Субконто3

|ИЗ

| РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата1, &Дата2, , , , , , ) КАК ХозрасчетныйОбороты

|ГДЕ

| ХозрасчетныйОбороты.Счет В (&Счет1, &Счет2, &Счет3, &Счет4, &Счет5, &Счет6,&Счет7,&Счет8)";

Запрос.УстановитьПараметр("Счет1",ПланыСчетов.Хозрасчетный.НайтиПоКоду("89"));

Запрос.УстановитьПараметр("Счет2",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.11"));

Запрос.УстановитьПараметр("Счет3",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.3"));

Запрос.УстановитьПараметр("Счет4",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.1"));

Запрос.УстановитьПараметр("Счет5",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.2"));

Запрос.УстановитьПараметр("Счет6",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.3"));

Запрос.УстановитьПараметр("Счет7",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.4"));

Запрос.УстановитьПараметр("Счет8",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.5"));

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

Запрос.УстановитьПараметр("Дата2",КонецДня(Дата2));

КонецЕсли;

БухИт=Запрос.Выполнить().Выгрузить();

//ИТоговая колонка

ИтогНДСВыр=0;

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

Для Каждого Строка2 Из Список2 Цикл

Состояние("Расчет доходов");

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("89"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

Себестоимость=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

Себестоимость=Себестоимость+СтрокаБухИт.СуммаОборотДт;

КонецЦикла;

Иначе

Себестоимость=0;

КонецЕсли;

ИтогСебестоимость=ИтогСебестоимость+Себестоимость;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.11"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

Выручка=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

Выручка=Выручка+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

Выручка=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.3"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

НДСВыр=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

НДСВыр=НДСВыр+СтрокаБухИт.СуммаОборотДт;

КонецЦикла;

Иначе

НДСВыр=0;

КонецЕсли;

ИтогНДСВыр=НДСВыр+ИтогНДСВыр;

Если ФБезНДС=Ложь Тогда

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.2"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

БонусРаз=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

БонусРаз=БонусРаз+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

БонусРаз=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.3"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

БонусРез=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

БонусРез=БонусРез+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

БонусРез=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.4"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

ВыручкаСуб=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

ВыручкаСуб=ВыручкаСуб+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

ВыручкаСуб=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.15"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

ВыручкаПр=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

ВыручкаПр=ВыручкаПр+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;;

Иначе

ВыручкаПр=0;

КонецЕсли;

ИначеЕсли ФБезНДС=Истина Тогда

Если Выручка<>0 Тогда

ПрНДС=НДСВыр/Выручка;

Себестоимость=Себестоимость-Себестоимость*ПрНДС;

КонецЕсли;

Выручка=Выручка-НДСВыр;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.2"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

БонусРаз=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

БонусРаз=БонусРаз+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

БонусРаз=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.3"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

БонусРез=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

БонусРез=БонусРез+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

БонусРез=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.4"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

ВыручкаСуб=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

ВыручкаСуб=ВыручкаСуб+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

ВыручкаСуб=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.5"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

ВыручкаПр=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

ВыручкаПр=ВыручкаПр+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;;

Иначе

ВыручкаПр=0;

КонецЕсли;

КонецЕсли;

ИСебестоимость = ИСебестоимость + Себестоимость;

ИНДСВыр = ИНДСВыр + НДСВыр;

ИВыручка = ИВыручка + Выручка;

ИБонусРаз = ИБонусРаз + БонусРаз;

ИБонусРез = ИБонусРез + БонусРез;

ИВыручкаСуб = ИВыручкаСуб + ВыручкаСуб;

ИВыручкаПр = ИВыручкаПр + ВыручкаПр;

Доход = Выручка - Себестоимость + БонусРаз + БонусРез + ВыручкаСуб + ВыручкаПр;

ИДоход = ИДоход + Доход;

КонецЦикла;

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

ОбластьВыручкаТорг.Параметры.ИВыручка=Окр(ИВыручка,2);

ОбластьВыручкаТорг.Параметры.ИБонусРаз=Окр(ИБонусРаз,2);

ОбластьВыручкаТорг.Параметры.ИБонусРез=Окр(ИБонусРез,2);

ОбластьВыручкаТорг.Параметры.ИВыручкаСуб=Окр(ИВыручкаСуб,2);

ОбластьВыручкаТорг.Параметры.ИВыручкаПр=Окр(ИВыручкаПр,2);

ОбластьВыручкаТорг.Параметры.ИДоход=Окр(ИДоход,2);

ОбластьВыручкаТорг.Параметры.ИСебестоимость=Окр(ИСебестоимость,2);

ИДоход1=ИВыручка-ИСебестоимость;

ОбластьВыручкаТорг.Параметры.ИДоход1=Окр(ИДоход1,2);

Если ИВыручка<>0 Тогда

ИМаржа=(ИВыручка-ИСебестоимость)/ИВыручка*100;

Иначе

ИМаржа=0;

КонецЕсли;

ОбластьВыручкаТорг.Параметры.ИМаржа=Окр(ИМаржа,2);

Если ИСебестоимость<>0 Тогда

ИТоргНаценка=(ИВыручка-ИСебестоимость)/ИСебестоимость*100;

Иначе

ИТоргНаценка=0;

КонецЕсли;

ОбластьВыручкаТорг.Параметры.ИТоргНаценка=Окр(ИТоргНаценка,2);

ТабДок.Присоединить(ОбластьВыручкаТорг,,"КолонкаИтог");

Если ФПроцВ=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаВ");

КонецЕсли;

Если ФПроцС=Истина Тогда

ОбластьКолонкаИтог=Макет.ПолучитьОбласть("ВыручкаТорг|КолонкаС");

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаС");

КонецЕсли;

Если ФПроцД=Истина Тогда

ОбластьКолонкаИтог=Макет.ПолучитьОбласть("ВыручкаТорг|КолонкаД");

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаД");

КонецЕсли;

Если ФФилиал=Ложь Тогда //По подразделениям

Для Каждого Строка2 Из Список2 Цикл

Состояние("Расчет доходов");

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("89"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

Себестоимость=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

Себестоимость=Себестоимость+СтрокаБухИт.СуммаОборотДт;

КонецЦикла;

Иначе

Себестоимость=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.11"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

Выручка=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

Выручка=Выручка+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

Выручка=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.3"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

НДСВыр=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

НДСВыр=НДСВыр+СтрокаБухИт.СуммаОборотДт;

КонецЦикла;

Иначе

НДСВыр=0;

КонецЕсли;

Если ФБезНДС=Ложь Тогда

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.2"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

БонусРаз=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

БонусРаз=БонусРаз+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

БонусРаз=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.3"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

БонусРез=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

БонусРез=БонусРез+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

БонусРез=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НЧ.90.4"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

ВыручкаСуб=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

ВыручкаСуб=ВыручкаСуб+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

ВыручкаСуб=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.15"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

ВыручкаПр=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

ВыручкаПр=ВыручкаПр+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;;

Иначе

ВыручкаПр=0;

КонецЕсли;

ИначеЕсли ФБезНДС=Истина Тогда

Если Выручка<>0 Тогда

ПрНДС=НДСВыр/Выручка;

Себестоимость=Себестоимость-Себестоимость*ПрНДС;

КонецЕсли;

Выручка=Выручка-НДСВыр;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.2"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

БонусРаз=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

БонусРаз=БонусРаз+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

БонусРаз=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.3"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

БонусРез=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

БонусРез=БонусРез+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

БонусРез=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.4"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

ВыручкаСуб=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

ВыручкаСуб=ВыручкаСуб+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;

Иначе

ВыручкаСуб=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Субконто1",Строка2.Значение);

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("НДС.5"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

ВыручкаПр=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

ВыручкаПр=ВыручкаПр+СтрокаБухИт.СуммаОборотКт;

КонецЦикла;;

Иначе

ВыручкаПр=0;

КонецЕсли;

КонецЕсли;

Доход= Выручка - Себестоимость + БонусРаз + БонусРез + ВыручкаСуб + ВыручкаПр;

Если ФИтКол=Ложь Тогда

ОбластьВыручкаТорг=Макет.ПолучитьОбласть("ВыручкаТорг|Колонка_1");

ОбластьВыручкаТорг.Параметры.Выручка=Окр(Выручка,2);

ОбластьВыручкаТорг.Параметры.БонусРаз=Окр(БонусРаз,2);

ОбластьВыручкаТорг.Параметры.БонусРез=Окр(БонусРез,2);

ОбластьВыручкаТорг.Параметры.ВыручкаСуб=Окр(ВыручкаСуб,2);

ОбластьВыручкаТорг.Параметры.ВыручкаПр=Окр(ВыручкаПр,2);

ОбластьВыручкаТорг.Параметры.Доход=Окр(Доход,2);

ОбластьВыручкаТорг.Параметры.Себестоимость=Окр(Себестоимость,2);

Доход1=Выручка-Себестоимость;

ОбластьВыручкаТорг.Параметры.Доход1=Окр(Доход1,2);

Если Выручка<>0 Тогда

Маржа=(Выручка-Себестоимость)/Выручка*100;

Иначе

Маржа=0;

КонецЕсли;

ОбластьВыручкаТорг.Параметры.Маржа=Окр(Маржа,2);

Если Себестоимость<>0 Тогда

ТоргНаценка=(Выручка-Себестоимость)/Себестоимость*100;

Иначе

ТоргНаценка=0;

КонецЕсли;

ОбластьВыручкаТорг.Параметры.ТоргНаценка=Окр(ТоргНаценка,2);

ТабДок.Присоединить(ОбластьВыручкаТорг,,"Колонка_1");

Если ФПроцВ=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаВ");

КонецЕсли;

Если ФПроцС=Истина Тогда

ОбластьКолонкаИтог=Макет.ПолучитьОбласть("ВыручкаТорг|КолонкаС");

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаС");

КонецЕсли;

Если ФПроцД=Истина Тогда

ОбластьКолонкаИтог=Макет.ПолучитьОбласть("ВыручкаТорг|КолонкаД");

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаД");

КонецЕсли;

КонецЕсли;

КонецЦикла;

ИначеЕсли ФФилиал=Истина Тогда //По филиалам

ВыборкаФилиалов=Справочники.Филиал.Выбрать();

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

Если ВыборкаФилиалов.Наименование="Старооскольский" Тогда

Код="О000000001";

КонецЕсли;

РодительПодразделение=Справочники.Подразделения.НайтиПоКоду(Код);

Состояние("Расчет доходов");

Отбор=Новый Структура;

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("89"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

Себестоимость=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

Если СтрокаБухИт.Субконто1.Родитель=РодительПодразделение ИЛИ СтрокаБухИт.Субконто1.Родитель.Родитель=РодительПодразделение Тогда

Себестоимость=Себестоимость+СтрокаБухИт.СуммаОборотДт;

КонецЕсли;

КонецЦикла;

Иначе

Себестоимость=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.11"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

Выручка=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

Если СтрокаБухИт.Субконто1.Родитель=РодительПодразделение ИЛИ СтрокаБухИт.Субконто1.Родитель.Родитель=РодительПодразделение Тогда

Выручка=Выручка+СтрокаБухИт.СуммаОборотКт;

КонецЕсли;

КонецЦикла;

Иначе

Выручка=0;

КонецЕсли;

Отбор=Новый Структура;

Отбор.Вставить("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.3"));

СтрокиБухИт=БухИт.НайтиСтроки(Отбор);

НДСВыр=0;

Если СтрокиБухИт.Количество()<>0 Тогда

Для Каждого СтрокаБухИт Из СтрокиБухИт Цикл

Если СтрокаБухИт.Субконто1.Родитель=РодительПодразделение ИЛИ СтрокаБухИт.Субконто1.Родитель.Родитель=РодительПодразделение Тогда

НДСВыр=НДСВыр+СтрокаБухИт.СуммаОборотДт;

КонецЕсли;

КонецЦикла;

Иначе

НДСВыр=0;

КонецЕсли;

Если ФБезНДС=Ложь Тогда

Отбор=Новый Структура;

Доход= Выручка-Себестоимость + БонусРаз + БонусРез + ВыручкаСуб + ВыручкаПр;

Приток=Доход-ИтогПост;

ИПриток=ИПриток+Приток;

ИИнвест=ИИнвест+Инвест;

Приб=Приток-Инвест;

ИПриб=ИПриб+Приб;

///Вычисление точки безубыточности и операц. рычага

МаржДоход=Выручка-Себестоимость;

Если Выручка=0 Тогда

МаржРент=0;

иначе

МаржРент=(МаржДоход/Выручка)*100;

КонецЕсли;

Прибыль=МаржДоход-ИтогПост;

если МаржРент=0 Тогда

ТочкаБезубыточности=0;

иначе

ТочкаБезубыточности=ИтогПост/МаржРент;

КонецЕсли;

если МаржДоход-ИтогПост=0 Тогда

ОперРычаг=0;

иначе

ОперРычаг=МаржДоход/(МаржДоход-ИтогПост);

КонецЕсли;

ОбластьВыручкаТорг=Макет.ПолучитьОбласть("ИтогИнвест|Колонка_1");

ОбластьВыручкаТорг.Параметры.Инвест=Окр(Инвест,2);

ОбластьВыручкаТорг.Параметры.Приб=Окр(Приб,2);

ОбластьВыручкаТорг.Параметры.ТБез=Окр(ТочкаБезубыточности,2);

ОбластьВыручкаТорг.Параметры.Рычаг=Окр(ОперРычаг,2);

ТабДок.Присоединить(ОбластьВыручкаТорг,,"Колонка_1");

Если ФПроцВ=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаВ");

КонецЕсли;

Если ФПроцС=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаС");

КонецЕсли;

Если ФПроцД=Истина Тогда

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

ТабДок.Присоединить(ОбластьКолонкаИтог,,"КолонкаД");

КонецЕсли;

КонецЦикла;

КонецЕсли;

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

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

ТабДок.ТолькоПросмотр=Истина;

ТабДок.ОтображатьСетку=Ложь;

ТабДок.ОтображатьЗаголовки=Ложь;

ТабДок.Показать("Экономический отчет работы подразделений");

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

//При открытии формы

Процедура ПриОткрытии()

//Установка периода: текущий месяц

Дата1=НачалоМесяца(ТекущаяДата());

Дата2=КонецМесяца(ТекущаяДата());

//Выбор филиалов

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

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

| Филиал.Ссылка,

| Филиал.Наименование

|ИЗ

| Справочник.Филиал КАК Филиал

|ГДЕ

| Филиал.ПометкаУдаления = &ПометкаУдаления";

запрос.УстановитьПараметр("ПометкаУдаления",Ложь);

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

ТаблицаФилиалов.Сортировать("Наименование Возр");

НомерФилиала=1;

Для Каждого СтрокаТФ из ТаблицаФилиалов Цикл

ЭлементыФормы.Филиал.СписокВыбора.Добавить(НомерФилиала,СтрокаТФ.Наименование);

НомерФилиала=НомерФилиала+1;

КонецЦикла;

//Выбор доступных подразделений

СпрПодр=Справочники.Подразделения.Выбрать();

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

Если СпрПодр.ЭтоГруппа=Ложь И СпрПодр.ПометкаУдаления=Ложь Тогда

Список1.Добавить(СпрПодр.Ссылка,СпрПодр.Наименование);

КонецЕсли;

КонецЦикла;

ЭлементыФормы.ФФилиал.Доступность=Ложь; //Флажок: "По филиалам"

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

//Выбор периода

Процедура КнопкаВыбоПериодаНажатие(Элемент)

ДатаНач='00010101';

ДатаКон='00010101';

БухгалтерскиеОтчеты.ОбработчикНастройкаПериодаНажатие(ДатаНач, ДатаКон);

Дата1=ДатаНач;

Дата2=КонецМесяца(ДатаНач);

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

//перенести вправо (выбрать выделеное доступное подразделение)

Процедура КнопкаВправоНажатие(Элемент)

ТекущаяСтрока=ЭлементыФормы.Список1.ТекущаяСтрока;

Если ТекущаяСтрока<>Неопределено Тогда

Список2.Добавить(ТекущаяСтрока.Значение,ТекущаяСтрока.Представление);

Список1.Удалить(ТекущаяСтрока);

КонецЕсли;

Список2.СортироватьПоПредставлению(НаправлениеСортировки.Возр);//сортировка выбранных подразделений

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

//перенести влево (удалить выделенное выбранное подраздление)

Процедура КнопкаВлевоНажатие(Элемент)

ТекущаяСтрока=ЭлементыФормы.Список2.ТекущаяСтрока;

Если ТекущаяСтрока<>Неопределено Тогда

Список1.Добавить(ТекущаяСтрока.Значение,ТекущаяСтрока.Представление);

Список2.Удалить(ТекущаяСтрока);

КонецЕсли;

Список1.СортироватьПоПредставлению(НаправлениеСортировки.Возр);//сортировка доступных подразделений

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

//перенести вправо все (выбрать все подразделения)

Процедура КнопкаВпрвоВсеНажатие(Элемент)

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

Список2.Добавить(ЗначениеСп.Значение,ЗначениеСп.Представление);

КонецЦикла;

Список1.Очистить(); //очистка списка допустимых подразделений

Список2.СортироватьПоПредставлению(НаправлениеСортировки.Возр);//сортировка выбранных подразделений

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

//перенести влево все (удалить все выбранные подразделения)

Процедура КнопкаВлевоВсеНажатие(Элемент)

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

Список1.Добавить(ЗначениеСп.Значение,ЗначениеСп.Представление);

КонецЦикла;

Список2.Очистить(); //очитска списка выбранных подразделений

Список1.СортироватьПоПредставлению(НаправлениеСортировки.Возр);//сортировка допустимых подразделений

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

//перенести вверх (переместить на одну позицию вверх выделенное подразделение в списке выбранных)

Процедура КнопкаВверхНажатие(Элемент)

ТекущаяСтрока=ЭлементыФормы.Список2.ТекущаяСтрока;

Если ТекущаяСтрока<>Неопределено Тогда

Список2.Сдвинуть(ТекущаяСтрока,-1);

КонецЕсли;

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

//Перенести вниз(переместить на одну позицию вниз выделенное подразделение в списке выбранных)

Процедура КнопкаВнизНажатие(Элемент)

ТекущаяСтрока=ЭлементыФормы.Список2.ТекущаяСтрока;

Если ТекущаяСтрока<>Неопределено Тогда

Список2.Сдвинуть(ТекущаяСтрока,1);

КонецЕсли;

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

//Очистка поля "филиал"

Процедура ФилиалОчистка(Элемент, СтандартнаяОбработка)

//Добавление всех подразделений в список доступных

СпрПодр=Справочники.Подразделения.Выбрать();

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

Если СпрПодр.ЭтоГруппа=Ложь И СпрПодр.ПометкаУдаления=Ложь Тогда

Список1.Добавить(СпрПодр.Ссылка,СпрПодр.Наименование);

КонецЕсли;

КонецЦикла;

//очистка списка выбранных подразделений

список2.Очистить();

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

//Отбор по филиалу (Изменение)

Процедура ФОтборПриИзменении(Элемент)

ФилиалПриИзменении(Неопределено);

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

//Выбор доступного подразделения

Процедура Список1Выбор(Элемент, ЭлементСписка)

КнопкаВправоНажатие(Неопределено);

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

//Выбор уже выбранного подразделения

Процедура Список2Выбор(Элемент, ЭлементСписка)

КнопкаВлевоНажатие(Неопределено);

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

//Изменение начальной даты

Процедура Дата1ПриИзменении(Элемент)

Дата1=НачалоМесяца(Дата1);

Дата2=КонецМесяца(Дата1);

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

//Изменение конечной даты

Процедура Дата2ПриИзменении(Элемент)

Дата2=КонецМесяца(Дата1);

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

//Изменение Флажка "Только итоговая колонка"

Процедура ФИтКолПриИзменении(Элемент)

Если ФИтКол=Истина И СокрЛП(Филиал)="" Тогда

ЭлементыФормы.ФФилиал.Доступность=Истина;

Иначе

ЭлементыФормы.ФФилиал.Доступность=Ложь;

ФФилиал=Ложь;

КонецЕсли;

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

//при выборе филиала

Процедура ФилиалПриИзменении(Элемент)

// Вставить содержимое обработчика.

Если Филиал<>Неопределено Тогда

Список1.Очистить();

Список2.Очистить();

Если ФОтбор=Истина Тогда

Если ЭлементыФормы.Филиал.СписокВыбора.Получить(Филиал-1).Представление="Старооскольский" Тогда

Код="О000000001";

КонецЕсли;

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

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

| Подразделения.Ссылка

|ИЗ

| Справочник.Подразделения КАК Подразделения

|ГДЕ

| Подразделения.Ссылка В ИЕРАРХИИ(&Группа)";

Запрос.УстановитьПараметр("Группа",Справочники.Подразделения.НайтиПоКоду(Код));

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

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

Если СтрокаРЗ.Ссылка.ЭтоГруппа=Ложь Тогда

Список1.Добавить(СтрокаРЗ.Ссылка,СтрокаРЗ.Ссылка.Наименование);

КонецЕсли;

КонецЦикла;

Иначе

СпрПодр=Справочники.Подразделения.Выбрать();

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

Если СпрПодр.ЭтоГруппа=Ложь И СпрПодр.ПометкаУдаления=Ложь Тогда

Список1.Добавить(СпрПодр.Ссылка,СпрПодр.Наименование);

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЕсли;

Список1.СортироватьПоПредставлению(НаправлениеСортировки.Возр);

Если СокрЛП(Филиал)<>"" Тогда

ФФилиал=Ложь;

ЭлементыФормы.ФФилиал.Доступность=Ложь;

Иначе

Если ФИтКол=Истина Тогда

ЭлементыФормы.ФФилиал.Доступность=Истина;

КонецЕсли;

Список1.Очистить();

Список2.Очистить();

СпрПодр=Справочники.Подразделения.Выбрать();

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

Если СпрПодр.ЭтоГруппа=Ложь И СпрПодр.ПометкаУдаления=Ложь Тогда

Список1.Добавить(СпрПодр.Ссылка,СпрПодр.Наименование);

КонецЕсли;

КонецЦикла;

КонецЕсли;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]