14 abstract public function getDocumentType();
20 $documentService = \CBPRuntime::getRuntime()->getDocumentService();
21 if (is_null($targetDocumentType))
23 $targetDocumentType = $this->getDocumentType();
26 $fieldsMap = $documentService->getDocumentFields($targetDocumentType);
31 foreach ($conditionGroup->
getItems() as [$condition, $joiner])
33 $fieldId = $condition->getField();
34 if (!isset($fieldsMap[$fieldId]))
41 $betweenFilterResult = $this->getBetweenFilter($fieldsMap[$fieldId] ?? [], $condition);
42 if (!$betweenFilterResult->isSuccess())
47 $filter[
$i][] = $betweenFilterResult->getData()[
'filter1'];
48 $filter[
$i][] = $betweenFilterResult->getData()[
'filter2'];
52 $value = $condition->getValue();
56 $extractionResult = $this->
extractValue($fieldsMap[$fieldId], (
string)$condition->getValue());
57 if ($extractionResult->isSuccess())
59 $value = $extractionResult->getData()[
'extractedValue'];
69 $value = \CBPHelper::extractUsers($value, $targetDocumentType);
73 $value = \CBPHelper::getBool($value);
76 switch ($condition->getOperator())
110 $operator = $condition->getOperator();
123 $filter[
$i][] = $this->createRowFilter($operator, $condition->getField(), $value);
137 $value_greater_then = (is_array($value) && isset($value[0]) ? $value[0] : $value);
138 $value_less_then = (is_array($value) && isset($value[1]) ? $value[1] :
'');
140 $extractionResult1 = $this->
extractValue($property, (
string)$value_greater_then);
141 if (!$extractionResult1->isSuccess())
143 return Result::createOk()->addErrors($extractionResult1->getErrors());
146 $extractionResult2 = $this->
extractValue($property, (
string)$value_less_then);
147 if (!$extractionResult2->isSuccess())
149 return Result::createOk()->addErrors($extractionResult2->getErrors());
152 $filter1 = $this->createRowFilter(
'>=', $condition->
getField(), $extractionResult1->getData()[
'extractedValue']);
153 $filter2 = $this->createRowFilter(
'<=', $condition->
getField(), $extractionResult2->getData()[
'extractedValue']);
155 return Result::createOk([
'filter1' => $filter1,
'filter2' => $filter2]);
158 private function createRowFilter(
string $operator,
string $field, $value):
array
160 return [$operator . $field => $value];
165 $documentService = \CBPRuntime::getRuntime()->getDocumentService();
167 $field = $documentService->getFieldTypeObject($this->getDocumentType(), $fieldProperties);
170 $extractionErrors = [];
173 $errors[] =
new Error(
'Can\'t create field type object');
177 if (!isset($fieldProperties[
'FieldName']))
179 $fieldProperties[
'FieldName'] =
'field_name';
182 $value = $field->extractValue(
183 [
'Field' => $fieldProperties[
'FieldName']],
184 [$fieldProperties[
'FieldName'] => $value],
189 foreach ($extractionErrors as $singleError)
191 if (is_array($singleError))
194 $singleError[
'message'] ??
'',
195 $singleError[
'code'] ??
'',
196 $singleError[
'parameter'] ??
''
201 return $errors ? Result::createOk()->addErrors(
$errors) : Result::createOk([
'extractedValue' => $value]);
207 $prefix = $fieldsMap[
'DynamicFilterFields'][
'FieldName'] .
'_';
209 $conditionGroup = [
'items' => []];
211 foreach (
$currentValues[$prefix .
'field'] ?? [] as $index => $fieldName)
227 $conditionGroup[
'items'][] = [
232 'operator' => $operator,
241 $result->setData($conditionGroup);
getCurrentValues($compatible=false)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if($request->isPost() && $currentAction !==null &&check_bitrix_sessid()) $currentValues
extractValue(array $fieldProperties, $value)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)