Организации / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	Если Не ЗначениеЗаполнено(ЮридическоеФизическоеЛицо) Тогда
		Если ЗначениеЗаполнено(ДанныеЗаполнения)
		 И ДанныеЗаполнения.Свойство("ВидОрганизации")
		 И ДанныеЗаполнения.ВидОрганизации = "ИндивидуальныйПредприниматель" Тогда
			ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
		Иначе
			ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
		КонецЕсли;
	КонецЕсли;
	Если ЭтоНовый() Тогда
		Статус = Перечисления.СтатусыОрганизацийПодразделений.Действует;
	КонецЕсли;
	Если ЗначениеЗаполнено(ДанныеЗаполнения) И ДанныеЗаполнения.Свойство("ВидОрганизации") Тогда
		Если ДанныеЗаполнения.ВидОрганизации = "ЮридическоеЛицо" Тогда
			ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо");
			ОбособленноеПодразделение = Ложь;
		ИначеЕсли ДанныеЗаполнения.ВидОрганизации = "ИндивидуальныйПредприниматель" Тогда 
			ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ИндивидуальныйПредприниматель");
			ОбособленноеПодразделение = Ложь;
			ИНН = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ИндивидуальныйПредприниматель, "ИНН");
		ИначеЕсли ДанныеЗаполнения.ВидОрганизации = "ОбособленноеПодразделение" Тогда
			ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо");
			ОбособленноеПодразделение = Истина;
			ИНН = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГоловнаяОрганизация, "ИНН");
		Иначе ВызватьИсключение Нстр("ru = 'Создание организации невозможно. На форму переданы неверные параметры.
											|Обратитесь к администратору.'");
		КонецЕсли;
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ДанныеЗаполнения) И ДанныеЗаполнения.Свойство("Статус") Тогда
		Статус = ДанныеЗаполнения.Статус;
	КонецЕсли;
	
	Если ЭтоНовый() И Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют") Тогда
		ВалютаРегламентированногоУчета = Справочники.Валюты.ПолучитьВалютуПоУмолчанию();
		Если Не ЗначениеЗаполнено(ВалютаРегламентированногоУчета) Тогда
			ВызватьИсключение НСтр("ru = 'Не удалось заполнить поле ""Валюта регламентированного учета"". Возможно, в информационной базе не введено ни одной валюты
			|Для настройки необходимо перейти в раздел ""НСИ и администрирование""-""Предприятие""-""Валюты"".'");
		КонецЕсли;
	КонецЕсли;
	
	Если ЭтоНовый() И Не ПолучитьФункциональнуюОпцию("ИспользоватьМногострановойУчет") Тогда
		СтранаРегистрации = ЗначениеНастроекКлиентСерверПовтИсп.ОсновнаяСтрана();
	КонецЕсли;
	
	ОрганизацииЛокализация.ОбработкаЗаполненияОрганизации(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка);
	
КонецПроцедуры

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

	Перем ТекстСообщения;
	
	МассивНепроверяемыхРеквизитов = Новый Массив;

	Если ОбособленноеПодразделение Тогда
		ПроверяемыйЭлемент = ПроверяемыеРеквизиты.Найти("ВалютаРегламентированногоУчета");
		Если ПроверяемыйЭлемент <> Неопределено Тогда
			ПроверяемыеРеквизиты.Удалить(ПроверяемыйЭлемент);
		КонецЕсли;
	Иначе
		МассивНепроверяемыхРеквизитов.Добавить("ГоловнаяОрганизация");
	КонецЕсли;
	
	Если Не КрупнейшийНалогоплательщик Тогда
		МассивНепроверяемыхРеквизитов.Добавить("КодНалоговогоОрганаПолучателя");
	КонецЕсли;
	
	Если Не ЭтоНовый()
		И ОбособленноеПодразделение
		И ЕстьОбособленныеПодразделенияОрганизации() Тогда
		
		ТекстСообщения = НСтр("ru = 'Организация не может быть обособленным подразделением, потому что она уже выбрана в качестве головной для других организаций.'");
		
		ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ЭтотОбъект,,, Отказ);
		
	КонецЕсли;
	
	Если ЭтоНовый() И Не ПолучитьФункциональнуюОпцию("ИспользоватьМногострановойУчет") Тогда
		МассивНепроверяемыхРеквизитов.Добавить("СтранаРегистрации");
		Константы.ОсновнаяСтрана.ПроверитьЗаполнение();
	КонецЕсли;
	
	
	Если Ссылка = Справочники.Организации.УправленческаяОрганизация Тогда
		МассивНепроверяемыхРеквизитов.Добавить("Статус");
	КонецЕсли;
	
	ОрганизацииЛокализация.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);

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

Процедура ПередЗаписью(Отказ)
	
	Если ПолучитьФункциональнуюОпцию("БазоваяВерсия") И ЭтоНовый() Тогда
		ОрганизацияПоУмолчанию = Справочники.Организации.ОрганизацияПоУмолчанию();
		Если ЗначениеЗаполнено(ОрганизацияПоУмолчанию) Тогда
			ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Базовая версия может вести учет только по одной организации'"),,,, Отказ);	
		КонецЕсли;
	КонецЕсли;
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

	Если ПартнерыИКонтрагенты.ЭтоЮрЛицо(ЮрФизЛицо) = Ложь Тогда

		ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
		КПП = "";
		
	Иначе
		
		ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
		СвидетельствоДатаВыдачи   = Дата(1,1,1);
		СвидетельствоСерияНомер   = "";
		
	КонецЕсли;
	
	Если ОбособленноеПодразделение Тогда
		Если Не ЗначениеЗаполнено(ВалютаРегламентированногоУчета) Тогда
			ВалютаРегламентированногоУчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГоловнаяОрганизация,
																			"ВалютаРегламентированногоУчета")
		КонецЕсли;
	
	Иначе
		
		Если ЭтоНовый() Тогда
			Если ПолучитьСсылкуНового().Пустая() Тогда
				УстановитьСсылкуНового(Справочники.Организации.ПолучитьСсылку());
			КонецЕсли;
			ГоловнаяОрганизация = ПолучитьСсылкуНового();
		ИначеЕсли ГоловнаяОрганизация <> Ссылка Тогда
			ГоловнаяОрганизация = Ссылка;
		КонецЕсли;
		
	КонецЕсли;
	
	Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций") Тогда
		УстановитьПривилегированныйРежим(Истина);
		Запрос = Новый Запрос(
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	Организации.Ссылка
		|ИЗ
		|	Справочник.Организации КАК Организации
		|ГДЕ
		|	Организации.Ссылка <> &Ссылка
		|	И Организации.Ссылка <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
		|	И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)");
		
		Запрос.УстановитьПараметр("Ссылка", Ссылка);
		Если Не Запрос.Выполнить().Пустой() Тогда
			Если Не ПолучитьФункциональнуюОпцию("БазоваяВерсия") Тогда
				Константы.ИспользоватьНесколькоОрганизаций.Установить(Истина);
				Константы.ИспользоватьНесколькоКасс.Установить(Истина);
				Константы.ИспользоватьНесколькоРасчетныхСчетов.Установить(Истина);
				Константы.ИспользоватьНесколькоРасчетныхСчетовКасс.Установить(Истина);
			Иначе
				ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Базовая версия может вести учет только по одной организации'"),,,, Отказ);
			КонецЕсли;
		КонецЕсли;
		УстановитьПривилегированныйРежим(Ложь);
	КонецЕсли;
	
	Если Статус = Перечисления.СтатусыОрганизацийПодразделений.НеДействует Тогда
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("Ссылка", Ссылка);
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	Организации.Ссылка
		|ИЗ
		|	Справочник.Организации КАК Организации
		|ГДЕ
		|	Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
		|	И НЕ Организации.ПометкаУдаления
		|	И Организации.ГоловнаяОрганизация = &Ссылка
		|	И Организации.Ссылка <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
		|	И Организации.Ссылка <> &Ссылка";
		Если Не Запрос.Выполнить().Пустой() Тогда
			ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Статус ""Не действует"" не может быть установлен для головной организации с действущими обособленными подразделениями'"),,,, Отказ);
		КонецЕсли;
		Если ГоловнаяОрганизация <> Ссылка 
			И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГоловнаяОрганизация, "Статус") = Перечисления.СтатусыОрганизацийПодразделений.НеДействует 
			И Статус = Перечисления.СтатусыОрганизацийПодразделений.Действует Тогда
			ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Выбрана головная организация со статусом ""Не действует"". Должна быть выбрана действующая головная организация'"),,,, Отказ);
		КонецЕсли;
	КонецЕсли;
	ОбщегоНазначенияУТ.ПодготовитьДанныеДляСинхронизацииКлючей(ЭтотОбъект, ПараметрыСинхронизацииКлючей());	
	
	ОрганизацииЛокализация.ПередЗаписью(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ОбновитьПовторноИспользуемыеЗначения();
	ОбщегоНазначенияУТ.СинхронизироватьКлючи(ЭтотОбъект);
	
	Если ЗначениеЗаполнено(ВалютаРегламентированногоУчета) Тогда
		РаботаСКурсамиВалютУТ.ПроверитьКорректностьОтносительногоКурсаНа01_01_1980(ВалютаРегламентированногоУчета);
	КонецЕсли;
	
	ОрганизацииЛокализация.ПриЗаписиОрганизации(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ПриКопировании(ОбъектКопирования)
	ФайлЛоготип            = Неопределено;
	ФайлФаксимильнаяПечать = Неопределено;
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ЕстьОбособленныеПодразделенияОрганизации()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	Организации.Ссылка
	|ИЗ
	|	Справочник.Организации КАК Организации
	|ГДЕ
	|	Организации.ГоловнаяОрганизация = &Ссылка
	|	И Организации.Ссылка <> Организации.ГоловнаяОрганизация
	|	И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
	|";
	
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	
	Возврат Не Запрос.Выполнить().Пустой();
	
КонецФункции

Функция ПараметрыСинхронизацииКлючей()
	
	Результат = Новый Соответствие;
	
	Результат.Вставить("Справочник.ВидыЗапасов", "ПометкаУдаления");
	Результат.Вставить("Справочник.КлючиАналитикиУчетаПоПартнерам", "ПометкаУдаления");
	Результат.Вставить("Справочник.КлючиАналитикиУчетаНоменклатуры", "ПометкаУдаления");
	Результат.Вставить("Справочник.КлючиРеестраДокументов", "ПометкаУдаления,Наименование,ИНН");
	
	Возврат Результат;
	
КонецФункции

#КонецОбласти

#КонецЕсли

Связанные материалы