#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
Настройки.ПриНачальномЗаполненииЭлемента = Истина;
КонецПроцедуры
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
#Область УправленческаяОрганизация
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "УправленческаяОрганизация";
Элемент.Наименование = НСтр("ru = 'Управленческая организация'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.Префикс = НСтр("ru = 'УУ'");
Элемент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
Элемент.ВалютаРегламентированногоУчета = НастройкиСистемыЛокализация.ВалютаРегламентированногоУчетаПоУмолчанию();
Элемент.СтранаРегистрации = НастройкиСистемыЛокализация.ОсновнаяСтранаПоУмолчанию();
Элемент.Статус = Перечисления.СтатусыОрганизацийПодразделений.Действует;
#КонецОбласти
КонецПроцедуры
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
Объект.ГоловнаяОрганизация = Объект.Ссылка;
КонецПроцедуры
#Область ОбособленныеПодразделения
Функция ОрганизацииВзаимосвязаныПоОрганизационнойСтруктуре(ПерваяОрганизация, ВтораяОрганизация) Экспорт
Если НЕ (ЗначениеЗаполнено(ПерваяОрганизация) И ЗначениеЗаполнено(ВтораяОрганизация))
ИЛИ ПерваяОрганизация = ВтораяОрганизация Тогда
Возврат Ложь;
КонецЕсли;
МассивВзаимосвязанныхОрганизаций = МассивВзаимосвязанныхОрганизаций(ПерваяОрганизация);
Возврат (МассивВзаимосвязанныхОрганизаций.Найти(ВтораяОрганизация) <> Неопределено);
КонецФункции
Функция ОрганизацияВзаимосвязанаСДругимиОрганизациями(Организация) Экспорт
МассивВзаимосвязанныхОрганизаций = МассивВзаимосвязанныхОрганизаций(Организация);
ОрганизацияВзаимосвязанаСДругимиОрганизациями = (МассивВзаимосвязанныхОрганизаций.Количество() <> 0);
Возврат ОрганизацияВзаимосвязанаСДругимиОрганизациями;
КонецФункции
Функция ТекстЗапросаВзаимосвязанныеОрганизации() Экспорт
Возврат "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Организации.ГоловнаяОрганизация КАК Ссылка,
| NULL КАК ГоловнаяОрганизация
|ПОМЕСТИТЬ ВзаимосвязанныеОрганизации
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ОбособленноеПодразделение
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|
|СГРУППИРОВАТЬ ПО
| Организации.ГоловнаяОрганизация
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Организации.Ссылка,
| Организации.ГоловнаяОрганизация
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ОбособленноеПодразделение
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|";
КонецФункции
Функция ПолучитьВзаимосвязанныеОрганизации(МенеджерВТ = Неопределено) Экспорт
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(ТекстЗапросаВзаимосвязанныеОрганизации());
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ВзаимосвязанныеОрганизации.ГоловнаяОрганизация КАК Организация1,
| ВЫБОР
| КОГДА ВзаимосвязанныеОрганизации.Ссылка ЕСТЬ NULL
| ИЛИ ВзаимосвязанныеОрганизации.Ссылка = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
| ТОГДА ВзаимосвязанныеОрганизации.ГоловнаяОрганизация
| ИНАЧЕ ВзаимосвязанныеОрганизации.Ссылка
| КОНЕЦ КАК Организация2
|ПОМЕСТИТЬ ВТВзаимосвязанныеОрганизации
|ИЗ
| ВзаимосвязанныеОрганизации КАК ВзаимосвязанныеОрганизации
|ГДЕ
| НЕ (ВзаимосвязанныеОрганизации.ГоловнаяОрганизация ЕСТЬ NULL
| ИЛИ ВзаимосвязанныеОрганизации.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ВзаимосвязанныеОрганизации.Ссылка КАК Организация1,
| ВЫБОР
| КОГДА ВзаимосвязанныеОрганизации.ГоловнаяОрганизация ЕСТЬ NULL
| ИЛИ ВзаимосвязанныеОрганизации.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
| ТОГДА ВзаимосвязанныеОрганизации.Ссылка
| ИНАЧЕ ВзаимосвязанныеОрганизации.ГоловнаяОрганизация
| КОНЕЦ КАК Организация2
|ИЗ
| ВзаимосвязанныеОрганизации КАК ВзаимосвязанныеОрганизации
|ГДЕ
| НЕ (ВзаимосвязанныеОрганизации.Ссылка ЕСТЬ NULL
| ИЛИ ВзаимосвязанныеОрганизации.Ссылка = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
|");
Запрос = Новый Запрос;
Результат = Неопределено;
Если МенеджерВТ = Неопределено Тогда
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "ПОМЕСТИТЬ ВТВзаимосвязанныеОрганизации", "");
Результат = Запрос.Выполнить().Выгрузить();
Иначе
ТекстыЗапроса.Добавить("УНИЧТОЖИТЬ ВзаимосвязанныеОрганизации");
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.Выполнить();
КонецЕсли;
Возврат Результат;
КонецФункции
Функция МассивВзаимосвязанныхОрганизаций(Организация = Неопределено) Экспорт
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(ТекстЗапросаВзаимосвязанныеОрганизации());
ТекстыЗапроса.Добавить("
|ВЫБРАТЬ
| ВзаимосвязанныеОрганизации.Ссылка
|ИЗ
| ВзаимосвязанныеОрганизации КАК ВзаимосвязанныеОрганизации
|ГДЕ
| ВзаимосвязанныеОрганизации.Ссылка <> &Организация
| И (&Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
| ИЛИ ВзаимосвязанныеОрганизации.Ссылка = &ГоловнаяОрганизация
| ИЛИ ВзаимосвязанныеОрганизации.ГоловнаяОрганизация = &ГоловнаяОрганизация
| И &ГоловнаяОрганизация <> ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
| ИЛИ ВзаимосвязанныеОрганизации.ГоловнаяОрганизация = &Организация)
|");
Запрос = Новый Запрос(СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов()));
Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Организация), Организация, Справочники.Организации.ПустаяСсылка()));
Запрос.УстановитьПараметр("ГоловнаяОрганизация", ?(ЗначениеЗаполнено(Организация),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Организация, "ГоловнаяОрганизация"), Справочники.Организации.ПустаяСсылка()));
МассивОрганизаций = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивОрганизаций;
КонецФункции
Функция ФилиалыСРасчетамиЧерезГоловнуюОрганизацию(Организация = Неопределено) Экспорт
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьОбособленныеПодразделенияВыделенныеНаБаланс") Тогда
Возврат Новый Массив;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| НЕ Организации.ПометкаУдаления
| И (Организации.Ссылка <> &Организация
| И Организации.ГоловнаяОрганизация = &Организация
| ИЛИ &Организация = НЕОПРЕДЕЛЕНО
| ИЛИ &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
| И Организации.ДопускаютсяВзаиморасчетыЧерезГоловнуюОрганизацию
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|АВТОУПОРЯДОЧИВАНИЕ");
Запрос.УстановитьПараметр("Организация", Организация);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
Функция ГоловныеОрганизации(МассивОрганизаций) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОрганизаций", МассивОрганизаций);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Организации.ГоловнаяОрганизация КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.Ссылка В(&МассивОрганизаций)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат Результат;
КонецФункции
Функция ЕстьОбособленныеПодразделения(Организация) Экспорт
Возврат ОрганизацииЛокализация.ЕстьОбособленныеПодразделения(Организация);
КонецФункции
#КонецОбласти
#Область ИспользованиеНесколькихОрганизаций
Функция ОрганизацияПоУмолчанию() Экспорт
Организация = Справочники.Организации.ПустаяСсылка();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 2
| Организации.Ссылка КАК Организация
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| НЕ Организации.ПометкаУдаления
| И НЕ Организации.Предопределенный
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() И Выборка.Количество() = 1 Тогда
Организация = Выборка.Организация;
КонецЕсли;
Возврат Организация;
КонецФункции
Функция КоличествоОрганизаций() Экспорт
УстановитьПривилегированныйРежим(Истина);
Количество = 0;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК Количество
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| НЕ Организации.Предопределенный
| И НЕ Организации.ПометкаУдаления
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Количество = Выборка.Количество;
КонецЕсли;
Возврат Количество;
КонецФункции
Функция ИспользуетсяНесколькоОрганизаций() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
КонецФункции
Функция ДоступныеОрганизации(ТолькоРазрешенные = Ложь, УчитыватьПомеченныеНаУдаление = Истина) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеСправочника.Ссылка КАК Организация
|ИЗ
| Справочник.Организации КАК ДанныеСправочника
|ГДЕ
| (ДанныеСправочника.Ссылка <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
| ИЛИ &ИспользоватьУправленческуюОрганизацию)
| И (НЕ ДанныеСправочника.ПометкаУдаления
| ИЛИ &УчитыватьПомеченныеНаУдаление)
| И ДанныеСправочника.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|
|УПОРЯДОЧИТЬ ПО
| Организация";
Запрос.УстановитьПараметр("УчитыватьПомеченныеНаУдаление", УчитыватьПомеченныеНаУдаление);
Запрос.УстановитьПараметр("ИспользоватьУправленческуюОрганизацию",
ПолучитьФункциональнуюОпцию("ИспользоватьУправленческуюОрганизацию"));
Если ТолькоРазрешенные Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//%1", "РАЗРЕШЕННЫЕ");
Иначе
УстановитьПривилегированныйРежим(Истина);
КонецЕсли;
МассивОрганизаций = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Организация");
Возврат МассивОрганизаций;
КонецФункции
#КонецОбласти
#Область Прочие
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
Результат = Новый Массив;
Результат.Добавить("ВалютаРегламентированногоУчета");
Если ПолучитьФункциональнуюОпцию("ИспользоватьОбособленныеПодразделенияВыделенныеНаБаланс") Тогда
Результат.Добавить("ОбособленноеПодразделение");
Результат.Добавить("ГоловнаяОрганизация");
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ПолучитьРеквизитыОрганизации(Организация) Экспорт
СтруктураРеквизитов = Новый Структура;
СтруктураРеквизитов.Вставить("Наименование", "");
СтруктураРеквизитов.Вставить("НаименованиеСокращенное", "");
СтруктураРеквизитов.Вставить("НаименованиеПолное", "");
СтруктураРеквизитов.Вставить("ЮрФизЛицо", Перечисления.ЮрФизЛицо.ПустаяСсылка());
СтруктураРеквизитов.Вставить("ИндивидуальныйПредприниматель", "");
СтруктураРеквизитов.Вставить("ИНН", "");
СтруктураРеквизитов.Вставить("КПП", "");
СтруктураРеквизитов.Вставить("КрупнейшийНалогоплательщикКПП", "");
СтруктураРеквизитов.Вставить("СтранаРегистрации", Справочники.СтраныМира.ПустаяСсылка());
СтруктураРеквизитов.Вставить("НаименованиеМеждународное", "");
ОрганизацииЛокализация.ДополнитьСписокРеквизитовОрганизации(СтруктураРеквизитов);
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка,
| &ПоляВыборки
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.Ссылка = &Организация";
Запрос.УстановитьПараметр("Организация", Организация);
ПоляВыборкиПараметров = Новый Массив;
Для каждого Реквизит Из СтруктураРеквизитов Цикл
ПоляВыборкиПараметров.Добавить(СтрШаблон("Организации.%1 КАК %1", Реквизит.Ключ));
КонецЦикла;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоляВыборки", СтрСоединить(ПоляВыборкиПараметров, "," + Символы.ПС));
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(СтруктураРеквизитов, Выборка);
Наименование = ?(Не ПустаяСтрока(Выборка.НаименованиеСокращенное), Выборка.НаименованиеСокращенное, Выборка.Наименование);
СтруктураРеквизитов.Наименование = Наименование;
Иначе
Наименование = "";
КонецЕсли;
СтруктураРеквизитов.Вставить("Свидетельство", "");
СтруктураРеквизитов.Вставить("Представление", Наименование);
ОрганизацииЛокализация.ДополнитьРеквизитыОрганизации(Организация, СтруктураРеквизитов, Выборка);
Возврат СтруктураРеквизитов;
КонецФункции
Функция ПолучитьОрганизациюПоУмолчанию() Экспорт
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 2
| Организации.Ссылка КАК Организация
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| НЕ Организации.ПометкаУдаления
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|";
Если Не Константы.ИспользоватьУправленческуюОрганизацию.Получить() Тогда
ТекстЗапроса = ТекстЗапроса + "
| И Не Организации.Предопределенный";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() И Выборка.Количество() = 1 Тогда
Организация = Выборка.Организация;
Иначе
Организация = Справочники.Организации.ПустаяСсылка();
КонецЕсли;
Возврат Организация;
КонецФункции
Функция ПолучитьПараметрыФормыВыбораДляКода(НазваниеМакета, ТекущийПериод) Экспорт
Возврат ОрганизацииЛокализация.ПолучитьПараметрыФормыВыбораДляКода(НазваниеМакета, ТекущийПериод);
КонецФункции
Функция СоответствиеЭлементовФормыПараметрамНалоговУчетныхПолитик() Экспорт
СоответствиеЭлементов = Новый Соответствие();
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ГруппаУчетнаяПолитикаФинансовогоУчетаОтступ");
МассивЭлементов.Добавить("ОтступУчетнаяПолитикаФинансовогоУчета");
МассивЭлементов.Добавить("ОписаниеУчетнаяПолитикаФинансовогоУчета");
МассивЭлементов.Добавить("ГруппаУчетнаяПолитикаФинансовогоУчета");
МассивЭлементов.Добавить("ОткрытьУчетнаяПолитикаФинансовогоУчета");
СтруктураЭлементов = Новый Структура();
СтруктураЭлементов.Вставить("МассивЭлементов", МассивЭлементов);
СтруктураЭлементов.Вставить("ЭлементОписание", "ОписаниеУчетнаяПолитикаФинансовогоУчета");
СоответствиеЭлементов.Вставить("УчетнаяПолитикаФинансовогоУчета", СтруктураЭлементов);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ГруппаНастройкиУчетаНДСОтступ");
МассивЭлементов.Добавить("ОтступНастройкиУчетаНДС");
МассивЭлементов.Добавить("ГруппаНастройкиУчетаНДС");
МассивЭлементов.Добавить("ОписаниеНастройкиУчетаНДС");
МассивЭлементов.Добавить("ОткрытьНастройкиУчетаНДС");
СтруктураЭлементов = Новый Структура();
СтруктураЭлементов.Вставить("МассивЭлементов", МассивЭлементов);
СтруктураЭлементов.Вставить("ЭлементОписание", "ОписаниеНастройкиУчетаНДС");
СоответствиеЭлементов.Вставить("НастройкиУчетаНДС", СтруктураЭлементов);
ОрганизацииЛокализация.ДополнитьСоответствиеЭлементовФормыПараметрамНалоговУчетныхПолитик(СоответствиеЭлементов);
Возврат СоответствиеЭлементов
КонецФункции
Функция СтраныРегистрацииИВалютыРегламентированногоУчетаСовпадают(Организация1, Организация2) Экспорт
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("ВалютыСовпадают", Истина);
СтруктураВозврата.Вставить("СтраныСовпадают", Истина);
Если Не ЗначениеЗаполнено(Организация1) Или Не ЗначениеЗаполнено(Организация2) Тогда
Возврат СтруктураВозврата;
КонецЕсли;
МассивСсылок = Новый Массив();
МассивСсылок.Добавить(Организация1);
МассивСсылок.Добавить(Организация2);
РеквизитыОрганизаций = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивСсылок, "ВалютаРегламентированногоУчета, СтранаРегистрации");
СтруктураВозврата.ВалютыСовпадают = РеквизитыОрганизаций.Получить(Организация1).ВалютаРегламентированногоУчета = РеквизитыОрганизаций.Получить(Организация2).ВалютаРегламентированногоУчета;
СтруктураВозврата.СтраныСовпадают = РеквизитыОрганизаций.Получить(Организация1).СтранаРегистрации = РеквизитыОрганизаций.Получить(Организация2).СтранаРегистрации;
Возврат СтруктураВозврата;
КонецФункции
Функция НаименованияНаДату(Организация, ДатаСведений) Экспорт
НаименованияОрганизации = Новый Структура();
НаименованияОрганизации.Вставить("НаименованиеСокращенное", "");
НаименованияОрганизации.Вставить("НаименованиеПолное", "");
НаименованияОрганизации.Вставить("НаименованиеМеждународное", "");
Если НЕ ЗначениеЗаполнено(Организация)
ИЛИ ТипЗнч(Организация) <> Тип("СправочникСсылка.Организации") Тогда
Возврат НаименованияОрганизации;
КонецЕсли;
Если ЗначениеЗаполнено(ДатаСведений) Тогда
Запрос = Новый Запрос();
Запрос.Параметры.Вставить("Организация", Организация);
Запрос.Параметры.Вставить("ДатаСведений", ДатаСведений);
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ИсторияНаименованийОрганизаций.Период) КАК Период,
| ИсторияНаименованийОрганизаций.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ЗначенияНаименований
|ИЗ
| Справочник.Организации.ИсторияНаименований КАК ИсторияНаименованийОрганизаций
|ГДЕ
| ИсторияНаименованийОрганизаций.Ссылка = &Организация
| И ИсторияНаименованийОрганизаций.Период <= &ДатаСведений
|
|СГРУППИРОВАТЬ ПО
| ИсторияНаименованийОрганизаций.Ссылка
|;
|
|
|ВЫБРАТЬ
| ИсторияНаименованийОрганизаций.НаименованиеСокращенное КАК НаименованиеСокращенное,
| ИсторияНаименованийОрганизаций.НаименованиеПолное КАК НаименованиеПолное,
| ИсторияНаименованийОрганизаций.НаименованиеМеждународное КАК НаименованиеМеждународное
|ИЗ
| ЗначенияНаименований КАК ЗначенияНаименований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации.ИсторияНаименований КАК ИсторияНаименованийОрганизаций
| ПО ЗначенияНаименований.Ссылка = ИсторияНаименованийОрганизаций.Ссылка
| И ЗначенияНаименований.Период = ИсторияНаименованийОрганизаций.Период";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
НаименованияОрганизации.НаименованиеСокращенное = Выборка.НаименованиеСокращенное;
НаименованияОрганизации.НаименованиеПолное = Выборка.НаименованиеПолное;
НаименованияОрганизации.НаименованиеМеждународное = Выборка.НаименованиеМеждународное;
Возврат НаименованияОрганизации;
КонецЕсли;
КонецЕсли;
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Организация, "НаименованиеСокращенное, НаименованиеПолное, НаименованиеМеждународное");
НаименованияОрганизации.НаименованиеСокращенное = ЗначенияРеквизитов.НаименованиеСокращенное;
НаименованияОрганизации.НаименованиеПолное = ЗначенияРеквизитов.НаименованиеПолное;
НаименованияОрганизации.НаименованиеМеждународное = ЗначенияРеквизитов.НаименованиеМеждународное;
Возврат НаименованияОрганизации;
КонецФункции
#КонецОбласти
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
ОрганизацииЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Ссылка)";
КонецПроцедуры
Функция РегистрацияВНалоговомОргане(Организация, Знач ДатаАктуальности = Неопределено) Экспорт
Возврат ЗарплатаКадры.РегистрацияВНалоговомОрганеОрганизации(Организация, ДатаАктуальности);
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
ОрганизацииВызовСервера.ОрганизацииОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
#КонецЕсли
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
ОрганизацииВызовСервера.ОрганизацииОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка);
КонецПроцедуры
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
МультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка);
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
МультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область ГрупповоеИзменениеОбъектов
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
Результат.Добавить("Префикс");
Результат.Добавить("КонтактнаяИнформация.*");
Возврат Результат
КонецФункции
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НапечататьПомощникРаботыФаксимильнойПечати") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"НапечататьПомощникРаботыФаксимильнойПечати",
НСтр("ru='Как создать факсимильную подпись и печать?'"),
СформироватьПомощникРаботыФаксимильнойПечати(МассивОбъектов[0], ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Функция СформироватьПомощникРаботыФаксимильнойПечати(Организация, ОбъектыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
Макет = УправлениеПечатью.МакетПечатнойФормы("Справочник.Организации.ПомощникРаботыФаксимильнойПечати");
ОтветственныеЛица = ОтветственныеЛицаСервер.ПолучитьОтветственныеЛицаОрганизации(Организация);
Область = Макет.ПолучитьОбласть("ПоляКЗаполнению");
СтруктураДанныхПодвал = Новый Структура;
СтруктураДанныхПодвал.Вставить("ФИОРуководителя", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ОтветственныеЛица.Руководитель));
СтруктураДанныхПодвал.Вставить("ФИОБухгалтера", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ОтветственныеЛица.ГлавныйБухгалтер));
Область.Параметры.Заполнить(СтруктураДанныхПодвал);
ТабличныйДокумент.Вывести(Область);
ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("Линия"));
ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("Схема"));
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, ОбъектыПечати, Организация);
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
#КонецОбласти
#Область ОбновлениеИнформационнойБазы
Процедура ЗаполнитьКонстантуИспользоватьНесколькоОрганизаций() Экспорт
Если ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций") =
ПолучитьФункциональнуюОпцию("НеИспользоватьНесколькоОрганизаций") Тогда
Константы.ИспользоватьНесколькоОрганизаций.Установить(КоличествоОрганизаций() > 1);
КонецЕсли;
КонецПроцедуры
Функция ДанныеСтранРегистрацииОрганизаций() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка,
| Организации.ОтделениеИностраннойОрганизации КАК ОтделениеИностраннойОрганизации,
| Организации.СтранаРегистрацииИностраннойОрганизации КАК СтранаРегистрацииИностраннойОрганизации,
| ВЫБОР
| КОГДА Организации.СтранаРегистрации <> ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка)
| ТОГДА Организации.СтранаРегистрации
| КОГДА НЕ Организации.ОтделениеИностраннойОрганизации
| И Организации.СтранаРегистрацииИностраннойОрганизации <> ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка)
| ТОГДА Организации.СтранаРегистрацииИностраннойОрганизации
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка)
| КОНЕЦ КАК СтранаРегистрации
|ПОМЕСТИТЬ ВТ_СтраныРегистрацийОрганизаций
|ИЗ
| Справочник.Организации КАК Организации
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ВТ_СтраныРегистрацийОрганизаций.СтранаРегистрации КАК СтранаРегистрации,
| КОЛИЧЕСТВО(ВТ_СтраныРегистрацийОрганизаций.СтранаРегистрации) КАК КоличествоСтраныРегистрации
|ИЗ
| ВТ_СтраныРегистрацийОрганизаций КАК ВТ_СтраныРегистрацийОрганизаций
|ГДЕ
| ВТ_СтраныРегистрацийОрганизаций.СтранаРегистрации <> ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка)
|СГРУППИРОВАТЬ ПО
| ВТ_СтраныРегистрацийОрганизаций.СтранаРегистрации
|
|УПОРЯДОЧИТЬ ПО
| КоличествоСтраныРегистрации УБЫВ";
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.Процедура = "Справочники.Организации.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.Версия = "11.5.24.25";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("86c8d6c4-9ff8-42a8-b31d-1db8918515ba");
Обработчик.Многопоточный = Истина;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.Организации.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
СписокОписаний = Новый Массив;
СписокОписаний.Добавить(НСтр("ru = 'Обновление справочника ""Организации"":'"));
СписокОписаний.Добавить(НСтр("ru = '- Заполнение мультиязычных реквизитов справочника';"));
Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Обычный;
Читаемые = Новый Массив;
Читаемые.Добавить(Метаданные.Справочники.Организации.ПолноеИмя());
Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
Изменяемые = Новый Массив;
Изменяемые.Добавить(Метаданные.Справочники.Организации.ПолноеИмя());
Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
Блокируемые = Новый Массив;
Блокируемые.Добавить(Метаданные.Справочники.Организации.ПолноеИмя());
Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");
КонецПроцедуры
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ПараметрыВыборки = Параметры.ПараметрыВыборки;
ПараметрыВыборки.ПолныеИменаОбъектов = ПустаяСсылка().Метаданные().ПолноеИмя();
ПараметрыВыборки.СпособВыборки = ОбновлениеИнформационнойБазы.СпособВыборкиСсылки();
ИспользуютсяДопЯзыки = Ложь;
Для Каждого ИспользуетсяДопЯзык Из МультиязычностьСервер.СведенияОЯзыках().Используется Цикл
Если ИспользуетсяДопЯзык.Значение = Истина Тогда
ИспользуютсяДопЯзыки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ИспользуютсяДопЯзыки Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| НЕ Организации.Наименование = """"
| И Организации.НаименованиеЯзык1 = """"
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| НЕ Организации.Наименование = """"
| И Организации.НаименованиеЯзык2 = """"";
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Параметры.ОбработкаЗавершена = Ложь;
ПолноеИмяОбъекта = ПустаяСсылка().Метаданные().ПолноеИмя();
ОбновляемыеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры);
Если ОбновляемыеДанные.Количество() = 0 Тогда
Параметры.ОбработкаЗавершена =
ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
Возврат;
КонецЕсли;
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
ИсключенияПриОбновлении = Новый Массив;
СписокОписаний = Новый Массив;
СписокОписаний.Добавить(НСтр("ru = 'Не удалось обработать справочник ""Организации"" по обработчику:'"));
СписокОписаний.Добавить(НСтр("ru = '- Заполнение мультиязычных реквизитов справочника';"));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДляОбновления.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ДанныеДляОбновления КАК ДанныеДляОбновления
|;
|
|
|ВЫБРАТЬ
| ВТ.Ссылка КАК Ссылка,
| Организации.ВерсияДанных КАК ВерсияДанных
|ИЗ
| ВТ КАК ВТ
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО ВТ.Ссылка = Организации.Ссылка";
Запрос.УстановитьПараметр("ДанныеДляОбновления", ОбновляемыеДанные);
Справочник = Запрос.Выполнить().Выбрать();
Пока Справочник.Следующий() Цикл
ПричинаИсключения = 0;
Рекомендация = "";
НачатьТранзакцию();
Попытка
ПричинаИсключения = 1;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта);
ЭлементБлокировки.УстановитьЗначение("Ссылка", Справочник.Ссылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
СправочникОбъект = ОбновлениеИнформационнойБазыУТ.ПроверитьПолучитьОбъект(
Справочник.Ссылка, Справочник.ВерсияДанных, Параметры.Очередь);
ПричинаИсключения = 2;
Рекомендация = НСтр("ru = 'Проверьте данные справочника вручную.'");
ОбъектИзменен = Ложь;
Если СправочникОбъект <> Неопределено Тогда
Если Не ЗначениеЗаполнено(СправочникОбъект.НаименованиеЯзык1) Тогда
СправочникОбъект.НаименованиеЯзык1 = СправочникОбъект.Наименование;
КонецЕсли;
Если Не ЗначениеЗаполнено(СправочникОбъект.НаименованиеЯзык2) Тогда
СправочникОбъект.НаименованиеЯзык2 = СправочникОбъект.Наименование;
КонецЕсли;
ОбъектИзменен = Истина;
КонецЕсли;
ПричинаИсключения = 3;
Если ОбъектИзменен Тогда
ОбновлениеИнформационнойБазы.ЗаписатьДанные(СправочникОбъект);
Иначе
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Справочник.Ссылка);
КонецЕсли;
ОбъектовОбработано = ОбъектовОбработано + 1;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ОбновлениеИнформационнойБазыУТ.СообщитьОНеудачнойОбработке(ИнформацияОбОшибке(), Справочник.Ссылка);
Если ПричинаИсключения = 2 Тогда
ОписаниеПроблемы = ОбновлениеИнформационнойБазыУТ.ПроблемаСДанными(
Справочник.Ссылка, Рекомендация, ИнформацияОбОшибке());
ИсключенияПриОбновлении.Добавить(ОписаниеПроблемы);
ИначеЕсли ПричинаИсключения = 3 Тогда
ОбновлениеИнформационнойБазыУТ.ЗаписатьПлохиеДанные(
ИсключенияПриОбновлении, ОбъектовОбработано, Параметры);
ВызватьИсключение СтрСоединить(СписокОписаний, Символы.ПС);
КонецЕсли;
КонецПопытки;
КонецЦикла;
Параметры.ОбработкаЗавершена =
ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
КонецПроцедуры
Процедура ЗаполнитьКатегориюСтрахователяФизическогоЛица(ПараметрыОбновления = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1000
| Организации.Ссылка КАК Организация
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ЮридическоеФизическоеЛицо = ЗНАЧЕНИЕ(Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо)
| И Организации.КатегорияСтрахователяФизическогоЛица = ЗНАЧЕНИЕ(Перечисление.КатегорииСтрахователейФизическихЛицСФР.ПустаяСсылка)";
Если ПараметрыОбновления = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПЕРВЫЕ 1000","");
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина);
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Ложь);
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, "Справочник.Организации", "Ссылка", Выборка.Организация) Тогда
Продолжить;
КонецЕсли;
ОрганизацияОбъект = Выборка.Организация.ПолучитьОбъект();
ОрганизацияОбъект.КатегорияСтрахователяФизическогоЛица = Перечисления.КатегорииСтрахователейФизическихЛицСФР.ИП01;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОрганизацияОбъект);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли