Skip to content

Commit

Permalink
Merge pull request #16 from alei1180/15-add-bitrix-task-filter
Browse files Browse the repository at this point in the history
Добавлен фильтр по задаче Битрикс24
  • Loading branch information
alei1180 authored Nov 29, 2023
2 parents 2a2b4b9 + 5f3adde commit f966f6e
Show file tree
Hide file tree
Showing 4 changed files with 169 additions and 9 deletions.
Binary file modified bin/ClockifyToBitrix24.epf
Binary file not shown.
2 changes: 1 addition & 1 deletion src/ClockifyToBitrix24/Ext/ObjectModule.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@

Функция ПолучитьВерсиюПроекта() Экспорт

Возврат "1.0.6";
Возврат "1.0.7";

КонецФункции

Expand Down
29 changes: 29 additions & 0 deletions src/ClockifyToBitrix24/Forms/Форма/Ext/Form.xml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,20 @@
<Event name="OnChange">ФильтрПоНевыгруженнымВБитриксПриИзменении</Event>
</Events>
</RadioButtonField>
<InputField name="БитриксСписокЗадач" id="149">
<DataPath>БитриксСписокЗадач</DataPath>
<AutoMaxWidth>false</AutoMaxWidth>
<MaxWidth>18</MaxWidth>
<HorizontalStretch>false</HorizontalStretch>
<ClearButton>true</ClearButton>
<ListChoiceMode>true</ListChoiceMode>
<ContextMenu name="БитриксСписокЗадачКонтекстноеМеню" id="150"/>
<ExtendedTooltip name="БитриксСписокЗадачРасширеннаяПодсказка" id="151"/>
<Events>
<Event name="OnChange">БитриксСписокЗадачПриИзменении</Event>
<Event name="AutoComplete">БитриксСписокЗадачАвтоПодбор</Event>
</Events>
</InputField>
</ChildItems>
</UsualGroup>
<Table name="ЗатраченноеВремя" id="21">
Expand Down Expand Up @@ -926,6 +940,21 @@ https://&lt;you bitrix&gt;.bitrix24.ru/company/personal/user/&lt;user id&gt;/</v
</Column>
</Columns>
</Attribute>
<Attribute name="БитриксСписокЗадач" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>БЗ</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<ConditionalAppearance>
<dcsset:item>
<dcsset:selection>
Expand Down
147 changes: 139 additions & 8 deletions src/ClockifyToBitrix24/Forms/Форма/Ext/Form/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

ПересчитатьПодвал();
УстановитьВидомостьОшибок();
ЗаполнитьБитриксСписокЗадач();

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

Expand Down Expand Up @@ -39,17 +40,17 @@
ОчиститьСообщения();
ОчиститьЗатраченноеВремя();
ФильтрПоНевыгруженнымВБитрикс = 0;
ФильтрПоНевыгруженнымВБитриксПриИзменении(Элементы.ФильтрПоНевыгруженнымВБитрикс);

Если НЕ ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;

ПолучитьДанныеОЗатраченномВремени();

ЗаполнитьБитриксСписокЗадач();
ПересчитатьПодвал();
УстановитьВидомостьОшибок();

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

&НаКлиенте
Expand Down Expand Up @@ -116,16 +117,106 @@
&НаКлиенте
Процедура ФильтрПоНевыгруженнымВБитриксПриИзменении(Элемент)

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

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

&НаКлиенте
Процедура БитриксСписокЗадачПриИзменении(Элемент)

ЗатраченноеВремяУстановитьОтборСтрок();
ПересчитатьПодвал();

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

&НаКлиенте
Процедура БитриксСписокЗадачАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)

ИскомыйТекст = ВРег(Текст);
Пока СтрНайти(ИскомыйТекст, " ") > 0 Цикл
ИскомыйТекст = СтрЗаменить(ИскомыйТекст, " ", " ");
КонецЦикла;

ИскомыйТекст = СокрЛП(ИскомыйТекст);
ДлинаТекста = СтрДлина(ИскомыйТекст);
Если ДлинаТекста = 0 Тогда
Возврат
КонецЕсли;

СтандартнаяОбработка = Ложь;

Шрифт = Новый Шрифт(,,Истина);
Цвет = WebЦвета.Зеленый;

ДанныеВыбора = Новый СписокЗначений;

Подстроки = СтрРазделить(ИскомыйТекст, " ");

Для Каждого Стр Из Элемент.СписокВыбора Цикл

Строка = Стр.Значение;
СтрокаВРег = ВРег(Строка);

ВхожденияНайдены = Истина;

Для Каждого Подстрока Из Подстроки Цикл
Если Найти(СтрокаВРег, Подстрока) = 0 Тогда
ВхожденияНайдены = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;

Если Не ВхожденияНайдены Тогда
Продолжить
КонецЕсли;

ДлинаСтроки = СтрДлина(Строка);
Массив = Новый Массив(ДлинаСтроки);

Для Каждого Подстрока Из Подстроки Цикл
ДлинаПодстроки = СтрДлина(Подстрока);
НачалоПоиска = 1;
Пока Истина Цикл

ПозицияПодстроки = СтрНайти(СтрокаВРег, Подстрока, , НачалоПоиска);
Если ПозицияПодстроки = 0 Тогда
Прервать;
КонецЕсли;

НачалоПоиска = ПозицияПодстроки + ДлинаПодстроки;

Для Сч = ПозицияПодстроки По НачалоПоиска - 1 Цикл
Массив[Сч - 1] = Истина;
КонецЦикла;

Если НачалоПоиска > ДлинаСтроки Тогда
Прервать;
КонецЕсли;

КонецЦикла;
КонецЦикла;

МассивСтрок = Новый Массив;
Для Сч = 0 По Массив.ВГраница() Цикл
Символ = Сред(Строка, Сч + 1, 1);
Если Массив[Сч] = Неопределено Тогда
МассивСтрок.Добавить(Символ);
Иначе
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(Символ, Шрифт, Цвет));
КонецЕсли;
КонецЦикла;

ДанныеВыбора.Добавить(Строка, Новый ФорматированнаяСтрока(МассивСтрок));

Если ДанныеВыбора.Количество() = 50 Тогда
Прервать
КонецЕсли;

КонецЦикла;

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

&НаКлиенте
Процедура ДекорацияСведенияОбОбработкеНажатие(Элемент)

Expand Down Expand Up @@ -583,7 +674,8 @@

Для Каждого СтрЗатраченноеВремя Из ЗатраченноеВремя Цикл

Если ФильтрПоНевыгруженнымВБитрикс = 1 И СтрЗатраченноеВремя.УчтеноВБитрикс Тогда
СоответствуетОтобору = Элементы.ЗатраченноеВремя.ПроверитьСтроку(СтрЗатраченноеВремя.ПолучитьИдентификатор());
Если НЕ СоответствуетОтобору Тогда
Продолжить;
КонецЕсли;

Expand Down Expand Up @@ -731,4 +823,43 @@

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

&НаКлиенте
Процедура ЗаполнитьБитриксСписокЗадач()

Элементы.ЗатраченноеВремя.ОтборСтрок = Неопределено;
Элементы.БитриксСписокЗадач.СписокВыбора.Очистить();

МассивДобавленнных = Новый Массив;
Для каждого СтрокаТаблицы Из ЗатраченноеВремя Цикл

Если МассивДобавленнных.Найти(СтрокаТаблицы.НомерЗадачи) = Неопределено Тогда
МассивДобавленнных.Добавить(СтрокаТаблицы.НомерЗадачи);
Задача = СтрокаТаблицы.НомерЗадачи + " " + СтрокаТаблицы.НазваниеЗадачи;
Элементы.БитриксСписокЗадач.СписокВыбора.Добавить(Задача, Задача);
КонецЕсли;
КонецЦикла;

Элементы.БитриксСписокЗадач.СписокВыбора.Вставить(0,"",СтрШаблон("Все задачи (%1)", МассивДобавленнных.Количество()));
Элементы.БитриксСписокЗадач.СписокВыбора.СортироватьПоЗначению(НаправлениеСортировки.Возр);
БитриксСписокЗадач = Элементы.БитриксСписокЗадач.СписокВыбора[0];

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

&НаКлиенте
Процедура ЗатраченноеВремяУстановитьОтборСтрок()

СтруктураПоиска = Новый Структура();

Если СтрНайти(БитриксСписокЗадач,"Все задачи") = 0 И БитриксСписокЗадач <> "" Тогда
СтруктураПоиска.Вставить("НомерЗадачи", СтрРазделить(БитриксСписокЗадач, " ",Ложь)[0]);
КонецЕсли;

Если ФильтрПоНевыгруженнымВБитрикс = 1 Тогда
СтруктураПоиска.Вставить("УчтеноВБитрикс", Ложь);
КонецЕсли;

Элементы.ЗатраченноеВремя.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураПоиска);

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

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

0 comments on commit f966f6e

Please sign in to comment.