
- •Факультет автоматизации и информационных технологий Кафедра автоматизированных и информационных систем управления
- •Выпускная квалификационная работа
- •Задание на выполнение выпускной квалификационной работы
- •Список сокращений
- •Аннотация
- •Содержание
- •Введение
- •1.Аналитическая часть
- •1.1. Описание предметной области
- •1.1.1. Характеристика объекта управления
- •1.1.2.Организационная структура «ооо «афк - групп»
- •1.1.3. Описание существующего уровня автоматизации объекта управления
- •1.1.4. Организация предметной области
- •1.2.Сущность комплекса информационных задач
- •1.2.1 Общие сведения о задачах
- •1.2.2. Декомпозиция комплекса задач
- •1.3. Постановка задач на проектирование
- •1.3.1. Недостатки существующей ис
- •1.3.2. Требования предъявляемые к разрабатываемой ис
- •1.3.3. Обзор современных методов для учета и анализа затрат предприятия
- •1.3.4. Обзор современных программных средств для решения данной проблемы
- •1.3.5 Обоснование необходимости и направлений разработки ис (выбор задач для проектирования, обоснование программных, технических и организационно-технологических решений)
- •2. Проектная часть
- •2.1.Информационное обеспечение решаемой задачи
- •2.1. Внемашинное проектирование
- •2.1.1. Описание входной и выходной информации решаемой задачи
- •2.1.2. Информационный анализ предметной области и построение инфологической модели данных
- •2.1.3. Выбор средства разработки программного обеспечения (бд)
- •2.1.4. Внутримашинная реализация данных
- •2.2. Формализация расчетов (математическая модель)
- •2.2.1. Выбор метода анализа экономической эффективности деятельности
- •2.2.1.1. Обзор основных подходов и методов для решения задачи анализа экономической эффективности
- •Попередельный метод учета затрат
- •Позаказный метод учета затрат
- •Попроцессный (простой) метод учета затрат
- •Нормативный метод учета затрат
- •Стандарт-костинг
- •Директ-костинг
- •Система Just in time
- •Функционально-стоимостной анализ
- •Target - костинг
- •Kaizen - костинг
- •2.2.1.2. Выбор метода учета затрат
- •2.2.2. Разработка математической модели решения задачи расчета экономической эффективности деятельности
- •2.3. Алгоритмы и технология решения задач
- •Структуру программного модуля «Начисление» »можно подразделить на следующие разделы:
- •2.4. Построение форм ввода-вывода информации
- •3. Организационно-экономическая часть
- •3.1. График основных этапов проведения нир и расчет затрат
- •3.2. Определение капитальных затрат для нового варианта
- •3.3. Определение эксплуатационных затрат для нового варианта
- •3.4. Определение экономического эффекта
- •4. Информационная безопасность. Защита информации
- •4.1. Защита от несанкционированного доступа
- •4.1.1. Пользовательские права
- •4.1.2. Индивидуальный пользовательский интерфейс
- •4.1.3. Списки пользователей
- •4.2. Тестирование и исправление информационных баз
- •4.3. Сохранение и восстановление данных
- •4.3.1. Сохранение данных
- •4.3.2. Восстановление данных
- •Заключение
- •Список источников информации
Список источников информации
-
Бартеньев О.В. 1C:Предприятие: программирование для всех. – М.: Диалог-МИФИ, 2008. – 416 с.
-
Бобошко Д.Д. 1C: Предприятие 8.1. Программирование в примерах. – М.: Кудиц-образ, 2006. – 240 с.
-
Вахрушина М.А. Бухгалтерский управленческий учет: Учебник. - М.: Омега-Л, 2005. - 576с.
-
Виноградова М.В., Панина З.И. Организация и планирование деятельности предприятий сферы сервиса:– М.: Издательско-торговая корпорация «Дашков и Ко», 2007. – 464с.
-
Дубянский В. М. 1C: Предприятие. Конфигурирование и администрирование для начинающих. – М.: НТ Пресс, 2005. - 279 с.
-
Елисеевой И.И. Эконометрика. – М.: Финстат, 2006.- 576 с.
-
Керимов В.Э. Управленческий учет. – М.: Маркетинг, 2006. – 519 с.
-
Колпинский Н.Н. 1С: Предприятие. Практика программирования на платформе v8. – М.: ИКС Технологии, 2002. – 214 с.
-
Мишин Ю.А. Управленческий учет: Управление затратами и результатами производственной деятельности. – М.: Дело и сервис, 2005. – 412 с.
-
Михайлов А.Н. 1С Предприятие 7.7/8.0. Системное программирование. – Спб.: 1С-Паблишинг, 2005. – 352 с.
-
Оганесян А.С., Оганесян И.С. Управление эффективностью торговой сделки //Менеджмент в России и за рубежом. — 2003. — № 3.
-
Орлов Р. Искусственное дыхание. Консалтинг как средство от застоя // Двойная запись. – 2005. - № 9. – С. 117
-
Ощенко И.А. 1C:Предприятие. Бухгалтерия для начинающих. - М.: BHV, 2009. – 256 с.
-
Посадский А.П., Хайниш С.В. Консультационные услуги в России. — М.: Финстатинформ, 2008.
-
Рязанцев Д.Н., Рязанцева Н.А. 1С: Предприятие. Бухгалтерия. Секреты работы. – М.: BHV, 2007. – 368 с.
-
Усиков Т.Н. 1С:Предприятие. Эффективное программирование. – М.: Лучшие книги, 2004. – 464 с.
-
Ханк Д.Э., Уичерн Д.У., Райтс А.Дж. Бизнес-прогнозирование, 7-е издание. : Пер. с англ. - М.: Издательский дом "Вильямс", 2003. - 656 с.: ил. - Парал. тит. англ.
-
Шелобаев С.И. Математические методы и модели в экономике, финансах, бизнесе: Учеб. пособие. - М.: Юнити, 2000. - 367 с.
-
Шубина Е.В. Работаем в 1С:Предприятие 7.7. Настройка, эксплуатация, конфигурирование и программирование. – М.: Дашков и К, 2008. – 464с.
-
http://www.1c.ru/
-
http://www.aspentech.ru/
-
http://www.bizeducation.ru/
-
http://www.forecsys.ru/
-
http://www.nova-it.ru/
-
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.Добавить(СпрПодр.Ссылка,СпрПодр.Наименование);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры