mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-30 08:26:55 +03:00
fix(form-compile): PY register list generators — array format for columns/elements
Fixed IR List and AccumReg List PY generators: - columns: OrderedDict → list of OrderedDict (matching PS1 array format) - table element: use 'table' key (not 'element'), 'tableAutofill' (not 'autoCommandBar'), 'None' (not 'none') - elements: list (not OrderedDict wrapper) PY tests: 10/12 (2 remaining CoA failures — PY CoA Item generator needs deeper rewrite from dict to list format) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
2206c4cf3e
commit
0d31d17204
@@ -909,42 +909,38 @@ def generate_information_register_list_dsl(meta, p):
|
|||||||
is_periodic = meta.get('Periodicity') and meta['Periodicity'] != 'Nonperiodical'
|
is_periodic = meta.get('Periodicity') and meta['Periodicity'] != 'Nonperiodical'
|
||||||
is_recorder_subordinate = meta.get('WriteMode') == 'RecorderSubordinate'
|
is_recorder_subordinate = meta.get('WriteMode') == 'RecorderSubordinate'
|
||||||
|
|
||||||
columns = OrderedDict()
|
columns_list = []
|
||||||
# Period
|
# Period
|
||||||
if is_periodic:
|
if is_periodic:
|
||||||
columns['\u041f\u0435\u0440\u0438\u043e\u0434'] = {'element': 'labelField', 'path': '\u0421\u043f\u0438\u0441\u043e\u043a.Period'}
|
columns_list.append(OrderedDict([('labelField', '\u041f\u0435\u0440\u0438\u043e\u0434'), ('path', '\u0421\u043f\u0438\u0441\u043e\u043a.Period')]))
|
||||||
# Recorder/LineNumber for subordinate registers
|
# Recorder/LineNumber for subordinate registers
|
||||||
if is_recorder_subordinate:
|
if is_recorder_subordinate:
|
||||||
columns['\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440'] = {'element': 'labelField', 'path': '\u0421\u043f\u0438\u0441\u043e\u043a.Recorder'}
|
columns_list.append(OrderedDict([('labelField', '\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440'), ('path', '\u0421\u043f\u0438\u0441\u043e\u043a.Recorder')]))
|
||||||
columns['\u041d\u043e\u043c\u0435\u0440\u0421\u0442\u0440\u043e\u043a\u0438'] = {'element': 'labelField', 'path': '\u0421\u043f\u0438\u0441\u043e\u043a.LineNumber'}
|
columns_list.append(OrderedDict([('labelField', '\u041d\u043e\u043c\u0435\u0440\u0421\u0442\u0440\u043e\u043a\u0438'), ('path', '\u0421\u043f\u0438\u0441\u043e\u043a.LineNumber')]))
|
||||||
# Dimensions
|
# Dimensions
|
||||||
for dim in meta.get('Dimensions', []):
|
for dim in meta.get('Dimensions', []):
|
||||||
if not is_displayable_type(dim['Type']):
|
if not is_displayable_type(dim['Type']):
|
||||||
continue
|
continue
|
||||||
columns[dim['Name']] = {'element': 'labelField', 'path': f"\u0421\u043f\u0438\u0441\u043e\u043a.{dim['Name']}"}
|
columns_list.append(OrderedDict([('labelField', dim['Name']), ('path', f"\u0421\u043f\u0438\u0441\u043e\u043a.{dim['Name']}")]))
|
||||||
# Resources
|
# Resources
|
||||||
for res in meta.get('Resources', []):
|
for res in meta.get('Resources', []):
|
||||||
if not is_displayable_type(res['Type']):
|
if not is_displayable_type(res['Type']):
|
||||||
continue
|
continue
|
||||||
el = 'labelField'
|
el_key = 'check' if re.match(r'^xs:boolean$|^Boolean$', res['Type']) else 'labelField'
|
||||||
if re.match(r'^xs:boolean$|^Boolean$', res['Type']):
|
columns_list.append(OrderedDict([(el_key, res['Name']), ('path', f"\u0421\u043f\u0438\u0441\u043e\u043a.{res['Name']}")]))
|
||||||
el = 'checkBox'
|
|
||||||
columns[res['Name']] = {'element': el, 'path': f"\u0421\u043f\u0438\u0441\u043e\u043a.{res['Name']}"}
|
|
||||||
# Attributes
|
# Attributes
|
||||||
for attr in meta['Attributes']:
|
for attr in meta['Attributes']:
|
||||||
if not is_displayable_type(attr['Type']):
|
if not is_displayable_type(attr['Type']):
|
||||||
continue
|
continue
|
||||||
el = 'labelField'
|
el_key = 'check' if re.match(r'^xs:boolean$|^Boolean$', attr['Type']) else 'labelField'
|
||||||
if re.match(r'^xs:boolean$|^Boolean$', attr['Type']):
|
columns_list.append(OrderedDict([(el_key, attr['Name']), ('path', f"\u0421\u043f\u0438\u0441\u043e\u043a.{attr['Name']}")]))
|
||||||
el = 'checkBox'
|
|
||||||
columns[attr['Name']] = {'element': el, 'path': f"\u0421\u043f\u0438\u0441\u043e\u043a.{attr['Name']}"}
|
|
||||||
|
|
||||||
table_el = OrderedDict([
|
table_el = OrderedDict([
|
||||||
('element', 'table'),
|
('table', '\u0421\u043f\u0438\u0441\u043e\u043a'),
|
||||||
('path', '\u0421\u043f\u0438\u0441\u043e\u043a'),
|
('path', '\u0421\u043f\u0438\u0441\u043e\u043a'),
|
||||||
('commandBarLocation', 'none'),
|
('commandBarLocation', 'None'),
|
||||||
('autoCommandBar', {'autofill': False}),
|
('tableAutofill', False),
|
||||||
('columns', columns),
|
('columns', columns_list),
|
||||||
])
|
])
|
||||||
|
|
||||||
props = OrderedDict()
|
props = OrderedDict()
|
||||||
@@ -955,7 +951,7 @@ def generate_information_register_list_dsl(meta, p):
|
|||||||
return OrderedDict([
|
return OrderedDict([
|
||||||
('title', meta['Synonym']),
|
('title', meta['Synonym']),
|
||||||
('properties', props),
|
('properties', props),
|
||||||
('elements', OrderedDict([('\u0421\u043f\u0438\u0441\u043e\u043a', table_el)])),
|
('elements', [table_el]),
|
||||||
('attributes', [
|
('attributes', [
|
||||||
{'name': '\u0421\u043f\u0438\u0441\u043e\u043a', 'type': 'DynamicList', 'main': True, 'settings': {'mainTable': f"InformationRegister.{meta['Name']}", 'dynamicDataRead': True}}
|
{'name': '\u0421\u043f\u0438\u0441\u043e\u043a', 'type': 'DynamicList', 'main': True, 'settings': {'mainTable': f"InformationRegister.{meta['Name']}", 'dynamicDataRead': True}}
|
||||||
]),
|
]),
|
||||||
@@ -974,39 +970,35 @@ def generate_accumulation_register_dsl(meta, preset_data, purpose):
|
|||||||
|
|
||||||
|
|
||||||
def generate_accumulation_register_list_dsl(meta, p):
|
def generate_accumulation_register_list_dsl(meta, p):
|
||||||
columns = OrderedDict()
|
columns_list = []
|
||||||
# AccumulationRegisters always have Period, Recorder, LineNumber
|
# AccumulationRegisters always have Period, Recorder, LineNumber
|
||||||
columns['\u041f\u0435\u0440\u0438\u043e\u0434'] = {'element': 'labelField', 'path': '\u0421\u043f\u0438\u0441\u043e\u043a.Period'}
|
columns_list.append(OrderedDict([('labelField', '\u041f\u0435\u0440\u0438\u043e\u0434'), ('path', '\u0421\u043f\u0438\u0441\u043e\u043a.Period')]))
|
||||||
columns['\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440'] = {'element': 'labelField', 'path': '\u0421\u043f\u0438\u0441\u043e\u043a.Recorder'}
|
columns_list.append(OrderedDict([('labelField', '\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440'), ('path', '\u0421\u043f\u0438\u0441\u043e\u043a.Recorder')]))
|
||||||
columns['\u041d\u043e\u043c\u0435\u0440\u0421\u0442\u0440\u043e\u043a\u0438'] = {'element': 'labelField', 'path': '\u0421\u043f\u0438\u0441\u043e\u043a.LineNumber'}
|
columns_list.append(OrderedDict([('labelField', '\u041d\u043e\u043c\u0435\u0440\u0421\u0442\u0440\u043e\u043a\u0438'), ('path', '\u0421\u043f\u0438\u0441\u043e\u043a.LineNumber')]))
|
||||||
# Dimensions
|
# Dimensions
|
||||||
for dim in meta.get('Dimensions', []):
|
for dim in meta.get('Dimensions', []):
|
||||||
if not is_displayable_type(dim['Type']):
|
if not is_displayable_type(dim['Type']):
|
||||||
continue
|
continue
|
||||||
columns[dim['Name']] = {'element': 'labelField', 'path': f"\u0421\u043f\u0438\u0441\u043e\u043a.{dim['Name']}"}
|
columns_list.append(OrderedDict([('labelField', dim['Name']), ('path', f"\u0421\u043f\u0438\u0441\u043e\u043a.{dim['Name']}")]))
|
||||||
# Resources
|
# Resources
|
||||||
for res in meta.get('Resources', []):
|
for res in meta.get('Resources', []):
|
||||||
if not is_displayable_type(res['Type']):
|
if not is_displayable_type(res['Type']):
|
||||||
continue
|
continue
|
||||||
el = 'labelField'
|
el_key = 'check' if re.match(r'^xs:boolean$|^Boolean$', res['Type']) else 'labelField'
|
||||||
if re.match(r'^xs:boolean$|^Boolean$', res['Type']):
|
columns_list.append(OrderedDict([(el_key, res['Name']), ('path', f"\u0421\u043f\u0438\u0441\u043e\u043a.{res['Name']}")]))
|
||||||
el = 'checkBox'
|
|
||||||
columns[res['Name']] = {'element': el, 'path': f"\u0421\u043f\u0438\u0441\u043e\u043a.{res['Name']}"}
|
|
||||||
# Attributes
|
# Attributes
|
||||||
for attr in meta['Attributes']:
|
for attr in meta['Attributes']:
|
||||||
if not is_displayable_type(attr['Type']):
|
if not is_displayable_type(attr['Type']):
|
||||||
continue
|
continue
|
||||||
el = 'labelField'
|
el_key = 'check' if re.match(r'^xs:boolean$|^Boolean$', attr['Type']) else 'labelField'
|
||||||
if re.match(r'^xs:boolean$|^Boolean$', attr['Type']):
|
columns_list.append(OrderedDict([(el_key, attr['Name']), ('path', f"\u0421\u043f\u0438\u0441\u043e\u043a.{attr['Name']}")]))
|
||||||
el = 'checkBox'
|
|
||||||
columns[attr['Name']] = {'element': el, 'path': f"\u0421\u043f\u0438\u0441\u043e\u043a.{attr['Name']}"}
|
|
||||||
|
|
||||||
table_el = OrderedDict([
|
table_el = OrderedDict([
|
||||||
('element', 'table'),
|
('table', '\u0421\u043f\u0438\u0441\u043e\u043a'),
|
||||||
('path', '\u0421\u043f\u0438\u0441\u043e\u043a'),
|
('path', '\u0421\u043f\u0438\u0441\u043e\u043a'),
|
||||||
('commandBarLocation', 'none'),
|
('commandBarLocation', 'None'),
|
||||||
('autoCommandBar', {'autofill': False}),
|
('tableAutofill', False),
|
||||||
('columns', columns),
|
('columns', columns_list),
|
||||||
])
|
])
|
||||||
|
|
||||||
props = OrderedDict()
|
props = OrderedDict()
|
||||||
@@ -1017,7 +1009,7 @@ def generate_accumulation_register_list_dsl(meta, p):
|
|||||||
return OrderedDict([
|
return OrderedDict([
|
||||||
('title', meta['Synonym']),
|
('title', meta['Synonym']),
|
||||||
('properties', props),
|
('properties', props),
|
||||||
('elements', OrderedDict([('\u0421\u043f\u0438\u0441\u043e\u043a', table_el)])),
|
('elements', [table_el]),
|
||||||
('attributes', [
|
('attributes', [
|
||||||
{'name': '\u0421\u043f\u0438\u0441\u043e\u043a', 'type': 'DynamicList', 'main': True, 'settings': {'mainTable': f"AccumulationRegister.{meta['Name']}", 'dynamicDataRead': True}}
|
{'name': '\u0421\u043f\u0438\u0441\u043e\u043a', 'type': 'DynamicList', 'main': True, 'settings': {'mainTable': f"AccumulationRegister.{meta['Name']}", 'dynamicDataRead': True}}
|
||||||
]),
|
]),
|
||||||
|
|||||||
Reference in New Issue
Block a user