This commit is contained in:
Компания 1С committed 2019-06-28 12:59:00 +03:00
1 parent 14d622a075
commit 796fbbc2fe
45 files changed
+2144 -10662

No files matched your search

@@ -631,12 +631,8 @@
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
ПараметрыПланирования = МодульУправлениеДоступомСлужебный.ПараметрыПланированияОбновленияДоступа(); МодульУправлениеДоступомСлужебный.ЗапланироватьОбновлениеПараметровОграниченияДоступа(
ПараметрыПланирования.РазрешенныеКлючиДоступа = Ложь; "ОбновитьПоследнююВерсиюРасширений");
ПараметрыПланирования.Описание = "ОбновитьПоследнююВерсиюРасширений";
МодульУправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступа(
ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Справочник.ИдентификаторыОбъектовМетаданных"),
ПараметрыПланирования);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -139,7 +139,7 @@
// то записываем их как есть, остальные периоды обновляем по шаблону. // то записываем их как есть, остальные периоды обновляем по шаблону.
Если МодифицированностьРезультата Тогда Если МодифицированностьРезультата Тогда
Справочники.Календари.ЗаписатьДанныеГрафикаВРегистр(ТекущийОбъект.Ссылка, ДниГрафика, Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31), Истина); РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(ТекущийОбъект.Ссылка, ДниГрафика, Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31), Истина);
КонецЕсли; КонецЕсли;
ЗаписатьПризнакРучногоРедактирования(ТекущийОбъект, НомерГода); ЗаписатьПризнакРучногоРедактирования(ТекущийОбъект, НомерГода);
@@ -700,7 +700,7 @@
&НаСервере &НаСервере
Процедура ЗаполнитьПоШаблонуНаСервере(СохранятьРучноеРедактирование = Ложь) Процедура ЗаполнитьПоШаблонуНаСервере(СохранятьРучноеРедактирование = Ложь)
ДниВключенныеВГрафик = Справочники.Календари.ДниВключенныеВГрафик( ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик(
Объект.ДатаНачала, Объект.ДатаНачала,
Объект.СпособЗаполнения, Объект.СпособЗаполнения,
Объект.ШаблонЗаполнения, Объект.ШаблонЗаполнения,
@@ -765,13 +765,13 @@
КонецЕсли; КонецЕсли;
ДниГрафика = Новый ФиксированноеСоответствие( ДниГрафика = Новый ФиксированноеСоответствие(
Справочники.Календари.ПрочитатьДанныеГрафикаИзРегистра(ГрафикСсылка, НомерТекущегоГода)); РегистрыСведений.КалендарныеГрафики.ПрочитатьДанныеГрафикаИзРегистра(ГрафикСсылка, НомерТекущегоГода));
ПрочитатьПризнакРучногоРедактирования(Объект, НомерТекущегоГода); ПрочитатьПризнакРучногоРедактирования(Объект, НомерТекущегоГода);
// Если нет ручных корректировок и данных тоже нет, то формируем результат по шаблону за выбранный год. // Если нет ручных корректировок и данных тоже нет, то формируем результат по шаблону за выбранный год.
Если ДниГрафика.Количество() = 0 И ДниИзмененные.Количество() = 0 Тогда Если ДниГрафика.Количество() = 0 И ДниИзмененные.Количество() = 0 Тогда
ДниВключенныеВГрафик = Справочники.Календари.ДниВключенныеВГрафик( ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик(
Объект.ДатаНачала, Объект.ДатаНачала,
Объект.СпособЗаполнения, Объект.СпособЗаполнения,
Объект.ШаблонЗаполнения, Объект.ШаблонЗаполнения,
@@ -839,7 +839,8 @@
&НаСервере &НаСервере
Процедура ЗаписатьДанныеГрафикаРаботыНаГод(НомерГода) Процедура ЗаписатьДанныеГрафикаРаботыНаГод(НомерГода)
Справочники.Календари.ЗаписатьДанныеГрафикаВРегистр(Объект.Ссылка, ДниГрафика, Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31), Истина); РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(
Объект.Ссылка, ДниГрафика, Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31), Истина);
ЗаписатьПризнакРучногоРедактирования(Объект, НомерГода); ЗаписатьПризнакРучногоРедактирования(Объект, НомерГода);
КонецПроцедуры КонецПроцедуры
@@ -1,602 +0,0 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
// Функция читает данные графика работы из регистра.
//
// Параметры:
// ГрафикРаботы - Ссылка на текущий элемент справочника.
// НомерГода - Номер года, за который необходимо прочитать график.
//
// Возвращаемое значение - соответствие, где Ключ - дата.
//
Функция ПрочитатьДанныеГрафикаИзРегистра(ГрафикРаботы, НомерГода) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| КалендарныеГрафики.ДатаГрафика КАК ДатаКалендаря
|ИЗ
| РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
|ГДЕ
| КалендарныеГрафики.Календарь = &ГрафикРаботы
| И КалендарныеГрафики.Год = &ТекущийГод
| И КалендарныеГрафики.ДеньВключенВГрафик
|
|УПОРЯДОЧИТЬ ПО
| ДатаКалендаря";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);
Запрос.УстановитьПараметр("ТекущийГод", НомерГода);
ДниВключенныеВГрафик = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДниВключенныеВГрафик.Вставить(Выборка.ДатаКалендаря, Истина);
КонецЦикла;
Возврат ДниВключенныеВГрафик;
КонецФункции
// Процедура записывает данные графика в регистр.
//
// Параметры:
// ГрафикРаботы - Ссылка на текущий элемент справочника.
// НомерГода - Номер года, за который необходимо записать график.
// ДниВключенныеВГрафик - соответствие даты и данных к ней относящихся.
//
// Возвращаемое значение
// Нет
//
Процедура ЗаписатьДанныеГрафикаВРегистр(ГрафикРаботы, ДниВключенныеВГрафик, ДатаНачала, ДатаОкончания, ЗамещатьРучныеИзменения = Ложь) Экспорт
НаборДни = РегистрыСведений.КалендарныеГрафики.СоздатьНаборЗаписей();
НаборДни.Отбор.Календарь.Установить(ГрафикРаботы);
// Запись оптимальнее выполнять по годам.
// Выбираем используемые годы
// Для каждого года
// - считываем набор,
// - модифицируем его с учетом записываемых данных
// - записываем.
ДанныеПоГодам = Новый Соответствие;
ДатаДня = ДатаНачала;
Пока ДатаДня <= ДатаОкончания Цикл
ДанныеПоГодам.Вставить(Год(ДатаДня), Истина);
ДатаДня = ДатаДня + 86400;
КонецЦикла;
РучныеИзменения = Неопределено;
Если Не ЗамещатьРучныеИзменения Тогда
РучныеИзменения = РучныеИзмененияГрафика(ГрафикРаботы);
КонецЕсли;
// Обрабатываем данные по годам.
Для Каждого КлючИЗначение Из ДанныеПоГодам Цикл
Год = КлючИЗначение.Ключ;
// Считываем наборы на год
НаборДни.Отбор.Год.Установить(Год);
НаборДни.Прочитать();
// Заполняем содержимое набора в соответствие по датам для быстрого доступа.
СтрокиНабораДни = Новый Соответствие;
Для Каждого СтрокаНабора Из НаборДни Цикл
СтрокиНабораДни.Вставить(СтрокаНабора.ДатаГрафика, СтрокаНабора);
КонецЦикла;
НачалоГода = Дата(Год, 1, 1);
КонецГода = Дата(Год, 12, 31);
НачалоОбхода = ?(ДатаНачала > НачалоГода, ДатаНачала, НачалоГода);
КонецОбхода = ?(ДатаОкончания < КонецГода, ДатаОкончания, КонецГода);
// Для периода обхода данные в наборе должны быть заменены.
ДатаДня = НачалоОбхода;
Пока ДатаДня <= КонецОбхода Цикл
Если РучныеИзменения <> Неопределено И РучныеИзменения[ДатаДня] <> Неопределено Тогда
// Оставляем без изменений в наборе ручные корректировки.
ДатаДня = ДатаДня + 86400;
Продолжить;
КонецЕсли;
// Если строки на дату нет в наборе - создаем ее.
СтрокаНабораДни = СтрокиНабораДни[ДатаДня];
Если СтрокаНабораДни = Неопределено Тогда
СтрокаНабораДни = НаборДни.Добавить();
СтрокаНабораДни.Календарь = ГрафикРаботы;
СтрокаНабораДни.Год = Год;
СтрокаНабораДни.ДатаГрафика = ДатаДня;
СтрокиНабораДни.Вставить(ДатаДня, СтрокаНабораДни);
КонецЕсли;
// Если день включен в график, то заполним его интервалы.
ДанныеДня = ДниВключенныеВГрафик.Получить(ДатаДня);
Если ДанныеДня = Неопределено Тогда
// Удаляем строку из набора, если день - нерабочий.
НаборДни.Удалить(СтрокаНабораДни);
СтрокиНабораДни.Удалить(ДатаДня);
Иначе
СтрокаНабораДни.ДеньВключенВГрафик = Истина;
КонецЕсли;
ДатаДня = ДатаДня + 86400;
КонецЦикла;
// Заполняем вторичные данные для оптимизации расчетов по календарям.
ДатаОбхода = НачалоГода;
КоличествоДнейВГрафикеСНачалаГода = 0;
Пока ДатаОбхода <= КонецГода Цикл
СтрокаНабораДни = СтрокиНабораДни[ДатаОбхода];
Если СтрокаНабораДни <> Неопределено Тогда
// День включен в график
КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода + 1;
Иначе
// День не включен в график
СтрокаНабораДни = НаборДни.Добавить();
СтрокаНабораДни.Календарь = ГрафикРаботы;
СтрокаНабораДни.Год = Год;
СтрокаНабораДни.ДатаГрафика = ДатаОбхода;
КонецЕсли;
СтрокаНабораДни.КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода;
ДатаОбхода = ДатаОбхода + 86400;
КонецЦикла;
НаборДни.Записать();
КонецЦикла;
КонецПроцедуры
// Выполняет обновление графиков работы по данным производственных календарей,
// на основании которых они заполняются.
//
// Параметры:
// - УсловияОбновления - таблица значений с колонками.
// - КодПроизводственногоКалендаря - код производственного календаря, данные которого изменились,
// - Год - год, за который нужно обновить данные.
//
Процедура ОбновитьГрафикиРаботыПоДаннымПроизводственныхКалендарей(УсловияОбновления) Экспорт
// Выявим графики, которые нужно обновить
// получаем данные этих графиков
// последовательно обновляем за каждый год.
ТекстЗапроса =
"ВЫБРАТЬ
| УсловияОбновления.КодПроизводственногоКалендаря,
| УсловияОбновления.Год,
| ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, УсловияОбновления.Год - 1) КАК НачалоГода,
| ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 12, 31), ГОД, УсловияОбновления.Год - 1) КАК КонецГода
|ПОМЕСТИТЬ УсловияОбновления
|ИЗ
| &УсловияОбновления КАК УсловияОбновления
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.Ссылка КАК ГрафикРаботы,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники,
| Календари.ДатаНачала,
| Календари.ДатаОкончания
|ПОМЕСТИТЬ ВТГрафикиРаботыЗависимыеОтКалендарей
|ИЗ
| Справочник.Календари КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари
| ПО (ПроизводственныеКалендари.Ссылка = Календари.ПроизводственныйКалендарь)
| И (Календари.СпособЗаполнения = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияГрафикаРаботы.ПоНеделям))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Календари.Ссылка,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники,
| Календари.ДатаНачала,
| Календари.ДатаОкончания
|ИЗ
| Справочник.Календари КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари
| ПО (ПроизводственныеКалендари.Ссылка = Календари.ПроизводственныйКалендарь)
| И (Календари.СпособЗаполнения = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияГрафикаРаботы.ПоЦикламПроизвольнойДлины))
| И (Календари.УчитыватьПраздники)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| УсловияОбновления.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| ВЫБОР
| КОГДА Календари.ДатаНачала < УсловияОбновления.НачалоГода
| ТОГДА УсловияОбновления.НачалоГода
| ИНАЧЕ Календари.ДатаНачала
| КОНЕЦ КАК ДатаНачала,
| ВЫБОР
| КОГДА Календари.ДатаОкончания > УсловияОбновления.КонецГода
| ТОГДА УсловияОбновления.КонецГода
| ИНАЧЕ Календари.ДатаОкончания
| КОНЕЦ КАК ДатаОкончания,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
|ПОМЕСТИТЬ ВТГрафикиРаботыПоУсловиюОбновления
|ИЗ
| ВТГрафикиРаботыЗависимыеОтКалендарей КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ УсловияОбновления КАК УсловияОбновления
| ПО (УсловияОбновления.КодПроизводственногоКалендаря = Календари.ПроизводственныйКалендарь.Код)
| И Календари.ДатаНачала <= УсловияОбновления.КонецГода
| И Календари.ДатаОкончания >= УсловияОбновления.НачалоГода
| И (Календари.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| УсловияОбновления.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| ВЫБОР
| КОГДА Календари.ДатаНачала < УсловияОбновления.НачалоГода
| ТОГДА УсловияОбновления.НачалоГода
| ИНАЧЕ Календари.ДатаНачала
| КОНЕЦ,
| УсловияОбновления.КонецГода,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
|ИЗ
| ВТГрафикиРаботыЗависимыеОтКалендарей КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ УсловияОбновления КАК УсловияОбновления
| ПО (УсловияОбновления.КодПроизводственногоКалендаря = Календари.ПроизводственныйКалендарь.Код)
| И Календари.ДатаНачала <= УсловияОбновления.КонецГода
| И (Календари.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1))
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| Календари.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаНачала,
| Календари.ДатаОкончания,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
|ПОМЕСТИТЬ ВТОбновляемыеГрафикиРаботы
|ИЗ
| ВТГрафикиРаботыПоУсловиюОбновления КАК Календари
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РучныеИзмененияГрафиковРаботы КАК РучныеИзмененияПоВсемГодам
| ПО (РучныеИзмененияПоВсемГодам.ГрафикРаботы = Календари.ГрафикРаботы)
| И (РучныеИзмененияПоВсемГодам.Год = 0)
|ГДЕ
| РучныеИзмененияПоВсемГодам.ГрафикРаботы ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОбновляемыеГрафикиРаботы.ГрафикРаботы,
| ОбновляемыеГрафикиРаботы.Год,
| ОбновляемыеГрафикиРаботы.СпособЗаполнения,
| ОбновляемыеГрафикиРаботы.ПроизводственныйКалендарь,
| ОбновляемыеГрафикиРаботы.ДатаНачала,
| ОбновляемыеГрафикиРаботы.ДатаОкончания,
| ОбновляемыеГрафикиРаботы.ДатаОтсчета,
| ОбновляемыеГрафикиРаботы.УчитыватьПраздники
|ИЗ
| ВТОбновляемыеГрафикиРаботы КАК ОбновляемыеГрафикиРаботы
|
|УПОРЯДОЧИТЬ ПО
| ОбновляемыеГрафикиРаботы.ГрафикРаботы,
| ОбновляемыеГрафикиРаботы.Год
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ШаблонЗаполнения.Ссылка КАК ГрафикРаботы,
| ШаблонЗаполнения.НомерСтроки КАК НомерСтроки,
| ШаблонЗаполнения.ДеньВключенВГрафик
|ИЗ
| Справочник.Календари.ШаблонЗаполнения КАК ШаблонЗаполнения
|ГДЕ
| ШаблонЗаполнения.Ссылка В
| (ВЫБРАТЬ
| ВТОбновляемыеГрафикиРаботы.ГрафикРаботы
| ИЗ
| ВТОбновляемыеГрафикиРаботы)
|
|УПОРЯДОЧИТЬ ПО
| ГрафикРаботы,
| НомерСтроки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РасписаниеРаботы.Ссылка КАК ГрафикРаботы,
| РасписаниеРаботы.НомерДня КАК НомерДня,
| РасписаниеРаботы.ВремяНачала,
| РасписаниеРаботы.ВремяОкончания
|ИЗ
| Справочник.Календари.РасписаниеРаботы КАК РасписаниеРаботы
|ГДЕ
| РасписаниеРаботы.Ссылка В
| (ВЫБРАТЬ
| ВТОбновляемыеГрафикиРаботы.ГрафикРаботы
| ИЗ
| ВТОбновляемыеГрафикиРаботы)
|
|УПОРЯДОЧИТЬ ПО
| ГрафикРаботы,
| РасписаниеРаботы.НомерДня";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("УсловияОбновления", УсловияОбновления);
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ВыборкаПоГрафикам = РезультатыЗапроса[РезультатыЗапроса.ВГраница() - 2].Выбрать();
ВыборкаПоШаблону = РезультатыЗапроса[РезультатыЗапроса.ВГраница() - 1].Выбрать();
ВыборкаПоРасписанию = РезультатыЗапроса[РезультатыЗапроса.ВГраница()].Выбрать();
ШаблонЗаполнения = Новый ТаблицаЗначений;
ШаблонЗаполнения.Колонки.Добавить("ДеньВключенВГрафик", Новый ОписаниеТипов("Булево"));
РасписаниеРаботы = Новый ТаблицаЗначений;
РасписаниеРаботы.Колонки.Добавить("НомерДня", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(7)));
РасписаниеРаботы.Колонки.Добавить("ВремяНачала", Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Время)));
РасписаниеРаботы.Колонки.Добавить("ВремяОкончания", Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Время)));
Пока ВыборкаПоГрафикам.СледующийПоЗначениюПоля("ГрафикРаботы") Цикл
ШаблонЗаполнения.Очистить();
Пока ВыборкаПоШаблону.НайтиСледующий(ВыборкаПоГрафикам.ГрафикРаботы, "ГрафикРаботы") Цикл
НоваяСтрока = ШаблонЗаполнения.Добавить();
НоваяСтрока.ДеньВключенВГрафик = ВыборкаПоШаблону.ДеньВключенВГрафик;
КонецЦикла;
РасписаниеРаботы.Очистить();
Пока ВыборкаПоРасписанию.НайтиСледующий(ВыборкаПоГрафикам.ГрафикРаботы, "ГрафикРаботы") Цикл
НовыйИнтервал = РасписаниеРаботы.Добавить();
НовыйИнтервал.НомерДня = ВыборкаПоРасписанию.НомерДня;
НовыйИнтервал.ВремяНачала = ВыборкаПоРасписанию.ВремяНачала;
НовыйИнтервал.ВремяОкончания = ВыборкаПоРасписанию.ВремяОкончания;
КонецЦикла;
Пока ВыборкаПоГрафикам.СледующийПоЗначениюПоля("ДатаНачала") Цикл
// Если дата окончания не указана, она будет подобрана по производственному календарю.
ДатаОкончанияЗаполнения = ВыборкаПоГрафикам.ДатаОкончания;
ДниВключенныеВГрафик = ДниВключенныеВГрафик(
ВыборкаПоГрафикам.ДатаНачала,
ВыборкаПоГрафикам.СпособЗаполнения,
ШаблонЗаполнения,
ДатаОкончанияЗаполнения,
ВыборкаПоГрафикам.ПроизводственныйКалендарь,
ВыборкаПоГрафикам.УчитыватьПраздники,
ВыборкаПоГрафикам.ДатаОтсчета);
ЗаписатьДанныеГрафикаВРегистр(ВыборкаПоГрафикам.ГрафикРаботы, ДниВключенныеВГрафик, ВыборкаПоГрафикам.ДатаНачала, ДатаОкончанияЗаполнения);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
// Составляет коллекцию дат, являющихся рабочими с учетом производственного календаря,
// способа заполнения и других настроек.
//
// Параметры:
// - Год - номер года
// - ПроизводственныйКалендарь - производственный календарь, по которому определяются дни.
// - СпособЗаполнения - способ заполнения.
// - ШаблонЗаполнения - шаблон заполнения по дням.
// - УчитыватьПраздники - булево, если Истина, то дни, выпадающие на праздники, будут исключаться.
// - ДатаНачала - необязательный, указывается только для заполнения по циклам произвольной длины.
//
// Возвращаемое значение - соответствие, где Ключ - дата, значение массив структур с описанием интервалов времени для
// указанной даты.
//
Функция ДниВключенныеВГрафик(ДатаНачала, СпособЗаполнения, ШаблонЗаполнения, ДатаОкончания, ПроизводственныйКалендарь, УчитыватьПраздники, Знач ДатаОтсчета = Неопределено) Экспорт
ДниВключенныеВГрафик = Новый Соответствие;
Если ШаблонЗаполнения.Количество() = 0 Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДатаОкончания) Тогда
// Если дата окончания не указана, то заполняем до конца года.
ДатаОкончания = КонецГода(ДатаНачала);
Если ЗначениеЗаполнено(ПроизводственныйКалендарь) Тогда
// Если указан производственный календарь, то заполняем до "конца" его заполненности.
ДатаОкончанияЗаполнения = Справочники.ПроизводственныеКалендари.ДатаОкончанияЗаполненияПроизводственногоКалендаря(ПроизводственныйКалендарь);
Если ДатаОкончанияЗаполнения <> Неопределено
И ДатаОкончанияЗаполнения > ДатаОкончания Тогда
ДатаОкончания = ДатаОкончанияЗаполнения;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Заполнение данных производится по годам.
ТекущийГод = Год(ДатаНачала);
Пока ТекущийГод <= Год(ДатаОкончания) Цикл
ДатаНачалаВГоду = ДатаНачала;
ДатаОкончанияВГоду = ДатаОкончания;
СкорректироватьДатыНачалаОкончания(ТекущийГод, ДатаНачалаВГоду, ДатаОкончанияВГоду);
// Получаем данные графика за год.
Если СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям Тогда
ДниЗаГод = ДниВключенныеВГрафикПоНеделям(ТекущийГод, ПроизводственныйКалендарь, ШаблонЗаполнения, УчитыватьПраздники, ДатаНачалаВГоду, ДатаОкончанияВГоду);
Иначе
ДниЗаГод = ДниВключенныеВГрафикПроизвольнойДлины(ТекущийГод, ПроизводственныйКалендарь, ШаблонЗаполнения, УчитыватьПраздники, ДатаОтсчета, ДатаНачалаВГоду, ДатаОкончанияВГоду);
КонецЕсли;
// Дополняем общую коллекцию
Для Каждого КлючИЗначение Из ДниЗаГод Цикл
ДниВключенныеВГрафик.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
ТекущийГод = ТекущийГод + 1;
КонецЦикла;
Возврат ДниВключенныеВГрафик;
КонецФункции
Функция ДниВключенныеВГрафикПоНеделям(Год, ПроизводственныйКалендарь, ШаблонЗаполнения, УчитыватьПраздники, Знач ДатаНачала = Неопределено, Знач ДатаОкончания = Неопределено)
// Заполнение графика работы по неделям.
ДниВключенныеВГрафик = Новый Соответствие;
ЗаполнятьПоПроизводственномуКалендарю = ЗначениеЗаполнено(ПроизводственныйКалендарь);
ДнейВГоду = ДеньГода(Дата(Год, 12, 31));
ДанныеПроизводственногоКалендаря = Справочники.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, Год);
Если ЗаполнятьПоПроизводственномуКалендарю
И ДанныеПроизводственногоКалендаря.Количество() <> ДнейВГоду Тогда
// Если производственный календарь указан, но заполнен неправильно, заполнение по неделям не поддерживается.
Возврат ДниВключенныеВГрафик;
КонецЕсли;
ДанныеПроизводственногоКалендаря.Индексы.Добавить("Дата");
ДлинаСуток = 24 * 3600;
ДатаДня = ДатаНачала;
Пока ДатаДня <= ДатаОкончания Цикл
ПраздничныйДень = Ложь;
НерабочийДень = Ложь;
НомерДня = ДеньНедели(ДатаДня);
Если ЗаполнятьПоПроизводственномуКалендарю И УчитыватьПраздники Тогда
ДанныеДня = ДанныеПроизводственногоКалендаря.НайтиСтроки(Новый Структура("Дата", ДатаДня))[0];
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда
НомерДня = 6;
ИначеЕсли ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда
НомерДня = 7;
Иначе
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник Тогда
ПраздничныйДень = Истина;
ИначеЕсли ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий Тогда
НерабочийДень = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не ПраздничныйДень И Не НерабочийДень Тогда
СтрокаДня = ШаблонЗаполнения[НомерДня - 1];
Если СтрокаДня.ДеньВключенВГрафик Тогда
ДниВключенныеВГрафик.Вставить(ДатаДня, Истина);
КонецЕсли;
КонецЕсли;
ДатаДня = ДатаДня + ДлинаСуток;
КонецЦикла;
Возврат ДниВключенныеВГрафик;
КонецФункции
Функция ДниВключенныеВГрафикПроизвольнойДлины(Год, ПроизводственныйКалендарь, ШаблонЗаполнения, УчитыватьПраздники, ДатаОтсчета, Знач ДатаНачала = Неопределено, Знач ДатаОкончания = Неопределено)
ДниВключенныеВГрафик = Новый Соответствие;
ДлинаСуток = 24 * 3600;
ДатаДня = ДатаОтсчета;
Пока ДатаДня <= ДатаОкончания Цикл
Для Каждого СтрокаДня Из ШаблонЗаполнения Цикл
Если СтрокаДня.ДеньВключенВГрафик
И ДатаДня >= ДатаНачала Тогда
ДниВключенныеВГрафик.Вставить(ДатаДня, Истина);
КонецЕсли;
ДатаДня = ДатаДня + ДлинаСуток;
КонецЦикла;
КонецЦикла;
Если Не УчитыватьПраздники Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
// Исключаем даты праздничных дней.
ДанныеПроизводственногоКалендаря = Справочники.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, Год);
Если ДанныеПроизводственногоКалендаря.Количество() = 0 Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
ОтборСтрок = Новый Структура("ВидДня");
ОтборСтрок.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник;
ДанныеПраздничныхДней = ДанныеПроизводственногоКалендаря.НайтиСтроки(ОтборСтрок);
Для Каждого ДанныеДня Из ДанныеПраздничныхДней Цикл
ДниВключенныеВГрафик.Удалить(ДанныеДня.Дата);
КонецЦикла;
ОтборСтрок.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий;
ДанныеПраздничныхДней = ДанныеПроизводственногоКалендаря.НайтиСтроки(ОтборСтрок);
Для Каждого ДанныеДня Из ДанныеПраздничныхДней Цикл
ДниВключенныеВГрафик.Удалить(ДанныеДня.Дата);
КонецЦикла;
Возврат ДниВключенныеВГрафик;
КонецФункции
Процедура СкорректироватьДатыНачалаОкончания(Год, ДатаНачала, ДатаОкончания)
НачалоГода = Дата(Год, 1, 1);
КонецГода = Дата(Год, 12, 31);
Если ДатаНачала <> Неопределено Тогда
ДатаНачала = Макс(ДатаНачала, НачалоГода);
Иначе
ДатаНачала = НачалоГода;
КонецЕсли;
Если ДатаОкончания <> Неопределено Тогда
ДатаОкончания = Мин(ДатаОкончания, КонецГода);
Иначе
ДатаОкончания = КонецГода;
КонецЕсли;
КонецПроцедуры
// Определяет даты ручных изменений указанного графика.
//
Функция РучныеИзмененияГрафика(ГрафикРаботы)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| РучныеИзменения.ГрафикРаботы,
| РучныеИзменения.Год,
| РучныеИзменения.ДатаГрафика,
| ЕСТЬNULL(КалендарныеГрафики.ДеньВключенВГрафик, ЛОЖЬ) КАК ДеньВключенВГрафик
|ИЗ
| РегистрСведений.РучныеИзмененияГрафиковРаботы КАК РучныеИзменения
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
| ПО (КалендарныеГрафики.Календарь = РучныеИзменения.ГрафикРаботы)
| И (КалендарныеГрафики.Год = РучныеИзменения.Год)
| И (КалендарныеГрафики.ДатаГрафика = РучныеИзменения.ДатаГрафика)
|ГДЕ
| РучныеИзменения.ГрафикРаботы = &ГрафикРаботы
| И РучныеИзменения.ДатаГрафика <> ДАТАВРЕМЯ(1, 1, 1)");
Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);
Выборка = Запрос.Выполнить().Выбрать();
РучныеИзменения = Новый Соответствие;
Пока Выборка.Следующий() Цикл
РучныеИзменения.Вставить(Выборка.ДатаГрафика, Выборка.ДеньВключенВГрафик);
КонецЦикла;
Возврат РучныеИзменения;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -54,7 +54,7 @@
// Если дата окончания не указана, она будет подобрана по производственному календарю. // Если дата окончания не указана, она будет подобрана по производственному календарю.
ДатаОкончанияЗаполнения = ДатаОкончания; ДатаОкончанияЗаполнения = ДатаОкончания;
ДниВключенныеВГрафик = Справочники.Календари.ДниВключенныеВГрафик( ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик(
ДатаНачала, ДатаНачала,
СпособЗаполнения, СпособЗаполнения,
ШаблонЗаполнения, ШаблонЗаполнения,
@@ -63,7 +63,7 @@
УчитыватьПраздники, УчитыватьПраздники,
ДатаОтсчета); ДатаОтсчета);
Справочники.Календари.ЗаписатьДанныеГрафикаВРегистр( РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(
Ссылка, ДниВключенныеВГрафик, ДатаНачала, ДатаОкончанияЗаполнения); Ссылка, ДниВключенныеВГрафик, ДатаНачала, ДатаОкончанияЗаполнения);
КонецПроцедуры КонецПроцедуры
@@ -280,10 +280,18 @@
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Свойства_ВыборРеквизитаОбъекта" Тогда Если ИмяСобытия = "Свойства_ВыборРеквизитаОбъекта" Тогда
ТекущаяСтрока = ЗависимостиРеквизитов.НайтиПоИдентификатору(Элементы.ЗависимостиРеквизитов.ТекущаяСтрока); ТекущаяСтрока = ЗависимостиРеквизитов.НайтиПоИдентификатору(Элементы.ЗависимостиРеквизитов.ТекущаяСтрока);
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Реквизит", Параметр.Реквизит);
НайденныеСтроки = ЗависимостиРеквизитов.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
Элементы.ЗависимостиРеквизитов.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор();
ЗависимостиРеквизитов.Удалить(ТекущаяСтрока);
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, Параметр); ЗаполнитьЗначенияСвойств(ТекущаяСтрока, Параметр);
ЗависимостиРеквизитовУстановитьОграничениеТиповДляЗначения(); ЗависимостиРеквизитовУстановитьОграничениеТиповДляЗначения();
ТекущаяСтрока.ЗависимоеСвойство = НастраиваемоеСвойство; ТекущаяСтрока.ЗависимоеСвойство = НастраиваемоеСвойство;
ТекущаяСтрока.Условие = "Равно"; ТекущаяСтрока.Условие = "Равно";
ТекущаяСтрока.Значение = ТекущаяСтрока.ТипЗначения.ПривестиЗначение(Неопределено); ТекущаяСтрока.Значение = ТекущаяСтрока.ТипЗначения.ПривестиЗначение(Неопределено);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -1186,7 +1186,7 @@
</columns> </columns>
</attributes> </attributes>
<attributes> <attributes>
<name>Фильтр</name> <name>ОтображаемыеИсправления</name>
<id>3</id> <id>3</id>
<valueType/> <valueType/>
<view> <view>
@@ -22,7 +22,7 @@
ВызватьИсключение НСтр("ru = 'Текущий режим работы не поддерживается.'"); ВызватьИсключение НСтр("ru = 'Текущий режим работы не поддерживается.'");
КонецЕсли; КонецЕсли;
Фильтр = Параметры.Исправления; ОтображаемыеИсправления = Параметры.Исправления;
Если ОбщегоНазначения.ЭтоВебКлиент() Если ОбщегоНазначения.ЭтоВебКлиент()
Или ОбщегоНазначения.РазделениеВключено() Или ОбщегоНазначения.РазделениеВключено()
@@ -90,7 +90,7 @@
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
Если Фильтр <> Неопределено И Фильтр.НайтиПоЗначению(Расширение.Имя) = Неопределено Тогда Если ОтображаемыеИсправления <> Неопределено И ОтображаемыеИсправления.НайтиПоЗначению(Расширение.Имя) = Неопределено Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -2404,187 +2404,242 @@
КонецЕсли; КонецЕсли;
ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 1 ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 1
| &ПредставлениеМуниципальный КАК ТипАдреса, | ЕСТЬNULL(СвязиАдресныхОбъектов.МуниципальныйРодительскийИдентификатор, АдресныеОбъекты.МуниципальныйРодительскийИдентификатор) КАК РодительскийИдентификаторСвязи,
| ВЫБОР | АдресныеОбъекты.Наименование КАК НаименованиеУровень0,
| КОГДА НЕ АдресныеОбъектыУровень5.Наименование ЕСТЬ NULL | АдресныеОбъекты.Сокращение КАК СокращениеУровень0,
| ТОГДА АдресныеОбъектыУровень5.Наименование + "" "" + АдресныеОбъектыУровень5.Сокращение + "", "" | АдресныеОбъекты.Идентификатор КАК ИдентификаторУровень0,
| ИНАЧЕ """" | АдресныеОбъекты.КодСубъектаРФ КАК КодСубъектаРФ,
| КОНЕЦ + ВЫБОР | АдресныеОбъекты.КодКЛАДР КАК КодКЛАДР,
| КОГДА НЕ АдресныеОбъектыУровень4.Наименование ЕСТЬ NULL | АдресныеОбъекты.Уровень КАК Уровень0,
| ТОГДА АдресныеОбъектыУровень4.Наименование + "" "" + АдресныеОбъектыУровень4.Сокращение + "", "" | АдресныеОбъекты.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения
| ИНАЧЕ """" |ПОМЕСТИТЬ АдресныеОбъекты0
| КОНЕЦ + ВЫБОР |ИЗ
| КОГДА НЕ АдресныеОбъектыУровень3.Наименование ЕСТЬ NULL | РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
| ТОГДА АдресныеОбъектыУровень3.Наименование + "" "" + АдресныеОбъектыУровень3.Сокращение + "", "" | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиАдресныхОбъектов КАК СвязиАдресныхОбъектов
| ИНАЧЕ """" | ПО АдресныеОбъекты.Идентификатор = СвязиАдресныхОбъектов.Идентификатор
| КОНЕЦ + ВЫБОР |ГДЕ
| КОГДА НЕ АдресныеОбъектыУровень2.Наименование ЕСТЬ NULL | АдресныеОбъекты.Идентификатор = &Идентификатор
| ТОГДА АдресныеОбъектыУровень2.Наименование + "" "" + АдресныеОбъектыУровень2.Сокращение + "", "" |;
| ИНАЧЕ """" |
| КОНЕЦ + ВЫБОР |////////////////////////////////////////////////////////////////////////////////
| КОГДА НЕ АдресныеОбъектыУровень1.Наименование ЕСТЬ NULL |ВЫБРАТЬ ПЕРВЫЕ 1
| ТОГДА АдресныеОбъектыУровень1.Наименование + "" "" + АдресныеОбъектыУровень1.Сокращение + "", "" | ЕСТЬNULL(СвязиАдресныхОбъектов.МуниципальныйРодительскийИдентификатор, АдресныеОбъекты.МуниципальныйРодительскийИдентификатор) КАК РодительскийИдентификаторСвязи,
| ИНАЧЕ """" | ЕСТЬNULL(АдресныеОбъекты.Наименование, """") КАК НаименованиеУровень1,
| КОНЕЦ + АдресныеОбъектыУровень0.Наименование + "" "" + АдресныеОбъектыУровень0.Сокращение КАК Представление, | ЕСТЬNULL(АдресныеОбъекты.Сокращение, """") КАК СокращениеУровень1,
| ЕСТЬNULL(АдресныеОбъектыУровень0.Наименование, """") КАК НаименованиеУровень0, | АдресныеОбъекты.Идентификатор КАК ИдентификаторУровень1,
| ЕСТЬNULL(АдресныеОбъектыУровень0.Сокращение, """") КАК СокращениеУровень0, | АдресныеОбъекты.Уровень КАК Уровень1,
| ЕСТЬNULL(АдресныеОбъектыУровень0.Идентификатор, """") КАК ИдентификаторУровень0, | АдресныеОбъекты0.НаименованиеУровень0 КАК НаименованиеУровень0,
| АдресныеОбъектыУровень0.КодСубъектаРФ КАК КодСубъектаРФ, | АдресныеОбъекты0.СокращениеУровень0 КАК СокращениеУровень0,
| АдресныеОбъектыУровень0.КодКЛАДР КАК КодКЛАДР, | АдресныеОбъекты0.ИдентификаторУровень0 КАК ИдентификаторУровень0,
| АдресныеОбъектыУровень0.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения, | АдресныеОбъекты0.Уровень0 КАК Уровень0,
| АдресныеОбъектыУровень0.Уровень КАК Уровень0, | АдресныеОбъекты0.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения,
| ЕСТЬNULL(АдресныеОбъектыУровень1.Наименование, """") КАК НаименованиеУровень1, | АдресныеОбъекты0.КодКЛАДР КАК КодКЛАДР,
| ЕСТЬNULL(АдресныеОбъектыУровень1.Сокращение, """") КАК СокращениеУровень1, | АдресныеОбъекты0.КодСубъектаРФ КАК КодСубъектаРФ
| ЕСТЬNULL(АдресныеОбъектыУровень1.Идентификатор, """") КАК ИдентификаторУровень1, |ПОМЕСТИТЬ АдресныеОбъекты1
| АдресныеОбъектыУровень1.Уровень КАК Уровень1, |ИЗ
| ЕСТЬNULL(АдресныеОбъектыУровень2.Наименование, """") КАК НаименованиеУровень2, | АдресныеОбъекты0 КАК АдресныеОбъекты0
| ЕСТЬNULL(АдресныеОбъектыУровень2.Сокращение, """") КАК СокращениеУровень2, | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
| ЕСТЬNULL(АдресныеОбъектыУровень2.Идентификатор, """") КАК ИдентификаторУровень2, | ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = АдресныеОбъекты.Идентификатор
| АдресныеОбъектыУровень2.Уровень КАК Уровень2, | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиАдресныхОбъектов КАК СвязиАдресныхОбъектов
| ЕСТЬNULL(АдресныеОбъектыУровень3.Наименование, """") КАК НаименованиеУровень3, | ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = СвязиАдресныхОбъектов.Идентификатор
| ЕСТЬNULL(АдресныеОбъектыУровень3.Сокращение, """") КАК СокращениеУровень3, |;
| ЕСТЬNULL(АдресныеОбъектыУровень3.Идентификатор, """") КАК ИдентификаторУровень3, |
| АдресныеОбъектыУровень3.Уровень КАК Уровень3, |////////////////////////////////////////////////////////////////////////////////
| ЕСТЬNULL(АдресныеОбъектыУровень4.Наименование, """") КАК НаименованиеУровень4, |ВЫБРАТЬ ПЕРВЫЕ 1
| ЕСТЬNULL(АдресныеОбъектыУровень4.Сокращение, """") КАК СокращениеУровень4, | ЕСТЬNULL(СвязиАдресныхОбъектов.МуниципальныйРодительскийИдентификатор, АдресныеОбъекты.МуниципальныйРодительскийИдентификатор) КАК РодительскийИдентификаторСвязи,
| ЕСТЬNULL(АдресныеОбъектыУровень4.Идентификатор, """") КАК ИдентификаторУровень4, | ЕСТЬNULL(АдресныеОбъекты.Наименование, """") КАК НаименованиеУровень2,
| АдресныеОбъектыУровень4.Уровень КАК Уровень4, | ЕСТЬNULL(АдресныеОбъекты.Сокращение, """") КАК СокращениеУровень2,
| ЕСТЬNULL(АдресныеОбъектыУровень5.Наименование, """") КАК НаименованиеУровень5, | АдресныеОбъекты.Идентификатор КАК ИдентификаторУровень2,
| ЕСТЬNULL(АдресныеОбъектыУровень5.Сокращение, """") КАК СокращениеУровень5, | АдресныеОбъекты.Уровень КАК Уровень2,
| ЕСТЬNULL(АдресныеОбъектыУровень5.Идентификатор, """") КАК ИдентификаторУровень5, | АдресныеОбъекты0.НаименованиеУровень1 КАК НаименованиеУровень1,
| АдресныеОбъектыУровень5.Уровень КАК Уровень5, | АдресныеОбъекты0.СокращениеУровень1 КАК СокращениеУровень1,
| ЕСТЬNULL(ДополнительныеСведения.ПочтовыйИндекс, """") КАК ПочтовыйИндекс, | АдресныеОбъекты0.ИдентификаторУровень1 КАК ИдентификаторУровень1,
| ДополнительныеСведения.ОКТМО КАК ОКТМО, | АдресныеОбъекты0.Уровень1 КАК Уровень1,
| ДополнительныеСведения.OKATO КАК OKATO, | АдресныеОбъекты0.НаименованиеУровень0 КАК НаименованиеУровень0,
| ДополнительныеСведения.КодУчасткаИФНСЮЛ КАК КодУчасткаИФНСЮЛ, | АдресныеОбъекты0.СокращениеУровень0 КАК СокращениеУровень0,
| ДополнительныеСведения.КодУчасткаИФНСФЛ КАК КодУчасткаИФНСФЛ, | АдресныеОбъекты0.ИдентификаторУровень0 КАК ИдентификаторУровень0,
| ДополнительныеСведения.КодИФНСЮЛ КАК КодИФНСЮЛ, | АдресныеОбъекты0.Уровень0 КАК Уровень0,
| ДополнительныеСведения.КодИФНСФЛ КАК КодИФНСФЛ | АдресныеОбъекты0.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения,
|ИЗ | АдресныеОбъекты0.КодКЛАДР КАК КодКЛАДР,
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень0 | АдресныеОбъекты0.КодСубъектаРФ КАК КодСубъектаРФ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень1 |ПОМЕСТИТЬ АдресныеОбъекты2
| ПО АдресныеОбъектыУровень0.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень1.Идентификатор |ИЗ
| ИЛИ ИСТИНА В (ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ | АдресныеОбъекты1 КАК АдресныеОбъекты0
| РегистрСведений.СвязиАдресныхОбъектов КАК СвязанныеАдресныеОбъектыУровень1 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
| ГДЕ (АдресныеОбъектыУровень0.Идентификатор = СвязанныеАдресныеОбъектыУровень1.Идентификатор) | ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = АдресныеОбъекты.Идентификатор
| И (СвязанныеАдресныеОбъектыУровень1.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень1.Идентификатор)) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиАдресныхОбъектов КАК СвязиАдресныхОбъектов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень2 | ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = СвязиАдресныхОбъектов.Идентификатор
| ПО (АдресныеОбъектыУровень1.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень2.Идентификатор) |;
| ИЛИ ИСТИНА В (ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ |
| РегистрСведений.СвязиАдресныхОбъектов КАК СвязанныеАдресныеОбъектыУровень2 |////////////////////////////////////////////////////////////////////////////////
| ГДЕ (АдресныеОбъектыУровень1.Идентификатор = СвязанныеАдресныеОбъектыУровень2.Идентификатор) |ВЫБРАТЬ ПЕРВЫЕ 1
| И (СвязанныеАдресныеОбъектыУровень2.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень2.Идентификатор)) | ЕСТЬNULL(СвязиАдресныхОбъектов.МуниципальныйРодительскийИдентификатор, АдресныеОбъекты.МуниципальныйРодительскийИдентификатор) КАК РодительскийИдентификаторСвязи,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень3 | ЕСТЬNULL(АдресныеОбъекты.Наименование, """") КАК НаименованиеУровень3,
| ПО (АдресныеОбъектыУровень2.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень3.Идентификатор) | ЕСТЬNULL(АдресныеОбъекты.Сокращение, """") КАК СокращениеУровень3,
| ИЛИ ИСТИНА В (ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ | АдресныеОбъекты.Идентификатор КАК ИдентификаторУровень3,
| РегистрСведений.СвязиАдресныхОбъектов КАК СвязанныеАдресныеОбъектыУровень3 | АдресныеОбъекты.Уровень КАК Уровень3,
| ГДЕ (АдресныеОбъектыУровень2.Идентификатор = СвязанныеАдресныеОбъектыУровень3.Идентификатор) | АдресныеОбъекты0.НаименованиеУровень2 КАК НаименованиеУровень2,
| И (СвязанныеАдресныеОбъектыУровень3.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень3.Идентификатор)) | АдресныеОбъекты0.СокращениеУровень2 КАК СокращениеУровень2,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень4 | АдресныеОбъекты0.ИдентификаторУровень2 КАК ИдентификаторУровень2,
| ПО (АдресныеОбъектыУровень3.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень4.Идентификатор) | АдресныеОбъекты0.Уровень2 КАК Уровень2,
| ИЛИ ИСТИНА В (ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ | АдресныеОбъекты0.НаименованиеУровень1 КАК НаименованиеУровень1,
| РегистрСведений.СвязиАдресныхОбъектов КАК СвязанныеАдресныеОбъектыУровень4 | АдресныеОбъекты0.СокращениеУровень1 КАК СокращениеУровень1,
| ГДЕ (АдресныеОбъектыУровень3.Идентификатор = СвязанныеАдресныеОбъектыУровень4.Идентификатор) | АдресныеОбъекты0.ИдентификаторУровень1 КАК ИдентификаторУровень1,
| И (СвязанныеАдресныеОбъектыУровень4.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень4.Идентификатор)) | АдресныеОбъекты0.Уровень1 КАК Уровень1,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень5 | АдресныеОбъекты0.НаименованиеУровень0 КАК НаименованиеУровень0,
| ПО (АдресныеОбъектыУровень4.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень5.Идентификатор) | АдресныеОбъекты0.СокращениеУровень0 КАК СокращениеУровень0,
| ИЛИ ИСТИНА В (ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ | АдресныеОбъекты0.ИдентификаторУровень0 КАК ИдентификаторУровень0,
| РегистрСведений.СвязиАдресныхОбъектов КАК СвязанныеАдресныеОбъектыУровень5 | АдресныеОбъекты0.Уровень0 КАК Уровень0,
| ГДЕ (АдресныеОбъектыУровень4.Идентификатор = СвязанныеАдресныеОбъектыУровень5.Идентификатор) | АдресныеОбъекты0.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения,
| И (СвязанныеАдресныеОбъектыУровень5.МуниципальныйРодительскийИдентификатор = АдресныеОбъектыУровень5.Идентификатор)) | АдресныеОбъекты0.КодКЛАДР КАК КодКЛАДР,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеАдресныеСведения КАК ДополнительныеСведения | АдресныеОбъекты0.КодСубъектаРФ КАК КодСубъектаРФ
| ПО АдресныеОбъектыУровень0.ДополнительныеАдресныеСведения = ДополнительныеСведения.Идентификатор |ПОМЕСТИТЬ АдресныеОбъекты3
|ГДЕ |ИЗ
| АдресныеОбъектыУровень0.Идентификатор = &Идентификатор | АдресныеОбъекты2 КАК АдресныеОбъекты0
| &ДополнительныйОтбор | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
| | ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = АдресныеОбъекты.Идентификатор
| ОБЪЕДИНИТЬ ВСЕ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиАдресныхОбъектов КАК СвязиАдресныхОбъектов
| | ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = СвязиАдресныхОбъектов.Идентификатор
| ВЫБРАТЬ ПЕРВЫЕ 1 |;
| &ПредставлениеАдминистративный, |
| ВЫБОР |////////////////////////////////////////////////////////////////////////////////
| КОГДА НЕ АдресныеОбъектыУровень5.Наименование ЕСТЬ NULL |ВЫБРАТЬ ПЕРВЫЕ 1
| ТОГДА АдресныеОбъектыУровень5.Наименование + "" "" + АдресныеОбъектыУровень5.Сокращение + "", "" | ЕСТЬNULL(СвязиАдресныхОбъектов.МуниципальныйРодительскийИдентификатор, АдресныеОбъекты.МуниципальныйРодительскийИдентификатор) КАК РодительскийИдентификаторСвязи,
| ИНАЧЕ """" | ЕСТЬNULL(АдресныеОбъекты.Наименование, """") КАК НаименованиеУровень4,
| КОНЕЦ + ВЫБОР | ЕСТЬNULL(АдресныеОбъекты.Сокращение, """") КАК СокращениеУровень4,
| КОГДА НЕ АдресныеОбъектыУровень4.Наименование ЕСТЬ NULL | АдресныеОбъекты.Идентификатор КАК ИдентификаторУровень4,
| ТОГДА АдресныеОбъектыУровень4.Наименование + "" "" + АдресныеОбъектыУровень4.Сокращение + "", "" | АдресныеОбъекты.Уровень КАК Уровень4,
| ИНАЧЕ """" | АдресныеОбъекты0.НаименованиеУровень3 КАК НаименованиеУровень3,
| КОНЕЦ + ВЫБОР | АдресныеОбъекты0.СокращениеУровень3 КАК СокращениеУровень3,
| КОГДА НЕ АдресныеОбъектыУровень3.Наименование ЕСТЬ NULL | АдресныеОбъекты0.ИдентификаторУровень3 КАК ИдентификаторУровень3,
| ТОГДА АдресныеОбъектыУровень3.Наименование + "" "" + АдресныеОбъектыУровень3.Сокращение + "", "" | АдресныеОбъекты0.Уровень3 КАК Уровень3,
| ИНАЧЕ """" | АдресныеОбъекты0.НаименованиеУровень2 КАК НаименованиеУровень2,
| КОНЕЦ + ВЫБОР | АдресныеОбъекты0.СокращениеУровень2 КАК СокращениеУровень2,
| КОГДА НЕ АдресныеОбъектыУровень2.Наименование ЕСТЬ NULL | АдресныеОбъекты0.ИдентификаторУровень2 КАК ИдентификаторУровень2,
| ТОГДА АдресныеОбъектыУровень2.Наименование + "" "" + АдресныеОбъектыУровень2.Сокращение + "", "" | АдресныеОбъекты0.Уровень2 КАК Уровень2,
| ИНАЧЕ """" | АдресныеОбъекты0.НаименованиеУровень1 КАК НаименованиеУровень1,
| КОНЕЦ + ВЫБОР | АдресныеОбъекты0.СокращениеУровень1 КАК СокращениеУровень1,
| КОГДА НЕ АдресныеОбъектыУровень1.Наименование ЕСТЬ NULL | АдресныеОбъекты0.ИдентификаторУровень1 КАК ИдентификаторУровень1,
| ТОГДА АдресныеОбъектыУровень1.Наименование + "" "" + АдресныеОбъектыУровень1.Сокращение + "", "" | АдресныеОбъекты0.Уровень1 КАК Уровень1,
| ИНАЧЕ """" | АдресныеОбъекты0.НаименованиеУровень0 КАК НаименованиеУровень0,
| КОНЕЦ + АдресныеОбъектыУровень0.Наименование + "" "" + АдресныеОбъектыУровень0.Сокращение, | АдресныеОбъекты0.СокращениеУровень0 КАК СокращениеУровень0,
| ЕСТЬNULL(АдресныеОбъектыУровень0.Наименование, """"), | АдресныеОбъекты0.ИдентификаторУровень0 КАК ИдентификаторУровень0,
| ЕСТЬNULL(АдресныеОбъектыУровень0.Сокращение, """"), | АдресныеОбъекты0.Уровень0 КАК Уровень0,
| ЕСТЬNULL(АдресныеОбъектыУровень0.Идентификатор, """"), | АдресныеОбъекты0.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения,
| АдресныеОбъектыУровень0.КодСубъектаРФ, | АдресныеОбъекты0.КодКЛАДР КАК КодКЛАДР,
| АдресныеОбъектыУровень0.КодКЛАДР, | АдресныеОбъекты0.КодСубъектаРФ КАК КодСубъектаРФ
| АдресныеОбъектыУровень0.ДополнительныеАдресныеСведения, |ПОМЕСТИТЬ АдресныеОбъекты4
| АдресныеОбъектыУровень0.Уровень, |ИЗ
| ЕСТЬNULL(АдресныеОбъектыУровень1.Наименование, """"), | АдресныеОбъекты3 КАК АдресныеОбъекты0
| ЕСТЬNULL(АдресныеОбъектыУровень1.Сокращение, """"), | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
| ЕСТЬNULL(АдресныеОбъектыУровень1.Идентификатор, """"), | ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = АдресныеОбъекты.Идентификатор
| АдресныеОбъектыУровень1.Уровень, | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиАдресныхОбъектов КАК СвязиАдресныхОбъектов
| ЕСТЬNULL(АдресныеОбъектыУровень2.Наименование, """"), | ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = СвязиАдресныхОбъектов.Идентификатор
| ЕСТЬNULL(АдресныеОбъектыУровень2.Сокращение, """"), |;
| ЕСТЬNULL(АдресныеОбъектыУровень2.Идентификатор, """"), |
| АдресныеОбъектыУровень2.Уровень, |////////////////////////////////////////////////////////////////////////////////
| ЕСТЬNULL(АдресныеОбъектыУровень3.Наименование, """"), |ВЫБРАТЬ ПЕРВЫЕ 1
| ЕСТЬNULL(АдресныеОбъектыУровень3.Сокращение, """"), | &ПредставлениеМуниципальный КАК ТипАдреса,
| ЕСТЬNULL(АдресныеОбъектыУровень3.Идентификатор, """"), | ЕСТЬNULL(АдресныеОбъекты.Наименование, """") КАК НаименованиеУровень5,
| АдресныеОбъектыУровень3.Уровень, | ЕСТЬNULL(АдресныеОбъекты.Сокращение, """") КАК СокращениеУровень5,
| ЕСТЬNULL(АдресныеОбъектыУровень4.Наименование, """"), | АдресныеОбъекты.Идентификатор КАК ИдентификаторУровень5,
| ЕСТЬNULL(АдресныеОбъектыУровень4.Сокращение, """"), | АдресныеОбъекты.Уровень КАК Уровень5,
| ЕСТЬNULL(АдресныеОбъектыУровень4.Идентификатор, """"), | АдресныеОбъекты0.НаименованиеУровень4 КАК НаименованиеУровень4,
| АдресныеОбъектыУровень4.Уровень, | АдресныеОбъекты0.СокращениеУровень4 КАК СокращениеУровень4,
| ЕСТЬNULL(АдресныеОбъектыУровень5.Наименование, """"), | АдресныеОбъекты0.ИдентификаторУровень4 КАК ИдентификаторУровень4,
| ЕСТЬNULL(АдресныеОбъектыУровень5.Сокращение, """"), | АдресныеОбъекты0.Уровень4 КАК Уровень4,
| ЕСТЬNULL(АдресныеОбъектыУровень5.Идентификатор, """"), | АдресныеОбъекты0.НаименованиеУровень3 КАК НаименованиеУровень3,
| АдресныеОбъектыУровень5.Уровень, | АдресныеОбъекты0.СокращениеУровень3 КАК СокращениеУровень3,
| ЕСТЬNULL(ДополнительныеСведения.ПочтовыйИндекс, """"), | АдресныеОбъекты0.ИдентификаторУровень3 КАК ИдентификаторУровень3,
| ДополнительныеСведения.ОКТМО, | АдресныеОбъекты0.Уровень3 КАК Уровень3,
| ДополнительныеСведения.OKATO, | АдресныеОбъекты0.НаименованиеУровень2 КАК НаименованиеУровень2,
| ДополнительныеСведения.КодУчасткаИФНСЮЛ, | АдресныеОбъекты0.СокращениеУровень2 КАК СокращениеУровень2,
| ДополнительныеСведения.КодУчасткаИФНСФЛ, | АдресныеОбъекты0.ИдентификаторУровень2 КАК ИдентификаторУровень2,
| ДополнительныеСведения.КодИФНСЮЛ, | АдресныеОбъекты0.Уровень2 КАК Уровень2,
| ДополнительныеСведения.КодИФНСФЛ | АдресныеОбъекты0.НаименованиеУровень1 КАК НаименованиеУровень1,
|ИЗ | АдресныеОбъекты0.СокращениеУровень1 КАК СокращениеУровень1,
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень0 | АдресныеОбъекты0.ИдентификаторУровень1 КАК ИдентификаторУровень1,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень1 | АдресныеОбъекты0.Уровень1 КАК Уровень1,
| ПО АдресныеОбъектыУровень0.РодительскийИдентификатор = АдресныеОбъектыУровень1.Идентификатор | АдресныеОбъекты0.НаименованиеУровень0 КАК НаименованиеУровень0,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень2 | АдресныеОбъекты0.СокращениеУровень0 КАК СокращениеУровень0,
| ПО (АдресныеОбъектыУровень1.РодительскийИдентификатор = АдресныеОбъектыУровень2.Идентификатор) | АдресныеОбъекты0.ИдентификаторУровень0 КАК ИдентификаторУровень0,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень3 | АдресныеОбъекты0.Уровень0 КАК Уровень0,
| ПО (АдресныеОбъектыУровень2.РодительскийИдентификатор = АдресныеОбъектыУровень3.Идентификатор) | АдресныеОбъекты0.КодКЛАДР КАК КодКЛАДР,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень4 | АдресныеОбъекты0.КодСубъектаРФ КАК КодСубъектаРФ,
| ПО (АдресныеОбъектыУровень3.РодительскийИдентификатор = АдресныеОбъектыУровень4.Идентификатор) | ЕСТЬNULL(ДополнительныеСведения.ПочтовыйИндекс, """""""") КАК ПочтовыйИндекс,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень5 | ДополнительныеСведения.ОКТМО КАК ОКТМО,
| ПО (АдресныеОбъектыУровень4.РодительскийИдентификатор = АдресныеОбъектыУровень5.Идентификатор) | ДополнительныеСведения.OKATO КАК OKATO,
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеАдресныеСведения КАК ДополнительныеСведения | ДополнительныеСведения.КодУчасткаИФНСЮЛ КАК КодУчасткаИФНСЮЛ,
| ПО АдресныеОбъектыУровень0.ДополнительныеАдресныеСведения = ДополнительныеСведения.Идентификатор | ДополнительныеСведения.КодУчасткаИФНСФЛ КАК КодУчасткаИФНСФЛ,
|ГДЕ | ДополнительныеСведения.КодИФНСЮЛ КАК КодИФНСЮЛ,
| АдресныеОбъектыУровень0.Идентификатор = &Идентификатор"; | ДополнительныеСведения.КодИФНСФЛ КАК КодИФНСФЛ
|ИЗ
| АдресныеОбъекты4 КАК АдресныеОбъекты0
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
| ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = АдресныеОбъекты.Идентификатор
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиАдресныхОбъектов КАК СвязиАдресныхОбъектов
| ПО АдресныеОбъекты0.РодительскийИдентификаторСвязи = СвязиАдресныхОбъектов.Идентификатор
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеАдресныеСведения КАК ДополнительныеСведения
| ПО АдресныеОбъекты0.ДополнительныеАдресныеСведения = ДополнительныеСведения.Идентификатор
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| &ПредставлениеАдминистративный,
| ЕСТЬNULL(АдресныеОбъектыУровень5.Наименование, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень5.Сокращение, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень5.Идентификатор, """"),
| АдресныеОбъектыУровень5.Уровень,
| ЕСТЬNULL(АдресныеОбъектыУровень4.Наименование, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень4.Сокращение, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень4.Идентификатор, """"),
| АдресныеОбъектыУровень4.Уровень,
| ЕСТЬNULL(АдресныеОбъектыУровень3.Наименование, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень3.Сокращение, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень3.Идентификатор, """"),
| АдресныеОбъектыУровень3.Уровень,
| ЕСТЬNULL(АдресныеОбъектыУровень2.Наименование, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень2.Сокращение, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень2.Идентификатор, """"),
| АдресныеОбъектыУровень2.Уровень,
| ЕСТЬNULL(АдресныеОбъектыУровень1.Наименование, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень1.Сокращение, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень1.Идентификатор, """"),
| АдресныеОбъектыУровень1.Уровень,
| ЕСТЬNULL(АдресныеОбъектыУровень0.Наименование, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень0.Сокращение, """"),
| ЕСТЬNULL(АдресныеОбъектыУровень0.Идентификатор, """"),
| АдресныеОбъектыУровень0.Уровень,
| АдресныеОбъектыУровень0.КодКЛАДР,
| АдресныеОбъектыУровень0.КодСубъектаРФ,
| ЕСТЬNULL(ДополнительныеСведения.ПочтовыйИндекс, """"),
| ДополнительныеСведения.ОКТМО,
| ДополнительныеСведения.OKATO,
| ДополнительныеСведения.КодУчасткаИФНСЮЛ,
| ДополнительныеСведения.КодУчасткаИФНСФЛ,
| ДополнительныеСведения.КодИФНСЮЛ,
| ДополнительныеСведения.КодИФНСФЛ
|ИЗ
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень0
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень1
| ПО АдресныеОбъектыУровень0.РодительскийИдентификатор = АдресныеОбъектыУровень1.Идентификатор
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень2
| ПО (АдресныеОбъектыУровень1.РодительскийИдентификатор = АдресныеОбъектыУровень2.Идентификатор)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень3
| ПО (АдресныеОбъектыУровень2.РодительскийИдентификатор = АдресныеОбъектыУровень3.Идентификатор)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень4
| ПО (АдресныеОбъектыУровень3.РодительскийИдентификатор = АдресныеОбъектыУровень4.Идентификатор)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень5
| ПО (АдресныеОбъектыУровень4.РодительскийИдентификатор = АдресныеОбъектыУровень5.Идентификатор)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеАдресныеСведения КАК ДополнительныеСведения
| ПО АдресныеОбъектыУровень0.ДополнительныеАдресныеСведения = ДополнительныеСведения.Идентификатор
|ГДЕ
| АдресныеОбъектыУровень0.Идентификатор = &Идентификатор";
Результат = ОписаниеНовойКонтактнойИнформации(); Результат = ОписаниеНовойКонтактнойИнформации();
Запрос = Новый Запрос; Запрос = Новый Запрос;
ДополнительныйОтбор = "";
Если Значение.Свойство("Родитель") Тогда
ДополнительныйОтбор = "И АдресныеОбъектыУровень1.Идентификатор = &ИдентификаторРодитель";
Запрос.УстановитьПараметр("ИдентификаторРодитель", Новый УникальныйИдентификатор(Значение.Родитель));
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДополнительныйОтбор", ДополнительныйОтбор);
Запрос.Текст = ТекстЗапроса; Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ПредставлениеМуниципальный", МуниципальныйАдрес()); Запрос.УстановитьПараметр("ПредставлениеМуниципальный", МуниципальныйАдрес());
Запрос.УстановитьПараметр("ПредставлениеАдминистративный", АдминистративноТерриториальныйАдрес()); Запрос.УстановитьПараметр("ПредставлениеАдминистративный", АдминистративноТерриториальныйАдрес());
@@ -2862,14 +2917,16 @@
КонецЕсли; КонецЕсли;
Если ДанныеОДоме.Количество() > 1 Тогда Если ДанныеОДоме.Количество() > 1 Тогда
Корпус = ДанныеОДоме[1]; Корпус = ДанныеОДоме[1];
Если ДанныеОДоме.Количество() > 2 Тогда Если ДанныеОДоме.Количество() > 3 Тогда
ВидСтроения = ТипЧисло.ПривестиЗначение(ДанныеОДоме[2]); Строение = ДанныеОДоме[3];
НазваниеСтроения = НаименованиеЗданийИСтроений.Строения.Получить(ВидСтроения); Если ЗначениеЗаполнено(Строение) Тогда
Если ДанныеОДоме.Количество() > 3 Тогда ВидСтроения = ТипЧисло.ПривестиЗначение(ДанныеОДоме[2]);
Строение = ДанныеОДоме[3]; НазваниеСтроения = НаименованиеЗданийИСтроений.Строения.Получить(ВидСтроения);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Если СтрСравнить(СведенияОДоме.НомерДома, Дом) = 0 Тогда Если СтрСравнить(СведенияОДоме.НомерДома, Дом) = 0 Тогда
@@ -4447,11 +4504,11 @@
Если СведенияОДоме.Количество() > 1 Тогда Если СведенияОДоме.Количество() > 1 Тогда
Корпус = СведенияОДоме[1]; Корпус = СведенияОДоме[1];
Если СведенияОДоме.Количество() > 2 Тогда Если СведенияОДоме.Количество() > 3 Тогда
ВидСтроения = ТипЧисло.ПривестиЗначение(СведенияОДоме[2]); Строение = СведенияОДоме[3];
НазваниеСтроения = НаименованиеЗданийИСтроений.Строения.Получить(ВидСтроения); Если ЗначениеЗаполнено(Строение) Тогда
Если СведенияОДоме.Количество() > 3 Тогда ВидСтроения = ТипЧисло.ПривестиЗначение(СведенияОДоме[2]);
Строение = СведенияОДоме[3]; НазваниеСтроения = НаименованиеЗданийИСтроений.Строения.Получить(ВидСтроения);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -4759,9 +4816,6 @@
Идентификатор = Выборка["ИдентификаторУровень" + Суффикс]; Идентификатор = Выборка["ИдентификаторУровень" + Суффикс];
ИмяУровня = СловарьИменПолей[Выборка["Уровень" + Суффикс]]; ИмяУровня = СловарьИменПолей[Выборка["Уровень" + Суффикс]];
Если Муниципальный И СтрСравнить(ИмяУровня,"City") = 0 Тогда
ИмяУровня = "Locality";
КонецЕсли;
Адрес[ИмяУровня] = Выборка["НаименованиеУровень" + Суффикс]; Адрес[ИмяУровня] = Выборка["НаименованиеУровень" + Суффикс];
Адрес[ИмяУровня + "Type"] = Выборка["СокращениеУровень" + Суффикс]; Адрес[ИмяУровня + "Type"] = Выборка["СокращениеУровень" + Суффикс];
@@ -12,7 +12,24 @@
// //
Функция ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия = Неопределено) Экспорт Функция ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия = Неопределено) Экспорт
Возврат ВнешниеКомпонентыСлужебный.ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия); Результат = ВнешниеКомпонентыСлужебный.ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия);
Если Результат.Состояние = "НайденаВХранилище" Или Результат.Состояние = "НайденаВОбщемХранилище" Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для идентификатора %1 (версия %2) получена внешняя компонента %3 (версия %4).
|Состояние: %5'"),
Идентификатор, ?(Версия <> Неопределено, Версия, НСтр("ru = 'не указана'")), Результат.Реквизиты.Наименование,
Результат.Реквизиты.Версия, Результат.Состояние);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Внешние компоненты'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Информация,, Результат.Ссылка, ТекстСообщения);
Иначе
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для идентификатора %1 (версия %2) не удалось получить внешнюю компоненту.
|Состояние: %3'"),
Идентификатор, ?(Версия <> Неопределено, Версия, НСтр("ru = 'не указана'")), Результат.Состояние);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Внешние компоненты'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Предупреждение,,, ТекстСообщения);
КонецЕсли;
Возврат Результат;
КонецФункции КонецФункции
@@ -382,7 +382,7 @@
// //
Процедура ОбновитьГрафикиРаботыПоДаннымПроизводственныхКалендарей(УсловияОбновления) Экспорт Процедура ОбновитьГрафикиРаботыПоДаннымПроизводственныхКалендарей(УсловияОбновления) Экспорт
Справочники.Календари.ОбновитьГрафикиРаботыПоДаннымПроизводственныхКалендарей(УсловияОбновления); РегистрыСведений.КалендарныеГрафики.ОбновитьГрафикиРаботыПоДаннымПроизводственныхКалендарей(УсловияОбновления);
КонецПроцедуры КонецПроцедуры
@@ -453,19 +453,29 @@
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления. // См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.1.3.1";
Обработчик.Процедура = "ГрафикиРаботы.ЗаполнитьНастройкиЗаполненияГрафиковРаботы";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.2.2.14";
Обработчик.Процедура = "ГрафикиРаботы.ЗаполнитьКоличествоДнейВГрафикеСНачалаГода";
Если Метаданные.Обработки.Найти("ЗаполнениеГрафиковРаботы") <> Неопределено Тогда Если Метаданные.Обработки.Найти("ЗаполнениеГрафиковРаботы") <> Неопределено Тогда
МодульГрафикиРаботы = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаполнениеГрафиковРаботы"); МодульГрафикиРаботы = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаполнениеГрафиковРаботы");
МодульГрафикиРаботы.ПриДобавленииОбработчиковОбновления(Обработчики); МодульГрафикиРаботы.ПриДобавленииОбработчиковОбновления(Обработчики);
КонецЕсли; КонецЕсли;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.0.3.20";
Обработчик.Процедура = "РегистрыСведений.КалендарныеГрафики.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "РегистрыСведений.КалендарныеГрафики.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ЗапускатьИВПодчиненномУзлеРИБСФильтрами = Истина;
Обработчик.ЧитаемыеОбъекты = "РегистрСведений.КалендарныеГрафики, РегистрСведений.РучныеИзмененияГрафиковРаботы, РегистрСведений.ДанныеПроизводственногоКалендаря";
Обработчик.ИзменяемыеОбъекты = "РегистрСведений.КалендарныеГрафики";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("39e6fbf8-c02d-4459-bdbd-58adf6c6127c");
Обработчик.Комментарий = НСтр("ru = 'Исправление включения в график рабочих и предпраздничных дней, выпадающих на субботу или воскресенье.'");
Обработчик.БлокируемыеОбъекты = "Справочник.Календари";
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = "КалендарныеГрафики.ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей";
Приоритет.Порядок = "После";
КонецПроцедуры КонецПроцедуры
// См. ПользователиПереопределяемый.ПриОпределенииНазначенияРолей. // См. ПользователиПереопределяемый.ПриОпределенииНазначенияРолей.
@@ -477,165 +487,4 @@
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Заполняет производственный календарь для тех графиков работы,
// которые были созданы не по шаблону или до появления производственных календарей.
//
Процедура ЗаполнитьНастройкиЗаполненияГрафиковРаботы() Экспорт
ПроизводственныйКалендарь = КалендарныеГрафики.ОсновнойПроизводственныйКалендарь();
Если ПроизводственныйКалендарь = Неопределено Тогда
// Если по какой-то причине нет производственного календаря по умолчанию,
// заполнение настроек бессмысленно.
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| Календари.Ссылка,
| Календари.УдалитьВидКалендаря КАК ВидКалендаря,
| Календари.ПроизводственныйКалендарь
|ИЗ
| Справочник.Календари КАК Календари
|ГДЕ
| Календари.СпособЗаполнения = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияГрафикаРаботы.ПустаяСсылка)";
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ГрафикРаботыОбъект = Выборка.Ссылка.ПолучитьОбъект();
Если Не ЗначениеЗаполнено(Выборка.ПроизводственныйКалендарь) Тогда
// Устанавливаем календарь РФ
ГрафикРаботыОбъект.ПроизводственныйКалендарь = ПроизводственныйКалендарь;
КонецЕсли;
ГрафикРаботыОбъект.ДатаНачала = Дата(2012, 1, 1);
Если Не ЗначениеЗаполнено(Выборка.ВидКалендаря) Тогда
// Если вид календаря не был указан, нет возможности вписать точную настройку заполнения.
ГрафикРаботыОбъект.СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоЦикламПроизвольнойДлины;
ГрафикРаботыОбъект.ДатаОтсчета = Дата(2012, 1, 1);
Иначе
// Для пятидневки и шестидневки заполняем соответствующую настройку.
ГрафикРаботыОбъект.УчитыватьПраздники = Истина;
ГрафикРаботыОбъект.СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям;
КоличествоРабочихДней = 5;
Если Выборка.ВидКалендаря = Перечисления.УдалитьВидыКалендарей.Шестидневка Тогда
КоличествоРабочихДней = 6;
КонецЕсли;
ГрафикРаботыОбъект.ШаблонЗаполнения.Очистить();
Для НомерДня = 1 По 7 Цикл
НоваяСтрока = ГрафикРаботыОбъект.ШаблонЗаполнения.Добавить();
НоваяСтрока.ДеньВключенВГрафик = НомерДня <= КоличествоРабочихДней;
КонецЦикла;
КонецЕсли;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ГрафикРаботыОбъект);
КонецЦикла;
КонецПроцедуры
// Заполняет вторичные данные для оптимизации расчета дат по календарю.
//
Процедура ЗаполнитьКоличествоДнейВГрафикеСНачалаГода() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеПроизводственногоКалендаря.Дата,
| ДанныеПроизводственногоКалендаря.Год
|ПОМЕСТИТЬ ВТДаты
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Даты.Год,
| КОЛИЧЕСТВО(Даты.Дата) КАК КоличествоДней
|ПОМЕСТИТЬ ВТКоличествоДнейПоГодам
|ИЗ
| ВТДаты КАК Даты
|
|СГРУППИРОВАТЬ ПО
| Даты.Год
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КалендарныеГрафики.Календарь,
| КалендарныеГрафики.Год,
| КОЛИЧЕСТВО(КалендарныеГрафики.ДатаГрафика) КАК КоличествоДней
|ПОМЕСТИТЬ ВТКоличествоДнейПоГрафикам
|ИЗ
| РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
|
|СГРУППИРОВАТЬ ПО
| КалендарныеГрафики.Календарь,
| КалендарныеГрафики.Год
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КоличествоДнейПоГрафикам.Календарь,
| КоличествоДнейПоГрафикам.Год
|ПОМЕСТИТЬ ВТГрафикиГоды
|ИЗ
| ВТКоличествоДнейПоГрафикам КАК КоличествоДнейПоГрафикам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКоличествоДнейПоГодам КАК КоличествоДнейПоГодам
| ПО КоличествоДнейПоГрафикам.Год = КоличествоДнейПоГодам.Год
| И КоличествоДнейПоГрафикам.КоличествоДней < КоличествоДнейПоГодам.КоличествоДней
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ГрафикиГоды.Календарь КАК Календарь,
| ГрафикиГоды.Год КАК Год,
| Даты.Дата КАК ДатаГрафика,
| ЕСТЬNULL(КалендарныеГрафики.ДеньВключенВГрафик, ЛОЖЬ) КАК ДеньВключенВГрафик
|ИЗ
| ВТГрафикиГоды КАК ГрафикиГоды
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДаты КАК Даты
| ПО ГрафикиГоды.Год = Даты.Год
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
| ПО (КалендарныеГрафики.Календарь = ГрафикиГоды.Календарь)
| И (КалендарныеГрафики.Год = ГрафикиГоды.Год)
| И (КалендарныеГрафики.ДатаГрафика = Даты.Дата)
|
|УПОРЯДОЧИТЬ ПО
| ГрафикиГоды.Календарь,
| ГрафикиГоды.Год,
| Даты.Дата
|ИТОГИ ПО
| Календарь,
| Год";
// Выбираем графики работы и годы, для которых не заполнено значение ресурса КоличествоДнейВГрафикеСНачалаГода,
// заполняем для них последовательно рассчитывая количество дней.
Запрос = Новый Запрос(ТекстЗапроса);
ВыборкаПоГрафикам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоГрафикам.Следующий() Цикл
ВыборкаПоГодам = ВыборкаПоГрафикам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоГодам.Следующий() Цикл
НаборЗаписей = РегистрыСведений.КалендарныеГрафики.СоздатьНаборЗаписей();
КоличествоДнейВГрафикеСНачалаГода = 0;
Выборка = ВыборкаПоГодам.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ДеньВключенВГрафик Тогда
КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода + 1;
КонецЕсли;
СтрокаНабора = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаНабора, Выборка);
СтрокаНабора.КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода;
КонецЦикла;
НаборЗаписей.Отбор.Календарь.Установить(ВыборкаПоГодам.Календарь);
НаборЗаписей.Отбор.Год.Установить(ВыборкаПоГодам.Год);
ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
@@ -947,6 +947,10 @@
Обработчик.Идентификатор = Новый УникальныйИдентификатор("b1082291-b482-418f-82ab-3c96e93072cc"); Обработчик.Идентификатор = Новый УникальныйИдентификатор("b1082291-b482-418f-82ab-3c96e93072cc");
Обработчик.Комментарий = НСтр("ru = 'Обновление графиков работы и др. данных, зависимых от производственных календарей.'"); Обработчик.Комментарий = НСтр("ru = 'Обновление графиков работы и др. данных, зависимых от производственных календарей.'");
ЗаполнитьБлокируемыеОбъектыЗависимыеОтПроизводственныхКалендарей(Обработчик); ЗаполнитьБлокируемыеОбъектыЗависимыеОтПроизводственныхКалендарей(Обработчик);
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = "РегистрыСведений.КалендарныеГрафики.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Приоритет.Порядок = "До";
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -347,6 +347,7 @@
// ИНИЦИАЛИЗАЦИЯ ОБМЕНА ДАННЫМИ // ИНИЦИАЛИЗАЦИЯ ОБМЕНА ДАННЫМИ
СтруктураНастроекОбмена = НастройкиОбменаДляУзлаИнформационнойБазы( СтруктураНастроекОбмена = НастройкиОбменаДляУзлаИнформационнойБазы(
УзелИнформационнойБазы, ДействиеПриОбмене, ВидТранспортаСообщенийОбмена); УзелИнформационнойБазы, ДействиеПриОбмене, ВидТранспортаСообщенийОбмена);
ЗафиксироватьНачалоОбменаВРегистреСведений(СтруктураНастроекОбмена);
Если СтруктураНастроекОбмена.Отказ Тогда Если СтруктураНастроекОбмена.Отказ Тогда
@@ -10298,7 +10299,7 @@
ТекстЗапросаРезультат = ТекстЗапросаРезультат =
"ВЫБРАТЬ "ВЫБРАТЬ
| СостоянияОбменовДанными.УзелИнформационнойБазы КАК УзелИнформационнойБазы, | СостоянияОбменовДанными.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| СостоянияОбменовДанными.ДатаОкончания КАК ДатаНачала, | СостоянияОбменовДанными.ДатаНачала КАК ДатаНачала,
| СостоянияОбменовДанными.ДатаОкончания КАК ДатаОкончания, | СостоянияОбменовДанными.ДатаОкончания КАК ДатаОкончания,
| ВЫБОР | ВЫБОР
| КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято) | КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято)
@@ -10325,7 +10326,7 @@
|//////////////////////////////////////////////////////////////////////////////// |////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ |ВЫБРАТЬ
| СостоянияОбменовДанными.УзелИнформационнойБазы КАК УзелИнформационнойБазы, | СостоянияОбменовДанными.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| СостоянияОбменовДанными.ДатаОкончания КАК ДатаНачала, | СостоянияОбменовДанными.ДатаНачала КАК ДатаНачала,
| СостоянияОбменовДанными.ДатаОкончания КАК ДатаОкончания, | СостоянияОбменовДанными.ДатаОкончания КАК ДатаОкончания,
| ВЫБОР | ВЫБОР
| КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями) | КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями)
@@ -10372,7 +10373,7 @@
ТекстЗапросаРезультат = ТекстЗапросаРезультат =
"ВЫБРАТЬ "ВЫБРАТЬ
| СостоянияОбменовДанными.УзелИнформационнойБазы КАК УзелИнформационнойБазы, | СостоянияОбменовДанными.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| СостоянияОбменовДанными.ДатаОкончания КАК ДатаНачала, | СостоянияОбменовДанными.ДатаНачала КАК ДатаНачала,
| СостоянияОбменовДанными.ДатаОкончания КАК ДатаОкончания, | СостоянияОбменовДанными.ДатаОкончания КАК ДатаОкончания,
| ВЫБОР | ВЫБОР
| КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято) | КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято)
@@ -10399,7 +10400,7 @@
|//////////////////////////////////////////////////////////////////////////////// |////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ |ВЫБРАТЬ
| СостоянияОбменовДанными.УзелИнформационнойБазы КАК УзелИнформационнойБазы, | СостоянияОбменовДанными.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| СостоянияОбменовДанными.ДатаОкончания КАК ДатаНачала, | СостоянияОбменовДанными.ДатаНачала КАК ДатаНачала,
| СостоянияОбменовДанными.ДатаОкончания КАК ДатаОкончания, | СостоянияОбменовДанными.ДатаОкончания КАК ДатаОкончания,
| ВЫБОР | ВЫБОР
| КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями) | КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями)
@@ -10741,6 +10742,18 @@
КонецПроцедуры КонецПроцедуры
Процедура ЗафиксироватьНачалоОбменаВРегистреСведений(СтруктураНастроекОбмена)
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("УзелИнформационнойБазы", СтруктураНастроекОбмена.УзелИнформационнойБазы);
СтруктураЗаписи.Вставить("ДействиеПриОбмене", СтруктураНастроекОбмена.ДействиеПриОбмене);
СтруктураЗаписи.Вставить("ДатаНачала", СтруктураНастроекОбмена.ДатаНачала);
РегистрыСведений.СостоянияОбменовДанными.ОбновитьЗапись(СтруктураЗаписи);
КонецПроцедуры
// Фиксирует состояние обмена данными в регистре сведений СостоянияОбменовДанными. // Фиксирует состояние обмена данными в регистре сведений СостоянияОбменовДанными.
// //
// Параметры: // Параметры:
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы"; Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.0.3.17"; Описание.Версия = "3.0.3.26";
Описание.ИдентификаторИнтернетПоддержки = "SSL"; Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -216,6 +216,8 @@
ПараметрЗапускаКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска"); ПараметрЗапускаКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска");
ОтладкаОтложенногоОбновления = СтрНайти(НРег(ПараметрЗапускаКлиента), НРег("ОтладкаОтложенногоОбновления")) > 0; ОтладкаОтложенногоОбновления = СтрНайти(НРег(ПараметрЗапускаКлиента), НРег("ОтладкаОтложенногоОбновления")) > 0;
ВыполнитьОтложенноеОбновлениеСейчас = Не ОтладкаОтложенногоОбновления
И РежимВыполненияОтложенногоОбновления = "Монопольно";
Попытка Попытка
@@ -231,9 +233,7 @@
ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
// Для файловой базы отложенные обработчики выполняются в основном цикле обновления. // Для файловой базы отложенные обработчики выполняются в основном цикле обновления.
Если РежимВыполненияОтложенногоОбновления = "Монопольно" Если ВыполнитьОтложенноеОбновлениеСейчас Тогда
И Не ОтладкаОтложенногоОбновления Тогда
ВыполнитьОтложенноеОбновлениеСейчас(Параметры); ВыполнитьОтложенноеОбновлениеСейчас(Параметры);
КонецЕсли; КонецЕсли;
@@ -301,14 +301,10 @@
КонецЕсли; КонецЕсли;
УстановитьПривилегированныйРежим(Ложь); УстановитьПривилегированныйРежим(Ложь);
Если РежимВыполненияОтложенногоОбновления = "Монопольно" Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
И Не ОтладкаОтложенногоОбновления
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
Если МодульУправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина) Тогда МодульУправлениеДоступомСлужебный.ОбновитьДоступПослеОбновленияИнформационнойБазы(
МодульУправлениеДоступомСлужебный.ОбновитьДоступ(); ВыполнитьОтложенноеОбновлениеСейчас);
КонецЕсли;
КонецЕсли; КонецЕсли;
УстановитьЗапускОбновленияИнформационнойБазы(Ложь); УстановитьЗапускОбновленияИнформационнойБазы(Ложь);
@@ -258,7 +258,10 @@
Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
КонецЕсли; КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
НастройкиОтправкиSMS = НастройкиОтправкиSMS(); НастройкиОтправкиSMS = НастройкиОтправкиSMS();
УстановитьПривилегированныйРежим(Ложь);
Если НастройкиОтправкиSMS.СпособАвторизации = "ПоКлючу" Тогда Если НастройкиОтправкиSMS.СпособАвторизации = "ПоКлючу" Тогда
Заголовки.Вставить("Authorization", "Bearer" + " " + НастройкиОтправкиSMS.Пароль); Заголовки.Вставить("Authorization", "Bearer" + " " + НастройкиОтправкиSMS.Пароль);
КонецЕсли; КонецЕсли;
@@ -467,12 +467,13 @@
Для каждого ИмяУровня Из ИменаУровнейАдреса(ТипАдреса, Истина) Цикл Для каждого ИмяУровня Из ИменаУровнейАдреса(ТипАдреса, Истина) Цикл
Если Адрес.Свойство(ИмяУровня) И НЕ ПустаяСтрока(Адрес[ИмяУровня]) Тогда Если СтрСравнить(ИмяУровня, "locality") = 0
Если ТипАдреса = АдминистративноТерриториальныйАдрес() И ЭтоМуниципальныйАдрес(Адрес.AddressType)
И СтрСравнить(ИмяУровня, "Locality") = 0 И ЗначениеЗаполнено(Адрес.city)
И СтрСравнить(СокрЛП(Адрес[ИмяУровня] + " " + Адрес[ИмяУровня + "Type"]), СокрЛП(Адрес["city"] + " " + Адрес["cityType"])) = 0 Тогда И ПустаяСтрока(Адрес.locality) Тогда
Продолжить; СписокЗаполненныхУровней.Добавить(Адрес["city"] + " " + Адрес["cityType"]);
КонецЕсли;
ИначеЕсли Адрес.Свойство(ИмяУровня) И НЕ ПустаяСтрока(Адрес[ИмяУровня]) Тогда
Если НЕ ПредставлениеУровняБезСокращения(ИмяУровня) Тогда Если НЕ ПредставлениеУровняБезСокращения(ИмяУровня) Тогда
СписокЗаполненныхУровней.Добавить(СокрЛП(Адрес[ИмяУровня] + " " + Адрес[ИмяУровня + "Type"])); СписокЗаполненныхУровней.Добавить(СокрЛП(Адрес[ИмяУровня] + " " + Адрес[ИмяУровня + "Type"]));
Иначе Иначе
@@ -119,6 +119,10 @@
ЗаполнитьЗначенияСвойств(Результат, Выборка, ТребуемыеСвойства); ЗаполнитьЗначенияСвойств(Результат, Выборка, ТребуемыеСвойства);
КонецЕсли; КонецЕсли;
Если Результат.ПарольIMAP = "" Тогда
Результат.ПарольIMAP = Результат.ПарольSMTP;
КонецЕсли;
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
@@ -1002,7 +1002,7 @@
Процедура НастроитьОтборыДинамическогоСписка(Список, ОписаниеОтборов) Экспорт Процедура НастроитьОтборыДинамическогоСписка(Список, ОписаниеОтборов) Экспорт
Если Не ОграничиватьДоступНаУровнеЗаписей() Если Не ОграничиватьДоступНаУровнеЗаписей()
Или УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(, Истина) Или УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(Ложь, Истина)
Или Пользователи.ЭтоПолноправныйПользователь(,, Ложь) Тогда Или Пользователи.ЭтоПолноправныйПользователь(,, Ложь) Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -1971,12 +1971,8 @@
РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(); РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра();
ПараметрыПланирования = УправлениеДоступомСлужебный.ПараметрыПланированияОбновленияДоступа(); УправлениеДоступомСлужебный.ЗапланироватьОбновлениеПараметровОграниченияДоступа(
ПараметрыПланирования.РазрешенныеКлючиДоступа = Ложь; "ОбновитьРазрешенныеЗначенияПриИзмененииИспользованияВидовДоступа");
ПараметрыПланирования.Описание = "ОбновитьРазрешенныеЗначенияПриИзмененииИспользованияВидовДоступа";
УправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступа(
ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Справочник.ИдентификаторыОбъектовМетаданных"),
ПараметрыПланирования);
КонецПроцедуры КонецПроцедуры
File diff suppressed because it is too large. Load diff
@@ -592,7 +592,7 @@
Строка = Таблица.Добавить(); Строка = Таблица.Добавить();
Строка.Свойство = НСтр("ru = 'Действителен до:'"); Строка.Свойство = НСтр("ru = 'Действителен до:'");
Строка.Значение = Формат(СвойстваСертификата.ДатаОкончания, "ДЛФ=D"); Строка.Значение = Формат(СвойстваСертификата.ДействителенДо, "ДЛФ=D");
Строка = Таблица.Добавить(); Строка = Таблица.Добавить();
Строка.Свойство = НСтр("ru = 'Назначение:'"); Строка.Свойство = НСтр("ru = 'Назначение:'");
+9 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9eb81495-2670-42e6-bca1-428094714c0b"> <mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="2cf789e2-854c-46ca-98f0-87259caa4545">
<name>БиблиотекаСтандартныхПодсистем</name> <name>БиблиотекаСтандартныхПодсистем</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.0</value> <value>Библиотека стандартных подсистем, редакция 3.0</value>
</synonym> </synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="3b01947a-2b87-4ee6-8901-649465d2110d"/> <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="7b97868c-c9d1-4407-88d8-3a027bd4d23e"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="2cead898-9001-44e9-9e73-a63327e5c78a"/> <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="064bfa69-4fe7-4430-b410-96f3f0e68e89"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="da5bc5a3-368c-4c95-ad09-66a73e20be3f"/> <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="2427497b-8399-4cf8-a6e8-abb5fcbf7208"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="0b3ff3d1-0a66-43b8-a957-49ca22631192"/> <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="5b2cb250-af26-462d-bb32-ae7cb0c58666"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="b1ce5f37-c961-4af4-8aaf-15c06cdc0982"/> <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="cfa6e02e-38b9-41d1-9a7e-14c39bd06756"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="b8211625-5b63-4dd8-8ba3-b0b5c94d6da4"/> <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="f02aaa1f-f371-45d5-94c9-0f0e125fdce7"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="f2d4b00b-7bcd-43c5-84ea-fb0c3d269916"/> <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="a1f16a4e-c778-4182-a6c0-0949ec31583e"/>
<defaultRunMode>ManagedApplication</defaultRunMode> <defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles> <defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles> <defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor> <vendor>Фирма &quot;1С&quot;</vendor>
<version>3.0.3.17</version> <version>3.0.3.26</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress> <updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents> <includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities> <usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,ae05158e-d3e0-459c-9bea-b4e16a301188,1,72c73c31-4353-4616-ab91-3e6c81e0443e,"3.0.3.17","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6040,1,0,9eb81495-2670-42e6-bca1-428094714c0b,9eb81495-2670-42e6-bca1-428094714c0b,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,c27472ee-879a-4746-9d21-122738ec80b7,c27472ee-879a-4746-9d21-122738ec80b7,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,1,0,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,1,0,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-Line truncated {6,1,1,c2d0a8e6-b8c0-430f-b688-bec107f91e75,1,150ac5de-9b33-4855-8f00-9818aee53bdd,"3.0.3.26","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6040,1,0,2cf789e2-854c-46ca-98f0-87259caa4545,2cf789e2-854c-46ca-98f0-87259caa4545,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,c27472ee-879a-4746-9d21-122738ec80b7,c27472ee-879a-4746-9d21-122738ec80b7,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,1,0,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,1,0,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-Line truncated
@@ -49,11 +49,7 @@
КонецЕсли; КонецЕсли;
Если Значение <> СтароеЗначение Тогда // Изменено. Если Значение <> СтароеЗначение Тогда // Изменено.
// Обновление параметров сеанса. УправлениеДоступомСлужебный.ОбновитьПараметрыСеанса();
// Требуется для того, чтобы администратор не выполнял перезапуск.
УстановленныеПараметры = Новый Массив;
УправлениеДоступомСлужебный.УстановкаПараметровСеанса("", УстановленныеПараметры);
ОбновитьПовторноИспользуемыеЗначения();
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -37,11 +37,7 @@
КонецЕсли; КонецЕсли;
Если Значение <> СтароеЗначение Тогда // Изменено. Если Значение <> СтароеЗначение Тогда // Изменено.
// Обновление параметров сеанса. УправлениеДоступомСлужебный.ОбновитьПараметрыСеанса();
// Требуется для того, чтобы администратор не выполнял перезапуск.
УстановленныеПараметры = Новый Массив;
УправлениеДоступомСлужебный.УстановкаПараметровСеанса("", УстановленныеПараметры);
ОбновитьПовторноИспользуемыеЗначения();
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -243,13 +243,9 @@
&НаКлиенте &НаКлиенте
Процедура ВосстановитьНастройки(Команда) Процедура ВосстановитьНастройки(Команда)
АдресФайла = "";
ДопПараметры = Новый Структура("ВидФайла", "ФайлНастроек"); ДопПараметры = Новый Структура("ВидФайла", "ФайлНастроек");
ОписаниеОповещения = Новый ОписаниеОповещения("ПоместитьФайлВХранилищеЗавершить", ЭтотОбъект, ДопПараметры); ОписаниеОповещения = Новый ОписаниеОповещения("ПоместитьФайлВХранилищеЗавершить", ЭтотОбъект, ДопПараметры);
ПомещаемыеФайлы = Новый Массив; НачатьПомещениеФайлов(ОписаниеОповещения, , Истина, УникальныйИдентификатор);
ОписаниеФайла = Новый ОписаниеПередаваемогоФайла(,АдресФайла);
ПомещаемыеФайлы.Добавить(ОписаниеФайла);
НачатьПомещениеФайлов(ОписаниеОповещения, ПомещаемыеФайлы,,Истина, УникальныйИдентификатор);
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -45,7 +45,7 @@
Функция ВерсияКалендарей() Экспорт Функция ВерсияКалендарей() Экспорт
Возврат 31; Возврат 32;
КонецФункции КонецФункции
@@ -57,7 +57,7 @@
Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт
Возврат "3.0.3.5"; Возврат "3.0.3.22";
КонецФункции КонецФункции
@@ -327,6 +327,11 @@
<Item Calendar="17" Year="2019" DayType="Суббота" Date="20190204" SwapDate="20190202"/> <Item Calendar="17" Year="2019" DayType="Суббота" Date="20190204" SwapDate="20190202"/>
<Item Calendar="17" Year="2019" DayType="Праздник" Date="20190205" SwapDate=""/> <Item Calendar="17" Year="2019" DayType="Праздник" Date="20190205" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Праздник" Date="20190506" SwapDate=""/> <Item Calendar="17" Year="2019" DayType="Праздник" Date="20190506" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Предпраздничный" Date="20190712" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Праздник" Date="20190713" SwapDate="20190715"/>
<Item Calendar="17" Year="2019" DayType="Праздник" Date="20190714" SwapDate="20190716"/>
<Item Calendar="17" Year="2019" DayType="Суббота" Date="20190715" SwapDate="20190713"/>
<Item Calendar="17" Year="2019" DayType="Воскресенье" Date="20190716" SwapDate="20190714"/>
<Item Calendar="17" Year="2019" DayType="Предпраздничный" Date="20190814" SwapDate=""/> <Item Calendar="17" Year="2019" DayType="Предпраздничный" Date="20190814" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Праздник" Date="20190815" SwapDate=""/> <Item Calendar="17" Year="2019" DayType="Праздник" Date="20190815" SwapDate=""/>
<Item Calendar="17" Year="2020" DayType="Праздник" Date="20200224" SwapDate="20200225"/> <Item Calendar="17" Year="2020" DayType="Праздник" Date="20200224" SwapDate="20200225"/>
@@ -7011,10 +7011,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ШаблонСертификата</name> <name>ШаблонСертификата</name>
<title>
<key>ru</key>
<value>Шаблон сертификата</value>
</title>
<id>2</id> <id>2</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7431,10 +7427,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ЮридическийАдресXML</name> <name>ЮридическийАдресXML</name>
<title>
<key>ru</key>
<value>Юридический адрес XML</value>
</title>
<id>30</id> <id>30</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7449,10 +7441,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ФактическийАдресXML</name> <name>ФактическийАдресXML</name>
<title>
<key>ru</key>
<value>Фактический адрес XML</value>
</title>
<id>31</id> <id>31</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7504,10 +7492,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ЗаголовкиРеквизитов</name> <name>ЗаголовкиРеквизитов</name>
<title>
<key>ru</key>
<value>Заголовки реквизитов</value>
</title>
<id>22</id> <id>22</id>
<valueType> <valueType>
<types>ValueList</types> <types>ValueList</types>
@@ -7576,10 +7560,6 @@
</columns> </columns>
<columns> <columns>
<name>ЭтоГруппаРеквизитов</name> <name>ЭтоГруппаРеквизитов</name>
<title>
<key>ru</key>
<value>Это группа реквизитов</value>
</title>
<id>3</id> <id>3</id>
<valueType> <valueType>
<types>Boolean</types> <types>Boolean</types>
@@ -7594,10 +7574,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>СписокПрограмм</name> <name>СписокПрограмм</name>
<title>
<key>ru</key>
<value>Список программ</value>
</title>
<id>25</id> <id>25</id>
<valueType> <valueType>
<types>ValueTable</types> <types>ValueTable</types>
@@ -7610,10 +7586,6 @@
</edit> </edit>
<columns> <columns>
<name>Ссылка</name> <name>Ссылка</name>
<title>
<key>ru</key>
<value>Ссылка</value>
</title>
<id>1</id> <id>1</id>
<valueType> <valueType>
<types>CatalogRef.ПрограммыЭлектроннойПодписиИШифрования</types> <types>CatalogRef.ПрограммыЭлектроннойПодписиИШифрования</types>
@@ -7627,10 +7599,6 @@
</columns> </columns>
<columns> <columns>
<name>Представление</name> <name>Представление</name>
<title>
<key>ru</key>
<value>Представление</value>
</title>
<id>2</id> <id>2</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7645,10 +7613,6 @@
</columns> </columns>
<columns> <columns>
<name>Идентификатор</name> <name>Идентификатор</name>
<title>
<key>ru</key>
<value>Идентификатор</value>
</title>
<id>3</id> <id>3</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7663,10 +7627,6 @@
</columns> </columns>
<columns> <columns>
<name>ИмяПрограммы</name> <name>ИмяПрограммы</name>
<title>
<key>ru</key>
<value>Имя программы</value>
</title>
<id>4</id> <id>4</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7681,10 +7641,6 @@
</columns> </columns>
<columns> <columns>
<name>ТипПрограммы</name> <name>ТипПрограммы</name>
<title>
<key>ru</key>
<value>Тип программы</value>
</title>
<id>5</id> <id>5</id>
<valueType> <valueType>
<types>Number</types> <types>Number</types>
@@ -7702,10 +7658,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ЭтоПолноправныйПользователь</name> <name>ЭтоПолноправныйПользователь</name>
<title>
<key>ru</key>
<value>Это полноправный пользователь</value>
</title>
<id>28</id> <id>28</id>
<valueType> <valueType>
<types>Boolean</types> <types>Boolean</types>
@@ -7719,10 +7671,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ЭтоПодчиненныйУзелРИБ</name> <name>ЭтоПодчиненныйУзелРИБ</name>
<title>
<key>ru</key>
<value>Это подчиненный узел РИБ</value>
</title>
<id>29</id> <id>29</id>
<valueType> <valueType>
<types>Boolean</types> <types>Boolean</types>
@@ -7736,10 +7684,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДокументыПечатались</name> <name>ДокументыПечатались</name>
<title>
<key>ru</key>
<value>Документы печатались</value>
</title>
<id>38</id> <id>38</id>
<valueType> <valueType>
<types>Boolean</types> <types>Boolean</types>
@@ -7865,10 +7809,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ЭтоНовый</name> <name>ЭтоНовый</name>
<title>
<key>ru</key>
<value>Это новый</value>
</title>
<id>45</id> <id>45</id>
<valueType> <valueType>
<types>Boolean</types> <types>Boolean</types>
@@ -7882,10 +7822,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>АдресЗапросаНаСертификат</name> <name>АдресЗапросаНаСертификат</name>
<title>
<key>ru</key>
<value>Адрес запроса на сертификат</value>
</title>
<id>46</id> <id>46</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7900,10 +7836,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>АдресСертификата</name> <name>АдресСертификата</name>
<title>
<key>ru</key>
<value>Адрес сертификата</value>
</title>
<id>47</id> <id>47</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7918,10 +7850,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ПредставлениеПрограммы</name> <name>ПредставлениеПрограммы</name>
<title>
<key>ru</key>
<value>Представление программы</value>
</title>
<id>48</id> <id>48</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -7954,10 +7882,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ИнтернетПоддержкаПользователейПодключена</name> <name>ИнтернетПоддержкаПользователейПодключена</name>
<title>
<key>ru</key>
<value>Интернет поддержка пользователей подключена</value>
</title>
<id>50</id> <id>50</id>
<valueType> <valueType>
<types>Boolean</types> <types>Boolean</types>
@@ -7971,10 +7895,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ФактическийАдресСтруктура</name> <name>ФактическийАдресСтруктура</name>
<title>
<key>ru</key>
<value>Фактический адрес структура</value>
</title>
<id>51</id> <id>51</id>
<valueType/> <valueType/>
<view> <view>
@@ -7986,10 +7906,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ЮридическийАдресСтруктура</name> <name>ЮридическийАдресСтруктура</name>
<title>
<key>ru</key>
<value>Юридический адрес структура</value>
</title>
<id>52</id> <id>52</id>
<valueType/> <valueType/>
<view> <view>
@@ -8001,10 +7917,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>КонтейнерКлючаПуть</name> <name>КонтейнерКлючаПуть</name>
<title>
<key>ru</key>
<value>Контейнер ключа путь</value>
</title>
<id>53</id> <id>53</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8019,10 +7931,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>КонтейнерКлючаИмя</name> <name>КонтейнерКлючаИмя</name>
<title>
<key>ru</key>
<value>Контейнер ключа имя</value>
</title>
<id>54</id> <id>54</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8072,10 +7980,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДокументыПоляСертификата</name> <name>ДокументыПоляСертификата</name>
<title>
<key>ru</key>
<value>Документы поля сертификата</value>
</title>
<id>58</id> <id>58</id>
<valueType/> <valueType/>
<view> <view>
@@ -8087,10 +7991,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ИдентификаторДокументооборота</name> <name>ИдентификаторДокументооборота</name>
<title>
<key>ru</key>
<value>Идентификатор документооборота</value>
</title>
<id>59</id> <id>59</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8165,10 +8065,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДатаЗаявления</name> <name>ДатаЗаявления</name>
<title>
<key>ru</key>
<value>Дата заявления</value>
</title>
<id>64</id> <id>64</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8203,10 +8099,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДокументыПартнерТип</name> <name>ДокументыПартнерТип</name>
<title>
<key>ru</key>
<value>Документы партнер тип</value>
</title>
<id>67</id> <id>67</id>
<valueType/> <valueType/>
<view> <view>
@@ -8218,10 +8110,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДокументыРуководительТип</name> <name>ДокументыРуководительТип</name>
<title>
<key>ru</key>
<value>Документы руководитель тип</value>
</title>
<id>68</id> <id>68</id>
<valueType/> <valueType/>
<view> <view>
@@ -8251,10 +8139,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>СотрудникТип</name> <name>СотрудникТип</name>
<title>
<key>ru</key>
<value>Сотрудник тип</value>
</title>
<id>56</id> <id>56</id>
<valueType/> <valueType/>
<view> <view>
@@ -8266,10 +8150,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДокументыРуководительСсылка</name> <name>ДокументыРуководительСсылка</name>
<title>
<key>ru</key>
<value>Документы руководитель ссылка</value>
</title>
<id>69</id> <id>69</id>
<valueType> <valueType>
<types>AnyRef</types> <types>AnyRef</types>
@@ -8283,10 +8163,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДокументыПартнерСсылка</name> <name>ДокументыПартнерСсылка</name>
<title>
<key>ru</key>
<value>Документы партнер ссылка</value>
</title>
<id>70</id> <id>70</id>
<valueType> <valueType>
<types>AnyRef</types> <types>AnyRef</types>
@@ -8300,10 +8176,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДатаОбновленияСостояния</name> <name>ДатаОбновленияСостояния</name>
<title>
<key>ru</key>
<value>Дата обновления состояния</value>
</title>
<id>49</id> <id>49</id>
<valueType> <valueType>
<types>Date</types> <types>Date</types>
@@ -8318,10 +8190,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ПоследнееСостояниеЗаявления</name> <name>ПоследнееСостояниеЗаявления</name>
<title>
<key>ru</key>
<value>Последнее состояние заявления</value>
</title>
<id>63</id> <id>63</id>
<valueType> <valueType>
<types>EnumRef.СостоянияЗаявленияНаВыпускСертификата</types> <types>EnumRef.СостоянияЗаявленияНаВыпускСертификата</types>
@@ -8335,10 +8203,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ИдентификаторАбонента</name> <name>ИдентификаторАбонента</name>
<title>
<key>ru</key>
<value>Идентификатор абонента</value>
</title>
<id>66</id> <id>66</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8353,10 +8217,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ОповеститьОбИзмененииЗаявления</name> <name>ОповеститьОбИзмененииЗаявления</name>
<title>
<key>ru</key>
<value>Оповестить об изменении заявления</value>
</title>
<id>71</id> <id>71</id>
<valueType> <valueType>
<types>Boolean</types> <types>Boolean</types>
@@ -8370,10 +8230,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>АдресКорневогоСертификата</name> <name>АдресКорневогоСертификата</name>
<title>
<key>ru</key>
<value>Адрес корневого сертификата</value>
</title>
<id>72</id> <id>72</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8388,10 +8244,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ТекстСертификата</name> <name>ТекстСертификата</name>
<title>
<key>ru</key>
<value>Текст сертификата</value>
</title>
<id>73</id> <id>73</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8406,10 +8258,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ТекстКорневогоСертификата</name> <name>ТекстКорневогоСертификата</name>
<title>
<key>ru</key>
<value>Текст корневого сертификата</value>
</title>
<id>74</id> <id>74</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8424,10 +8272,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ОтпечатокКорневогоСертификата</name> <name>ОтпечатокКорневогоСертификата</name>
<title>
<key>ru</key>
<value>Отпечаток корневого сертификата</value>
</title>
<id>76</id> <id>76</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8442,10 +8286,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ТелефонXML</name> <name>ТелефонXML</name>
<title>
<key>ru</key>
<value>Телефон XML</value>
</title>
<id>78</id> <id>78</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8460,10 +8300,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ЭлектроннаяПочтаXML</name> <name>ЭлектроннаяПочтаXML</name>
<title>
<key>ru</key>
<value>Электронная почта XML</value>
</title>
<id>79</id> <id>79</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8478,10 +8314,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ДатаУстановкиСертификата</name> <name>ДатаУстановкиСертификата</name>
<title>
<key>ru</key>
<value>Дата установки сертификата</value>
</title>
<id>80</id> <id>80</id>
<valueType> <valueType>
<types>Date</types> <types>Date</types>
@@ -8496,10 +8328,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ОткрытаяЧастьКлючаЭП</name> <name>ОткрытаяЧастьКлючаЭП</name>
<title>
<key>ru</key>
<value>Открытая часть ключа ЭП</value>
</title>
<id>81</id> <id>81</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8514,10 +8342,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ИдентификаторКлючаСубъекта</name> <name>ИдентификаторКлючаСубъекта</name>
<title>
<key>ru</key>
<value>Идентификатор ключа субъекта</value>
</title>
<id>82</id> <id>82</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8609,10 +8433,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ГражданствоОКСМКодАльфа3</name> <name>ГражданствоОКСМКодАльфа3</name>
<title>
<key>ru</key>
<value>Гражданство ОКСМ Код Альфа3</value>
</title>
<id>86</id> <id>86</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8627,10 +8447,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ГражданствоПредставление</name> <name>ГражданствоПредставление</name>
<title>
<key>ru</key>
<value>Гражданство представление</value>
</title>
<id>85</id> <id>85</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -8645,10 +8461,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ЕстьОрганизации</name> <name>ЕстьОрганизации</name>
<title>
<key>ru</key>
<value>Есть организации</value>
</title>
<id>87</id> <id>87</id>
<valueType> <valueType>
<types>Boolean</types> <types>Boolean</types>
@@ -8682,10 +8494,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ВариантАлгоритмов</name> <name>ВариантАлгоритмов</name>
<title>
<key>ru</key>
<value>Вариант алгоритмов</value>
</title>
<id>89</id> <id>89</id>
<valueType/> <valueType/>
<view> <view>
@@ -8697,10 +8505,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ВидКонтактнойИнформации</name> <name>ВидКонтактнойИнформации</name>
<title>
<key>ru</key>
<value>Вид контактной информации</value>
</title>
<id>90</id> <id>90</id>
<valueType/> <valueType/>
<view> <view>
@@ -8712,10 +8516,6 @@
</attributes> </attributes>
<attributes> <attributes>
<name>ВидКонтактнойИнформацииТелефон</name> <name>ВидКонтактнойИнформацииТелефон</name>
<title>
<key>ru</key>
<value>Вид контактной информации (телефон)</value>
</title>
<id>91</id> <id>91</id>
<valueType/> <valueType/>
<view> <view>
@@ -20,10 +20,6 @@
УстановитьУсловноеОформление(); УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
ЕстьОрганизации = Не Метаданные.ОпределяемыеТипы.Организация.Тип.СодержитТип(Тип("Строка")); ЕстьОрганизации = Не Метаданные.ОпределяемыеТипы.Организация.Тип.СодержитТип(Тип("Строка"));
Если Не ЕстьОрганизации Тогда Если Не ЕстьОрганизации Тогда
Элементы.Организация.Видимость = Ложь; Элементы.Организация.Видимость = Ложь;
@@ -12,8 +12,8 @@
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьЦветаИУсловноеОформление(); УстановитьЦветаИУсловноеОформление();
FuzzySearch = ОбщегоНазначения.ПодключитьКомпонентуИзМакета("FuzzyStringMatchExtension", "ОбщийМакет.КомпонентаПоискаСтрок"); КомпонентаНечеткогоПоиска = ОбщегоНазначения.ПодключитьКомпонентуИзМакета("FuzzyStringMatchExtension", "ОбщийМакет.КомпонентаПоискаСтрок");
Если FuzzySearch <> Неопределено Тогда Если КомпонентаНечеткогоПоиска <> Неопределено Тогда
НечеткийПоиск = Истина; НечеткийПоиск = Истина;
КонецЕсли; КонецЕсли;
@@ -322,18 +322,17 @@
Если СтруктураПолейПодобия.Количество() > 0 Тогда Если СтруктураПолейПодобия.Количество() > 0 Тогда
FuzzySearch = ОбщегоНазначения.ПодключитьКомпонентуИзМакета("FuzzyStringMatchExtension", "ОбщийМакет.КомпонентаПоискаСтрок"); НечеткийПоиск = ОбщегоНазначения.ПодключитьКомпонентуИзМакета("FuzzyStringMatchExtension", "ОбщийМакет.КомпонентаПоискаСтрок");
Если FuzzySearch = Неопределено Тогда Если НечеткийПоиск = Неопределено Тогда
Результат.ОписаниеОшибки = Результат.ОписаниеОшибки =
НСтр("ru = 'Не удалось подключить внешнюю компоненту FuzzyStringMatchExtension из макета ""ОбщийМакет.КомпонентаПоискаСтрок"" НСтр("ru = 'Не удалось подключить компоненту нечеткого поиска. Подробнее см. в журнале регистрации.'");
|Подробнее см. в журнале регистрации.'");
Возврат Результат; Возврат Результат;
КонецЕсли; КонецЕсли;
Для Каждого КлючЗначение Из СтруктураПолейПодобия Цикл Для Каждого КлючЗначение Из СтруктураПолейПодобия Цикл
ИмяПоля = КлючЗначение.Ключ; ИмяПоля = КлючЗначение.Ключ;
ИскомыеСтроки = СтрСоединить(КандидатыДублей.ВыгрузитьКолонку(ИмяПоля), "~"); ИскомыеСтроки = СтрСоединить(КандидатыДублей.ВыгрузитьКолонку(ИмяПоля), "~");
СтрокаДляПоиска = ЭталонныйЭлемент[ИмяПоля]; СтрокаДляПоиска = ЭталонныйЭлемент[ИмяПоля];
ИндексыСтрок = FuzzySearch.StringSearch(НРег(СтрокаДляПоиска), НРег(ИскомыеСтроки), "~", 10, 80, 90); ИндексыСтрок = НечеткийПоиск.StringSearch(НРег(СтрокаДляПоиска), НРег(ИскомыеСтроки), "~", 10, 80, 90);
Если ПустаяСтрока(ИндексыСтрок) Тогда Если ПустаяСтрока(ИндексыСтрок) Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -3515,12 +3515,12 @@
Для каждого ИмяУровня Из РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(Адрес.AddressType, Ложь) Цикл Для каждого ИмяУровня Из РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(Адрес.AddressType, Ложь) Цикл
Если ЗначениеЗаполнено(Адрес[ИмяУровня]) Тогда Если СтрСравнить(ИмяУровня, "locality") = 0
Если Адрес.AddressType = РаботаСАдресамиКлиентСервер.АдминистративноТерриториальныйАдрес() И РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(Адрес.AddressType)
И СтрСравнить(ИмяУровня, "Locality") = 0 И ЗначениеЗаполнено(Адрес.city)
И СтрСравнить(СокрЛП(Адрес[ИмяУровня] + " " + Адрес[ИмяУровня + "Type"]), СокрЛП(Адрес["city"] + " " + Адрес["cityType"])) = 0 Тогда И ПустаяСтрока(Адрес.locality) Тогда
Продолжить; СписокЗаполненныхУровней.Добавить(Адрес["city"] + " " + Адрес["cityType"]);
КонецЕсли; ИначеЕсли ЗначениеЗаполнено(Адрес[ИмяУровня]) Тогда
Если НЕ РаботаСАдресамиКлиентСервер.ПредставлениеУровняБезСокращения(ИмяУровня) Тогда Если НЕ РаботаСАдресамиКлиентСервер.ПредставлениеУровняБезСокращения(ИмяУровня) Тогда
СписокЗаполненныхУровней.Добавить(Адрес[ИмяУровня] + " " + Адрес[ИмяУровня + "Type"]); СписокЗаполненныхУровней.Добавить(Адрес[ИмяУровня] + " " + Адрес[ИмяУровня + "Type"]);
@@ -31,7 +31,13 @@
ПараметрыПоиска = Новый Структура; ПараметрыПоиска = Новый Структура;
Параметры.Свойство("Индекс", Индекс); Параметры.Свойство("Индекс", Индекс);
ДанныеКлассификатора = Обработки.РасширенныйВводКонтактнойИнформации.АдресаКлассификатораПоПочтовомуИндексу(Индекс, ПараметрыПоиска);
Если ЗначениеЗаполнено(Индекс) Тогда
ДанныеКлассификатора = Обработки.РасширенныйВводКонтактнойИнформации.АдресаКлассификатораПоПочтовомуИндексу(Индекс, ПараметрыПоиска);
Иначе
КраткоеПредставлениеОшибки = НСтр("ru = 'Индекс не найден в адресном классификаторе.'");
Возврат;
КонецЕсли;
Если ДанныеКлассификатора.Отказ Тогда Если ДанныеКлассификатора.Отказ Тогда
// Сервис на обслуживании // Сервис на обслуживании
@@ -54,6 +54,7 @@
Иначе Иначе
ТипАдреса = "Муниципальный"; ТипАдреса = "Муниципальный";
НаселенныйПунктДетально = УправлениеКонтактнойИнформацией.ОписаниеНовойКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Адрес);
КонецЕсли; КонецЕсли;
ЕстьПравоЗагружатьКлассификатор = Обработки.РасширенныйВводКонтактнойИнформации.ЕстьВозможностьИзмененияАдресногоКлассификатора(); ЕстьПравоЗагружатьКлассификатор = Обработки.РасширенныйВводКонтактнойИнформации.ЕстьВозможностьИзмененияАдресногоКлассификатора();
@@ -314,16 +315,17 @@
ВнутригородскойРайон = ПредставлениеУровняАдреса(НаселенныйПунктДетально, "CityDistrict"); ВнутригородскойРайон = ПредставлениеУровняАдреса(НаселенныйПунктДетально, "CityDistrict");
НаселенныйПункт = ПредставлениеУровняАдреса(НаселенныйПунктДетально, "Locality"); НаселенныйПункт = ПредставлениеУровняАдреса(НаселенныйПунктДетально, "Locality");
Территория = ПредставлениеУровняАдреса(НаселенныйПунктДетально, "Territory"); Территория = ПредставлениеУровняАдреса(НаселенныйПунктДетально, "Territory");
КонецПроцедуры КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста &НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеУровняАдреса(Адрес, ИмяУровня, ДобавлятьСокращение = Истина) Функция ПредставлениеУровняАдреса(Адрес, ИмяУровня, ДобавлятьСокращение = Истина)
Если ИмяУровня = "Locality" Если СтрСравнить(ИмяУровня, "locality") = 0
И Не РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(Адрес.AddressType) И ПустаяСтрока(Адрес.locality)
И Адрес.localityId = Адрес.cityId Тогда И ЗначениеЗаполнено(Адрес.city)
Возврат ""; И РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(Адрес.AddressType) Тогда
Возврат СокрЛП(Адрес.city + " " + Адрес.cityType);
КонецЕсли; КонецЕсли;
Если Адрес.Свойство(ИмяУровня) И ЗначениеЗаполнено(Адрес[ИмяУровня]) Тогда Если Адрес.Свойство(ИмяУровня) И ЗначениеЗаполнено(Адрес[ИмяУровня]) Тогда
@@ -348,10 +350,12 @@
Элементы.Город.Видимость = НЕ ЭтоМуниципальныйАдрес; Элементы.Город.Видимость = НЕ ЭтоМуниципальныйАдрес;
Элементы.МуниципальныйРайон.Видимость = ЭтоМуниципальныйАдрес; Элементы.МуниципальныйРайон.Видимость = ЭтоМуниципальныйАдрес;
Элементы.Поселение.Видимость = ЭтоМуниципальныйАдрес; Элементы.Поселение.Видимость = ЭтоМуниципальныйАдрес;
Если НаселенныйПунктДетально <> Неопределено Если ЭтоМуниципальныйАдрес
И НаселенныйПунктДетально.localityId = НаселенныйПунктДетально.cityId Тогда И ПустаяСтрока(НаселенныйПунктДетально.locality)
НаселенныйПункт = ?(ЭтоМуниципальныйАдрес, И ЗначениеЗаполнено(НаселенныйПунктДетально.city) Тогда
НаселенныйПунктДетально.locality + " " + НаселенныйПунктДетально.localityType, ""); НаселенныйПункт = НаселенныйПунктДетально.city + " " + НаселенныйПунктДетально.cityType;
Иначе
НаселенныйПункт = НаселенныйПунктДетально.locality + " " + НаселенныйПунктДетально.localityType;
КонецЕсли; КонецЕсли;
Иначе Иначе
@@ -470,7 +474,7 @@
ОпределитьПоляАдреса(); ОпределитьПоляАдреса();
Элемент.ОбновитьТекстРедактирования(); Элемент.ОбновитьТекстРедактирования();
Если ЕстьПравоЗагружатьКлассификатор И Не КлассификаторДоступен И ВыбранноеЗначение.ПредлагатьЗагрузкуКлассификатора Тогда Если ЕстьПравоЗагружатьКлассификатор И Не КлассификаторДоступен И ВыбранноеЗначение.ПредлагатьЗагрузкуКлассификатора Тогда
// Предлагаем загрузить классификатор. // Предлагаем загрузить классификатор.
ПредложениеЗагрузкиКлассификатора(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Данные для ""%1"" не загружены.'"), ВыбранноеЗначение.Представление), ПредложениеЗагрузкиКлассификатора(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Данные для ""%1"" не загружены.'"), ВыбранноеЗначение.Представление),
ВыбранноеЗначение.Представление); ВыбранноеЗначение.Представление);
@@ -0,0 +1,759 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДниГрафика.Календарь КАК Календарь,
| ДниГрафика.Год КАК Год
|ИЗ
| РегистрСведений.КалендарныеГрафики КАК ДниГрафика
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Календари КАК ГрафикиРаботы
| ПО (ГрафикиРаботы.Ссылка = ДниГрафика.Календарь)
| И (ГрафикиРаботы.СпособЗаполнения = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияГрафикаРаботы.ПоНеделям))
| И (ГрафикиРаботы.УчитыватьПраздники)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеКалендаря
| ПО (ГрафикиРаботы.ПроизводственныйКалендарь = ДанныеКалендаря.ПроизводственныйКалендарь)
| И ДниГрафика.Год = ДанныеКалендаря.Год
| И ДниГрафика.ДатаГрафика = ДанныеКалендаря.Дата
| И (НЕ ДниГрафика.ДеньВключенВГрафик)
| И (ДЕНЬНЕДЕЛИ(ДанныеКалендаря.Дата) В (6, 7))
| И (ДанныеКалендаря.ВидДня В (ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий), ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный)))
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РучныеИзмененияГрафиковРаботы КАК РучныеИзменения
| ПО (РучныеИзменения.ГрафикРаботы = ДниГрафика.Календарь)
| И (РучныеИзменения.Год = ДниГрафика.Год)
| И (РучныеИзменения.ДатаГрафика = ДниГрафика.ДатаГрафика)
|ГДЕ
| ЕСТЬNULL(РучныеИзменения.РучноеИзменение, ЛОЖЬ) = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| Календарь,
| Год";
ДополнительныеПараметры = ОбновлениеИнформационнойБазы.ДополнительныеПараметрыОтметкиОбработки();
ДополнительныеПараметры.ЭтоНезависимыйРегистрСведений = Истина;
ДополнительныеПараметры.ПолноеИмяРегистра = Метаданные.РегистрыСведений.КалендарныеГрафики.ПолноеИмя();
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить(), ДополнительныеПараметры);
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ОбработкаЗавершена = Истина;
МетаданныеРегистра = Метаданные.РегистрыСведений.КалендарныеГрафики;
ПолноеИмяРегистра = МетаданныеРегистра.ПолноеИмя();
ПредставлениеРегистра = МетаданныеРегистра.Представление();
ПредставлениеОтбора = НСтр("ru = 'Календарь = ""%1""'");
Выборка = ОбновлениеИнформационнойБазы.ВыбратьИзмеренияНезависимогоРегистраСведенийДляОбработки(Параметры.Очередь, ПолноеИмяРегистра);
ГрафикиМассив = Новый Массив;
Пока Выборка.Следующий() Цикл
ГрафикиМассив.Добавить(Выборка.Календарь);
КонецЦикла;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ГрафикиМассив", ГрафикиМассив);
Запрос.Текст =
"ВЫБРАТЬ
| Календари.Ссылка КАК Ссылка,
| Календари.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь,
| Календари.СпособЗаполнения КАК СпособЗаполнения,
| Календари.ДатаОтсчета КАК ДатаОтсчета,
| Календари.УчитыватьПраздники КАК УчитыватьПраздники,
| Календари.ШаблонЗаполнения.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| ДеньВключенВГрафик КАК ДеньВключенВГрафик
| ) КАК ШаблонЗаполнения
|ИЗ
| Справочник.Календари КАК Календари
|ГДЕ
| Календари.Ссылка В(&ГрафикиМассив)";
РеквизитыГрафиков = Запрос.Выполнить().Выгрузить();
РеквизитыГрафиков.Индексы.Добавить("Ссылка");
ОтборСтрок = Новый Структура("Ссылка");
Обработано = 0;
Проблемных = 0;
Выборка.Сбросить();
Пока Выборка.Следующий() Цикл
ОтборСтрок.Ссылка = Выборка.Календарь;
РеквизитыГрафика = РеквизитыГрафиков.НайтиСтроки(ОтборСтрок)[0];
Попытка
ЗаполнитьГрафикРаботыНаГод(Выборка.Календарь, Выборка.Год, РеквизитыГрафика);
Обработано = Обработано + 1;
Исключение
Проблемных = Проблемных + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать набор записей регистра ""%1"" с отбором %2 по причине:
|%3'"),
ПредставлениеРегистра,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ПредставлениеОтбора,
Выборка.Календарь),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(
ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение,
МетаданныеРегистра, ,
ТекстСообщения);
КонецПопытки;
КонецЦикла;
Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяРегистра) Тогда
ОбработкаЗавершена = Ложь;
КонецЕсли;
ИмяПроцедуры = "РегистрыСведений.КалендарныеГрафики.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Если Обработано = 0 И Проблемных <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре %1 не удалось обработать некоторые записи (пропущены): %2'"),
ИмяПроцедуры,
Проблемных);
ВызватьИсключение ТекстСообщения;
КонецЕсли;
ЗаписьЖурналаРегистрации(
ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Информация, , ,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура %1 обработала очередную порцию записей: %2'"),
ИмяПроцедуры,
Обработано));
Параметры.ОбработкаЗавершена = ОбработкаЗавершена;
КонецПроцедуры
Процедура ЗаполнитьГрафикРаботыНаГод(ГрафикРаботы, Год, РеквизитыГрафика)
НачалоГода = Дата(Год, 1, 1);
КонецГода = Дата(Год, 12, 31);
РеквизитыГрафика.ШаблонЗаполнения.Сортировать("НомерСтроки");
ДниВключенныеВГрафик = ДниВключенныеВГрафик(
НачалоГода,
РеквизитыГрафика.СпособЗаполнения,
РеквизитыГрафика.ШаблонЗаполнения,
КонецГода,
РеквизитыГрафика.ПроизводственныйКалендарь,
РеквизитыГрафика.УчитыватьПраздники,
РеквизитыГрафика.ДатаОтсчета);
ЗаписатьДанныеГрафикаВРегистр(ГрафикРаботы, ДниВключенныеВГрафик, НачалоГода, КонецГода);
КонецПроцедуры
// Выполняет обновление графиков работы по данным производственных календарей,
// на основании которых они заполняются.
//
// Параметры:
// - УсловияОбновления - таблица значений с колонками.
// - КодПроизводственногоКалендаря - код производственного календаря, данные которого изменились,
// - Год - год, за который нужно обновить данные.
//
Процедура ОбновитьГрафикиРаботыПоДаннымПроизводственныхКалендарей(УсловияОбновления) Экспорт
// Выявим графики, которые нужно обновить
// получаем данные этих графиков
// последовательно обновляем за каждый год.
ТекстЗапроса =
"ВЫБРАТЬ
| УсловияОбновления.КодПроизводственногоКалендаря,
| УсловияОбновления.Год,
| ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, УсловияОбновления.Год - 1) КАК НачалоГода,
| ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 12, 31), ГОД, УсловияОбновления.Год - 1) КАК КонецГода
|ПОМЕСТИТЬ УсловияОбновления
|ИЗ
| &УсловияОбновления КАК УсловияОбновления
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.Ссылка КАК ГрафикРаботы,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники,
| Календари.ДатаНачала,
| Календари.ДатаОкончания
|ПОМЕСТИТЬ ВТГрафикиРаботыЗависимыеОтКалендарей
|ИЗ
| Справочник.Календари КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари
| ПО (ПроизводственныеКалендари.Ссылка = Календари.ПроизводственныйКалендарь)
| И (Календари.СпособЗаполнения = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияГрафикаРаботы.ПоНеделям))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Календари.Ссылка,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники,
| Календари.ДатаНачала,
| Календари.ДатаОкончания
|ИЗ
| Справочник.Календари КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари
| ПО (ПроизводственныеКалендари.Ссылка = Календари.ПроизводственныйКалендарь)
| И (Календари.СпособЗаполнения = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияГрафикаРаботы.ПоЦикламПроизвольнойДлины))
| И (Календари.УчитыватьПраздники)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| УсловияОбновления.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| ВЫБОР
| КОГДА Календари.ДатаНачала < УсловияОбновления.НачалоГода
| ТОГДА УсловияОбновления.НачалоГода
| ИНАЧЕ Календари.ДатаНачала
| КОНЕЦ КАК ДатаНачала,
| ВЫБОР
| КОГДА Календари.ДатаОкончания > УсловияОбновления.КонецГода
| ТОГДА УсловияОбновления.КонецГода
| ИНАЧЕ Календари.ДатаОкончания
| КОНЕЦ КАК ДатаОкончания,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
|ПОМЕСТИТЬ ВТГрафикиРаботыПоУсловиюОбновления
|ИЗ
| ВТГрафикиРаботыЗависимыеОтКалендарей КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ УсловияОбновления КАК УсловияОбновления
| ПО (УсловияОбновления.КодПроизводственногоКалендаря = Календари.ПроизводственныйКалендарь.Код)
| И Календари.ДатаНачала <= УсловияОбновления.КонецГода
| И Календари.ДатаОкончания >= УсловияОбновления.НачалоГода
| И (Календари.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| УсловияОбновления.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| ВЫБОР
| КОГДА Календари.ДатаНачала < УсловияОбновления.НачалоГода
| ТОГДА УсловияОбновления.НачалоГода
| ИНАЧЕ Календари.ДатаНачала
| КОНЕЦ,
| УсловияОбновления.КонецГода,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
|ИЗ
| ВТГрафикиРаботыЗависимыеОтКалендарей КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ УсловияОбновления КАК УсловияОбновления
| ПО (УсловияОбновления.КодПроизводственногоКалендаря = Календари.ПроизводственныйКалендарь.Код)
| И Календари.ДатаНачала <= УсловияОбновления.КонецГода
| И (Календари.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1))
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| Календари.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаНачала,
| Календари.ДатаОкончания,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
|ПОМЕСТИТЬ ВТОбновляемыеГрафикиРаботы
|ИЗ
| ВТГрафикиРаботыПоУсловиюОбновления КАК Календари
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РучныеИзмененияГрафиковРаботы КАК РучныеИзмененияПоВсемГодам
| ПО (РучныеИзмененияПоВсемГодам.ГрафикРаботы = Календари.ГрафикРаботы)
| И (РучныеИзмененияПоВсемГодам.Год = 0)
|ГДЕ
| РучныеИзмененияПоВсемГодам.ГрафикРаботы ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОбновляемыеГрафикиРаботы.ГрафикРаботы,
| ОбновляемыеГрафикиРаботы.Год,
| ОбновляемыеГрафикиРаботы.СпособЗаполнения,
| ОбновляемыеГрафикиРаботы.ПроизводственныйКалендарь,
| ОбновляемыеГрафикиРаботы.ДатаНачала,
| ОбновляемыеГрафикиРаботы.ДатаОкончания,
| ОбновляемыеГрафикиРаботы.ДатаОтсчета,
| ОбновляемыеГрафикиРаботы.УчитыватьПраздники
|ИЗ
| ВТОбновляемыеГрафикиРаботы КАК ОбновляемыеГрафикиРаботы
|
|УПОРЯДОЧИТЬ ПО
| ОбновляемыеГрафикиРаботы.ГрафикРаботы,
| ОбновляемыеГрафикиРаботы.Год
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ШаблонЗаполнения.Ссылка КАК ГрафикРаботы,
| ШаблонЗаполнения.НомерСтроки КАК НомерСтроки,
| ШаблонЗаполнения.ДеньВключенВГрафик
|ИЗ
| Справочник.Календари.ШаблонЗаполнения КАК ШаблонЗаполнения
|ГДЕ
| ШаблонЗаполнения.Ссылка В
| (ВЫБРАТЬ
| ВТОбновляемыеГрафикиРаботы.ГрафикРаботы
| ИЗ
| ВТОбновляемыеГрафикиРаботы)
|
|УПОРЯДОЧИТЬ ПО
| ГрафикРаботы,
| НомерСтроки";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("УсловияОбновления", УсловияОбновления);
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ВыборкаПоГрафикам = РезультатыЗапроса[РезультатыЗапроса.ВГраница() - 1].Выбрать();
ВыборкаПоШаблону = РезультатыЗапроса[РезультатыЗапроса.ВГраница()].Выбрать();
ШаблонЗаполнения = Новый ТаблицаЗначений;
ШаблонЗаполнения.Колонки.Добавить("ДеньВключенВГрафик", Новый ОписаниеТипов("Булево"));
Пока ВыборкаПоГрафикам.СледующийПоЗначениюПоля("ГрафикРаботы") Цикл
ШаблонЗаполнения.Очистить();
Пока ВыборкаПоШаблону.НайтиСледующий(ВыборкаПоГрафикам.ГрафикРаботы, "ГрафикРаботы") Цикл
НоваяСтрока = ШаблонЗаполнения.Добавить();
НоваяСтрока.ДеньВключенВГрафик = ВыборкаПоШаблону.ДеньВключенВГрафик;
КонецЦикла;
Пока ВыборкаПоГрафикам.СледующийПоЗначениюПоля("ДатаНачала") Цикл
// Если дата окончания не указана, она будет подобрана по производственному календарю.
ДатаОкончанияЗаполнения = ВыборкаПоГрафикам.ДатаОкончания;
ДниВключенныеВГрафик = ДниВключенныеВГрафик(
ВыборкаПоГрафикам.ДатаНачала,
ВыборкаПоГрафикам.СпособЗаполнения,
ШаблонЗаполнения,
ДатаОкончанияЗаполнения,
ВыборкаПоГрафикам.ПроизводственныйКалендарь,
ВыборкаПоГрафикам.УчитыватьПраздники,
ВыборкаПоГрафикам.ДатаОтсчета);
ЗаписатьДанныеГрафикаВРегистр(ВыборкаПоГрафикам.ГрафикРаботы, ДниВключенныеВГрафик, ВыборкаПоГрафикам.ДатаНачала, ДатаОкончанияЗаполнения);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
// Функция читает данные графика работы из регистра.
//
// Параметры:
// ГрафикРаботы - Ссылка на текущий элемент справочника.
// НомерГода - Номер года, за который необходимо прочитать график.
//
// Возвращаемое значение - соответствие, где Ключ - дата.
//
Функция ПрочитатьДанныеГрафикаИзРегистра(ГрафикРаботы, НомерГода) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| КалендарныеГрафики.ДатаГрафика КАК ДатаКалендаря
|ИЗ
| РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
|ГДЕ
| КалендарныеГрафики.Календарь = &ГрафикРаботы
| И КалендарныеГрафики.Год = &ТекущийГод
| И КалендарныеГрафики.ДеньВключенВГрафик
|
|УПОРЯДОЧИТЬ ПО
| ДатаКалендаря";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);
Запрос.УстановитьПараметр("ТекущийГод", НомерГода);
ДниВключенныеВГрафик = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДниВключенныеВГрафик.Вставить(Выборка.ДатаКалендаря, Истина);
КонецЦикла;
Возврат ДниВключенныеВГрафик;
КонецФункции
// Процедура записывает данные графика в регистр.
//
// Параметры:
// ГрафикРаботы - Ссылка на текущий элемент справочника.
// НомерГода - Номер года, за который необходимо записать график.
// ДниВключенныеВГрафик - соответствие даты и данных к ней относящихся.
//
// Возвращаемое значение
// Нет
//
Процедура ЗаписатьДанныеГрафикаВРегистр(ГрафикРаботы, ДниВключенныеВГрафик, ДатаНачала, ДатаОкончания,
ЗамещатьРучныеИзменения = Ложь) Экспорт
НаборДни = РегистрыСведений.КалендарныеГрафики.СоздатьНаборЗаписей();
НаборДни.Отбор.Календарь.Установить(ГрафикРаботы);
// Запись оптимальнее выполнять по годам.
// Выбираем используемые годы
// Для каждого года
// - считываем набор,
// - модифицируем его с учетом записываемых данных
// - записываем.
ДанныеПоГодам = Новый Соответствие;
ДатаДня = ДатаНачала;
Пока ДатаДня <= ДатаОкончания Цикл
ДанныеПоГодам.Вставить(Год(ДатаДня), Истина);
ДатаДня = ДатаДня + ДлительностьСутокВСекундах();
КонецЦикла;
РучныеИзменения = Неопределено;
Если Не ЗамещатьРучныеИзменения Тогда
РучныеИзменения = РучныеИзмененияГрафика(ГрафикРаботы);
КонецЕсли;
// Обрабатываем данные по годам.
Для Каждого КлючИЗначение Из ДанныеПоГодам Цикл
Год = КлючИЗначение.Ключ;
// Считываем наборы на год
НаборДни.Отбор.Год.Установить(Год);
НачатьТранзакцию();
Попытка
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.КалендарныеГрафики");
ЭлементБлокировки.УстановитьЗначение("Календарь", ГрафикРаботы);
ЭлементБлокировки.УстановитьЗначение("Год", Год);
БлокировкаДанных.Заблокировать();
НаборДни.Прочитать();
ЗаполнитьНаборДнейНаГод(НаборДни, ДниВключенныеВГрафик, Год, ГрафикРаботы, РучныеИзменения, ДатаНачала, ДатаОкончания);
Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборДни);
Иначе
НаборДни.Записать();
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьНаборДнейНаГод(НаборДни, ДниВключенныеВГрафик, Год, ГрафикРаботы, РучныеИзменения, ДатаНачала, ДатаОкончания)
// Заполняем содержимое набора в соответствие по датам для быстрого доступа.
СтрокиНабораДни = Новый Соответствие;
Для Каждого СтрокаНабора Из НаборДни Цикл
СтрокиНабораДни.Вставить(СтрокаНабора.ДатаГрафика, СтрокаНабора);
КонецЦикла;
НачалоГода = Дата(Год, 1, 1);
КонецГода = Дата(Год, 12, 31);
НачалоОбхода = ?(ДатаНачала > НачалоГода, ДатаНачала, НачалоГода);
КонецОбхода = ?(ДатаОкончания < КонецГода, ДатаОкончания, КонецГода);
// Для периода обхода данные в наборе должны быть заменены.
ДатаДня = НачалоОбхода;
Пока ДатаДня <= КонецОбхода Цикл
Если РучныеИзменения <> Неопределено И РучныеИзменения[ДатаДня] <> Неопределено Тогда
// Оставляем без изменений в наборе ручные корректировки.
ДатаДня = ДатаДня + ДлительностьСутокВСекундах();
Продолжить;
КонецЕсли;
// Если строки на дату нет в наборе - создаем ее.
СтрокаНабораДни = СтрокиНабораДни[ДатаДня];
Если СтрокаНабораДни = Неопределено Тогда
СтрокаНабораДни = НаборДни.Добавить();
СтрокаНабораДни.Календарь = ГрафикРаботы;
СтрокаНабораДни.Год = Год;
СтрокаНабораДни.ДатаГрафика = ДатаДня;
СтрокиНабораДни.Вставить(ДатаДня, СтрокаНабораДни);
КонецЕсли;
// Если день включен в график, то заполним его интервалы.
ДанныеДня = ДниВключенныеВГрафик.Получить(ДатаДня);
Если ДанныеДня = Неопределено Тогда
// Удаляем строку из набора, если день - нерабочий.
НаборДни.Удалить(СтрокаНабораДни);
СтрокиНабораДни.Удалить(ДатаДня);
Иначе
СтрокаНабораДни.ДеньВключенВГрафик = Истина;
КонецЕсли;
ДатаДня = ДатаДня + ДлительностьСутокВСекундах();
КонецЦикла;
// Заполняем вторичные данные для оптимизации расчетов по календарям.
ДатаОбхода = НачалоГода;
КоличествоДнейВГрафикеСНачалаГода = 0;
Пока ДатаОбхода <= КонецГода Цикл
СтрокаНабораДни = СтрокиНабораДни[ДатаОбхода];
Если СтрокаНабораДни <> Неопределено Тогда
// День включен в график
КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода + 1;
Иначе
// День не включен в график
СтрокаНабораДни = НаборДни.Добавить();
СтрокаНабораДни.Календарь = ГрафикРаботы;
СтрокаНабораДни.Год = Год;
СтрокаНабораДни.ДатаГрафика = ДатаОбхода;
КонецЕсли;
СтрокаНабораДни.КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода;
ДатаОбхода = ДатаОбхода + ДлительностьСутокВСекундах();
КонецЦикла;
КонецПроцедуры
// Составляет коллекцию дат, являющихся рабочими с учетом производственного календаря,
// способа заполнения и других настроек.
//
// Параметры:
// - Год - номер года
// - ПроизводственныйКалендарь - производственный календарь, по которому определяются дни.
// - СпособЗаполнения - способ заполнения.
// - ШаблонЗаполнения - шаблон заполнения по дням.
// - УчитыватьПраздники - булево, если Истина, то дни, выпадающие на праздники, будут исключаться.
// - ДатаНачала - необязательный, указывается только для заполнения по циклам произвольной длины.
//
// Возвращаемое значение - соответствие, где Ключ - дата, значение массив структур с описанием интервалов времени для
// указанной даты.
//
Функция ДниВключенныеВГрафик(ДатаНачала, СпособЗаполнения, ШаблонЗаполнения, ДатаОкончания, ПроизводственныйКалендарь,
УчитыватьПраздники, Знач ДатаОтсчета = Неопределено) Экспорт
ДниВключенныеВГрафик = Новый Соответствие;
Если ШаблонЗаполнения.Количество() = 0 Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДатаОкончания) Тогда
// Если дата окончания не указана, то заполняем до конца года.
ДатаОкончания = КонецГода(ДатаНачала);
Если ЗначениеЗаполнено(ПроизводственныйКалендарь) Тогда
// Если указан производственный календарь, то заполняем до "конца" его заполненности.
ДатаОкончанияЗаполнения = Справочники.ПроизводственныеКалендари.ДатаОкончанияЗаполненияПроизводственногоКалендаря(
ПроизводственныйКалендарь);
Если ДатаОкончанияЗаполнения <> Неопределено
И ДатаОкончанияЗаполнения > ДатаОкончания Тогда
ДатаОкончания = ДатаОкончанияЗаполнения;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Заполнение данных производится по годам.
ТекущийГод = Год(ДатаНачала);
Пока ТекущийГод <= Год(ДатаОкончания) Цикл
ДатаНачалаВГоду = ДатаНачала;
ДатаОкончанияВГоду = ДатаОкончания;
СкорректироватьДатыНачалаОкончания(ТекущийГод, ДатаНачалаВГоду, ДатаОкончанияВГоду);
// Получаем данные графика за год.
Если СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям Тогда
ДниЗаГод = ДниВключенныеВГрафикПоНеделям(ТекущийГод, ПроизводственныйКалендарь, ШаблонЗаполнения,
УчитыватьПраздники, ДатаНачалаВГоду, ДатаОкончанияВГоду);
Иначе
ДниЗаГод = ДниВключенныеВГрафикПроизвольнойДлины(ТекущийГод, ПроизводственныйКалендарь, ШаблонЗаполнения,
УчитыватьПраздники, ДатаОтсчета, ДатаНачалаВГоду, ДатаОкончанияВГоду);
КонецЕсли;
// Дополняем общую коллекцию
Для Каждого КлючИЗначение Из ДниЗаГод Цикл
ДниВключенныеВГрафик.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
ТекущийГод = ТекущийГод + 1;
КонецЦикла;
Возврат ДниВключенныеВГрафик;
КонецФункции
Функция ДниВключенныеВГрафикПоНеделям(Год, ПроизводственныйКалендарь, ШаблонЗаполнения, УчитыватьПраздники,
Знач ДатаНачала = Неопределено, Знач ДатаОкончания = Неопределено)
// Заполнение графика работы по неделям.
ДниВключенныеВГрафик = Новый Соответствие;
ЗаполнятьПоПроизводственномуКалендарю = ЗначениеЗаполнено(ПроизводственныйКалендарь);
ДнейВГоду = ДеньГода(Дата(Год, 12, 31));
ДанныеПроизводственногоКалендаря = Справочники.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, Год);
Если ЗаполнятьПоПроизводственномуКалендарю
И ДанныеПроизводственногоКалендаря.Количество() <> ДнейВГоду Тогда
// Если производственный календарь указан, но заполнен неправильно, заполнение по неделям не поддерживается.
Возврат ДниВключенныеВГрафик;
КонецЕсли;
ДанныеПроизводственногоКалендаря.Индексы.Добавить("Дата");
ДатаДня = ДатаНачала;
Пока ДатаДня <= ДатаОкончания Цикл
НомерДня = ДеньНедели(ДатаДня);
Если ЗаполнятьПоПроизводственномуКалендарю И УчитыватьПраздники Тогда
ДанныеДня = ДанныеПроизводственногоКалендаря.НайтиСтроки(Новый Структура("Дата", ДатаДня))[0];
НомерДня = НомерДняШаблона(ДанныеДня);
КонецЕсли;
Если НомерДня <> Неопределено Тогда
СтрокаДня = ШаблонЗаполнения[НомерДня - 1];
Если СтрокаДня.ДеньВключенВГрафик Тогда
ДниВключенныеВГрафик.Вставить(ДатаДня, Истина);
КонецЕсли;
КонецЕсли;
ДатаДня = ДатаДня + ДлительностьСутокВСекундах();
КонецЦикла;
Возврат ДниВключенныеВГрафик;
КонецФункции
Функция ДниВключенныеВГрафикПроизвольнойДлины(Год, ПроизводственныйКалендарь, ШаблонЗаполнения, УчитыватьПраздники,
ДатаОтсчета, Знач ДатаНачала = Неопределено, Знач ДатаОкончания = Неопределено)
ДниВключенныеВГрафик = Новый Соответствие;
ДатаДня = ДатаОтсчета;
Пока ДатаДня <= ДатаОкончания Цикл
Для Каждого СтрокаДня Из ШаблонЗаполнения Цикл
Если СтрокаДня.ДеньВключенВГрафик
И ДатаДня >= ДатаНачала Тогда
ДниВключенныеВГрафик.Вставить(ДатаДня, Истина);
КонецЕсли;
ДатаДня = ДатаДня + ДлительностьСутокВСекундах();
КонецЦикла;
КонецЦикла;
Если Не УчитыватьПраздники Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
// Исключаем даты праздничных дней.
ДанныеПроизводственногоКалендаря = Справочники.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря(
ПроизводственныйКалендарь, Год);
Если ДанныеПроизводственногоКалендаря.Количество() = 0 Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
ОтборСтрок = Новый Структура("ВидДня");
ОтборСтрок.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник;
ДанныеПраздничныхДней = ДанныеПроизводственногоКалендаря.НайтиСтроки(ОтборСтрок);
Для Каждого ДанныеДня Из ДанныеПраздничныхДней Цикл
ДниВключенныеВГрафик.Удалить(ДанныеДня.Дата);
КонецЦикла;
ОтборСтрок.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий;
ДанныеПраздничныхДней = ДанныеПроизводственногоКалендаря.НайтиСтроки(ОтборСтрок);
Для Каждого ДанныеДня Из ДанныеПраздничныхДней Цикл
ДниВключенныеВГрафик.Удалить(ДанныеДня.Дата);
КонецЦикла;
Возврат ДниВключенныеВГрафик;
КонецФункции
Процедура СкорректироватьДатыНачалаОкончания(Год, ДатаНачала, ДатаОкончания)
НачалоГода = Дата(Год, 1, 1);
КонецГода = Дата(Год, 12, 31);
Если ДатаНачала <> Неопределено Тогда
ДатаНачала = Макс(ДатаНачала, НачалоГода);
Иначе
ДатаНачала = НачалоГода;
КонецЕсли;
Если ДатаОкончания <> Неопределено Тогда
ДатаОкончания = Мин(ДатаОкончания, КонецГода);
Иначе
ДатаОкончания = КонецГода;
КонецЕсли;
КонецПроцедуры
// Определяет даты ручных изменений указанного графика.
//
Функция РучныеИзмененияГрафика(ГрафикРаботы)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| РучныеИзменения.ГрафикРаботы,
| РучныеИзменения.Год,
| РучныеИзменения.ДатаГрафика,
| ЕСТЬNULL(КалендарныеГрафики.ДеньВключенВГрафик, ЛОЖЬ) КАК ДеньВключенВГрафик
|ИЗ
| РегистрСведений.РучныеИзмененияГрафиковРаботы КАК РучныеИзменения
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
| ПО (КалендарныеГрафики.Календарь = РучныеИзменения.ГрафикРаботы)
| И (КалендарныеГрафики.Год = РучныеИзменения.Год)
| И (КалендарныеГрафики.ДатаГрафика = РучныеИзменения.ДатаГрафика)
|ГДЕ
| РучныеИзменения.ГрафикРаботы = &ГрафикРаботы
| И РучныеИзменения.ДатаГрафика <> ДАТАВРЕМЯ(1, 1, 1)");
Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);
Выборка = Запрос.Выполнить().Выбрать();
РучныеИзменения = Новый Соответствие;
Пока Выборка.Следующий() Цикл
РучныеИзменения.Вставить(Выборка.ДатаГрафика, Выборка.ДеньВключенВГрафик);
КонецЦикла;
Возврат РучныеИзменения;
КонецФункции
Функция НомерДняШаблона(ДанныеДня)
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий
Или ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный Тогда
ДатаДня = ДанныеДня.Дата;
Если ЗначениеЗаполнено(ДанныеДня.ДатаПереноса) Тогда
ДатаДня = ДанныеДня.ДатаПереноса;
КонецЕсли;
Возврат ДеньНедели(ДатаДня);
КонецЕсли;
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда
Возврат 6;
КонецЕсли;
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда
Возврат 7;
КонецЕсли;
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник
Или ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий Тогда
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция ДлительностьСутокВСекундах()
Возврат 24 * 60 * 60;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -46,13 +46,13 @@
// //
Процедура ОбновитьКурсыПодчиненныхВалют() Процедура ОбновитьКурсыПодчиненныхВалют()
ЗависимаяВалюта = Неопределено; ВыбраннаяВалюта = Неопределено;
ДополнительныеСвойства.Свойство("ОбновитьКурсЗависимойВалюты", ЗависимаяВалюта); ДополнительныеСвойства.Свойство("ОбновитьКурсЗависимойВалюты", ВыбраннаяВалюта);
Для Каждого ЗаписьОсновнойВалюты Из ЭтотОбъект Цикл Для Каждого ЗаписьОсновнойВалюты Из ЭтотОбъект Цикл
Если ЗависимаяВалюта <> Неопределено Тогда // Нужно обновить курс только указанной валюты. Если ВыбраннаяВалюта <> Неопределено Тогда // Нужно обновить курс только указанной валюты.
ЗаблокироватьКурсЗависимойВалюты(ЗависимаяВалюта, ЗаписьОсновнойВалюты.Период); ЗаблокироватьКурсЗависимойВалюты(ВыбраннаяВалюта, ЗаписьОсновнойВалюты.Период);
Иначе Иначе
ЗависимыеВалюты = РаботаСКурсамиВалют.СписокЗависимыхВалют(ЗаписьОсновнойВалюты.Валюта, ДополнительныеСвойства); ЗависимыеВалюты = РаботаСКурсамиВалют.СписокЗависимыхВалют(ЗаписьОсновнойВалюты.Валюта, ДополнительныеСвойства);
Для Каждого ЗависимаяВалюта Из ЗависимыеВалюты Цикл Для Каждого ЗависимаяВалюта Из ЗависимыеВалюты Цикл
@@ -64,7 +64,7 @@
Для Каждого ЗаписьОсновнойВалюты Из ЭтотОбъект Цикл Для Каждого ЗаписьОсновнойВалюты Из ЭтотОбъект Цикл
Если ЗависимаяВалюта <> Неопределено Тогда // Нужно обновить курс только указанной валюты. Если ВыбраннаяВалюта <> Неопределено Тогда // Нужно обновить курс только указанной валюты.
ОбновленныеПериоды = Неопределено; ОбновленныеПериоды = Неопределено;
Если Не ДополнительныеСвойства.Свойство("ОбновленныеПериоды", ОбновленныеПериоды) Тогда Если Не ДополнительныеСвойства.Свойство("ОбновленныеПериоды", ОбновленныеПериоды) Тогда
ОбновленныеПериоды = Новый Соответствие; ОбновленныеПериоды = Новый Соответствие;
@@ -72,7 +72,7 @@
КонецЕсли; КонецЕсли;
// Повторно не обновляем курс за один и тот же период. // Повторно не обновляем курс за один и тот же период.
Если ОбновленныеПериоды[ЗаписьОсновнойВалюты.Период] = Неопределено Тогда Если ОбновленныеПериоды[ЗаписьОсновнойВалюты.Период] = Неопределено Тогда
ОбновитьКурсЗависимойВалюты(ЗависимаяВалюта, ЗаписьОсновнойВалюты); ОбновитьКурсЗависимойВалюты(ВыбраннаяВалюта, ЗаписьОсновнойВалюты);
ОбновленныеПериоды.Вставить(ЗаписьОсновнойВалюты.Период, Истина); ОбновленныеПериоды.Вставить(ЗаписьОсновнойВалюты.Период, Истина);
КонецЕсли; КонецЕсли;
Иначе // Обновить курс всех зависимых валют. Иначе // Обновить курс всех зависимых валют.
@@ -3343,19 +3343,6 @@
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>РегламентноеЗаданиеОтключено</name>
<id>20</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes> <attributes>
<name>ПоказыватьЗадержкуОбработки</name> <name>ПоказыватьЗадержкуОбработки</name>
<title> <title>
@@ -9,7 +9,8 @@
#Область ОписаниеПеременных #Область ОписаниеПеременных
&НаКлиенте &НаКлиенте
Перем АдресРезультата, АдресХранимыхДанных, ИдентификаторЗаданияОбновленияПрогресса, ТекстОшибкиОбновленияДоступа; Перем АдресРезультата, АдресХранимыхДанных, ИдентификаторЗаданияОбновленияПрогресса,
ТекстОшибкиОбновленияДоступа, ТекстОшибкиОбновленияПрогресса;
#КонецОбласти #КонецОбласти
@@ -385,14 +386,22 @@
Элементы.ОбновлениеДоступаЗапрещено.Видимость = Состояние.ОбновлениеДоступаЗапрещено; Элементы.ОбновлениеДоступаЗапрещено.Видимость = Состояние.ОбновлениеДоступаЗапрещено;
Элементы.РегламентноеЗаданиеОтключено.Видимость = Не Состояние.ОбновлениеДоступаЗапрещено Элементы.РегламентноеЗаданиеОтключено.Видимость = Не Состояние.ОбновлениеДоступаЗапрещено
И РегламентноеЗаданиеОтключено И Не Состояние.ОбновлениеДоступаВыполняется; И Состояние.РегламентноеЗаданиеОтключено И Не Состояние.ОбновлениеДоступаВыполняется;
ТекстОшибкиОбновленияДоступа = Состояние.ТекстОшибкиОбновленияДоступа; ТекстОшибкиОбновленияДоступа = Состояние.ТекстОшибкиОбновленияДоступа;
Если ЗначениеЗаполнено(Состояние.ПоследнееЗавершениеОбновленияДоступа) Тогда Если ЗначениеЗаполнено(Состояние.ПоследнееЗавершениеОбновленияДоступа) Тогда
ФорматЧастей = Новый Соответствие; ФорматЧастей = Новый Соответствие;
ЖирныйШрифт = Новый Шрифт(Элементы.ПоследнееЗавершениеОбновленияДоступа.Шрифт,,, Истина); ЖирныйШрифт = Новый Шрифт(Элементы.ПоследнееЗавершениеОбновленияДоступа.Шрифт,,, Истина);
Если ЗначениеЗаполнено(ТекстОшибкиОбновленияДоступа) Тогда КрасныйЦвет = Новый Цвет(255, 0, 0);
Если Состояние.ОбновлениеОтмененоНештатно Тогда
Если Состояние.ПоследнееЗавершениеСегодня Тогда
Шаблон = НСтр("ru = '<1>отменено нештатно</1> после запуска в %1'");
Иначе
Шаблон = НСтр("ru = '<1>отменено нештатно</1> после запуска %1'");
КонецЕсли;
ФорматЧастей.Вставить(1, Новый Структура("Шрифт, ЦветТекста", ЖирныйШрифт, КрасныйЦвет));
ИначеЕсли ЗначениеЗаполнено(ТекстОшибкиОбновленияДоступа) Тогда
Если Состояние.ОбновлениеОтменено Тогда Если Состояние.ОбновлениеОтменено Тогда
Если Состояние.ПоследнееЗавершениеСегодня Тогда Если Состояние.ПоследнееЗавершениеСегодня Тогда
Шаблон = НСтр("ru = '<1>отменено</1> <2>с ошибкой</2> в %1 через %2'"); Шаблон = НСтр("ru = '<1>отменено</1> <2>с ошибкой</2> в %1 через %2'");
@@ -406,20 +415,20 @@
Шаблон = НСтр("ru = '<1>завершено</1> <2>с ошибкой</2> %1 через %2'"); Шаблон = НСтр("ru = '<1>завершено</1> <2>с ошибкой</2> %1 через %2'");
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
ФорматЧастей.Вставить(1, Новый Структура("Шрифт, ЦветТекста", ЖирныйШрифт, Новый Цвет(255, 0, 0))); ФорматЧастей.Вставить(1, Новый Структура("Шрифт, ЦветТекста", ЖирныйШрифт, КрасныйЦвет));
ФорматЧастей.Вставить(2, Новый Структура("Ссылка", "ПоказатьТекстОшибки")); ФорматЧастей.Вставить(2, Новый Структура("Ссылка", "ПоказатьТекстОшибки"));
Иначе Иначе
Если Состояние.ОбновлениеОтменено Тогда Если Состояние.ОбновлениеОтменено Тогда
Если Состояние.ПоследнееЗавершениеСегодня Тогда Если Состояние.ПоследнееЗавершениеСегодня Тогда
Шаблон = НСтр("ru = 'отменено в %1 через %2'") Шаблон = НСтр("ru = 'отменено в %1 через %2'");
Иначе Иначе
Шаблон = НСтр("ru = 'отменено %1 через %2'") Шаблон = НСтр("ru = 'отменено %1 через %2'");
КонецЕсли; КонецЕсли;
Иначе Иначе
Если Состояние.ПоследнееЗавершениеСегодня Тогда Если Состояние.ПоследнееЗавершениеСегодня Тогда
Шаблон = НСтр("ru = 'завершено в %1 за %2'") Шаблон = НСтр("ru = 'завершено в %1 за %2'");
Иначе Иначе
Шаблон = НСтр("ru = 'завершено %1 за %2'") Шаблон = НСтр("ru = 'завершено %1 за %2'");
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -535,12 +544,17 @@
ПоследнееОбновлениеДоступа.ОбновлениеДоступаЗапрещено); ПоследнееОбновлениеДоступа.ОбновлениеДоступаЗапрещено);
Состояние.Вставить("ВыполняетсяСекунд", 0); Состояние.Вставить("ВыполняетсяСекунд", 0);
Состояние.Вставить("ОбновлениеОтмененоНештатно", Ложь);
Исполнитель = УправлениеДоступомСлужебный.ИсполнительОбновленияДоступа(ПоследнееОбновлениеДоступа); Исполнитель = УправлениеДоступомСлужебный.ИсполнительОбновленияДоступа(ПоследнееОбновлениеДоступа);
Если Исполнитель = Неопределено Тогда Если Исполнитель = Неопределено Тогда
Состояние.Вставить("ОбновлениеДоступаВыполняется", Ложь); Состояние.Вставить("ОбновлениеДоступаВыполняется", Ложь);
Состояние.Вставить("ФоновоеЗаданиеВыполняется", Ложь); Состояние.Вставить("ФоновоеЗаданиеВыполняется", Ложь);
Если ПоследнееОбновлениеДоступа.ДатаЗапускаНаСервере > ПоследнееОбновлениеДоступа.ДатаЗавершенияНаСервере Тогда
Состояние.ОбновлениеОтмененоНештатно = Истина;
Состояние.ПоследнееЗавершениеОбновленияДоступа = ПоследнееОбновлениеДоступа.ДатаЗапускаНаСервере;
КонецЕсли;
ИначеЕсли ТипЗнч(Исполнитель) = Тип("ФоновоеЗадание") ИначеЕсли ТипЗнч(Исполнитель) = Тип("ФоновоеЗадание")
И (Исполнитель.УникальныйИдентификатор <> ПоследнееОбновлениеДоступа.ИдентификаторФоновогоЗадания И (Исполнитель.УникальныйИдентификатор <> ПоследнееОбновлениеДоступа.ИдентификаторФоновогоЗадания
@@ -558,6 +572,40 @@
Состояние.Вставить("ВыполняетсяСекунд", ?(ВыполняетсяСекунд < 0, 0, ВыполняетсяСекунд)); Состояние.Вставить("ВыполняетсяСекунд", ?(ВыполняетсяСекунд < 0, 0, ВыполняетсяСекунд));
КонецЕсли; КонецЕсли;
Состояние.Вставить("РегламентноеЗаданиеОтключено", Ложь);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЗначениеИстина
|ИЗ
| РегистрСведений.ОбновлениеКлючейДоступаКДанным КАК ОбновлениеКлючейДоступаКДанным
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| РегистрСведений.ОбновлениеКлючейДоступаПользователей КАК ОбновлениеКлючейДоступаПользователей";
Если Запрос.Выполнить().Пустой() Тогда
Возврат Состояние;
КонецЕсли;
Отбор = Новый Структура("Метаданные", Метаданные.РегламентныеЗадания.ОбновлениеДоступаНаУровнеЗаписей);
Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор);
Включено = Ложь;
Для Каждого Задание Из Задания Цикл
Если Задание.Использование Тогда
Включено = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не Включено Тогда
Состояние.РегламентноеЗаданиеОтключено = Истина;
КонецЕсли;
Возврат Состояние; Возврат Состояние;
КонецФункции КонецФункции
@@ -599,7 +647,6 @@
Если ЗначениеЗаполнено(ТекстПредупреждения) Тогда Если ЗначениеЗаполнено(ТекстПредупреждения) Тогда
ПоказатьПредупреждение(, ТекстПредупреждения); ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли; КонецЕсли;
ОбновитьСостояниеЗаданияОбновленияДоступа(СостояниеЗаданияОбновленияДоступа); ОбновитьСостояниеЗаданияОбновленияДоступа(СостояниеЗаданияОбновленияДоступа);
@@ -694,7 +741,7 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Контекст = Неопределено; Контекст = Новый Структура;
ЗаданиеВыполнено = ЗавершитьОбновлениеПрогрессаНаСервере(Контекст, АдресРезультата, ЗаданиеВыполнено = ЗавершитьОбновлениеПрогрессаНаСервере(Контекст, АдресРезультата,
АдресХранимыхДанных, ИдентификаторЗаданияОбновленияПрогресса); АдресХранимыхДанных, ИдентификаторЗаданияОбновленияПрогресса);
@@ -704,6 +751,9 @@
КонецЕсли; КонецЕсли;
Элементы.КартинкаОбновлениеПрогресса.Видимость = ОбновлениеПрогрессаВыполняется; Элементы.КартинкаОбновлениеПрогресса.Видимость = ОбновлениеПрогрессаВыполняется;
Элементы.КартинкаОжиданиеОбновленияПрогресса.Видимость = Не ОбновлениеПрогрессаВыполняется; Элементы.КартинкаОжиданиеОбновленияПрогресса.Видимость = Не ОбновлениеПрогрессаВыполняется;
ОбновитьСостояниеЗаданияОбновленияДоступа(Контекст.СостояниеЗаданияОбновленияДоступа);
ПодключитьОбработчикОжидания("ЗавершитьОбновлениеПрогрессаОбработчикОжидания", 1, Истина); ПодключитьОбработчикОжидания("ЗавершитьОбновлениеПрогрессаОбработчикОжидания", 1, Истина);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -715,6 +765,14 @@
&НаКлиенте &НаКлиенте
Процедура ОбновитьПрогрессПослеПолученияДанных(Контекст) Процедура ОбновитьПрогрессПослеПолученияДанных(Контекст)
Если Контекст.Свойство("ТекстОшибки") Тогда
АвтообновлениеПрогресса = Ложь;
ЗавершитьОбновлениеПрогрессаНаКлиенте(Контекст);
ТекстОшибкиОбновленияПрогресса = Контекст.ТекстОшибки;
ПодключитьОбработчикОжидания("ПоказатьОшибкуОбновленияПрогрессаОбработчикОжидания", 0.1, Истина);
Возврат;
КонецЕсли;
ВсегоОбновлено = Контекст.ВсегоОбновлено; ВсегоОбновлено = Контекст.ВсегоОбновлено;
Если Контекст.Свойство("ПериодОбновленияПрогресса") Тогда Если Контекст.Свойство("ПериодОбновленияПрогресса") Тогда
ПериодОбновленияПрогресса = Контекст.ПериодОбновленияПрогресса; ПериодОбновленияПрогресса = Контекст.ПериодОбновленияПрогресса;
@@ -723,8 +781,6 @@
АвтообновлениеПрогресса = Контекст.АвтообновлениеПрогресса; АвтообновлениеПрогресса = Контекст.АвтообновлениеПрогресса;
КонецЕсли; КонецЕсли;
РегламентноеЗаданиеОтключено = Контекст.Свойство("РегламентноеЗаданиеОтключено");
ТекущийМомент = ОбщегоНазначенияКлиент.ДатаСеанса(); ТекущийМомент = ОбщегоНазначенияКлиент.ДатаСеанса();
ОбновитьЗадержку = ПоляСортировки[0].Значение = "ЗадержкаОбработкиСписка"; ОбновитьЗадержку = ПоляСортировки[0].Значение = "ЗадержкаОбработкиСписка";
@@ -759,13 +815,35 @@
СортироватьСписокПоПолям(); СортироватьСписокПоПолям();
КонецЕсли; КонецЕсли;
ЗавершитьОбновлениеПрогрессаНаКлиенте(Контекст);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьОшибкуОбновленияПрогрессаОбработчикОжидания()
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обновить прогресс по причине:
|
|%1'"), ТекстОшибкиОбновленияПрогресса);
ВызватьИсключение ТекстОшибки;
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьОбновлениеПрогрессаНаКлиенте(Контекст)
Если АвтообновлениеПрогресса Тогда Если АвтообновлениеПрогресса Тогда
ПодключитьОбработчикОжидания("НачатьОбновлениеПрогрессаОбработчикОжидания", ПодключитьОбработчикОжидания("НачатьОбновлениеПрогрессаОбработчикОжидания",
ПериодОбновленияПрогресса, Истина); ПериодОбновленияПрогресса, Истина);
КонецЕсли; КонецЕсли;
Элементы.ОбновлениеПрогресса.ТекущаяСтраница = Элементы.ОбновлениеПрогрессаЗавершено; Элементы.ОбновлениеПрогресса.ТекущаяСтраница = Элементы.ОбновлениеПрогрессаЗавершено;
ЭтоПовторноеОбновлениеПрогресса = Истина;
Если Не Контекст.Свойство("ТекстОшибки") Тогда
ЭтоПовторноеОбновлениеПрогресса = Истина;
КонецЕсли;
ОбновитьСостояниеЗаданияОбновленияДоступа(Контекст.СостояниеЗаданияОбновленияДоступа); ОбновитьСостояниеЗаданияОбновленияДоступа(Контекст.СостояниеЗаданияОбновленияДоступа);
ОбновитьСостояниеЗаданияОбновленияДоступаЧерезТриСекунды(); ОбновитьСостояниеЗаданияОбновленияДоступаЧерезТриСекунды();
@@ -849,18 +927,29 @@
Функция ЗавершитьОбновлениеПрогрессаНаСервере(Контекст, Знач АдресРезультата, Знач АдресХранимыхДанных, Функция ЗавершитьОбновлениеПрогрессаНаСервере(Контекст, Знач АдресРезультата, Знач АдресХранимыхДанных,
ИдентификаторЗаданияОбновленияПрогресса) ИдентификаторЗаданияОбновленияПрогресса)
Если ИдентификаторЗаданияОбновленияПрогресса <> Неопределено Если ИдентификаторЗаданияОбновленияПрогресса <> Неопределено Тогда
И Не ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗаданияОбновленияПрогресса) Тогда Попытка
ЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗаданияОбновленияПрогресса);
Контекст = Новый Структура("ОбновлениеПрогрессаВыполняется", Исключение
ДлительныеОперации.ПрочитатьПрогресс(ИдентификаторЗаданияОбновленияПрогресса) <> Неопределено); ИдентификаторЗаданияОбновленияПрогресса = Неопределено;
Возврат Ложь; Контекст = Новый Структура("СостояниеЗаданияОбновленияДоступа", СостояниеЗаданияОбновленияДоступа());
Контекст.Вставить("ТекстОшибки", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат Истина;
КонецПопытки;
Если Не ЗаданиеВыполнено Тогда
Контекст = Новый Структура("СостояниеЗаданияОбновленияДоступа", СостояниеЗаданияОбновленияДоступа());
Контекст.Вставить("ОбновлениеПрогрессаВыполняется",
ДлительныеОперации.ПрочитатьПрогресс(ИдентификаторЗаданияОбновленияПрогресса) <> Неопределено);
Возврат Ложь;
КонецЕсли;
КонецЕсли; КонецЕсли;
ИдентификаторЗаданияОбновленияПрогресса = Неопределено; ИдентификаторЗаданияОбновленияПрогресса = Неопределено;
Контекст = ПолучитьИзВременногоХранилища(АдресРезультата); Контекст = ПолучитьИзВременногоХранилища(АдресРезультата);
ПоместитьВоВременноеХранилище(Контекст.ХранимыеДанные, АдресХранимыхДанных); Если Не Контекст.Свойство("ТекстОшибки") Тогда
Контекст.Удалить("ХранимыеДанные"); ПоместитьВоВременноеХранилище(Контекст.ХранимыеДанные, АдресХранимыхДанных);
Контекст.Удалить("ХранимыеДанные");
КонецЕсли;
Контекст.Вставить("СостояниеЗаданияОбновленияДоступа", СостояниеЗаданияОбновленияДоступа()); Контекст.Вставить("СостояниеЗаданияОбновленияДоступа", СостояниеЗаданияОбновленияДоступа());
@@ -23,6 +23,18 @@
КонецПроцедуры КонецПроцедуры
Процедура ОбновитьЗапись(СтруктураЗаписи) Экспорт
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
ОбменДаннымиСервер.ОбновитьЗаписьВРегистрСведений(СтруктураЗаписи, "СостоянияОбменовДаннымиОбластейДанных");
Иначе
ОбменДаннымиСервер.ОбновитьЗаписьВРегистрСведений(СтруктураЗаписи, "СостоянияОбменовДанными");
КонецЕсли;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#КонецЕсли #КонецЕсли
@@ -1212,6 +1212,93 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>InformationRegister.РейтингАктивностиОбластейДанных</name> <name>InformationRegister.РейтингАктивностиОбластейДанных</name>
<right> <right>
@@ -3679,93 +3766,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>Catalog.ПредопределенныеВариантыОтчетов</name> <name>Catalog.ПредопределенныеВариантыОтчетов</name>
<right> <right>
File diff suppressed because it is too large. Load diff
@@ -14,6 +14,37 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>Catalog.РассылкиОтчетов.Command.СобытияРассылки</name> <name>Catalog.РассылкиОтчетов.Command.СобытияРассылки</name>
<right> <right>
@@ -76,37 +107,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate> <restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name> <name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "") <condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -1645,6 +1645,45 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object> <object>
<name>InformationRegister.РейтингАктивностиОбластейДанных</name> <name>InformationRegister.РейтингАктивностиОбластейДанных</name>
<right> <right>
@@ -4959,45 +4998,6 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object> <object>
<name>Catalog.ПредопределенныеВариантыОтчетов</name> <name>Catalog.ПредопределенныеВариантыОтчетов</name>
<right> <right>