3_0_3_261

This commit is contained in:
Компания 1С committed 2020-04-14 15:21:00 +03:00
1 parent 5fe16f810d
commit b13d305a56
24 files changed
+1583 -727

No files matched your search

@@ -194,6 +194,10 @@
<dataPath xsi:type="form:DataPath">
<segments>Объект.ДатаОкончания</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ДатаОкончанияПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ДатаОкончанияExtendedTooltip</name>
<id>307</id>
@@ -678,7 +682,6 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>8</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
@@ -783,10 +786,10 @@
</items>
<items xsi:type="form:FormGroup">
<name>УчитыватьПраздникиГруппа</name>
<id>177</id>
<id>404</id>
<items xsi:type="form:FormField">
<name>УчитыватьПраздники</name>
<id>173</id>
<id>406</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -807,10 +810,9 @@
<name>УчитыватьПраздникиПриИзменении</name>
</handlers>
<extendedTooltip>
<name>УчитыватьПраздникиExtendedTooltip</name>
<id>324</id>
<name>УчитыватьПраздникиРасширеннаяПодсказка</name>
<id>408</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
@@ -818,7 +820,7 @@
</extendedTooltip>
<contextMenu>
<name>УчитыватьПраздникиКонтекстноеМеню</name>
<id>174</id>
<id>407</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
@@ -828,20 +830,61 @@
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Учитывать праздники</value>
</title>
<extendedTooltip>
<name>УчитыватьПраздникиГруппаРасширеннаяПодсказка</name>
<id>405</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>УчитыватьНерабочиеПериодыГруппа</name>
<id>409</id>
<items xsi:type="form:FormField">
<name>РасписаниеПредпраздничногоДня</name>
<id>287</id>
<name>УчитыватьНерабочиеПериоды</name>
<id>411</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>РасписаниеПредпраздничногоДня</segments>
<segments>Объект.УчитыватьНерабочиеПериоды</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTip>
<key>ru</key>
<value>Если установлено, то из состава рабочих дней будут исключаться дни нерабочих периодов производственного календаря</value>
</toolTip>
<handlers>
<event>OnChange</event>
<name>УчитыватьНерабочиеПериодыПриИзменении</name>
</handlers>
<extendedTooltip>
<name>РасписаниеПредпраздничногоДняExtendedTooltip</name>
<id>326</id>
<name>УчитыватьНерабочиеПериодыРасширеннаяПодсказка</name>
<id>413</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -850,24 +893,87 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РасписаниеПредпраздничногоДняКонтекстноеМеню</name>
<id>288</id>
<name>УчитыватьНерабочиеПериодыКонтекстноеМеню</name>
<id>412</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<handlers>
<event>Click</event>
<name>РасписаниеПредпраздничногоДняНажатие</name>
</handlers>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormGroup">
<name>НерабочиеПериодыГруппа</name>
<id>396</id>
<items xsi:type="form:Decoration">
<name>НерабочиеПериодыКартинка</name>
<id>398</id>
<title>
<key>ru</key>
<value>Нерабочие периоды картинка</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НерабочиеПериодыКартинкаРасширеннаяПодсказка</name>
<id>400</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<hyperlink>true</hyperlink>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НерабочиеПериодыКартинкаКонтекстноеМеню</name>
<id>399</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Информация</picture>
</picture>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>НерабочиеПериодыИнформация</name>
<id>401</id>
<title>
<key>ru</key>
<value>Нерабочие периоды информация</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НерабочиеПериодыИнформацияРасширеннаяПодсказка</name>
<id>403</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НерабочиеПериодыИнформацияКонтекстноеМеню</name>
<id>402</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
@@ -877,11 +983,40 @@
</userVisible>
<title>
<key>ru</key>
<value>Учитывать праздники группа</value>
<value>Нерабочие периоды</value>
</title>
<extendedTooltip>
<name>УчитыватьПраздникиГруппаExtendedTooltip</name>
<id>323</id>
<name>НерабочиеПериодыГруппаРасширеннаяПодсказка</name>
<id>397</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Учитывать нерабочие периоды</value>
</title>
<extendedTooltip>
<name>УчитыватьНерабочиеПериодыГруппаРасширеннаяПодсказка</name>
<id>410</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -893,7 +1028,6 @@
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
@@ -1253,6 +1387,48 @@
<autoMaxCardHeight>true</autoMaxCardHeight>
<rowFilter xsi:type="core:UndefinedValue"/>
</items>
<items xsi:type="form:FormField">
<name>РасписаниеПредпраздничногоДня</name>
<id>287</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>РасписаниеПредпраздничногоДня</segments>
</dataPath>
<extendedTooltip>
<name>РасписаниеПредпраздничногоДняExtendedTooltip</name>
<id>326</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РасписаниеПредпраздничногоДняКонтекстноеМеню</name>
<id>288</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<handlers>
<event>Click</event>
<name>РасписаниеПредпраздничногоДняНажатие</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<hyperlink>true</hyperlink>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -1636,6 +1812,7 @@
<event>StartChoice</event>
<name>КомментарийНачалоВыбора</name>
</handlers>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<chooseType>true</chooseType>
@@ -1814,13 +1991,6 @@
<groupHorizontalAlign>Right</groupHorizontalAlign>
<groupVerticalAlign>Bottom</groupVerticalAlign>
<placementArea>UserCmds</placementArea>
<font xsi:type="core:FontRef">
<font>System.DefaultGUIFont</font>
<bold>true</bold>
<italic>false</italic>
<underline>false</underline>
<strikeout>false</strikeout>
</font>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
@@ -2284,13 +2454,6 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<font xsi:type="core:FontRef">
<font>System.DefaultGUIFont</font>
<bold>true</bold>
<italic>false</italic>
<underline>false</underline>
<strikeout>false</strikeout>
</font>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
@@ -2349,10 +2512,6 @@
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>ChoiceProcessing</event>
<name>ОбработкаВыбора</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
@@ -2771,12 +2930,7 @@
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel>
<cmiFragmentRecord>
<command>0</command>
<userVisible/>
</cmiFragmentRecord>
</navigationPanel>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:CatalogFormExtInfo">
@@ -1,18 +1,11 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Copyright (c) 2020, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОписаниеПеременных
&НаКлиенте
Перем КонтекстВыбора;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -32,28 +25,14 @@
Объект.ПроизводственныйКалендарь = ПроизводственныеКалендари[0];
КонецЕсли;
Объект.СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям;
ДлинаЦикла = 7;
Объект.ДатаНачала = НачалоГода(ТекущаяДатаСеанса());
Объект.ДатаОтсчета = НачалоГода(ТекущаяДатаСеанса());
УстановитьЭлементыНастройкиЗаполнения(ЭтотОбъект);
СформироватьШаблонЗаполнения(Объект.СпособЗаполнения, Объект.ШаблонЗаполнения, ДлинаЦикла, Объект.ДатаОтсчета);
ЗаполнитьПредставлениеРасписания(ЭтотОбъект);
УстановитьДоступностьУчитыватьПраздники(ЭтотОбъект);
УточнитьДатуЗаполненности();
ЗаполнитьДаннымиТекущегоГода(Параметры.ЗначениеКопирования);
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Истина);
УстановитьДоступностьРасписанияПредпраздничногоДня(ЭтотОбъект);
ПриПолученииДанныхНаСервере();
КонецПроцедуры
@@ -61,69 +40,9 @@
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ДлинаЦикла = Объект.ШаблонЗаполнения.Количество();
УстановитьЭлементыНастройкиЗаполнения(ЭтотОбъект);
СформироватьШаблонЗаполнения(Объект.СпособЗаполнения, Объект.ШаблонЗаполнения, ДлинаЦикла, Объект.ДатаОтсчета);
ЗаполнитьПредставлениеРасписания(ЭтотОбъект);
УстановитьДоступностьУчитыватьПраздники(ЭтотОбъект);
УточнитьДатуЗаполненности();
ЗаполнитьДаннымиТекущегоГода();
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Истина);
УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Ложь);
УстановитьДоступностьРасписанияПредпраздничногоДня(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.Календари.Форма.РасписаниеРаботы") Тогда
Если ВыбранноеЗначение = Неопределено Или ТолькоПросмотр Тогда
Возврат;
КонецЕсли;
// Удаляем ранее заполненное расписания для этого дня.
СтрокиДня = Новый Массив;
Для Каждого СтрокаРасписания Из Объект.РасписаниеРаботы Цикл
Если СтрокаРасписания.НомерДня = КонтекстВыбора.НомерДня Тогда
СтрокиДня.Добавить(СтрокаРасписания.ПолучитьИдентификатор());
КонецЕсли;
КонецЦикла;
Для Каждого ИдентификаторСтроки Из СтрокиДня Цикл
Объект.РасписаниеРаботы.Удалить(Объект.РасписаниеРаботы.НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
// Заполняем расписание работы на день.
Для Каждого ОписаниеИнтервала Из ВыбранноеЗначение.РасписаниеРаботы Цикл
НоваяСтрока = Объект.РасписаниеРаботы.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ОписаниеИнтервала);
НоваяСтрока.НомерДня = КонтекстВыбора.НомерДня;
КонецЦикла;
Если КонтекстВыбора.НомерДня = 0 Тогда
РасписаниеПредпраздничногоДня = ПредставлениеРасписанияДня(ЭтотОбъект, 0);
КонецЕсли;
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь);
УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина);
Если КонтекстВыбора.Источник = "ШаблонЗаполненияВыбор" Тогда
СтрокаШаблона = Объект.ШаблонЗаполнения.НайтиПоИдентификатору(КонтекстВыбора.ИдентификаторСтрокиШаблона);
СтрокаШаблона.ДеньВключенВГрафик = ВыбранноеЗначение.РасписаниеРаботы.Количество() > 0; // расписание заполнено
СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(ЭтотОбъект, КонтекстВыбора.НомерДня);
КонецЕсли;
КонецЕсли;
ПриПолученииДанныхНаСервере(ТекущийОбъект);
КонецПроцедуры
@@ -139,7 +58,8 @@
// то записываем их как есть, остальные периоды обновляем по шаблону.
Если МодифицированностьРезультата Тогда
РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(ТекущийОбъект.Ссылка, ДниГрафика, Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31), Истина);
РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(ТекущийОбъект.Ссылка, ДниГрафика,
Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31), Истина);
КонецЕсли;
ЗаписатьПризнакРучногоРедактирования(ТекущийОбъект, НомерГода);
@@ -181,44 +101,13 @@
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ЗаполнитьПоШаблону(Команда)
ЗаполнитьПоШаблонуНаСервере();
Элементы.ГрафикРаботы.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура РезультатЗаполнения(Команда)
Элементы.Страницы.ТекущаяСтраница = Элементы.РезультатЗаполненияСтраница;
Если Не РезультатЗаполненПоШаблону Тогда
ЗаполнитьПоШаблонуНаСервере(Истина);
КонецЕсли;
Элементы.ГрафикРаботы.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура НастройкаЗаполнения(Команда)
Элементы.Страницы.ТекущаяСтраница = Элементы.НастройкаЗаполненияСтраница;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПроизводственныйКалендарьПриИзменении(Элемент)
УстановитьДоступностьУчитыватьПраздники(ЭтотОбъект);
УстановитьДоступностьУчитыватьНерабочиеПериоды(ЭтотОбъект);
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь);
УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина);
@@ -247,6 +136,13 @@
Объект.ДатаНачала = НачалоГода(ОбщегоНазначенияКлиент.ДатаСеанса());
КонецЕсли;
УстановитьДоступностьУчитыватьНерабочиеПериоды(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияПриИзменении(Элемент)
УстановитьДоступностьУчитыватьНерабочиеПериоды(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
@@ -282,34 +178,8 @@
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьРасписанияПредпраздничногоДня(Форма)
Форма.Элементы.РасписаниеПредпраздничногоДня.Доступность = Форма.Объект.УчитыватьПраздники;
КонецПроцедуры
&НаКлиенте
Процедура ШаблонЗаполненияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СтрокаШаблона = Объект.ШаблонЗаполнения.НайтиПоИдентификатору(ВыбраннаяСтрока);
КонтекстВыбора = Новый Структура;
КонтекстВыбора.Вставить("Источник", "ШаблонЗаполненияВыбор");
КонтекстВыбора.Вставить("НомерДня", СтрокаШаблона.НомерСтроки);
КонтекстВыбора.Вставить("ПредставлениеРасписания", СтрокаШаблона.ПредставлениеРасписания);
КонтекстВыбора.Вставить("ИдентификаторСтрокиШаблона", ВыбраннаяСтрока);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РасписаниеРаботы", РасписаниеРаботы(КонтекстВыбора.НомерДня));
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ОткрытьФорму("Справочник.Календари.Форма.РасписаниеРаботы", ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ШаблонЗаполненияДеньВключенВГрафикПриИзменении(Элемент)
Процедура УчитыватьНерабочиеПериодыПриИзменении(Элемент)
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь);
УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина);
@@ -320,17 +190,7 @@
Процедура РасписаниеПредпраздничногоДняНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонтекстВыбора = Новый Структура;
КонтекстВыбора.Вставить("Источник", "РасписаниеПредпраздничногоДняНажатие");
КонтекстВыбора.Вставить("НомерДня", 0);
КонтекстВыбора.Вставить("ПредставлениеРасписания", РасписаниеПредпраздничногоДня);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РасписаниеРаботы", РасписаниеРаботы(КонтекстВыбора.НомерДня));
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ОткрытьФорму("Справочник.Календари.Форма.РасписаниеРаботы", ПараметрыФормы, ЭтотОбъект);
НачатьЗаполнениеРасписанияДня(0);
КонецПроцедуры
@@ -422,8 +282,89 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыШаблонЗаполнения
&НаКлиенте
Процедура ШаблонЗаполненияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СтрокаШаблона = Объект.ШаблонЗаполнения.НайтиПоИдентификатору(ВыбраннаяСтрока);
НачатьЗаполнениеРасписанияДня(СтрокаШаблона.НомерСтроки, ВыбраннаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ШаблонЗаполненияДеньВключенВГрафикПриИзменении(Элемент)
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь);
УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ЗаполнитьПоШаблону(Команда)
ЗаполнитьПоШаблонуНаСервере();
Элементы.ГрафикРаботы.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура РезультатЗаполнения(Команда)
Элементы.Страницы.ТекущаяСтраница = Элементы.РезультатЗаполненияСтраница;
Если Не РезультатЗаполненПоШаблону Тогда
ЗаполнитьПоШаблонуНаСервере(Истина);
КонецЕсли;
Элементы.ГрафикРаботы.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура НастройкаЗаполнения(Команда)
Элементы.Страницы.ТекущаяСтраница = Элементы.НастройкаЗаполненияСтраница;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ПриПолученииДанныхНаСервере(ТекущийОбъект = Неопределено)
Если ТекущийОбъект = Неопределено Тогда
ТекущийОбъект = Объект;
КонецЕсли;
УстановитьЭлементыНастройкиЗаполнения(ЭтотОбъект);
СформироватьШаблонЗаполнения(
ТекущийОбъект.СпособЗаполнения, Объект.ШаблонЗаполнения, ДлинаЦикла, ТекущийОбъект.ДатаОтсчета);
УточнитьДатуЗаполненности();
ЗаполнитьПредставлениеРасписания(ЭтотОбъект);
УстановитьДоступностьУчитыватьНерабочиеПериоды(ЭтотОбъект);
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Истина);
УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Ложь);
УстановитьДоступностьУчитыватьПраздники(ЭтотОбъект);
УстановитьДоступностьРасписанияПредпраздничногоДня(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
@@ -586,7 +527,10 @@
Если СтрокаРасписания.НомерДня <> НомерДня Тогда
Продолжить;
КонецЕсли;
ПредставлениеИнтервала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1-%2, ", Формат(СтрокаРасписания.ВремяНачала, "ДФ=ЧЧ:мм; ДП="), Формат(СтрокаРасписания.ВремяОкончания, "ДФ=ЧЧ:мм; ДП="));
ПредставлениеИнтервала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"%1-%2, ",
ПредставлениеВремениСуток(СтрокаРасписания.ВремяНачала),
ПредставлениеВремениСуток(СтрокаРасписания.ВремяОкончания));
ПредставлениеИнтервалов = ПредставлениеИнтервалов + ПредставлениеИнтервала;
Если Не ЗначениеЗаполнено(СтрокаРасписания.ВремяОкончания) Тогда
СекундИнтервала = КонецДня(СтрокаРасписания.ВремяОкончания) - СтрокаРасписания.ВремяНачала + 1;
@@ -607,6 +551,17 @@
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеВремениСуток(Знач ВремяСуток)
Если Не ЗначениеЗаполнено(ВремяСуток) Тогда
ВремяСуток = Дата(1980, 1, 1);
КонецЕсли;
Возврат Формат(ВремяСуток, НСтр("ru = 'ДФ=ЧЧ:мм'"));
КонецФункции
&НаКлиенте
Функция РасписаниеРаботы(НомерДня)
@@ -639,6 +594,38 @@
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьУчитыватьНерабочиеПериоды(Форма)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Элементы.УчитыватьНерабочиеПериодыГруппа.Видимость = Ложь;
Если Не ЗначениеЗаполнено(Объект.ПроизводственныйКалендарь) Тогда
Возврат;
КонецЕсли;
Периоды = ПериодыНерабочихДней(Объект.ПроизводственныйКалендарь, Объект.ДатаНачала, Объект.ДатаОкончания);
Если Периоды.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Элементы.УчитыватьНерабочиеПериодыГруппа.Видимость = Истина;
Пояснение = "";
Для Каждого ОписаниеПериода Из Периоды Цикл
Пояснение = Пояснение + ?(Не ПустаяСтрока(Пояснение), Символы.ПС, "") + ОписаниеПериода.Представление;
КонецЦикла;
Элементы.НерабочиеПериодыИнформация.Заголовок = Пояснение;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПериодыНерабочихДней(ПроизводственныйКалендарь, ДатаНачала, ДатаОкончания)
Возврат КалендарныеГрафики.ПериодыНерабочихДней(
ПроизводственныйКалендарь, Новый СтандартныйПериод(ДатаНачала, ДатаОкончания));
КонецФункции
&НаСервере
Процедура УточнитьДатуЗаполненности()
@@ -700,14 +687,16 @@
&НаСервере
Процедура ЗаполнитьПоШаблонуНаСервере(СохранятьРучноеРедактирование = Ложь)
ПараметрыЗаполнения = РегистрыСведений.КалендарныеГрафики.ПараметрыЗаполненияГрафика();
ПараметрыЗаполнения.СпособЗаполнения = Объект.СпособЗаполнения;
ПараметрыЗаполнения.ШаблонЗаполнения = Объект.ШаблонЗаполнения;
ПараметрыЗаполнения.ПроизводственныйКалендарь = Объект.ПроизводственныйКалендарь;
ПараметрыЗаполнения.УчитыватьПраздники = Объект.УчитыватьПраздники;
ПараметрыЗаполнения.УчитыватьНерабочиеПериоды = Объект.УчитыватьНерабочиеПериоды;
ПараметрыЗаполнения.ДатаОтсчета = Объект.ДатаОтсчета;
ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик(
Объект.ДатаНачала,
Объект.СпособЗаполнения,
Объект.ШаблонЗаполнения,
Объект.ДатаОкончания,
Объект.ПроизводственныйКалендарь,
Объект.УчитыватьПраздники,
Объект.ДатаОтсчета);
Объект.ДатаНачала, Объект.ДатаОкончания, ПараметрыЗаполнения);
Если РучноеРедактирование Тогда
Если СохранятьРучноеРедактирование Тогда
@@ -747,7 +736,10 @@
ДниГрафика = Новый ФиксированноеСоответствие(ДниГрафикаСоответствие);
Если Не РезультатЗаполненПоШаблону Тогда
УстановитьСнятьМодифицированностьРезультата(ЭтотОбъект, Истина);
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Истина);
КонецЕсли;
КонецПроцедуры
@@ -771,14 +763,15 @@
// Если нет ручных корректировок и данных тоже нет, то формируем результат по шаблону за выбранный год.
Если ДниГрафика.Количество() = 0 И ДниИзмененные.Количество() = 0 Тогда
ПараметрыЗаполнения = РегистрыСведений.КалендарныеГрафики.ПараметрыЗаполненияГрафика();
ПараметрыЗаполнения.СпособЗаполнения = Объект.СпособЗаполнения;
ПараметрыЗаполнения.ШаблонЗаполнения = Объект.ШаблонЗаполнения;
ПараметрыЗаполнения.ПроизводственныйКалендарь = Объект.ПроизводственныйКалендарь;
ПараметрыЗаполнения.УчитыватьПраздники = Объект.УчитыватьПраздники;
ПараметрыЗаполнения.УчитыватьНерабочиеПериоды = Объект.УчитыватьНерабочиеПериоды;
ПараметрыЗаполнения.ДатаОтсчета = Объект.ДатаОтсчета;
ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик(
Объект.ДатаНачала,
Объект.СпособЗаполнения,
Объект.ШаблонЗаполнения,
Дата(НомерТекущегоГода, 12, 31),
Объект.ПроизводственныйКалендарь,
Объект.УчитыватьПраздники,
Объект.ДатаОтсчета);
Объект.ДатаНачала, Дата(НомерТекущегоГода, 12, 31), ПараметрыЗаполнения);
ДниГрафика = Новый ФиксированноеСоответствие(ДниВключенныеВГрафик);
КонецЕсли;
@@ -839,8 +832,8 @@
&НаСервере
Процедура ЗаписатьДанныеГрафикаРаботыНаГод(НомерГода)
РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(
Объект.Ссылка, ДниГрафика, Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31), Истина);
РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(Объект.Ссылка, ДниГрафика, Дата(НомерГода, 1, 1),
Дата(НомерГода, 12, 31), Истина);
ЗаписатьПризнакРучногоРедактирования(Объект, НомерГода);
КонецПроцедуры
@@ -987,4 +980,76 @@
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьРасписанияПредпраздничногоДня(Форма)
Элементы = Форма.Элементы;
Элементы.РасписаниеПредпраздничногоДня.Доступность = Форма.Объект.УчитыватьПраздники;
КонецПроцедуры
&НаКлиенте
Функция ДополнительныеПараметрыЗаполненияРасписанияДня()
ДополнительныеПараметры = Новый Структура(
"НомерДня,
|ИдентификаторСтрокиШаблона");
Возврат ДополнительныеПараметры;
КонецФункции
&НаКлиенте
Процедура НачатьЗаполнениеРасписанияДня(НомерДня, ИдентификаторСтрокиШаблона = Неопределено)
КонтекстВыбора = ДополнительныеПараметрыЗаполненияРасписанияДня();
КонтекстВыбора.НомерДня = НомерДня;
КонтекстВыбора.ИдентификаторСтрокиШаблона = ИдентификаторСтрокиШаблона;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РасписаниеРаботы", РасписаниеРаботы(КонтекстВыбора.НомерДня));
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ОбработчикЗакрытия = Новый ОписаниеОповещения("ЗавершитьЗаполнениеРасписанияДня", ЭтотОбъект, КонтекстВыбора);
ОткрытьФорму("Справочник.Календари.Форма.РасписаниеРаботы", ПараметрыФормы, ЭтотОбъект, , , , ОбработчикЗакрытия);
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьЗаполнениеРасписанияДня(ВыбранноеЗначение, КонтекстВыбора) Экспорт
Если ВыбранноеЗначение = Неопределено Или ТолькоПросмотр Тогда
Возврат;
КонецЕсли;
// Удаляем ранее заполненное расписания для этого дня.
СтрокиДня = Новый Массив;
Для Каждого СтрокаРасписания Из Объект.РасписаниеРаботы Цикл
Если СтрокаРасписания.НомерДня = КонтекстВыбора.НомерДня Тогда
СтрокиДня.Добавить(СтрокаРасписания.ПолучитьИдентификатор());
КонецЕсли;
КонецЦикла;
Для Каждого ИдентификаторСтроки Из СтрокиДня Цикл
Объект.РасписаниеРаботы.Удалить(Объект.РасписаниеРаботы.НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
// Заполняем расписание работы на день.
Для Каждого ОписаниеИнтервала Из ВыбранноеЗначение.РасписаниеРаботы Цикл
НоваяСтрока = Объект.РасписаниеРаботы.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ОписаниеИнтервала);
НоваяСтрока.НомерДня = КонтекстВыбора.НомерДня;
КонецЦикла;
Если КонтекстВыбора.НомерДня = 0 Тогда
РасписаниеПредпраздничногоДня = ПредставлениеРасписанияДня(ЭтотОбъект, 0);
КонецЕсли;
УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь);
УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина);
Если КонтекстВыбора.ИдентификаторСтрокиШаблона <> Неопределено Тогда
СтрокаШаблона = Объект.ШаблонЗаполнения.НайтиПоИдентификатору(КонтекстВыбора.ИдентификаторСтрокиШаблона);
СтрокаШаблона.ДеньВключенВГрафик = ВыбранноеЗначение.РасписаниеРаботы.Количество() > 0; // расписание заполнено
СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(ЭтотОбъект, КонтекстВыбора.НомерДня);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,93 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2020, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГрафикиРаботы.Ссылка
|ИЗ
| Справочник.Календари КАК ГрафикиРаботы";
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ОбработкаЗавершена = Истина;
Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, Метаданные.Справочники.Календари.ПолноеИмя());
Обработано = 0;
Проблемных = 0;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Календари");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Выборка.Сбросить();
Пока Выборка.Следующий() Цикл
ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ГрафикОбъект = Выборка.Ссылка.ПолучитьОбъект();
ГрафикОбъект.УчитыватьНерабочиеПериоды = Истина;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ГрафикОбъект);
Обработано = Обработано + 1;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Проблемных = Проблемных + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать график работы ""%1"" по причине:
|%2'"),
Выборка.Ссылка,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(
ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение,
Метаданные.Справочники.Календари, ,
ТекстСообщения);
КонецПопытки;
КонецЦикла;
Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, Метаданные.Справочники.Календари.ПолноеИмя()) Тогда
ОбработкаЗавершена = Ложь;
КонецЕсли;
ИмяПроцедуры = "Справочник.Календари.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Если Обработано = 0 И Проблемных <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре %1 не удалось обработать некоторые записи (пропущены): %2'"),
ИмяПроцедуры,
Проблемных);
ВызватьИсключение ТекстСообщения;
КонецЕсли;
ЗаписьЖурналаРегистрации(
ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Информация, , ,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура %1 обработала очередную порцию записей: %2'"),
ИмяПроцедуры,
Обработано));
Параметры.ОбработкаЗавершена = ОбработкаЗавершена;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -54,14 +54,15 @@
// Если дата окончания не указана, она будет подобрана по производственному календарю.
ДатаОкончанияЗаполнения = ДатаОкончания;
ПараметрыЗаполнения = РегистрыСведений.КалендарныеГрафики.ПараметрыЗаполненияГрафика();
ПараметрыЗаполнения.СпособЗаполнения = СпособЗаполнения;
ПараметрыЗаполнения.ШаблонЗаполнения = ШаблонЗаполнения;
ПараметрыЗаполнения.ПроизводственныйКалендарь = ПроизводственныйКалендарь;
ПараметрыЗаполнения.УчитыватьПраздники = УчитыватьПраздники;
ПараметрыЗаполнения.УчитыватьНерабочиеПериоды = УчитыватьНерабочиеПериоды;
ПараметрыЗаполнения.ДатаОтсчета = ДатаОтсчета;
ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик(
ДатаНачала,
СпособЗаполнения,
ШаблонЗаполнения,
ДатаОкончанияЗаполнения,
ПроизводственныйКалендарь,
УчитыватьПраздники,
ДатаОтсчета);
ДатаНачала, ДатаОкончанияЗаполнения, ПараметрыЗаполнения);
РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(
Ссылка, ДниВключенныеВГрафик, ДатаНачала, ДатаОкончанияЗаполнения);
@@ -261,6 +261,27 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="b3f188f4-d83e-4e97-b7d3-fc384b46a80a">
<name>УчитыватьНерабочиеПериоды</name>
<synonym>
<key>ru</key>
<value>Учитывать нерабочие периоды</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Если установлено, то из состава рабочих дней будут исключаться дни нерабочих периодов производственного календаря</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:BooleanValue">
<value>true</value>
</fillValue>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="b848aafc-44fb-4dfe-8eec-233dc08fbbb6">
<name>Описание</name>
<synonym>
@@ -306,25 +327,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb">
<name>ВладелецГрафика</name>
<synonym>
<key>ru</key>
<value>Владелец графика</value>
</synonym>
<type>
<types>CatalogRef</types>
</type>
<toolTip>
<key>ru</key>
<value>Служебный реквизит для связи с владельцем графика работы</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="426cbebb-880b-49c5-b046-83c5e071273e">
<name>УдалитьВидКалендаря</name>
<synonym>
@@ -344,6 +346,25 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb">
<name>ВладелецГрафика</name>
<synonym>
<key>ru</key>
<value>Владелец графика</value>
</synonym>
<type>
<types>CatalogRef</types>
</type>
<toolTip>
<key>ru</key>
<value>Служебный реквизит для связи с владельцем графика работы</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="ad08b104-01f8-4900-a06c-baa1d55eba84">
<producedTypes>
<objectType typeId="a46154d6-5130-4e31-a509-dfc89004bf6f" valueTypeId="82efe3db-7415-48e9-952b-6b7c546dba82"/>
@@ -224,6 +224,10 @@
<segments>Объект.БазовыйКалендарь</segments>
</dataPath>
<titleLocation>None</titleLocation>
<handlers>
<event>OnChange</event>
<name>БазовыйКалендарьПриИзменении</name>
</handlers>
<extendedTooltip>
<name>БазовыйКалендарьРасширеннаяПодсказка</name>
<id>57</id>
@@ -285,6 +289,112 @@
<items xsi:type="form:FormGroup">
<name>КалендарьГруппа</name>
<id>17</id>
<items xsi:type="form:FormGroup">
<name>НерабочиеПериодыГруппа</name>
<id>58</id>
<items xsi:type="form:Decoration">
<name>НерабочиеПериодыКартинка</name>
<id>60</id>
<title>
<key>ru</key>
<value>Нерабочие периоды картинка</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НерабочиеПериодыКартинкаРасширеннаяПодсказка</name>
<id>62</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НерабочиеПериодыКартинкаКонтекстноеМеню</name>
<id>61</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Предупреждение32</picture>
</picture>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>НерабочиеПериодыТекст</name>
<id>63</id>
<title>
<key>ru</key>
<value>Нерабочие периоды текст</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НерабочиеПериодыТекстРасширеннаяПодсказка</name>
<id>65</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НерабочиеПериодыТекстКонтекстноеМеню</name>
<id>64</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Нерабочие периоды</value>
</title>
<horizontalStretch>true</horizontalStretch>
<extendedTooltip>
<name>НерабочиеПериодыГруппаРасширеннаяПодсказка</name>
<id>59</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
<backColor xsi:type="core:ColorRef">
<color>Style.НерабочийПериодПроизводственногоКалендаряФон</color>
</backColor>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Календарь</name>
<id>5</id>
@@ -433,7 +543,7 @@
<id>20</id>
<title>
<key>ru</key>
<value>Переносы дней</value>
<value>Переносы выходных дней</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -942,6 +1052,17 @@
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>НерабочиеДаты</name>
<id>12</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ИзменитьДень</name>
<title>
@@ -115,6 +115,9 @@
ЦветОформленияДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняПроизводственногоКалендаряНеУказанЦвет");
КонецЕсли;
СтрокаОформленияПериода.ЦветТекста = ЦветОформленияДня;
Если НерабочиеДаты.Найти(СтрокаОформленияПериода.Дата) <> Неопределено Тогда
СтрокаОформленияПериода.ЦветФона = ОбщегоНазначенияКлиент.ЦветСтиля("НерабочийПериодПроизводственногоКалендаряФон");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@@ -130,6 +133,11 @@
КонецПроцедуры
&НаКлиенте
Процедура БазовыйКалендарьПриИзменении(Элемент)
ПрочитатьНерабочиеДаты();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -226,6 +234,7 @@
КонецЕсли;
ПрочитатьДанныеПроизводственногоКалендаря(СсылкаНаКалендарь, НомерТекущегоГода);
ПрочитатьНерабочиеДаты();
КонецПроцедуры
@@ -476,20 +485,6 @@
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеВидаДняПереноса(ВидДня, Дата)
// Если день является рабочим (или праздником), то в качестве представления выводим название дня недели.
Если ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий")
Или ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Праздник") Тогда
ВидДня = Формат(Дата, "ДФ='дддд'");
КонецЕсли;
Возврат НРег(Строка(ВидДня));
КонецФункции
&НаСервере
Процедура НастроитьПолеКалендаря()
@@ -628,4 +623,46 @@
КонецФункции
&НаСервере
Процедура ПрочитатьНерабочиеДаты(ТекущийОбъект = Неопределено)
Если ТекущийОбъект = Неопределено Тогда
ТекущийОбъект = Объект;
КонецЕсли;
Даты = Новый Массив;
ПроизводственныйКалендарь = ?(ЗначениеЗаполнено(Объект.БазовыйКалендарь),
ТекущийОбъект.БазовыйКалендарь, ТекущийОбъект.Ссылка);
Если ЗначениеЗаполнено(ПроизводственныйКалендарь) Тогда
Периоды = КалендарныеГрафики.ПериодыНерабочихДней(
ПроизводственныйКалендарь, Новый СтандартныйПериод(Дата(НомерТекущегоГода, 1, 1), Дата(НомерТекущегоГода, 12, 31)));
Пояснение = "";
Для Каждого ОписаниеПериода Из Периоды Цикл
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Даты, ОписаниеПериода.Даты);
Пояснение = Пояснение + ?(Не ПустаяСтрока(Пояснение), Символы.ПС, "") + ОписаниеПериода.Представление;
КонецЦикла;
Элементы.НерабочиеПериодыТекст.Заголовок = Пояснение;
КонецЕсли;
НерабочиеДаты = Новый ФиксированныйМассив(Даты);
Элементы.НерабочиеПериодыГруппа.Видимость = НерабочиеДаты.Количество() > 0;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеВидаДняПереноса(ВидДня, Дата)
// Если день является рабочим (или праздником), то в качестве представления выводим название дня недели.
Если ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий")
Или ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Праздник") Тогда
ВидДня = Формат(Дата, "ДФ='дддд'");
КонецЕсли;
Возврат НРег(Строка(ВидДня));
КонецФункции
#КонецОбласти
@@ -49,10 +49,15 @@
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Производственный календарь «%1» на %2 год'"),
ПараметрыПечати.ПроизводственныйКалендарь,
Формат(ПараметрыПечати.НомерГода, "ЧГ=;"));
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
МодульУправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ПроизводственныйКалендарь", НСтр("ru = 'Производственный календарь'"),
"ПроизводственныйКалендарь",
Заголовок,
ПечатнаяФормаПроизводственногоКалендаря(ПараметрыПечати),
,
"Справочник.ПроизводственныеКалендари.ПФ_MXL_ПроизводственныйКалендарь");
@@ -125,7 +130,10 @@
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
|ГДЕ
| ДанныеПроизводственногоКалендаря.Год = &ТекущийГод
| И ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь";
| И ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Возврат Запрос.Выполнить().Выгрузить();
@@ -1028,9 +1036,21 @@
ТабличныйДокумент.Вывести(ЗаголовокПечати);
// Начальные значения, независимо от результата выполнения запроса.
РабочееВремя40Год = 0;
РабочееВремя36Год = 0;
РабочееВремя24Год = 0;
ЗаГод = ОписаниеГруппыПоказателей();
НерабочиеПериоды = КалендарныеГрафики.ПериодыНерабочихДней(
ПроизводственныйКалендарь, Новый СтандартныйПериод(Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31)));
НерабочиеДаты = Новый Массив;
Представление = "";
Для Каждого НерабочийПериод Из НерабочиеПериоды Цикл
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(НерабочиеДаты, НерабочийПериод.Даты);
Представление = Представление + ?(ПустаяСтрока(Представление), "", Символы.ПС) + НерабочийПериод.Представление;
КонецЦикла;
Если НерабочиеПериоды.Количество() > 0 Тогда
ОбластьПредупреждения = Макет.ПолучитьОбласть("НерабочиеПериоды");
ОбластьПредупреждения.Параметры.Представление = Представление;
ТабличныйДокумент.Вывести(ОбластьПредупреждения);
КонецЕсли;
ВидыНерабочихДней = Новый Массив;
ВидыНерабочихДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота);
@@ -1041,12 +1061,18 @@
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Год", НомерГода);
Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь);
Запрос.УстановитьПараметр("НерабочиеДаты", НерабочиеДаты);
Запрос.Текст =
"ВЫБРАТЬ
| ГОД(ДанныеКалендаря.Дата) КАК ГодКалендаря,
| КВАРТАЛ(ДанныеКалендаря.Дата) КАК КварталКалендаря,
| МЕСЯЦ(ДанныеКалендаря.Дата) КАК МесяцКалендаря,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДанныеКалендаря.Дата) КАК КалендарныеДни,
| СУММА(ВЫБОР
| КОГДА ДанныеКалендаря.Дата В (&НерабочиеДаты)
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ) КАК ДниНерабочихПериодов,
| ДанныеКалендаря.ВидДня КАК ВидДня
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеКалендаря
@@ -1072,150 +1098,89 @@
ВыборкаПоГоду = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоГоду.Следующий() Цикл
ВыборкаПоКварталу = ВыборкаПоГоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоКварталу.Следующий() Цикл
НомерКвартала = Макет.ПолучитьОбласть("Квартал");
НомерКвартала.Параметры.НомерКвартала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 квартал'"), ВыборкаПоКварталу.КварталКалендаря);
ТабличныйДокумент.Вывести(НомерКвартала);
ШапкаКвартала = Макет.ПолучитьОбласть("ШапкаКвартала");
ТабличныйДокумент.Вывести(ШапкаКвартала);
КалендарныеДниКв = 0;
РабочееВремя40Кв = 0;
РабочееВремя36Кв = 0;
РабочееВремя24Кв = 0;
РабочиеДниКв = 0;
ВыходныеДниКв = 0;
ЗаКвартал = ОписаниеГруппыПоказателей();
Если ВыборкаПоКварталу.КварталКалендаря = 1
Или ВыборкаПоКварталу.КварталКалендаря = 3 Тогда
КалендарныеДниПолугодие1 = 0;
РабочееВремя40Полугодие1 = 0;
РабочееВремя36Полугодие1 = 0;
РабочееВремя24Полугодие1 = 0;
РабочиеДниПолугодие1 = 0;
ВыходныеДниПолугодие1 = 0;
ЗаПолугодие = ОписаниеГруппыПоказателей();
КонецЕсли;
Если ВыборкаПоКварталу.КварталКалендаря = 1 Тогда
КалендарныеДниГод = 0;
РабочееВремя40Год = 0;
РабочееВремя36Год = 0;
РабочееВремя24Год = 0;
РабочиеДниГод = 0;
ВыходныеДниГод = 0;
ЗаГод = ОписаниеГруппыПоказателей();
КонецЕсли;
ВыборкаПоМесяцу = ВыборкаПоКварталу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоМесяцу.Следующий() Цикл
ВыходныеДни = 0;
РабочееВремя40 = 0;
РабочееВремя36 = 0;
РабочееВремя24 = 0;
КалендарныеДни = 0;
РабочиеДни = 0;
ЗаМесяц = ОписаниеГруппыПоказателей();
ВыборкаПоВидуДня = ВыборкаПоМесяцу.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока ВыборкаПоВидуДня.Следующий() Цикл
Если ВидыНерабочихДней.Найти(ВыборкаПоВидуДня.ВидДня) <> Неопределено Тогда
ВыходныеДни = ВыходныеДни + ВыборкаПоВидуДня.КалендарныеДни
НакопитьЗначение(ЗаМесяц.Основной.ВыходныеДни, ВыборкаПоВидуДня.КалендарныеДни);
НакопитьЗначение(ЗаМесяц.Нерабочий.ВыходныеДни, ВыборкаПоВидуДня.ДниНерабочихПериодов);
ИначеЕсли ВыборкаПоВидуДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий Тогда
РабочееВремя40 = РабочееВремя40 + ВыборкаПоВидуДня.КалендарныеДни * 8;
РабочееВремя36 = РабочееВремя36 + ВыборкаПоВидуДня.КалендарныеДни * 36 / 5;
РабочееВремя24 = РабочееВремя24 + ВыборкаПоВидуДня.КалендарныеДни * 24 / 5;
РабочиеДни = РабочиеДни + ВыборкаПоВидуДня.КалендарныеДни;
НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя40, ВыборкаПоВидуДня.КалендарныеДни * 8);
НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя36, ВыборкаПоВидуДня.КалендарныеДни * 36 / 5);
НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя24, ВыборкаПоВидуДня.КалендарныеДни * 24 / 5);
НакопитьЗначение(ЗаМесяц.Основной.РабочиеДни, ВыборкаПоВидуДня.КалендарныеДни);
НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя40, ВыборкаПоВидуДня.ДниНерабочихПериодов * 8);
НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя36, ВыборкаПоВидуДня.ДниНерабочихПериодов * 36 / 5);
НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя24, ВыборкаПоВидуДня.ДниНерабочихПериодов * 24 / 5);
НакопитьЗначение(ЗаМесяц.Нерабочий.РабочиеДни, ВыборкаПоВидуДня.ДниНерабочихПериодов);
ИначеЕсли ВыборкаПоВидуДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный Тогда
РабочееВремя40 = РабочееВремя40 + ВыборкаПоВидуДня.КалендарныеДни * 7;
РабочееВремя36 = РабочееВремя36 + ВыборкаПоВидуДня.КалендарныеДни * (36 / 5 - 1);
РабочееВремя24 = РабочееВремя24 + ВыборкаПоВидуДня.КалендарныеДни * (24 / 5 - 1);
РабочиеДни = РабочиеДни + ВыборкаПоВидуДня.КалендарныеДни;
НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя40, ВыборкаПоВидуДня.КалендарныеДни * 7);
НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя36, ВыборкаПоВидуДня.КалендарныеДни * (36 / 5 - 1));
НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя24, ВыборкаПоВидуДня.КалендарныеДни * (24 / 5 - 1));
НакопитьЗначение(ЗаМесяц.Основной.РабочиеДни, ВыборкаПоВидуДня.КалендарныеДни);
НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя40, ВыборкаПоВидуДня.ДниНерабочихПериодов * 7);
НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя36, ВыборкаПоВидуДня.ДниНерабочихПериодов * (36 / 5 - 1));
НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя24, ВыборкаПоВидуДня.ДниНерабочихПериодов * (24 / 5 - 1));
НакопитьЗначение(ЗаМесяц.Нерабочий.РабочиеДни, ВыборкаПоВидуДня.ДниНерабочихПериодов);
КонецЕсли;
КалендарныеДни = КалендарныеДни + ВыборкаПоВидуДня.КалендарныеДни;
НакопитьЗначение(ЗаМесяц.Основной.КалендарныеДни, ВыборкаПоВидуДня.КалендарныеДни);
НакопитьЗначение(ЗаМесяц.Нерабочий.ВыходныеДни, - ВыборкаПоВидуДня.ДниНерабочихПериодов);
КонецЦикла;
КалендарныеДниКв = КалендарныеДниКв + КалендарныеДни;
РабочееВремя40Кв = РабочееВремя40Кв + РабочееВремя40;
РабочееВремя36Кв = РабочееВремя36Кв + РабочееВремя36;
РабочееВремя24Кв = РабочееВремя24Кв + РабочееВремя24;
РабочиеДниКв = РабочиеДниКв + РабочиеДни;
ВыходныеДниКв = ВыходныеДниКв + ВыходныеДни;
КалендарныеДниПолугодие1 = КалендарныеДниПолугодие1 + КалендарныеДни;
РабочееВремя40Полугодие1 = РабочееВремя40Полугодие1 + РабочееВремя40;
РабочееВремя36Полугодие1 = РабочееВремя36Полугодие1 + РабочееВремя36;
РабочееВремя24Полугодие1 = РабочееВремя24Полугодие1 + РабочееВремя24;
РабочиеДниПолугодие1 = РабочиеДниПолугодие1 + РабочиеДни;
ВыходныеДниПолугодие1 = ВыходныеДниПолугодие1 + ВыходныеДни;
КалендарныеДниГод = КалендарныеДниГод + КалендарныеДни;
РабочееВремя40Год = РабочееВремя40Год + РабочееВремя40;
РабочееВремя36Год = РабочееВремя36Год + РабочееВремя36;
РабочееВремя24Год = РабочееВремя24Год + РабочееВремя24;
РабочиеДниГод = РабочиеДниГод + РабочиеДни;
ВыходныеДниГод = ВыходныеДниГод + ВыходныеДни;
НакопитьКолонку(ЗаКвартал, ЗаМесяц);
НакопитьКолонку(ЗаПолугодие, ЗаМесяц);
НакопитьКолонку(ЗаГод, ЗаМесяц);
КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяца");
КолонкаМесяца.Параметры.ВыходныеДни = ВыходныеДни;
КолонкаМесяца.Параметры.РабочееВремя40 = РабочееВремя40;
КолонкаМесяца.Параметры.РабочееВремя36 = РабочееВремя36;
КолонкаМесяца.Параметры.РабочееВремя24 = РабочееВремя24;
КолонкаМесяца.Параметры.КалендарныеДни = КалендарныеДни;
КолонкаМесяца.Параметры.РабочиеДни = РабочиеДни;
КолонкаМесяца.Параметры.ИмяМесяца = Формат(Дата(НомерГода, ВыборкаПоМесяцу.МесяцКалендаря, 1), "ДФ='ММММ'");
ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаМесяц);
КолонкаМесяца.Параметры.ИмяМесяца = Формат(Дата(НомерГода, ВыборкаПоМесяцу.МесяцКалендаря, 1), "ДФ='ММММ'"); // АПК:1367
ТабличныйДокумент.Присоединить(КолонкаМесяца);
КонецЦикла;
КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяца");
КолонкаМесяца.Параметры.ВыходныеДни = ВыходныеДниКв;
КолонкаМесяца.Параметры.РабочееВремя40 = РабочееВремя40Кв;
КолонкаМесяца.Параметры.РабочееВремя36 = РабочееВремя36Кв;
КолонкаМесяца.Параметры.РабочееВремя24 = РабочееВремя24Кв;
КолонкаМесяца.Параметры.КалендарныеДни = КалендарныеДниКв;
КолонкаМесяца.Параметры.РабочиеДни = РабочиеДниКв;
КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 квартал'"), ВыборкаПоКварталу.КварталКалендаря);
ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаКвартал);
КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 квартал'"), ВыборкаПоКварталу.КварталКалендаря);
ТабличныйДокумент.Присоединить(КолонкаМесяца);
Если ВыборкаПоКварталу.КварталКалендаря = 2
Или ВыборкаПоКварталу.КварталКалендаря = 4 Тогда
КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяца");
КолонкаМесяца.Параметры.ВыходныеДни = ВыходныеДниПолугодие1;
КолонкаМесяца.Параметры.РабочееВремя40 = РабочееВремя40Полугодие1;
КолонкаМесяца.Параметры.РабочееВремя36 = РабочееВремя36Полугодие1;
КолонкаМесяца.Параметры.РабочееВремя24 = РабочееВремя24Полугодие1;
КолонкаМесяца.Параметры.КалендарныеДни = КалендарныеДниПолугодие1;
КолонкаМесяца.Параметры.РабочиеДни = РабочиеДниПолугодие1;
КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 полугодие'"), ВыборкаПоКварталу.КварталКалендаря / 2);
ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаПолугодие);
КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 полугодие'"), ВыборкаПоКварталу.КварталКалендаря / 2);
ТабличныйДокумент.Присоединить(КолонкаМесяца);
КонецЕсли;
КонецЦикла;
КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяца");
КолонкаМесяца.Параметры.ВыходныеДни = ВыходныеДниГод;
КолонкаМесяца.Параметры.РабочееВремя40 = РабочееВремя40Год;
КолонкаМесяца.Параметры.РабочееВремя36 = РабочееВремя36Год;
КолонкаМесяца.Параметры.РабочееВремя24 = РабочееВремя24Год;
КолонкаМесяца.Параметры.КалендарныеДни = КалендарныеДниГод;
КолонкаМесяца.Параметры.РабочиеДни = РабочиеДниГод;
КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 год'"), Формат(ВыборкаПоГоду.ГодКалендаря, "ЧГ="));
ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаГод);
КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 год'"), Формат(ВыборкаПоГоду.ГодКалендаря, "ЧГ="));
ТабличныйДокумент.Присоединить(КолонкаМесяца);
КонецЦикла;
КолонкаМесяца = Макет.ПолучитьОбласть("Среднемесячный");
КолонкаМесяца.Параметры.РабочееВремя40 = РабочееВремя40Год;
КолонкаМесяца.Параметры.РабочееВремя36 = РабочееВремя36Год;
КолонкаМесяца.Параметры.РабочееВремя24 = РабочееВремя24Год;
ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаГод);
КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 год'"), Формат(НомерГода, "ЧГ="));
ТабличныйДокумент.Вывести(КолонкаМесяца);
КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяцаСр");
КолонкаМесяца.Параметры.РабочееВремя40 = Формат(РабочееВремя40Год / 12, "ЧДЦ=2; ЧГ=0");
КолонкаМесяца.Параметры.РабочееВремя36 = Формат(РабочееВремя36Год / 12, "ЧДЦ=2; ЧГ=0");
КолонкаМесяца.Параметры.РабочееВремя24 = Формат(РабочееВремя24Год / 12, "ЧДЦ=2; ЧГ=0");
КолонкаМесяца.Параметры.РабочееВремя40 = Формат(ЗаГод.Основной.РабочееВремя40 / 12, "ЧДЦ=2; ЧГ=0");
КолонкаМесяца.Параметры.РабочееВремя36 = Формат(ЗаГод.Основной.РабочееВремя36 / 12, "ЧДЦ=2; ЧГ=0");
КолонкаМесяца.Параметры.РабочееВремя24 = Формат(ЗаГод.Основной.РабочееВремя24 / 12, "ЧДЦ=2; ЧГ=0");
КолонкаМесяца.Параметры.ИмяМесяца = НСтр("ru = 'Среднемесячное количество'");
ТабличныйДокумент.Присоединить(КолонкаМесяца);
@@ -1223,6 +1188,90 @@
КонецФункции
Функция ОписаниеГруппыПоказателей()
Описание = Новый Структура("Основной, Нерабочий");
Описание.Основной = ОписаниеКолонки();
Описание.Нерабочий = ОписаниеКолонки();
Возврат Описание;
КонецФункции
Функция ОписаниеКолонки()
Описание = Новый Структура(
"КалендарныеДни,
|РабочиеДни,
|ВыходныеДни,
|РабочееВремя40,
|РабочееВремя36,
|РабочееВремя24");
Описание.КалендарныеДни = 0;
Описание.РабочиеДни = 0;
Описание.ВыходныеДни = 0;
Описание.РабочееВремя40 = 0;
Описание.РабочееВремя36 = 0;
Описание.РабочееВремя24 = 0;
Возврат Описание;
КонецФункции
Процедура НакопитьКолонку(Колонка1, Колонка2)
Для Каждого Группы Из Колонка1 Цикл
Для Каждого Показатели Из Группы.Значение Цикл
Колонка1[Группы.Ключ][Показатели.Ключ] = Колонка1[Группы.Ключ][Показатели.Ключ] + Колонка2[Группы.Ключ][Показатели.Ключ];
КонецЦикла
КонецЦикла;
КонецПроцедуры
Процедура НакопитьЗначение(Накопленное, Значение)
Накопленное = Накопленное + Значение;
КонецПроцедуры
Процедура ЗаполнитьПараметрыОбласти(Параметры, ГруппаПоказателей)
Параметры.Заполнить(ГруппаПоказателей.Основной);
Показатели = Новый Массив;
Показатели.Добавить("КалендарныеДни");
Показатели.Добавить("РабочиеДни");
Показатели.Добавить("ВыходныеДни");
Показатели.Добавить("РабочееВремя40");
Показатели.Добавить("РабочееВремя36");
Показатели.Добавить("РабочееВремя24");
ЗначенияПараметров = Новый Структура;
Для Каждого Показатель Из Показатели Цикл
Если ЗначениеЗаполнено(ГруппаПоказателей.Нерабочий[Показатель]) Тогда
ЗначенияПараметров.Вставить(Показатель,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"%1 (%2)",
ГруппаПоказателей.Основной[Показатель],
ГруппаПоказателей.Основной[Показатель] - ГруппаПоказателей.Нерабочий[Показатель]));
КонецЕсли;
КонецЦикла;
Если ЗначенияПараметров.Количество() > 0 Тогда
Параметры.Заполнить(ЗначенияПараметров);
КонецЕсли;
КонецПроцедуры
Функция БазовыйКалендарь(ПроизводственныйКалендарь) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь);
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(Базовый.Ссылка, Текущий.Ссылка) КАК Ссылка,
| ЕСТЬNULL(Базовый.Код, Текущий.Код) КАК Код,
| ЕСТЬNULL(Базовый.Наименование, Текущий.Наименование) КАК Наименование
|ИЗ
| Справочник.ПроизводственныеКалендари КАК Текущий
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК Базовый
| ПО Текущий.БазовыйКалендарь = Базовый.Ссылка
|ГДЕ
| Текущий.Ссылка = &ПроизводственныйКалендарь";
Возврат ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Запрос.Выполнить().Выгрузить()[0]);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -30,17 +30,39 @@
</column>
</columnsItem>
</columns>
<columns>
<id>2b524b55-0236-48d5-8939-3f2baa1be962</id>
<size>3</size>
<columnsItem>
<index>0</index>
<column>
<formatIndex>1</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>1</index>
<column>
<formatIndex>4</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>2</index>
<column>
<formatIndex>5</formatIndex>
</column>
</columnsItem>
</columns>
<rowsItem>
<index>0</index>
<row>
<c>
<c>
<f>4</f>
<f>6</f>
</c>
</c>
<c>
<c>
<f>5</f>
<f>7</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -51,7 +73,7 @@
</c>
<c>
<c>
<f>6</f>
<f>8</f>
<parameter>ИмяМесяца</parameter>
</c>
</c>
@@ -62,12 +84,12 @@
<row>
<c>
<c>
<f>7</f>
<f>9</f>
</c>
</c>
<c>
<c>
<f>8</f>
<f>10</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -78,7 +100,7 @@
</c>
<c>
<c>
<f>9</f>
<f>11</f>
<parameter>КалендарныеДни</parameter>
</c>
</c>
@@ -89,12 +111,12 @@
<row>
<c>
<c>
<f>7</f>
<f>9</f>
</c>
</c>
<c>
<c>
<f>8</f>
<f>10</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -105,7 +127,7 @@
</c>
<c>
<c>
<f>9</f>
<f>11</f>
<parameter>РабочиеДни</parameter>
</c>
</c>
@@ -116,12 +138,12 @@
<row>
<c>
<c>
<f>7</f>
<f>9</f>
</c>
</c>
<c>
<c>
<f>8</f>
<f>10</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -132,7 +154,7 @@
</c>
<c>
<c>
<f>9</f>
<f>11</f>
<parameter>ВыходныеДни</parameter>
</c>
</c>
@@ -143,12 +165,12 @@
<row>
<c>
<c>
<f>7</f>
<f>9</f>
</c>
</c>
<c>
<c>
<f>8</f>
<f>10</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -160,7 +182,7 @@
</c>
<c>
<c>
<f>9</f>
<f>11</f>
<parameter>РабочееВремя40</parameter>
</c>
</c>
@@ -171,12 +193,12 @@
<row>
<c>
<c>
<f>7</f>
<f>9</f>
</c>
</c>
<c>
<c>
<f>8</f>
<f>10</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -187,7 +209,7 @@
</c>
<c>
<c>
<f>9</f>
<f>11</f>
<parameter>РабочееВремя36</parameter>
</c>
</c>
@@ -198,12 +220,12 @@
<row>
<c>
<c>
<f>4</f>
<f>6</f>
</c>
</c>
<c>
<c>
<f>10</f>
<f>12</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -214,37 +236,49 @@
</c>
<c>
<c>
<f>11</f>
<f>13</f>
<parameter>РабочееВремя24</parameter>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>7</index>
<row>
<empty>true</empty>
</row>
</rowsItem>
<rowsItem>
<index>8</index>
<row>
<formatIndex>12</formatIndex>
<formatIndex>14</formatIndex>
<c>
<c>
<f>13</f>
<f>15</f>
</c>
</c>
<c>
<c>
<f>14</f>
<f>16</f>
<parameter>НомерКвартала</parameter>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>9</index>
<row>
<empty>true</empty>
</row>
</rowsItem>
<rowsItem>
<index>10</index>
<row>
<formatIndex>15</formatIndex>
<formatIndex>17</formatIndex>
<c>
<i>1</i>
<c>
<f>16</f>
<f>18</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -255,13 +289,19 @@
</c>
</row>
</rowsItem>
<rowsItem>
<index>11</index>
<row>
<empty>true</empty>
</row>
</rowsItem>
<rowsItem>
<index>12</index>
<row>
<c>
<i>1</i>
<c>
<f>13</f>
<f>15</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -278,7 +318,7 @@
<c>
<i>1</i>
<c>
<f>17</f>
<f>19</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -289,7 +329,7 @@
</c>
<c>
<c>
<f>18</f>
<f>20</f>
<parameter>ИмяМесяца</parameter>
</c>
</c>
@@ -301,7 +341,7 @@
<c>
<i>1</i>
<c>
<f>19</f>
<f>21</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -313,7 +353,7 @@
</c>
<c>
<c>
<f>20</f>
<f>22</f>
<parameter>РабочееВремя40</parameter>
</c>
</c>
@@ -325,7 +365,7 @@
<c>
<i>1</i>
<c>
<f>21</f>
<f>23</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -336,7 +376,7 @@
</c>
<c>
<c>
<f>22</f>
<f>24</f>
<parameter>РабочееВремя36</parameter>
</c>
</c>
@@ -348,7 +388,7 @@
<c>
<i>1</i>
<c>
<f>23</f>
<f>25</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -359,16 +399,72 @@
</c>
<c>
<c>
<f>24</f>
<f>26</f>
<parameter>РабочееВремя24</parameter>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>19</index>
<row>
<columnsID>2b524b55-0236-48d5-8939-3f2baa1be962</columnsID>
<formatIndex>27</formatIndex>
<c>
<i>1</i>
<c>
<f>28</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Нерабочие периоды</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>20</index>
<row>
<columnsID>2b524b55-0236-48d5-8939-3f2baa1be962</columnsID>
<formatIndex>29</formatIndex>
<c>
<i>1</i>
<c>
<f>0</f>
<tl/>
</c>
</c>
<c>
<c>
<f>30</f>
<parameter>Представление</parameter>
</c>
</c>
</row>
</rowsItem>
<drawing>
<drawingType>Picture</drawingType>
<id>2</id>
<formatIndex>31</formatIndex>
<beginRow>20</beginRow>
<beginRowOffset>6</beginRowOffset>
<endRow>20</endRow>
<endRowOffset>70</endRowOffset>
<beginColumn>1</beginColumn>
<beginColumnOffset>24</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>88</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>0</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<templateMode>true</templateMode>
<defaultFormatIndex>25</defaultFormatIndex>
<height>17</height>
<vgRows>17</vgRows>
<defaultFormatIndex>32</defaultFormatIndex>
<height>21</height>
<vgRows>21</vgRows>
<namedItem xsi:type="NamedItemCells">
<name>Заголовок</name>
<area>
@@ -409,6 +505,17 @@
<endColumn>2</endColumn>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>НерабочиеПериоды</name>
<area>
<type>Rows</type>
<beginRow>19</beginRow>
<endRow>20</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
<columnsID>2b524b55-0236-48d5-8939-3f2baa1be962</columnsID>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>Среднемесячный</name>
<area>
@@ -429,14 +536,26 @@
<endColumn>1</endColumn>
</area>
</namedItem>
<printArea>
<type>Rows</type>
<beginRow>20</beginRow>
<endRow>21</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
</printArea>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">None</v8ui:style>
</line>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
</line>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentDrawingLineType">None</v8ui:style>
</line>
<font faceName="Arial" height="8" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="10" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font ref="style:TextFont" faceName="Arial" bold="true" italic="false" underline="false" strikeout="false" kind="StyleItem"/>
<font faceName="Arial" height="8" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>19</width>
</format>
@@ -444,7 +563,13 @@
<width>215</width>
</format>
<format>
<width>87</width>
<width>95</width>
</format>
<format>
<width>41</width>
</format>
<format>
<width>269</width>
</format>
<format>
<border>0</border>
@@ -560,7 +685,30 @@
<horizontalAlignment>Center</horizontalAlignment>
<fillType>Parameter</fillType>
</format>
<format>
<height>84</height>
</format>
<format>
<font>2</font>
<height>84</height>
<width>41</width>
</format>
<format>
<height>96</height>
</format>
<format>
<font>3</font>
<verticalAlignment>Top</verticalAlignment>
<fillType>Parameter</fillType>
</format>
<format>
<drawingBorder>2</drawingBorder>
</format>
<format>
<width>72</width>
</format>
<picture>
<index>0</index>
<picture ref="v8ui:Предупреждение32"/>
</picture>
</document>
@@ -390,7 +390,7 @@
// чтобы на время обновления производственных календарей, графики были недоступны для изменения пользователем.
//
// Параметры:
// - БлокируемыеОбъекты - массив, имена метаданных блокируемых объектов.
// БлокируемыеОбъекты - Массив из Строка - имена метаданных блокируемых объектов.
//
Процедура ЗаполнитьБлокируемыеОбъектыЗависимыеОтПроизводственныхКалендарей(БлокируемыеОбъекты) Экспорт
@@ -453,10 +453,20 @@
КонецФункции
Функция ИмяПроцедурыУстановкиПризнакаУчитыватьНерабочиеДни() Экспорт
Возврат "Справочники.Календари.ОбработатьДанныеДляПереходаНаНовуюВерсию";
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Обработчики событий подсистем конфигурации.
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
//
// Параметры:
// Обработчики - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Если Метаданные.Обработки.Найти("ЗаполнениеГрафиковРаботы") <> Неопределено Тогда
@@ -467,7 +477,7 @@
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.0.3.20";
Обработчик.Процедура = "РегистрыСведений.КалендарныеГрафики.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ОчередьОтложеннойОбработки = 3;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "РегистрыСведений.КалендарныеГрафики.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ЗапускатьИВПодчиненномУзлеРИБСФильтрами = Истина;
@@ -482,9 +492,29 @@
Приоритет.Процедура = "КалендарныеГрафики.ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей";
Приоритет.Порядок = "После";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.0.3.257";
Обработчик.Процедура = "Справочники.Календари.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.Календари.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ЗапускатьИВПодчиненномУзлеРИБСФильтрами = Истина;
Обработчик.ЧитаемыеОбъекты = "Справочник.Календари";
Обработчик.ИзменяемыеОбъекты = "Справочник.Календари";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("fe8c3f3a-8973-4538-a993-ba74fa9162d8");
Обработчик.Комментарий = НСтр("ru = 'Установка нового признака «Учитывать нерабочие периоды» в положение по умолчанию.'");
Обработчик.БлокируемыеОбъекты = "Справочник.Календари";
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = "КалендарныеГрафики.ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей";
Приоритет.Порядок = "До";
КонецПроцедуры
// См. ПользователиПереопределяемый.ПриОпределенииНазначенияРолей.
// Параметры:
// НазначениеРолей - см. ПользователиПереопределяемый.ПриОпределенииНазначенияРолей.НазначениеРолей
//
Процедура ПриОпределенииНазначенияРолей(НазначениеРолей) Экспорт
// СовместноДляПользователейИВнешнихПользователей.
@@ -206,7 +206,8 @@
|ВЫБРАТЬ
| ДАТАВРЕМЯ(%1)";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОбъединения, Формат(ДатаГрафика, "ДФ='гггг, ММ, д'"));
ТекстЗапроса = ТекстЗапроса + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонОбъединения, Формат(ДатаГрафика, "ДФ='гггг, ММ, д'")); // АПК:1367 Форматирование даты в технических целях, не отображается пользователю
КонецЦикла;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
@@ -531,11 +532,46 @@
КонецФункции
// Готовит описание особых нерабочих периодов, установленных, например, законодательно.
// Такие периоды могут учитываться графиками, переопределяя заполнение по данным производственного календаря.
//
// Параметры:
// ПроизводственныйКалендарь - СправочникСсылка.ПроизводственныеКалендари - календарь, который является источником.
// ПериодОтбор - СтандартныйПериод - временной интервал, в пределах которого нужно определить нерабочие периоды.
// Возвращаемое значение:
// Массив - массив элементов типа Структура с полями:
// * Период - СтандартныйПериод - нерабочий период.
// * Основание - Строка - нормативный акт, на основании которого установлен нерабочий период.
// * Даты - Массив Из Дата - даты, входящие в нерабочий период.
// * Представление - Строка - пользовательское представление периода.
//
Функция ПериодыНерабочихДней(ПроизводственныйКалендарь, ПериодОтбор) Экспорт
Периоды = Новый Массив;
Если Метаданные.Обработки.Найти("ЗаполнениеКалендарныхГрафиков") = Неопределено Тогда
Возврат Периоды;
КонецЕсли;
БазовыйКалендарь = Справочники.ПроизводственныеКалендари.БазовыйКалендарь(ПроизводственныйКалендарь);
МодульКалендарныеГрафики = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаполнениеКалендарныхГрафиков");
Периоды = МодульКалендарныеГрафики.ПериодыНерабочихДней(БазовыйКалендарь, ПериодОтбор);
УдалитьПериодыНеСоответствующиеОтбору(Периоды, ПериодОтбор);
Возврат Периоды;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
// ИнтернетПоддержкаПользователей.РаботаСКлассификаторами
// См. РаботаСКлассификаторамиПереопределяемый.ПриДобавленииКлассификаторов.
// Событие возникает при сборе информации о классификаторах, регистрируем производственные календари.
//
// Параметры:
// Классификаторы - см. РаботаСКлассификаторамиПереопределяемый.ПриДобавленииКлассификаторов.Классификаторы
//
Процедура ПриДобавленииКлассификаторов(Классификаторы) Экспорт
Описатель = Неопределено;
@@ -550,7 +586,7 @@
КонецЕсли;
Описатель.Идентификатор = ИдентификаторКлассификатора();
Описатель.Наименование = НСтр("ru = 'Производственные календари'");
Описатель.Наименование = НСтр("ru = 'Календари'");
Описатель.ОбновлятьАвтоматически = Истина;
Описатель.ОбщиеДанные = Истина;
Описатель.ОбработкаРазделенныхДанных = Истина;
@@ -769,7 +805,7 @@
// Строка - идентификатор классификатора.
//
Функция ИдентификаторКлассификатора() Экспорт
Возврат "Calendars";
Возврат "Calendars20";
КонецФункции
// Определяет версию данных календарей, встроенных в конфигурацию.
@@ -937,7 +973,7 @@
Обработчик = Обработчики.Добавить();
Обработчик.Версия = ВерсияОбновленияДанныхПроизводственныхКалендарей();
Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ОчередьОтложеннойОбработки = 2;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "КалендарныеГрафики.ЗаполнитьДанныеОбновленияДанныхЗависимыхОтПроизводственныхКалендарей";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ЗапускатьИВПодчиненномУзлеРИБСФильтрами = Истина;
@@ -953,6 +989,9 @@
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = МодульГрафикиРаботы.ИмяПроцедурыОбновленияГрафиковРаботы();
Приоритет.Порядок = "До";
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = МодульГрафикиРаботы.ИмяПроцедурыУстановкиПризнакаУчитыватьНерабочиеДни();
Приоритет.Порядок = "После";
КонецЕсли;
КонецЕсли;
@@ -1343,6 +1382,21 @@
КонецПроцедуры
Процедура УдалитьПериодыНеСоответствующиеОтбору(Периоды, ПериодОтбор)
Индекс = 0;
Пока Индекс < Периоды.Количество() Цикл
ОписаниеПериода = Периоды[Индекс];
Если ПериодОтбор.ДатаНачала > ОписаниеПериода.Период.ДатаОкончания
Или (ЗначениеЗаполнено(ПериодОтбор.ДатаОкончания) И ПериодОтбор.ДатаОкончания < ОписаниеПериода.Период.ДатаНачала) Тогда
Периоды.Удалить(Индекс);
Иначе
Индекс = Индекс + 1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Удаляет ошибочно добавленные записи регистра сведений с упоминанием дат, не относящихся к данным годов.
//
Процедура УдалитьОшибочныеДанныеПроизводственногоКалендаря() Экспорт
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.0.3.249";
Описание.Версия = "3.0.3.261";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -17,6 +17,8 @@
//
Процедура ПриПолученииСпискаШаблонов(ШаблоныЗаданий) Экспорт
КонецПроцедуры
// Заполняет соответствие имен методов их псевдонимам для вызова из очереди заданий.
@@ -30,6 +32,8 @@
//
Процедура ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам) Экспорт
КонецПроцедуры
// Заполняет соответствие методов обработчиков ошибок псевдонимам методов, при возникновении
+10 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e1c1195d-4146-4b66-9ebb-da8d6329438f">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7a21a5f5-11ed-4fc5-bdc4-1a37ac6d6d3d">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.0</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="529e0b5b-ddad-4a03-854e-20d6c5b6b2ca"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="337eca97-475b-4c84-a976-b82c3e251f8d"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="0d6c9e8e-0c43-4ad7-b6fa-474892eebfac"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="715850b7-77cc-46fd-a483-4826b3fd6bf2"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="f8897899-1197-4e64-a432-ed886a6654f3"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="213a5eef-b51e-497f-bfc8-70879d37fffb"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="564ab537-9ba4-448c-ae62-299b8fc259e2"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="3474b911-cbbe-4790-b0a6-59b6c2d0bb43"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="189eb711-3d2b-493d-952f-b7ceb93931c8"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="f32fab66-483f-4e0c-8b15-aabd7168282f"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="c0413443-4ede-4cb0-9aea-1cdc66099b67"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="009b5f38-f9be-400d-b3c0-a00bb921c632"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="28535fd1-21b9-4bb5-b7e6-20d7da401422"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="fbcdaf2e-b9a7-4a3d-9182-e797a870f7c3"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.0.3.249</version>
<version>3.0.3.261</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -93,6 +93,7 @@
<styleItems>StyleItem.МоиВариантыОтчетовЦвет</styleItems>
<styleItems>StyleItem.НепринятаяВерсия</styleItems>
<styleItems>StyleItem.НеПринятыеКИсполнениюЗадачи</styleItems>
<styleItems>StyleItem.НерабочийПериодПроизводственногоКалендаряФон</styleItems>
<styleItems>StyleItem.НеСтартованныйБизнесПроцесс</styleItems>
<styleItems>StyleItem.ОшибкаПолнотекстовыйПоискФон</styleItems>
<styleItems>StyleItem.ПользовательВыбранный</styleItems>
@@ -1 +1 @@
{6,1,1,9c541ce6-df4d-4aef-a1a9-c475416bfb33,1,840a8930-77de-4aa5-9d32-3a980f4b1f7b,"3.0.3.249","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6044,1,0,e1c1195d-4146-4b66-9ebb-da8d6329438f,e1c1195d-4146-4b66-9ebb-da8d6329438f,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-74e8Line truncated
{6,1,1,839c262c-3051-4aba-b822-190e48d0b69b,1,702fea1e-7f68-4a3c-85d7-74163150ded2,"3.0.3.261","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6046,1,0,7a21a5f5-11ed-4fc5-bdc4-1a37ac6d6d3d,7a21a5f5-11ed-4fc5-bdc4-1a37ac6d6d3d,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-74e8Line truncated
@@ -45,7 +45,7 @@
Функция ВерсияКалендарей() Экспорт
Возврат 42;
Возврат 1;
КонецФункции
@@ -57,7 +57,24 @@
Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт
Возврат "3.0.3.249";
Возврат "3.0.3.257";
КонецФункции
Функция ПериодыНерабочихДней(ДанныеКалендаря, Период) Экспорт
Периоды = Новый Массив;
Если СокрЛП(ДанныеКалендаря.Код) = "РФ" Тогда
Периоды.Добавить(
ОписаниеПериодаНерабочихДней(
Дата(2020, 3, 30), Дата(2020, 4, 3), НСтр("ru = 'Указ Президента РФ от 25.03.2020 № 206'")));
Периоды.Добавить(
ОписаниеПериодаНерабочихДней(
Дата(2020, 4, 4), Дата(2020, 4, 30), НСтр("ru = 'Указ Президента РФ от 02.04.2020 № 239'")));
КонецЕсли;
Возврат Периоды;
КонецФункции
@@ -458,6 +475,27 @@
КонецФункции
Функция ОписаниеПериодаНерабочихДней(Начало, Окончание, Основание = "")
ОбщегоНазначенияКлиентСервер.Проверить(Начало <= Окончание, НСтр("ru = 'Начало периода позже его завершения'"));
ОписаниеПериода = Новый Структура("Период, Основание, Даты, Представление");
ОписаниеПериода.Период = Новый СтандартныйПериод(Начало, Окончание);
ОписаниеПериода.Основание = Основание;
ОписаниеПериода.Даты = Новый Массив;
ОписаниеПериода.Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'с %1 по %2 - %3'"), Формат(Начало, "ДЛФ=D;"), Формат(Окончание, "ДЛФ=D;"), ОписаниеПериода.Основание);
ДатаОбхода = НачалоДня(Начало);
Пока ДатаОбхода <= Окончание Цикл
ОписаниеПериода.Даты.Добавить(ДатаОбхода);
ДатаОбхода = ДатаОбхода + 86400;
КонецЦикла;
Возврат ОписаниеПериода;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -1018,38 +1018,7 @@
<Item Calendar="РФ" Year="2020" DayType="Воскресенье" Date="20200224" SwapDate="20200223"/>
<Item Calendar="РФ" Year="2020" DayType="Праздник" Date="20200308" SwapDate="20200309"/>
<Item Calendar="РФ" Year="2020" DayType="Воскресенье" Date="20200309" SwapDate="20200308"/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200330" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200331" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200401" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200402" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200403" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200404" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200405" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200406" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200407" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200408" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200409" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200410" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200411" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200412" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200413" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200414" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200415" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200416" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200417" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200418" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200419" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200420" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200421" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200422" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200423" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200424" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200425" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200426" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200427" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200428" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200429" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Нерабочий" Date="20200430" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Предпраздничный" Date="20200430" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Праздник" Date="20200501" SwapDate=""/>
<Item Calendar="РФ" Year="2020" DayType="Суббота" Date="20200504" SwapDate="20200104"/>
<Item Calendar="РФ" Year="2020" DayType="Воскресенье" Date="20200505" SwapDate="20200105"/>
@@ -12,6 +12,7 @@
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
// Исправить включение в график рабочих и предпраздничных дней, выпадающих на субботу и воскресенье.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
@@ -74,15 +75,15 @@
| Календари.СпособЗаполнения КАК СпособЗаполнения,
| Календари.ДатаОтсчета КАК ДатаОтсчета,
| Календари.УчитыватьПраздники КАК УчитыватьПраздники,
| Календари.УчитыватьНерабочиеПериоды КАК УчитыватьНерабочиеПериоды,
| Календари.ШаблонЗаполнения.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| ДеньВключенВГрафик КАК ДеньВключенВГрафик
| ) КАК ШаблонЗаполнения
| ДеньВключенВГрафик КАК ДеньВключенВГрафик) КАК ШаблонЗаполнения
|ИЗ
| Справочник.Календари КАК Календари
|ГДЕ
| Календари.Ссылка В(&ГрафикиМассив)";
| Календари.Ссылка В (&ГрафикиМассив)";
РеквизитыГрафиков = Запрос.Выполнить().Выгрузить();
РеквизитыГрафиков.Индексы.Добавить("Ссылка");
@@ -120,7 +121,7 @@
ОбработкаЗавершена = Ложь;
КонецЕсли;
ИмяПроцедуры = "РегистрыСведений.КалендарныеГрафики.ОбработатьДанныеДляПереходаНаНовуюВерсию";
ИмяПроцедуры = "РегистрСведений.КалендарныеГрафики.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Если Обработано = 0 И Проблемных <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -147,14 +148,16 @@
КонецГода = Дата(Год, 12, 31);
РеквизитыГрафика.ШаблонЗаполнения.Сортировать("НомерСтроки");
ДниВключенныеВГрафик = ДниВключенныеВГрафик(
НачалоГода,
РеквизитыГрафика.СпособЗаполнения,
РеквизитыГрафика.ШаблонЗаполнения,
КонецГода,
РеквизитыГрафика.ПроизводственныйКалендарь,
РеквизитыГрафика.УчитыватьПраздники,
РеквизитыГрафика.ДатаОтсчета);
ПараметрыЗаполнения = РегистрыСведений.КалендарныеГрафики.ПараметрыЗаполненияГрафика();
ПараметрыЗаполнения.СпособЗаполнения = РеквизитыГрафика.СпособЗаполнения;
ПараметрыЗаполнения.ШаблонЗаполнения = РеквизитыГрафика.ШаблонЗаполнения;
ПараметрыЗаполнения.ПроизводственныйКалендарь = РеквизитыГрафика.ПроизводственныйКалендарь;
ПараметрыЗаполнения.УчитыватьПраздники = РеквизитыГрафика.УчитыватьПраздники;
ПараметрыЗаполнения.УчитыватьНерабочиеПериоды = РеквизитыГрафика.УчитыватьНерабочиеПериоды;
ПараметрыЗаполнения.ДатаОтсчета = РеквизитыГрафика.ДатаОтсчета;
ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик(
НачалоГода, КонецГода, ПараметрыЗаполнения);
ЗаписатьДанныеГрафикаВРегистр(ГрафикРаботы, ДниВключенныеВГрафик, НачалоГода, КонецГода);
@@ -184,14 +187,10 @@
|ИЗ
| &УсловияОбновления КАК УсловияОбновления
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.Ссылка КАК ГрафикРаботы,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники,
| Календари.ДатаНачала,
| Календари.ДатаОкончания
|ПОМЕСТИТЬ ВТГрафикиРаботыЗависимыеОтКалендарей
@@ -205,10 +204,7 @@
|
|ВЫБРАТЬ
| Календари.Ссылка,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники,
| Календари.ДатаНачала,
| Календари.ДатаОкончания
|ИЗ
@@ -216,15 +212,11 @@
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари
| ПО (ПроизводственныеКалендари.Ссылка = Календари.ПроизводственныйКалендарь)
| И (Календари.СпособЗаполнения = ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияГрафикаРаботы.ПоЦикламПроизвольнойДлины))
| И (Календари.УчитыватьПраздники)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| УсловияОбновления.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| ВЫБОР
| КОГДА Календари.ДатаНачала < УсловияОбновления.НачалоГода
| ТОГДА УсловияОбновления.НачалоГода
@@ -234,9 +226,7 @@
| КОГДА Календари.ДатаОкончания > УсловияОбновления.КонецГода
| ТОГДА УсловияОбновления.КонецГода
| ИНАЧЕ Календари.ДатаОкончания
| КОНЕЦ КАК ДатаОкончания,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
| КОНЕЦ КАК ДатаОкончания
|ПОМЕСТИТЬ ВТГрафикиРаботыПоУсловиюОбновления
|ИЗ
| ВТГрафикиРаботыЗависимыеОтКалендарей КАК Календари
@@ -251,16 +241,12 @@
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| УсловияОбновления.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| ВЫБОР
| КОГДА Календари.ДатаНачала < УсловияОбновления.НачалоГода
| ТОГДА УсловияОбновления.НачалоГода
| ИНАЧЕ Календари.ДатаНачала
| КОНЕЦ,
| УсловияОбновления.КонецГода,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
| УсловияОбновления.КонецГода
|ИЗ
| ВТГрафикиРаботыЗависимыеОтКалендарей КАК Календари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ УсловияОбновления КАК УсловияОбновления
@@ -268,17 +254,12 @@
| И Календари.ДатаНачала <= УсловияОбновления.КонецГода
| И (Календари.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1))
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Календари.ГрафикРаботы,
| Календари.Год,
| Календари.СпособЗаполнения,
| Календари.ПроизводственныйКалендарь,
| Календари.ДатаНачала,
| Календари.ДатаОкончания,
| Календари.ДатаОтсчета,
| Календари.УчитыватьПраздники
| Календари.ДатаОкончания
|ПОМЕСТИТЬ ВТОбновляемыеГрафикиРаботы
|ИЗ
| ВТГрафикиРаботыПоУсловиюОбновления КАК Календари
@@ -288,25 +269,25 @@
|ГДЕ
| РучныеИзмененияПоВсемГодам.ГрафикРаботы ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОбновляемыеГрафикиРаботы.ГрафикРаботы,
| ОбновляемыеГрафикиРаботы.Год,
| ОбновляемыеГрафикиРаботы.СпособЗаполнения,
| ОбновляемыеГрафикиРаботы.ПроизводственныйКалендарь,
| ПараметрыЗаполнения.СпособЗаполнения,
| ПараметрыЗаполнения.ПроизводственныйКалендарь,
| ОбновляемыеГрафикиРаботы.ДатаНачала,
| ОбновляемыеГрафикиРаботы.ДатаОкончания,
| ОбновляемыеГрафикиРаботы.ДатаОтсчета,
| ОбновляемыеГрафикиРаботы.УчитыватьПраздники
| ПараметрыЗаполнения.ДатаОтсчета,
| ПараметрыЗаполнения.УчитыватьПраздники,
| ПараметрыЗаполнения.УчитыватьНерабочиеПериоды
|ИЗ
| ВТОбновляемыеГрафикиРаботы КАК ОбновляемыеГрафикиРаботы
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Календари ПараметрыЗаполнения
| ПО ПараметрыЗаполнения.Ссылка = ОбновляемыеГрафикиРаботы.ГрафикРаботы
|УПОРЯДОЧИТЬ ПО
| ОбновляемыеГрафикиРаботы.ГрафикРаботы,
| ОбновляемыеГрафикиРаботы.Год
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ШаблонЗаполнения.Ссылка КАК ГрафикРаботы,
@@ -320,7 +301,6 @@
| ВТОбновляемыеГрафикиРаботы.ГрафикРаботы
| ИЗ
| ВТОбновляемыеГрафикиРаботы)
|
|УПОРЯДОЧИТЬ ПО
| ГрафикРаботы,
| НомерСтроки";
@@ -328,7 +308,7 @@
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("УсловияОбновления", УсловияОбновления);
РезультатыЗапроса = Запрос.ВыполнитьПакет();
РезультатыЗапроса = Запрос.ВыполнитьПакет(); // Массив Из РезультатЗапроса
ВыборкаПоГрафикам = РезультатыЗапроса[РезультатыЗапроса.ВГраница() - 1].Выбрать();
ВыборкаПоШаблону = РезультатыЗапроса[РезультатыЗапроса.ВГраница()].Выбрать();
@@ -343,16 +323,17 @@
КонецЦикла;
Пока ВыборкаПоГрафикам.СледующийПоЗначениюПоля("ДатаНачала") Цикл
// Если дата окончания не указана, она будет подобрана по производственному календарю.
ДатаОкончанияЗаполнения = ВыборкаПоГрафикам.ДатаОкончания;
ДниВключенныеВГрафик = ДниВключенныеВГрафик(
ВыборкаПоГрафикам.ДатаНачала,
ВыборкаПоГрафикам.СпособЗаполнения,
ШаблонЗаполнения,
ДатаОкончанияЗаполнения,
ВыборкаПоГрафикам.ПроизводственныйКалендарь,
ВыборкаПоГрафикам.УчитыватьПраздники,
ВыборкаПоГрафикам.ДатаОтсчета);
ЗаписатьДанныеГрафикаВРегистр(ВыборкаПоГрафикам.ГрафикРаботы, ДниВключенныеВГрафик, ВыборкаПоГрафикам.ДатаНачала, ДатаОкончанияЗаполнения);
ПараметрыЗаполнения = РегистрыСведений.КалендарныеГрафики.ПараметрыЗаполненияГрафика();
ПараметрыЗаполнения.СпособЗаполнения = ВыборкаПоГрафикам.СпособЗаполнения;
ПараметрыЗаполнения.ШаблонЗаполнения = ШаблонЗаполнения;
ПараметрыЗаполнения.ПроизводственныйКалендарь = ВыборкаПоГрафикам.ПроизводственныйКалендарь;
ПараметрыЗаполнения.УчитыватьПраздники = ВыборкаПоГрафикам.УчитыватьПраздники;
ПараметрыЗаполнения.УчитыватьНерабочиеПериоды = ВыборкаПоГрафикам.УчитыватьНерабочиеПериоды;
ПараметрыЗаполнения.ДатаОтсчета = ВыборкаПоГрафикам.ДатаОтсчета;
ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик(
ВыборкаПоГрафикам.ДатаНачала, ВыборкаПоГрафикам.ДатаОкончания, ПараметрыЗаполнения);
ЗаписатьДанныеГрафикаВРегистр(
ВыборкаПоГрафикам.ГрафикРаботы, ДниВключенныеВГрафик, ВыборкаПоГрафикам.ДатаНачала, ВыборкаПоГрафикам.ДатаОкончания);
КонецЦикла;
КонецЦикла;
@@ -527,36 +508,58 @@
КонецПроцедуры
// Конструктор параметров заполнения графика работы для методов:
// ДниВключенныеВГрафик, ДниВключенныеВГрафикПоНеделям, ДниВключенныеВГрафикПроизвольнойДлины.
//
// Возвращаемое значение:
// Структура - Описание:
// * ПроизводственныйКалендарь
// * СпособЗаполнения
// * ШаблонЗаполнения
// * УчитыватьПраздники
// * УчитыватьНерабочиеПериоды
// * НерабочиеПериоды
// * ДатаОтсчета
Функция ПараметрыЗаполненияГрафика() Экспорт
ПараметрыЗаполнения = Новый Структура(
"ПроизводственныйКалендарь,
|СпособЗаполнения,
|ШаблонЗаполнения,
|УчитыватьПраздники,
|УчитыватьНерабочиеПериоды,
|НерабочиеПериоды,
|ДатаОтсчета");
ПараметрыЗаполнения.СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям;
ПараметрыЗаполнения.НерабочиеПериоды = Новый Массив;
Возврат ПараметрыЗаполнения;
КонецФункции
// Составляет коллекцию дат, являющихся рабочими с учетом производственного календаря,
// способа заполнения и других настроек.
//
// Параметры:
// - Год - номер года
// - ПроизводственныйКалендарь - производственный календарь, по которому определяются дни.
// - СпособЗаполнения - способ заполнения.
// - ШаблонЗаполнения - шаблон заполнения по дням.
// - УчитыватьПраздники - булево, если Истина, то дни, выпадающие на праздники, будут исключаться.
// - ДатаНачала - необязательный, указывается только для заполнения по циклам произвольной длины.
// ДатаНачала - Дата - Начало заполнения данных.
// ДатаОкончания - Дата - Окончание заполнения данных.
// ПараметрыЗаполнения - Структура - См. ПараметрыЗаполнения.
//
// Возвращаемое значение - соответствие, где Ключ - дата, значение массив структур с описанием интервалов времени для
// Возвращаемое значение:
// Соответствие - где Ключ - дата, значение массив структур с описанием интервалов времени для
// указанной даты.
//
Функция ДниВключенныеВГрафик(ДатаНачала, СпособЗаполнения, ШаблонЗаполнения, ДатаОкончания, ПроизводственныйКалендарь,
УчитыватьПраздники, Знач ДатаОтсчета = Неопределено) Экспорт
Функция ДниВключенныеВГрафик(ДатаНачала, ДатаОкончания, ПараметрыЗаполнения) Экспорт
ДниВключенныеВГрафик = Новый Соответствие;
Если ШаблонЗаполнения.Количество() = 0 Тогда
Если ПараметрыЗаполнения.ШаблонЗаполнения.Количество() = 0 Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДатаОкончания) Тогда
// Если дата окончания не указана, то заполняем до конца года.
ДатаОкончания = КонецГода(ДатаНачала);
Если ЗначениеЗаполнено(ПроизводственныйКалендарь) Тогда
Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПроизводственныйКалендарь) Тогда
// Если указан производственный календарь, то заполняем до "конца" его заполненности.
ДатаОкончанияЗаполнения = Справочники.ПроизводственныеКалендари.ДатаОкончанияЗаполненияПроизводственногоКалендаря(
ПроизводственныйКалендарь);
ПараметрыЗаполнения.ПроизводственныйКалендарь);
Если ДатаОкончанияЗаполнения <> Неопределено
И ДатаОкончанияЗаполнения > ДатаОкончания Тогда
ДатаОкончания = ДатаОкончанияЗаполнения;
@@ -564,6 +567,11 @@
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПроизводственныйКалендарь) Тогда
ПараметрыЗаполнения.НерабочиеПериоды = КалендарныеГрафики.ПериодыНерабочихДней(
ПараметрыЗаполнения.ПроизводственныйКалендарь, Новый СтандартныйПериод(ДатаНачала, ДатаОкончания));
КонецЕсли;
// Заполнение данных производится по годам.
ТекущийГод = Год(ДатаНачала);
Пока ТекущийГод <= Год(ДатаОкончания) Цикл
@@ -571,12 +579,10 @@
ДатаОкончанияВГоду = ДатаОкончания;
СкорректироватьДатыНачалаОкончания(ТекущийГод, ДатаНачалаВГоду, ДатаОкончанияВГоду);
// Получаем данные графика за год.
Если СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям Тогда
ДниЗаГод = ДниВключенныеВГрафикПоНеделям(ТекущийГод, ПроизводственныйКалендарь, ШаблонЗаполнения,
УчитыватьПраздники, ДатаНачалаВГоду, ДатаОкончанияВГоду);
Если ПараметрыЗаполнения.СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям Тогда
ДниЗаГод = ДниВключенныеВГрафикПоНеделям(ТекущийГод, ПараметрыЗаполнения, ДатаНачалаВГоду, ДатаОкончанияВГоду);
Иначе
ДниЗаГод = ДниВключенныеВГрафикПроизвольнойДлины(ТекущийГод, ПроизводственныйКалендарь, ШаблонЗаполнения,
УчитыватьПраздники, ДатаОтсчета, ДатаНачалаВГоду, ДатаОкончанияВГоду);
ДниЗаГод = ДниВключенныеВГрафикПроизвольнойДлины(ТекущийГод, ПараметрыЗаполнения, ДатаНачалаВГоду, ДатаОкончанияВГоду);
КонецЕсли;
// Дополняем общую коллекцию
Для Каждого КлючИЗначение Из ДниЗаГод Цикл
@@ -589,17 +595,16 @@
КонецФункции
Функция ДниВключенныеВГрафикПоНеделям(Год, ПроизводственныйКалендарь, ШаблонЗаполнения, УчитыватьПраздники,
Функция ДниВключенныеВГрафикПоНеделям(Год, ПараметрыЗаполнения,
Знач ДатаНачала = Неопределено, Знач ДатаОкончания = Неопределено)
// Заполнение графика работы по неделям.
ДниВключенныеВГрафик = Новый Соответствие;
ЗаполнятьПоПроизводственномуКалендарю = ЗначениеЗаполнено(ПроизводственныйКалендарь);
ЗаполнятьПоПроизводственномуКалендарю = ЗначениеЗаполнено(ПараметрыЗаполнения.ПроизводственныйКалендарь);
ДнейВГоду = ДеньГода(Дата(Год, 12, 31));
ДанныеПроизводственногоКалендаря = Справочники.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, Год);
ДанныеПроизводственногоКалендаря = Справочники.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря(
ПараметрыЗаполнения.ПроизводственныйКалендарь, Год);
Если ЗаполнятьПоПроизводственномуКалендарю
И ДанныеПроизводственногоКалендаря.Количество() <> ДнейВГоду Тогда
// Если производственный календарь указан, но заполнен неправильно, заполнение по неделям не поддерживается.
@@ -611,12 +616,14 @@
ДатаДня = ДатаНачала;
Пока ДатаДня <= ДатаОкончания Цикл
НомерДня = ДеньНедели(ДатаДня);
Если ЗаполнятьПоПроизводственномуКалендарю И УчитыватьПраздники Тогда
Если ЗаполнятьПоПроизводственномуКалендарю Тогда
Если ПараметрыЗаполнения.УчитыватьПраздники Или ПараметрыЗаполнения.НерабочиеПериоды.Количество() > 0 Тогда
ДанныеДня = ДанныеПроизводственногоКалендаря.НайтиСтроки(Новый Структура("Дата", ДатаДня))[0];
НомерДня = НомерДняШаблона(ДанныеДня);
НомерДня = НомерДняШаблона(ДанныеДня, ПараметрыЗаполнения);
КонецЕсли;
КонецЕсли;
Если НомерДня <> Неопределено Тогда
СтрокаДня = ШаблонЗаполнения[НомерДня - 1];
СтрокаДня = ПараметрыЗаполнения.ШаблонЗаполнения[НомерДня - 1];
Если СтрокаДня.ДеньВключенВГрафик Тогда
ДниВключенныеВГрафик.Вставить(ДатаДня, Истина);
КонецЕсли;
@@ -628,14 +635,14 @@
КонецФункции
Функция ДниВключенныеВГрафикПроизвольнойДлины(Год, ПроизводственныйКалендарь, ШаблонЗаполнения, УчитыватьПраздники,
ДатаОтсчета, Знач ДатаНачала = Неопределено, Знач ДатаОкончания = Неопределено)
Функция ДниВключенныеВГрафикПроизвольнойДлины(Год, ПараметрыЗаполнения,
Знач ДатаНачала = Неопределено, Знач ДатаОкончания = Неопределено)
ДниВключенныеВГрафик = Новый Соответствие;
ДатаДня = ДатаОтсчета;
ДатаДня = ПараметрыЗаполнения.ДатаОтсчета;
Пока ДатаДня <= ДатаОкончания Цикл
Для Каждого СтрокаДня Из ШаблонЗаполнения Цикл
Для Каждого СтрокаДня Из ПараметрыЗаполнения.ШаблонЗаполнения Цикл
Если СтрокаДня.ДеньВключенВГрафик
И ДатаДня >= ДатаНачала Тогда
ДниВключенныеВГрафик.Вставить(ДатаДня, Истина);
@@ -644,29 +651,51 @@
КонецЦикла;
КонецЦикла;
Если Не УчитыватьПраздники Тогда
Если Не ПараметрыЗаполнения.УчитыватьПраздники И ПараметрыЗаполнения.НерабочиеПериоды.Количество() = 0 Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
// Исключаем даты праздничных дней.
ДанныеПроизводственногоКалендаря = Справочники.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря(
ПроизводственныйКалендарь, Год);
ПараметрыЗаполнения.ПроизводственныйКалендарь, Год);
Если ДанныеПроизводственногоКалендаря.Количество() = 0 Тогда
Возврат ДниВключенныеВГрафик;
КонецЕсли;
Если ПараметрыЗаполнения.УчитыватьНерабочиеПериоды Тогда
ДанныеПроизводственногоКалендаря.Индексы.Добавить("Дата");
Для Каждого НерабочийПериод Из ПараметрыЗаполнения.НерабочиеПериоды Цикл
Для Каждого Дата Из НерабочийПериод.Даты Цикл
ДниВключенныеВГрафик.Удалить(Дата);
КонецЦикла;
КонецЦикла;
КонецЕсли;
Если ПараметрыЗаполнения.УчитыватьПраздники Тогда
ДанныеПроизводственногоКалендаря.Индексы.Добавить("ВидДня");
ОтборСтрок = Новый Структура("ВидДня");
ОтборСтрок.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник;
ДанныеПраздничныхДней = ДанныеПроизводственногоКалендаря.НайтиСтроки(ОтборСтрок);
Для Каждого ДанныеДня Из ДанныеПраздничныхДней Цикл
ДниВключенныеВГрафик.Удалить(ДанныеДня.Дата);
КонецЦикла;
ДатыНерабочихПериодов = Новый Массив;
ОтборСтрок.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий;
ДанныеПраздничныхДней = ДанныеПроизводственногоКалендаря.НайтиСтроки(ОтборСтрок);
Для Каждого ДанныеДня Из ДанныеПраздничныхДней Цикл
ДниВключенныеВГрафик.Удалить(ДанныеДня.Дата);
ДанныеНерабочихДней = ДанныеПроизводственногоКалендаря.НайтиСтроки(ОтборСтрок);
Если ДанныеНерабочихДней.Количество() > 0 Тогда
Если Не ПараметрыЗаполнения.УчитыватьНерабочиеПериоды Тогда
Для Каждого НерабочийПериод Из ПараметрыЗаполнения.НерабочиеПериоды Цикл
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ДатыНерабочихПериодов, НерабочийПериод.Даты);
КонецЦикла;
КонецЕсли;
КонецЕсли;
Для Каждого ДанныеДня Из ДанныеНерабочихДней Цикл
Если ДатыНерабочихПериодов.Найти(ДанныеДня.Дата) = Неопределено Тогда
ДниВключенныеВГрафик.Удалить(ДанныеДня.Дата);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат ДниВключенныеВГрафик;
@@ -724,10 +753,20 @@
КонецФункции
Функция НомерДняШаблона(ДанныеДня)
Функция НомерДняШаблона(ДанныеДня, ПараметрыЗаполнения)
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий
Или ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный Тогда
ВидДня = ДанныеДня.ВидДня;
Если ЭтаДатаВНерабочемПериоде(ДанныеДня.Дата, ПараметрыЗаполнения.НерабочиеПериоды) Тогда
Если ПараметрыЗаполнения.УчитыватьНерабочиеПериоды Тогда
Возврат Неопределено;
КонецЕсли;
Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий Тогда
ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий;
КонецЕсли;
КонецЕсли;
Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий
Или ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный Тогда
ДатаДня = ДанныеДня.Дата;
Если ЗначениеЗаполнено(ДанныеДня.ДатаПереноса) Тогда
ДатаДня = ДанныеДня.ДатаПереноса;
@@ -735,18 +774,34 @@
Возврат ДеньНедели(ДатаДня);
КонецЕсли;
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда
Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда
Возврат 6;
КонецЕсли;
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда
Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда
Возврат 7;
КонецЕсли;
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник
Или ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий Тогда
Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник
Или ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий Тогда
Если ПараметрыЗаполнения.УчитыватьПраздники Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Возврат ДеньНедели(ДанныеДня.Дата);
КонецФункции
Функция ЭтаДатаВНерабочемПериоде(Дата, НерабочиеПериоды)
Для Каждого НерабочийПериод Из НерабочиеПериоды Цикл
Если НерабочийПериод.Даты.Найти(Дата) <> Неопределено Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
@@ -3202,6 +3202,93 @@
<value>true</value>
</right>
</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>
<name>DataProcessor.ОценкаПроизводительности.Command.ЭкспортЗамеровПроизводительности</name>
<right>
@@ -5385,93 +5472,6 @@
<value>true</value>
</right>
</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>
<name>Subsystem.СтандартныеПодсистемы.Subsystem.РезервноеКопированиеИБ</name>
<right>
@@ -21,6 +21,37 @@
<value>true</value>
</right>
</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>
<name>Catalog.РассылкиОтчетов.Command.ВыполнитьСейчас</name>
<right>
@@ -76,37 +107,6 @@
<value>true</value>
</right>
</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>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -4280,6 +4280,45 @@
<value>false</value>
</right>
</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>
<name>DataProcessor.ОценкаПроизводительности.Command.ЭкспортЗамеровПроизводительности</name>
<right>
@@ -7058,45 +7097,6 @@
<value>false</value>
</right>
</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>
<name>Subsystem.СтандартныеПодсистемы.Subsystem.РезервноеКопированиеИБ</name>
<right>
@@ -3,13 +3,6 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -41,6 +34,13 @@
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:StyleItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="5797e28d-1318-4728-8b17-bcb78d85349a">
<name>НерабочийПериодПроизводственногоКалендаряФон</name>
<synonym>
<key>ru</key>
<value>Нерабочий период производственного календаря фон</value>
</synonym>
<value xsi:type="core:ColorValue">
<value xsi:type="core:ColorDef">
<red>251</red>
<green>224</green>
<blue>224</blue>
</value>
</value>
</mdclass:StyleItem>
@@ -16,7 +16,6 @@
<content>InformationRegister.ДанныеПроизводственногоКалендаря</content>
<content>Catalog.ПроизводственныеКалендари</content>
<content>Enum.ВидыДнейПроизводственногоКалендаря</content>
<content>Enum.УдалитьВидыКалендарей</content>
<content>StyleItem.ВидДняПроизводственногоКалендаряВоскресеньеЦвет</content>
<content>StyleItem.ВидДняПроизводственногоКалендаряНеУказанЦвет</content>
<content>StyleItem.ВидДняПроизводственногоКалендаряПраздникЦвет</content>
@@ -28,5 +27,7 @@
<content>FunctionalOption.ИспользоватьНесколькоПроизводственныхКалендарей</content>
<content>Role.ДобавлениеИзменениеКалендарныхГрафиков</content>
<content>DataProcessor.ЗаполнениеКалендарныхГрафиков</content>
<content>StyleItem.НерабочийПериодПроизводственногоКалендаряФон</content>
<content>Enum.УдалитьВидыКалендарей</content>
<parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem>
</mdclass:Subsystem>