1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
documentfieldsmanager.php
См. документацию.
1<?php
2
3namespace Bitrix\Catalog\Document;
4
5use Bitrix\Catalog\StoreDocumentTable;
6use Bitrix\Main\Config\Option;
7use Bitrix\Main\Error;
8use Bitrix\Main\Result;
9use Bitrix\Main\Web\Json;
10
12{
13 public static function getRequiredFields(string $docType): array
14 {
15 try
16 {
17 $requiredFields = Json::decode(Option::get('catalog', 'store_document_required_fields_' . $docType)) ?: [];
18 }
19 catch (\Exception $e)
20 {
21 $requiredFields = [];
22 }
23
24 return $requiredFields;
25 }
26
27 public static function addRequiredField(string $docType, string $fieldName): Result
28 {
29 $result = new Result();
30 $allowedFields = self::getAllowedRequiredSettingFieldsByDocumentId($docType);
31 if (!in_array($fieldName, $allowedFields, true))
32 {
33 $result->addError(new Error('Field "' . $fieldName . '" is not available'));
34
35 return $result;
36 }
37
38 $requiredFields = self::getRequiredFields($docType);
39 if (in_array($fieldName, $requiredFields, true))
40 {
41 $result->addError(new Error('Field "' . $fieldName . '" already required'));
42
43 return $result;
44 }
45
46 $requiredFields[] = $fieldName;
47 self::saveRequiredFields($docType, $requiredFields);
48
49 return $result;
50 }
51
52 public static function deleteRequiredField(string $docType, string $fieldName): Result
53 {
54 $result = new Result();
55
56 $requiredFields = self::getRequiredFields($docType);
57 $fieldIndex = array_search($fieldName, $requiredFields, true);
58 if ($fieldIndex === false)
59 {
60 $result->addError(new Error('Field "' . $fieldName . '" already not required'));
61
62 return $result;
63 }
64
65 unset($requiredFields[$fieldIndex]);
66 $requiredFields = array_values($requiredFields);
67 self::saveRequiredFields($docType, $requiredFields);
68
69 return $result;
70 }
71
72 private static function saveRequiredFields(string $docType, array $requiredFields): void
73 {
74 Option::set('catalog', 'store_document_required_fields_' . $docType, Json::encode($requiredFields));
75 }
76
77 private static function getAllowedRequiredSettingFieldsByDocumentId(string $documentType): array
78 {
79 return match ($documentType) {
81 'TITLE',
82 'DOC_NUMBER',
83 'DATE_DOCUMENT',
84 'ITEMS_ORDER_DATE',
85 'ITEMS_RECEIVED_DATE',
86 'DOCUMENT_FILES'
87 ],
91 'TITLE',
92 'DOC_NUMBER',
93 'DATE_DOCUMENT'
94 ],
95 default => [],
96 };
97 }
98}
$allowedFields
Определения push.php:9
static getRequiredFields(string $docType)
Определения documentfieldsmanager.php:13
static deleteRequiredField(string $docType, string $fieldName)
Определения documentfieldsmanager.php:52
static addRequiredField(string $docType, string $fieldName)
Определения documentfieldsmanager.php:27
Определения error.php:15
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14