@dforge-core/dforge-mcp 0.2.44 → 0.2.46-next

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/README.md +3 -2
  3. package/dist/server.js +109 -84
  4. package/package.json +48 -46
  5. package/resources/docs/conventions.md +17 -14
  6. package/resources/docs/dsl-reference.md +15 -5
  7. package/resources/schemas/entity.schema.json +1 -1
  8. package/resources/schemas/registers.schema.json +8 -3
  9. package/scripts/install-skills.mjs +1 -0
  10. package/skills/dforge-1c-import/SKILL.md +374 -0
  11. package/skills/dforge-1c-import/references/environment.md +97 -0
  12. package/skills/dforge-1c-import/references/loading.md +161 -0
  13. package/skills/dforge-1c-import/references/measurements.md +210 -0
  14. package/skills/dforge-1c-import/references/print-forms.md +148 -0
  15. package/skills/dforge-1c-import/scripts/1c.py +178 -0
  16. package/skills/dforge-1c-import/scripts/README.md +110 -0
  17. package/skills/dforge-1c-import/scripts/lib/analyze.py +83 -0
  18. package/skills/dforge-1c-import/scripts/lib/attrs.py +278 -0
  19. package/skills/dforge-1c-import/scripts/lib/autospec.py +964 -0
  20. package/skills/dforge-1c-import/scripts/lib/binding.py +257 -0
  21. package/skills/dforge-1c-import/scripts/lib/bsl.py +811 -0
  22. package/skills/dforge-1c-import/scripts/lib/callgraph.py +717 -0
  23. package/skills/dforge-1c-import/scripts/lib/cli.py +53 -0
  24. package/skills/dforge-1c-import/scripts/lib/columnmap.py +346 -0
  25. package/skills/dforge-1c-import/scripts/lib/coverage.py +242 -0
  26. package/skills/dforge-1c-import/scripts/lib/custom.py +83 -0
  27. package/skills/dforge-1c-import/scripts/lib/delta.py +741 -0
  28. package/skills/dforge-1c-import/scripts/lib/deps.py +136 -0
  29. package/skills/dforge-1c-import/scripts/lib/docusage.py +105 -0
  30. package/skills/dforge-1c-import/scripts/lib/dump1c.py +251 -0
  31. package/skills/dforge-1c-import/scripts/lib/explore.py +55 -0
  32. package/skills/dforge-1c-import/scripts/lib/external.py +201 -0
  33. package/skills/dforge-1c-import/scripts/lib/extract_code.py +251 -0
  34. package/skills/dforge-1c-import/scripts/lib/forms.py +239 -0
  35. package/skills/dforge-1c-import/scripts/lib/genmodule.py +1432 -0
  36. package/skills/dforge-1c-import/scripts/lib/handlers.py +202 -0
  37. package/skills/dforge-1c-import/scripts/lib/handmap.py +142 -0
  38. package/skills/dforge-1c-import/scripts/lib/i18n_coverage.py +87 -0
  39. package/skills/dforge-1c-import/scripts/lib/idioms.py +273 -0
  40. package/skills/dforge-1c-import/scripts/lib/integrity.py +264 -0
  41. package/skills/dforge-1c-import/scripts/lib/inventory.py +535 -0
  42. package/skills/dforge-1c-import/scripts/lib/layers.py +106 -0
  43. package/skills/dforge-1c-import/scripts/lib/meta.py +315 -0
  44. package/skills/dforge-1c-import/scripts/lib/migrate.py +1299 -0
  45. package/skills/dforge-1c-import/scripts/lib/mxl.py +368 -0
  46. package/skills/dforge-1c-import/scripts/lib/naming.py +251 -0
  47. package/skills/dforge-1c-import/scripts/lib/paths.py +90 -0
  48. package/skills/dforge-1c-import/scripts/lib/peek.py +70 -0
  49. package/skills/dforge-1c-import/scripts/lib/posted.py +218 -0
  50. package/skills/dforge-1c-import/scripts/lib/posting.py +655 -0
  51. package/skills/dforge-1c-import/scripts/lib/printgen.py +239 -0
  52. package/skills/dforge-1c-import/scripts/lib/rebuild.py +194 -0
  53. package/skills/dforge-1c-import/scripts/lib/recorded.py +170 -0
  54. package/skills/dforge-1c-import/scripts/lib/recorders.py +94 -0
  55. package/skills/dforge-1c-import/scripts/lib/reftargets.py +95 -0
  56. package/skills/dforge-1c-import/scripts/lib/reportgen.py +157 -0
  57. package/skills/dforge-1c-import/scripts/lib/roles.py +33 -0
  58. package/skills/dforge-1c-import/scripts/lib/seedstate.py +488 -0
  59. package/skills/dforge-1c-import/scripts/lib/sizing.py +184 -0
  60. package/skills/dforge-1c-import/scripts/lib/spec.py +400 -0
  61. package/skills/dforge-1c-import/scripts/lib/statements.py +774 -0
  62. package/skills/dforge-1c-import/scripts/lib/subsystems.py +480 -0
  63. package/skills/dforge-1c-import/scripts/lib/terms.py +451 -0
  64. package/skills/dforge-1c-import/scripts/lib/terms_uk.py +555 -0
  65. package/skills/dforge-1c-import/scripts/lib/totals.py +387 -0
  66. package/skills/dforge-1c-import/scripts/lib/typemap.py +73 -0
  67. package/skills/dforge-1c-import/scripts/lib/unpack.py +136 -0
  68. package/skills/dforge-1c-import/scripts/lib/validate.py +508 -0
  69. package/skills/dforge-1c-import/scripts/project-template/contours.py +47 -0
  70. package/skills/dforge-1c-import/scripts/project-template/sources.py +14 -0
  71. package/skills/dforge-mcp-author/SKILL.md +8 -2
  72. package/skills/dforge-mcp-author/examples/column-security/entities/product.json +1 -1
  73. package/skills/dforge-mcp-author/examples/column-security/manifest.json +0 -1
  74. package/skills/dforge-mcp-author/examples/column-security/security/roles.json +2 -2
  75. package/skills/dforge-mcp-author/references/action-dsl.md +20 -7
  76. package/skills/dforge-mcp-author/references/conventions.md +7 -1
  77. package/skills/dforge-mcp-author/references/field-types.md +3 -2
  78. package/skills/dforge-mcp-author/references/formulas.md +5 -1
  79. package/skills/dforge-mcp-author/references/print-templates.md +5 -2
  80. package/skills/dforge-mcp-author/references/queries.md +1 -1
  81. package/skills/dforge-mcp-author/references/registers.md +18 -3
  82. package/skills/dforge-mcp-author/references/reports.md +4 -1
  83. package/skills/dforge-mcp-author/references/schema-import.md +1 -1
  84. package/skills/dforge-mcp-author/references/security.md +1 -1
  85. package/skills/dforge-mcp-author/references/translations.md +38 -15
  86. package/skills/dforge-mcp-author/references/validation-checklist.md +2 -3
  87. package/skills/dforge-module-build/SKILL.md +10 -1
  88. package/skills/dforge-module-ship/SKILL.md +31 -3
  89. package/skills/dforge-mcp-author/examples/column-security/translations/en-US.json +0 -35
@@ -0,0 +1,555 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Russian -> Ukrainian word list, for the `uk` labels of the ported modules.
5
+
6
+ The same idea as `terms.py`, and deliberately the same keys: the 1C synonyms are Russian
7
+ noun phrases built from a known vocabulary, so translating them word by word produces the
8
+ Ukrainian phrase. Because the keys are inflected Russian forms, the values can be the
9
+ matching inflected Ukrainian forms - `материалов` (genitive plural) becomes `матеріалів`,
10
+ `материал` becomes `матеріал` - which is what keeps `Расход материалов` from turning into
11
+ `Витрата матеріали`.
12
+
13
+ Unlike the English side, prepositions are translated rather than dropped: `Цены по
14
+ складам` is `Ціни по складах`, and a label that reads as a phrase has to keep its glue.
15
+
16
+ This is generated vocabulary, not authored prose. It should be read once by someone who
17
+ speaks Ukrainian - `tools/i18n_coverage.py` and `tools/validate.py` say which modules are
18
+ covered, and the three hand-written modules (fleet, shipping, masterdata) keep their
19
+ authored wording, which always wins over anything derived here.
20
+ """
21
+
22
+ # Word for word breaks where the two languages disagree about a noun's gender or about
23
+ # the case a preposition governs: `внутренний заказ` is masculine in Russian and neuter in
24
+ # Ukrainian, so translating each word gives `внутрішній замовлення`. These sequences are
25
+ # matched before the individual words, longest first.
26
+ #
27
+ # `кол во` is not a grammar problem but a tokenising one: `Кол-во` splits into two words
28
+ # and the second looks exactly like the preposition `во`.
29
+ PHRASES = {
30
+ (u"кол", u"во"): u"к-сть",
31
+ (u"внутренний", u"заказ"): u"внутрішнє замовлення",
32
+ (u"внутренний", u"заказа"): u"внутрішнього замовлення",
33
+ (u"спец", u"заказ"): u"спец. замовлення",
34
+ (u"спец", u"заказа"): u"спец. замовлення",
35
+ (u"готовое", u"блюдо"): u"готова страва",
36
+ (u"за", u"сутки"): u"за добу",
37
+ (u"одних", u"сутках"): u"однієї доби",
38
+ (u"доп", u"соглашение"): u"дод. угода",
39
+ }
40
+
41
+ # Glue words, kept in the Ukrainian label rather than dropped.
42
+ PREPOSITIONS = {
43
+ u"в": u"в", u"во": u"у", u"для": u"для", u"до": u"до", u"за": u"за",
44
+ u"и": u"і", u"из": u"з", u"или": u"або", u"к": u"до", u"как": u"як",
45
+ u"между": u"між", u"на": u"на", u"не": u"не", u"о": u"про", u"от": u"від",
46
+ u"по": u"по", u"под": u"під", u"после": u"після", u"с": u"з", u"со": u"зі",
47
+ u"у": u"у", u"через": u"через", u"это": u"це",
48
+ u"которое": u"яке", u"которого": u"якого", u"которую": u"яку",
49
+ u"который": u"який",
50
+ }
51
+
52
+ # The integrator's and the embedded toolkit's tags, which are not words: dropped from the
53
+ # Ukrainian label as they are from the English one. The project names them.
54
+ def _tags():
55
+ try:
56
+ import binding
57
+ return set(binding.client_prefixes() + binding.toolkit_prefixes())
58
+ except Exception:
59
+ # usable as a plain module with no project pointed at it
60
+ return set()
61
+
62
+
63
+ DROP = _tags()
64
+
65
+
66
+ def _overlay():
67
+ u"""A project's own vocabulary, merged over the library's.
68
+
69
+ The company's abbreviations, its plants and its customers used to sit in the table
70
+ below - КЕНДІ, ХБФ, Солоницівка, АТБ, Ашан. They are not Ukrainian, they are this
71
+ client, and a library carrying them would transliterate another company's names
72
+ into this one's. A project declares its own in `vocabulary.py`; absent, nothing changes.
73
+ """
74
+ try:
75
+ import binding
76
+ return binding.terms()
77
+ except Exception:
78
+ # usable as a plain module with no project pointed at it
79
+ return {}
80
+
81
+ UK = {
82
+ # ---------------------------------------------------------------- goods
83
+ u"номенклатура": u"номенклатура", u"номенклатуры": u"номенклатури",
84
+ u"номенклатуре": u"номенклатурі", u"номенклауры": u"номенклатури",
85
+ u"номенклатурная": u"номенклатурна", u"номенклатурной": u"номенклатурної",
86
+ u"номенклатурные": u"номенклатурні",
87
+ u"товар": u"товар", u"товары": u"товари", u"товара": u"товару",
88
+ u"товаров": u"товарів", u"товарного": u"товарного",
89
+ u"продукция": u"продукція", u"продукции": u"продукції",
90
+ u"продукцию": u"продукцію",
91
+ u"материал": u"матеріал", u"материалы": u"матеріали",
92
+ u"материала": u"матеріалу", u"материалов": u"матеріалів",
93
+ u"полуфабрикат": u"напівфабрикат", u"полуфабрикаты": u"напівфабрикати",
94
+ u"полуфабрикате": u"напівфабрикаті", u"полуфабрикатов": u"напівфабрикатів",
95
+ u"полуфабрикату": u"напівфабрикату",
96
+ u"тара": u"тара", u"тары": u"тари", u"таре": u"тарі", u"тару": u"тару",
97
+ u"упаковка": u"упаковка", u"упаковки": u"упаковки", u"пакета": u"пакета",
98
+ u"расфасовка": u"розфасовка", u"расфасовки": u"розфасовки",
99
+ u"фасовка": u"фасовка", u"фасованный": u"фасований",
100
+ u"перефасовка": u"перефасовка", u"перефасовки": u"перефасовки",
101
+ u"перефасоку": u"перефасовку", u"переупаковка": u"перепакування",
102
+ u"переупаковки": u"перепакування", u"выфасовка": u"вифасовка",
103
+ u"серия": u"серія", u"серии": u"серії", u"серий": u"серій",
104
+ u"серийный": u"серійний", u"серийные": u"серійні", u"номера": u"номери",
105
+ u"характеристика": u"характеристика", u"характеристики": u"характеристики",
106
+ u"артикул": u"артикул", u"ингредиент": u"інгредієнт",
107
+ u"специя": u"спеція", u"специй": u"спецій", u"специи": u"спеції",
108
+ u"мука": u"борошно", u"муки": u"борошна", u"мучным": u"борошняним",
109
+ u"сахар": u"цукор", u"сахара": u"цукру", u"сахаристым": u"цукристим",
110
+ u"отходы": u"відходи", u"лома": u"брухту",
111
+ u"нестандарта": u"нестандарту", u"нестандарты": u"нестандарти",
112
+ u"подарки": u"подарунки", u"набор": u"набір", u"набора": u"набору",
113
+ u"наборов": u"наборів", u"наборы": u"набори",
114
+ u"новогодний": u"новорічний", u"новогодних": u"новорічних",
115
+ u"новогодние": u"новорічні", u"комплект": u"комплект",
116
+ u"аналог": u"аналог", u"аналога": u"аналога", u"аналоги": u"аналоги",
117
+ u"брак": u"брак", u"брака": u"браку",
118
+
119
+ # ---------------------------------------------------------------- measures
120
+ u"количество": u"кількість", u"кол": u"к-сть", u"количеству": u"кількості",
121
+ u"количественных": u"кількісних",
122
+ u"вес": u"вага", u"весовой": u"ваговий", u"весовщик": u"ваговик",
123
+ u"нетто": u"нетто", u"натура": u"натура",
124
+ u"единица": u"одиниця", u"единицы": u"одиниці", u"единиц": u"одиниць",
125
+ u"единицах": u"одиницях", u"ед": u"од", u"измерения": u"виміру",
126
+ u"коэффициент": u"коефіцієнт", u"коэф": u"коеф",
127
+ u"кратность": u"кратність", u"емкость": u"місткість", u"объем": u"об'єм",
128
+ u"место": u"місце", u"места": u"місця", u"мест": u"місць",
129
+ u"местах": u"місцях", u"паллет": u"палет", u"паллета": u"палета",
130
+ u"паллеты": u"палети", u"паллетная": u"палетна", u"паллетной": u"палетної",
131
+ u"монопаллеты": u"монопалети", u"короб": u"короб", u"ящик": u"ящик",
132
+ u"неполный": u"неповний", u"длина": u"довжина", u"ширина": u"ширина",
133
+ u"высота": u"висота", u"масса": u"маса", u"граммах": u"грамах",
134
+ u"кг": u"кг", u"килограммах": u"кілограмах", u"штуках": u"штуках",
135
+ u"процент": u"відсоток", u"процентах": u"відсотках",
136
+ u"процентной": u"відсоткової", u"норма": u"норма", u"нормы": u"норми",
137
+ u"нормативный": u"нормативний", u"нормативные": u"нормативні",
138
+ u"выработки": u"виробітку", u"средний": u"середній",
139
+ u"максимальная": u"максимальна", u"съем": u"знімання",
140
+ u"диапазон": u"діапазон",
141
+
142
+ # ---------------------------------------------------------------- money
143
+ u"сумма": u"сума", u"сумм": u"сум", u"сумме": u"сумі",
144
+ u"суммовой": u"сумовий", u"суммового": u"сумового",
145
+ u"стоимость": u"вартість", u"стоимостной": u"вартісний",
146
+ u"себестоимость": u"собівартість", u"цена": u"ціна", u"цены": u"ціни",
147
+ u"цен": u"цін", u"ценах": u"цінах", u"продажная": u"продажна",
148
+ u"наценка": u"націнка", u"наценки": u"націнки", u"наценке": u"націнці",
149
+ u"торговой": u"торгової", u"торговые": u"торгові", u"торговли": u"торгівлі",
150
+ u"скидка": u"знижка", u"скидки": u"знижки", u"скидок": u"знижок",
151
+ u"дооценка": u"дооцінка", u"дооценки": u"дооцінки",
152
+ u"переоценки": u"переоцінки", u"валюта": u"валюта", u"валюте": u"валюті",
153
+ u"курс": u"курс", u"грн": u"грн", u"ндс": u"ПДВ", u"ндсв": u"ПДВ",
154
+ u"ставка": u"ставка", u"деньги": u"гроші", u"денег": u"грошей",
155
+ u"денежных": u"грошових", u"средств": u"коштів", u"монеты": u"монети",
156
+ u"монета": u"монета", u"купюры": u"купюри", u"купюра": u"купюра",
157
+ u"номинал": u"номінал", u"касса": u"каса", u"кассы": u"каси",
158
+ u"инкасации": u"інкасації", u"эквайринга": u"еквайрингу",
159
+ u"эквайринги": u"еквайринги", u"оплаты": u"оплати", u"оплата": u"оплата",
160
+ u"оплат": u"оплат", u"предоплаты": u"передоплати",
161
+ u"предоплата": u"передоплата", u"платежное": u"платіжне",
162
+ u"поручение": u"доручення", u"аванс": u"аванс", u"авансу": u"авансу",
163
+ u"авансам": u"авансам", u"авансовых": u"авансових",
164
+ u"задолженности": u"заборгованості", u"задолженностей": u"заборгованостей",
165
+ u"задолженность": u"заборгованість", u"долга": u"боргу",
166
+ u"отсрочка": u"відстрочка", u"доходов": u"доходів",
167
+ u"расход": u"витрата", u"расхода": u"витрати", u"расходов": u"витрат",
168
+ u"расходы": u"витрати", u"расходной": u"видаткової",
169
+ u"расходных": u"видаткових", u"затрат": u"витрат", u"затраты": u"витрати",
170
+ u"валовых": u"валових", u"валовые": u"валові",
171
+ u"начислениями": u"нарахуваннями", u"начисленные": u"нараховані",
172
+ u"начисленных": u"нарахованих", u"дебета": u"дебету",
173
+ u"дисконтная": u"дисконтна", u"дисконтной": u"дисконтної",
174
+ u"дисконтных": u"дисконтних", u"резерва": u"резерву",
175
+ u"копеек": u"копійок", u"благотворительность": u"благодійність",
176
+ u"реклама": u"реклама",
177
+
178
+ # ---------------------------------------------------------------- documents
179
+ u"документ": u"документ", u"документа": u"документа",
180
+ u"документе": u"документі", u"документу": u"документу",
181
+ u"документы": u"документи", u"документов": u"документів",
182
+ u"акт": u"акт", u"акта": u"акта", u"акты": u"акти", u"актов": u"актів",
183
+ u"накладной": u"накладної", u"накладных": u"накладних", u"ттн": u"ТТН",
184
+ u"фактуры": u"фактури", u"фактур": u"фактур", u"сф": u"СФ",
185
+ u"заказ": u"замовлення", u"заказа": u"замовлення",
186
+ u"заказы": u"замовлення", u"заказах": u"замовленнях",
187
+ u"зака": u"замовлення", u"распоряжение": u"розпорядження",
188
+ u"распоряжения": u"розпорядження", u"распоряжений": u"розпоряджень",
189
+ u"договор": u"договір", u"договора": u"договору", u"договору": u"договору",
190
+ u"договорам": u"договорам", u"договорами": u"договорами",
191
+ u"договоры": u"договори", u"соглашение": u"угода",
192
+ u"приложение": u"додаток", u"приложения": u"додатка", u"сделка": u"угода",
193
+ u"номер": u"номер", u"дата": u"дата", u"даты": u"дати",
194
+ u"датами": u"датами", u"дату": u"дату", u"период": u"період",
195
+ u"периода": u"періоду", u"периоды": u"періоди", u"периодам": u"періодам",
196
+ u"периодичность": u"періодичність", u"начала": u"початку",
197
+ u"начало": u"початок", u"нач": u"поч", u"конец": u"кінець",
198
+ u"конца": u"кінця", u"окончание": u"закінчення",
199
+ u"окончания": u"закінчення", u"срок": u"строк", u"сроки": u"строки",
200
+ u"сроков": u"строків", u"годности": u"придатності",
201
+ u"действия": u"дії", u"действие": u"дія", u"действует": u"діє",
202
+ u"действующая": u"чинна", u"действующие": u"чинні",
203
+ u"проведен": u"проведено", u"проведенные": u"проведені",
204
+ u"сторно": u"сторно", u"корректировка": u"коригування",
205
+ u"корректировки": u"коригування", u"коректировки": u"коригування",
206
+ u"корректировок": u"коригувань", u"корректирущая": u"коригуюча",
207
+ u"закрытие": u"закриття", u"закрытых": u"закритих", u"закрыта": u"закрита",
208
+ u"открытие": u"відкриття", u"открыта": u"відкрита",
209
+ u"установка": u"встановлення", u"установку": u"встановлення",
210
+ u"установки": u"встановлення", u"установк": u"встановлення",
211
+ u"списание": u"списання", u"списания": u"списання",
212
+ u"списаний": u"списань", u"списанное": u"списане",
213
+ u"списанная": u"списана", u"поступление": u"надходження",
214
+ u"поступлений": u"надходжень", u"приход": u"прихід",
215
+ u"прихода": u"приходу", u"оприходование": u"оприбуткування",
216
+ u"оприходования": u"оприбуткування", u"передача": u"передача",
217
+ u"передачи": u"передачі", u"передаче": u"передачі",
218
+ u"переданные": u"передані", u"отгрузка": u"відвантаження",
219
+ u"отгрузки": u"відвантаження", u"отгрузку": u"відвантаження",
220
+ u"отгрузок": u"відвантажень", u"тгрузку": u"відвантаження",
221
+ u"отрузку": u"відвантаження", u"отпуск": u"відпуск",
222
+ u"выписки": u"виписки", u"выписать": u"виписати",
223
+ u"выписано": u"виписано", u"переброска": u"перекидання",
224
+ u"переброски": u"перекидання", u"перебросок": u"перекидань",
225
+ u"перевозок": u"перевезень", u"перезоки": u"перевезення",
226
+ u"переноса": u"перенесення", u"переносится": u"переноситься",
227
+ u"инвентаризаций": u"інвентаризацій", u"недостача": u"нестача",
228
+ u"потерь": u"втрат", u"потерями": u"втратами",
229
+ u"возврат": u"повернення", u"возврата": u"повернення",
230
+ u"возвратов": u"повернень", u"возвраты": u"повернення",
231
+ u"возвратная": u"зворотна", u"возвратные": u"зворотні",
232
+ u"санбрак": u"санбрак", u"санбрака": u"санбраку",
233
+ u"оценки": u"оцінки", u"заколотки": u"заколотки",
234
+ u"заколочено": u"заколочено", u"ордерам": u"ордерам",
235
+ u"ордеру": u"ордеру",
236
+
237
+ # ---------------------------------------------------------------- production
238
+ u"производство": u"виробництво", u"производства": u"виробництва",
239
+ u"производстве": u"виробництві", u"производственная": u"виробнича",
240
+ u"цех": u"цех", u"цеха": u"цеху", u"цехе": u"цеху", u"цехах": u"цехах",
241
+ u"линия": u"лінія", u"линии": u"лінії", u"линий": u"ліній",
242
+ u"линиям": u"лініям", u"смена": u"зміна", u"смены": u"зміни",
243
+ u"смен": u"змін", u"сменный": u"змінний", u"рабочая": u"робоча",
244
+ u"рабочей": u"робочої", u"рабочих": u"робочих", u"работа": u"робота",
245
+ u"работы": u"роботи", u"простои": u"простої", u"простоя": u"простою",
246
+ u"выпуск": u"випуск", u"выпуска": u"випуску", u"выбуск": u"випуск",
247
+ u"рецептура": u"рецептура", u"рецептуры": u"рецептури",
248
+ u"рецептур": u"рецептур", u"рецептуре": u"рецептурі",
249
+ u"спецификация": u"специфікація", u"спецификации": u"специфікації",
250
+ u"алгоритм": u"алгоритм", u"алгоритмы": u"алгоритми",
251
+ u"алгоритмов": u"алгоритмів", u"энергоресурсов": u"енергоресурсів",
252
+ u"воды": u"води", u"газа": u"газу", u"электоэнергии": u"електроенергії",
253
+ u"переработки": u"переробки", u"переработку": u"переробку",
254
+ u"переработка": u"переробка", u"блюдо": u"страва", u"блюда": u"страви",
255
+ u"блюд": u"страв", u"блюдам": u"стравам", u"столовой": u"їдальні",
256
+ u"приготовления": u"приготування", u"изготовления": u"виготовлення",
257
+ u"кладовая": u"комора", u"кладовые": u"комори",
258
+ u"кладовщик": u"комірник", u"мастер": u"майстер", u"слесарь": u"слюсар",
259
+ u"старший": u"старший", u"контролер": u"контролер",
260
+ u"сутки": u"доба", u"суток": u"діб", u"сутках": u"добі",
261
+ u"часов": u"годин", u"день": u"день", u"дни": u"дні", u"дней": u"днів",
262
+ u"днях": u"днях", u"месяца": u"місяця", u"месяцев": u"місяців",
263
+ u"года": u"року", u"год": u"рік", u"время": u"час",
264
+ u"график": u"графік", u"причина": u"причина", u"причины": u"причини",
265
+ u"оборудование": u"обладнання", u"фабрика": u"фабрика",
266
+ u"фабрики": u"фабрики", u"фабрике": u"фабриці",
267
+
268
+ # ---------------------------------------------------------------- stock
269
+ u"склад": u"склад", u"склады": u"склади", u"складов": u"складів",
270
+ u"складами": u"складами", u"склада": u"складу", u"cклады": u"склади",
271
+ u"складам": u"складах", u"складах": u"складах",
272
+ u"хранения": u"зберігання", u"хранилище": u"сховище",
273
+ u"остаток": u"залишок", u"остатка": u"залишку", u"остатке": u"залишку",
274
+ u"остатки": u"залишки", u"остатков": u"залишків",
275
+ u"остатках": u"залишках", u"остатками": u"залишками",
276
+ u"остаткам": u"залишкам", u"запас": u"запас", u"запасы": u"запаси",
277
+ u"запасов": u"запасів", u"движения": u"руху", u"движений": u"рухів",
278
+ u"прироста": u"приросту", u"убыли": u"убутку",
279
+ u"пересчета": u"перерахунку", u"персчета": u"перерахунку",
280
+ u"магазина": u"магазину", u"магазинах": u"магазинах",
281
+ u"рознице": u"роздрібі", u"розницу": u"роздріб",
282
+ u"розничная": u"роздрібна", u"розничной": u"роздрібної",
283
+ u"розничных": u"роздрібних", u"розничными": u"роздрібними",
284
+ u"продажи": u"продажі", u"продаж": u"продажів",
285
+ u"продажах": u"продажах", u"продажа": u"продаж",
286
+ u"реализации": u"реалізації", u"реализация": u"реалізація",
287
+ u"олап": u"OLAP", u"тцо": u"ТЦУ", u"дилер": u"дилер",
288
+ u"дилера": u"дилера", u"дилеров": u"дилерів", u"диллера": u"дилера",
289
+ u"диллерам": u"дилерам", u"акция": u"акція", u"акции": u"акції",
290
+ u"акций": u"акцій", u"акциям": u"акціям", u"акционная": u"акційна",
291
+ u"фт": u"ФТ", u"атт": u"АТТ", u"ккм": u"РРО", u"ккматт": u"РРО АТТ",
292
+ u"уходимость": u"оборотність",
293
+
294
+ # ---------------------------------------------------------------- parties
295
+ u"контрагент": u"контрагент", u"контрагента": u"контрагента",
296
+ u"контрагенты": u"контрагенти", u"контрагентов": u"контрагентів",
297
+ u"контрагентом": u"контрагентом", u"контрангенты": u"контрагенти",
298
+ u"котрагентов": u"контрагентів", u"клиента": u"клієнта",
299
+ u"покупателя": u"покупця", u"покупателю": u"покупцеві",
300
+ u"покупателем": u"покупцем", u"получатель": u"одержувач",
301
+ u"грузополучатель": u"вантажоодержувач",
302
+ u"грузоотправитель": u"вантажовідправник",
303
+ u"отправитель": u"відправник", u"посредника": u"посередника",
304
+ u"плательщик": u"платник", u"представитель": u"представник",
305
+ u"организация": u"організація", u"организации": u"організації",
306
+ u"организаций": u"організацій", u"подразделение": u"підрозділ",
307
+ u"подразделений": u"підрозділів", u"подразделения": u"підрозділи",
308
+ u"подразделению": u"підрозділу", u"сотрудник": u"співробітник",
309
+ u"сотрудника": u"співробітника", u"сотрудники": u"співробітники",
310
+ u"сотрудников": u"співробітників", u"пользователь": u"користувач",
311
+ u"пользователи": u"користувачі", u"лица": u"особи",
312
+ u"фио": u"ПІБ", u"фамилия": u"прізвище", u"имя": u"ім'я",
313
+ u"имени": u"імені", u"отчество": u"по батькові",
314
+ u"отчества": u"по батькові", u"должность": u"посада",
315
+ u"ответственный": u"відповідальний",
316
+ u"ответственные": u"відповідальні", u"подписи": u"підпису",
317
+ u"владелец": u"власник", u"член": u"член", u"комиссия": u"комісія",
318
+ u"комиссии": u"комісії", u"комиссий": u"комісій",
319
+ u"председатель": u"голова", u"доверенность": u"довіреність",
320
+ u"доверенности": u"довіреності", u"полномочия": u"повноваження",
321
+ u"водитель": u"водій", u"водители": u"водії", u"водителя": u"водія",
322
+ u"трудовой": u"трудовий",
323
+
324
+ # ---------------------------------------------------------------- transport
325
+ u"транспорт": u"транспорт", u"транспорта": u"транспорту",
326
+ u"транспорте": u"транспорті", u"транспортные": u"транспортні",
327
+ u"транспортировки": u"транспортування",
328
+ u"автотранспорта": u"автотранспорту",
329
+ u"автотранспортное": u"автотранспортне",
330
+ u"автотранспортные": u"автотранспортні",
331
+ u"предприятие": u"підприємство", u"предприятия": u"підприємства",
332
+ u"автомобиль": u"автомобіль", u"автомобиля": u"автомобіля",
333
+ u"атомобиля": u"автомобіля", u"машины": u"машини", u"прицеп": u"причіп",
334
+ u"вагона": u"вагона", u"контейнера": u"контейнера", u"марка": u"марка",
335
+ u"модель": u"модель", u"моделям": u"моделям", u"маршрут": u"маршрут",
336
+ u"маршруты": u"маршрути", u"следования": u"прямування",
337
+ u"расстояние": u"відстань", u"карте": u"карті",
338
+ u"погрузки": u"завантаження", u"доставки": u"доставки",
339
+ u"путевого": u"дорожнього", u"техпаспорт": u"техпаспорт",
340
+ u"тех": u"тех", u"гос": u"держ", u"пломб": u"пломб",
341
+ u"отправления": u"відправлення", u"точка": u"точка", u"точки": u"точки",
342
+ u"базирования": u"базування", u"чей": u"чий",
343
+ u"перевозчикова": u"перевізника",
344
+
345
+ # ---------------------------------------------------------------- customs
346
+ u"гтд": u"ВМД", u"вэд": u"ЗЕД", u"квэд": u"КВЕД", u"уктвэд": u"УКТЗЕД",
347
+ u"экспорт": u"експорт", u"экспортер": u"експортер",
348
+ u"импортеры": u"імпортери", u"уполномоченный": u"уповноважений",
349
+ u"уполномоченные": u"уповноважені", u"границы": u"кордону",
350
+ u"пересечения": u"перетину", u"страна": u"країна", u"стран": u"країн",
351
+ u"мира": u"світу", u"сертификат": u"сертифікат",
352
+ u"сертификата": u"сертифіката", u"сертификаты": u"сертифікати",
353
+ u"удостоверение": u"посвідчення", u"удостоверения": u"посвідчення",
354
+ u"удостоверений": u"посвідчень", u"качество": u"якість",
355
+ u"качества": u"якості", u"качественного": u"якісного",
356
+ u"качественных": u"якісних", u"качечтва": u"якості",
357
+ u"паспорт": u"паспорт", u"тпп": u"ТПП", u"усеченного": u"скороченого",
358
+ u"cmr": u"CMR", u"таможенного": u"митного", u"оформления": u"оформлення",
359
+
360
+ # ---------------------------------------------------------------- accounting
361
+ u"счет": u"рахунок", u"счета": u"рахунку", u"субконто": u"субконто",
362
+ u"бу": u"БО", u"бух": u"бухг", u"бухгалтерском": u"бухгалтерському",
363
+ u"ну": u"ПО", u"налоговое": u"податкове", u"налоговый": u"податковий",
364
+ u"налоговые": u"податкові", u"налоговом": u"податковому",
365
+ u"нп": u"ПП", u"нн": u"ПН", u"назначение": u"призначення",
366
+ u"назначения": u"призначення", u"статья": u"стаття", u"статьи": u"статті",
367
+ u"учет": u"облік", u"учета": u"обліку", u"учете": u"обліку",
368
+ u"учетом": u"обліком", u"учету": u"обліку",
369
+ u"управленческом": u"управлінському",
370
+ u"управленческому": u"управлінському", u"упр": u"упр",
371
+ u"забалансовый": u"позабалансовий", u"дт": u"Дт", u"кон": u"кін",
372
+ u"тек": u"пот", u"регистра": u"регістру", u"регистров": u"регістрів",
373
+ u"регистраторов": u"реєстраторів", u"накопления": u"накопичення",
374
+ u"взаиморасчетов": u"взаєморозрахунків",
375
+ u"взаимоотношений": u"взаємовідносин", u"банковский": u"банківський",
376
+ u"банковские": u"банківські", u"вд": u"ВД", u"вдвр": u"ВД/ВВ",
377
+ u"расчетный": u"розрахунковий", u"расчета": u"розрахунку",
378
+ u"расчетов": u"розрахунків", u"расчет": u"розрахунок",
379
+ u"авторасчет": u"авторозрахунок", u"баланса": u"балансу",
380
+ u"нулем": u"нулем", u"хозрасчетный": u"госпрозрахунковий",
381
+ u"хозрасчетные": u"госпрозрахункові", u"активов": u"активів",
382
+ u"регл": u"регл", u"схема": u"схема", u"схемы": u"схеми",
383
+ u"классификатор": u"класифікатор",
384
+
385
+ # ---------------------------------------------------------------- planning
386
+ u"план": u"план", u"плана": u"плану", u"плане": u"плані",
387
+ u"плану": u"плану", u"планов": u"планів", u"плановая": u"планова",
388
+ u"плановые": u"планові", u"плановых": u"планових",
389
+ u"планирования": u"планування", u"факт": u"факт",
390
+ u"фактические": u"фактичні", u"фактическая": u"фактична",
391
+ u"фактически": u"фактично", u"факту": u"факту",
392
+ u"переменные": u"змінні", u"рентабельности": u"рентабельності",
393
+ u"показатель": u"показник", u"показатели": u"показники",
394
+ u"показателей": u"показників", u"показателях": u"показниках",
395
+ u"состав": u"склад", u"состава": u"складу", u"содержание": u"вміст",
396
+ u"изделий": u"виробів", u"кондитерских": u"кондитерських",
397
+ u"конд": u"конд", u"прогноз": u"прогноз", u"проект": u"проект",
398
+
399
+ # ---------------------------------------------------------------- generic
400
+ u"вид": u"вид", u"виды": u"види", u"видов": u"видів", u"видом": u"видом",
401
+ u"виду": u"виду", u"тип": u"тип", u"типы": u"типи", u"группа": u"група",
402
+ u"группы": u"групи", u"групп": u"груп", u"группам": u"групам",
403
+ u"группировка": u"групування", u"группировки": u"групування",
404
+ u"группировок": u"групувань", u"групповая": u"групова",
405
+ u"подвиды": u"підвиди", u"подгуппы": u"підгрупи",
406
+ u"структура": u"структура", u"структуры": u"структури",
407
+ u"структур": u"структур", u"структуре": u"структурі",
408
+ u"структурах": u"структурах", u"объект": u"об'єкт",
409
+ u"объекта": u"об'єкта", u"объекты": u"об'єкти", u"данные": u"дані",
410
+ u"данных": u"даних", u"значение": u"значення", u"значения": u"значення",
411
+ u"наименование": u"найменування", u"наименованию": u"найменуванню",
412
+ u"название": u"назва", u"названия": u"назви", u"код": u"код",
413
+ u"кода": u"коду", u"коду": u"коду", u"кодом": u"кодом", u"ключ": u"ключ",
414
+ u"уид": u"УІД", u"реквизит": u"реквізит", u"реквизита": u"реквізиту",
415
+ u"реквизиту": u"реквізиту", u"комментарий": u"коментар",
416
+ u"коментарий": u"коментар", u"коментарии": u"коментарі",
417
+ u"текст": u"текст", u"текста": u"тексту", u"тексты": u"тексти",
418
+ u"текстовый": u"текстовий", u"сообщение": u"повідомлення",
419
+ u"строка": u"рядок", u"строки": u"рядки", u"строк": u"рядків",
420
+ u"строкам": u"рядкам", u"строках": u"рядках", u"строкой": u"рядком",
421
+ u"сточка": u"рядок", u"таблица": u"таблиця", u"таблицы": u"таблиці",
422
+ u"таблице": u"таблиці", u"табличная": u"таблична",
423
+ u"часть": u"частина", u"колонка": u"колонка", u"колонки": u"колонки",
424
+ u"колонок": u"колонок", u"файл": u"файл", u"файла": u"файла",
425
+ u"формат": u"формат", u"xml": u"XML", u"ексель": u"Excel",
426
+ u"макет": u"макет", u"макета": u"макета", u"макеты": u"макети",
427
+ u"макетов": u"макетів", u"печатных": u"друкованих", u"печать": u"друк",
428
+ u"печатать": u"друкувати", u"распечатан": u"роздруковано",
429
+ u"форм": u"форм", u"отчет": u"звіт", u"отчета": u"звіту",
430
+ u"отчетов": u"звітів", u"утренних": u"ранкових", u"вариант": u"варіант",
431
+ u"варианты": u"варіанти", u"настройки": u"налаштування",
432
+ u"насторойки": u"налаштування", u"настроек": u"налаштувань",
433
+ u"оптимизации": u"оптимізації", u"отбора": u"відбору", u"поиск": u"пошук",
434
+ u"статус": u"статус", u"статусы": u"статуси", u"статуст": u"статус",
435
+ u"способ": u"спосіб", u"условие": u"умова", u"условия": u"умови",
436
+ u"условий": u"умов", u"порядок": u"порядок", u"порядку": u"порядку",
437
+ u"порядковый": u"порядковий", u"последовательность": u"послідовність",
438
+ u"приоритет": u"пріоритет", u"позиция": u"позиція",
439
+ u"позиции": u"позиції", u"адрес": u"адреса", u"адресу": u"адресою",
440
+ u"индекс": u"індекс", u"область": u"область", u"области": u"області",
441
+ u"регион": u"регіон", u"регионы": u"регіони",
442
+ u"регионов": u"регіонів", u"район": u"район", u"город": u"місто",
443
+ u"города": u"міста", u"центр": u"центр", u"центра": u"центру",
444
+ u"центры": u"центри", u"центральная": u"центральна",
445
+ u"логистичекие": u"логістичні", u"логистически": u"логістичні",
446
+ u"логистического": u"логістичного", u"телефон": u"телефон",
447
+ u"почта": u"пошта", u"компьютер": u"комп'ютер", u"связи": u"зв'язку",
448
+ u"соответствий": u"відповідностей", u"проверка": u"перевірка",
449
+ u"проверки": u"перевірки", u"контроль": u"контроль",
450
+ u"контроля": u"контролю", u"контролировать": u"контролювати",
451
+ u"заполнения": u"заповнення", u"ошибки": u"помилки",
452
+ u"ошибками": u"помилками", u"признак": u"ознака",
453
+ u"очистки": u"очищення", u"очистка": u"очищення",
454
+ u"удаления": u"видалення", u"удалять": u"видаляти",
455
+ u"удален": u"видалено", u"запрет": u"заборона",
456
+ u"нельзя": u"не можна", u"разрешил": u"дозволив",
457
+ u"утвердил": u"затвердив", u"утвердить": u"затвердити",
458
+ u"утверждено": u"затверджено", u"подтвержденный": u"підтверджений",
459
+ u"подтверждающий": u"підтверджуючий", u"произвел": u"виконав",
460
+ u"получил": u"отримав", u"получено": u"отримано",
461
+ u"выдана": u"видана", u"выдачи": u"видачі",
462
+ u"составления": u"складання", u"составляется": u"складається",
463
+ u"автор": u"автор", u"активные": u"активні", u"входа": u"входу",
464
+ u"завершение": u"завершення", u"принудительное": u"примусове",
465
+ u"показать": u"показати", u"выводить": u"виводити",
466
+ u"выводимые": u"виведені", u"вывола": u"виведення",
467
+ u"заголовок": u"заголовок", u"цветовое": u"колірне", u"цвет": u"колір",
468
+ u"фона": u"фону", u"жирный": u"жирний", u"наклонный": u"курсив",
469
+ u"подчеркнутый": u"підкреслений", u"зачеркнутый": u"закреслений",
470
+ u"оформление": u"оформлення", u"редактирования": u"редагування",
471
+ u"использовать": u"використовувати", u"используется": u"використовується",
472
+ u"используеться": u"використовується",
473
+ u"использоватьв": u"використовувати в", u"употребить": u"застосувати",
474
+ u"учитывать": u"враховувати", u"учитывается": u"враховується",
475
+ u"включает": u"включає", u"участвует": u"бере участь",
476
+ u"отражать": u"відображати", u"относить": u"відносити",
477
+ u"формировать": u"формувати", u"выгружать": u"вивантажувати",
478
+ u"выгружен": u"вивантажено", u"выгрузки": u"вивантаження",
479
+ u"загрузки": u"завантаження", u"загрузок": u"завантажень",
480
+ u"обработки": u"обробки", u"обработок": u"обробок", u"дока": u"док",
481
+ u"док": u"док", u"отз": u"відкл", u"орп": u"ОРП", u"пс": u"ПС",
482
+ u"па": u"ПА", u"бц": u"БЦ", u"вц": u"ВЦ", u"сус": u"СУС", u"дрпоу": u"ЄДРПОУ",
483
+ u"инн": u"ІПН", u"дос": u"ДОС", u"bas": u"BAS", u"вbas": u"у BAS",
484
+ u"edin": u"EDIN", u"gln": u"GLN", u"cклады": u"склади",
485
+ u"английском": u"англійській", u"англ": u"англ",
486
+ u"американский": u"американський", u"русском": u"російській",
487
+ u"украинском": u"українській", u"украины": u"України", u"ук": u"УК",
488
+ u"латиницей": u"латиницею", u"список": u"список",
489
+ u"допустимых": u"допустимих", u"допустимые": u"допустимі",
490
+ u"символов": u"символів", u"символы": u"символи", u"штрих": u"штрих",
491
+ u"простые": u"прості", u"предопределенные": u"визначені",
492
+ u"бланки": u"бланки", u"строгого": u"суворого", u"справки": u"довідки",
493
+ u"спец": u"спец", u"спецобслуживание": u"спецобслуговування",
494
+ u"спецобслуживания": u"спецобслуговування",
495
+ u"спецослуживание": u"спецобслуговування", u"дополнение": u"доповнення",
496
+ u"дополнительные": u"додаткові", u"дополнительных": u"додаткових",
497
+ u"доп": u"дод", u"добавочная": u"додаткова", u"основная": u"основна",
498
+ u"основной": u"основний", u"основного": u"основного",
499
+ u"основном": u"основному", u"основному": u"основному",
500
+ u"оновная": u"основна", u"общий": u"загальний", u"общая": u"загальна",
501
+ u"полный": u"повний", u"полное": u"повне", u"вся": u"вся",
502
+ u"все": u"всі", u"всего": u"всього", u"отдельно": u"окремо",
503
+ u"отдельной": u"окремої", u"одной": u"однієї", u"один": u"один",
504
+ u"одних": u"одних", u"первый": u"перший", u"первой": u"першої",
505
+ u"второй": u"другий", u"третий": u"третій", u"четвертый": u"четвертий",
506
+ u"новый": u"новий", u"новая": u"нова", u"новое": u"нове",
507
+ u"новые": u"нові", u"нового": u"нового", u"новой": u"нової",
508
+ u"старая": u"стара", u"старое": u"старе", u"текущая": u"поточна",
509
+ u"текущее": u"поточне", u"текущий": u"поточний",
510
+ u"текущего": u"поточного", u"прошлого": u"минулого",
511
+ u"реальный": u"реальний", u"готовое": u"готове", u"готовая": u"готова",
512
+ u"готовых": u"готових", u"базовая": u"базова", u"базовый": u"базовий",
513
+ u"базовой": u"базової", u"база": u"база", u"базы": u"бази",
514
+ u"вхождению": u"входженню", u"внутренний": u"внутрішній",
515
+ u"внутренних": u"внутрішніх", u"временная": u"тимчасова",
516
+ u"временный": u"тимчасовий", u"нет": u"ні", u"есть": u"так",
517
+ u"без": u"без", u"была": u"була", u"было": u"було", u"уже": u"вже",
518
+ u"еще": u"ще", u"осталось": u"залишилось", u"вернется": u"повернеться",
519
+ u"только": u"лише", u"отключить": u"вимкнути",
520
+ u"умолчанию": u"замовчуванням", u"какой": u"який", u"кому": u"кому",
521
+ u"кто": u"хто", u"каждого": u"кожного", u"поправочниый": u"поправочний",
522
+ u"начальная": u"початкова", u"начальных": u"початкових",
523
+ u"дальнейшей": u"подальшої", u"прочих": u"інших", u"прочим": u"іншим",
524
+ u"другому": u"іншому", u"смешанные": u"змішані",
525
+ u"отрицательными": u"від'ємними", u"доступно": u"доступно",
526
+ u"изменения": u"зміни", u"замена": u"заміна", u"заменять": u"замінювати",
527
+ u"событие": u"подія", u"регистрация": u"реєстрація",
528
+ u"регистрационные": u"реєстраційні", u"регистрационный": u"реєстраційний",
529
+ u"регистрации": u"реєстрації", u"листа": u"аркуша",
530
+ u"оригинале": u"оригіналі", u"выражения": u"виразу",
531
+ u"операция": u"операція", u"операции": u"операції",
532
+ u"операций": u"операцій", u"услуга": u"послуга", u"услуги": u"послуги",
533
+ u"услуг": u"послуг", u"вводить": u"вводити",
534
+ u"автоматических": u"автоматичних", u"автоматической": u"автоматичної",
535
+ u"строительства": u"будівництва", u"службы": u"служби",
536
+ u"обороте": u"обороті", u"сдано": u"здано", u"всус": u"у СУС",
537
+ u"статистики": u"статистики", u"префикс": u"префікс",
538
+ u"имеет": u"має", u"конечная": u"кінцева", u"информационные": u"інформаційні",
539
+ u"карты": u"картки", u"карт": u"карток", u"карта": u"картка",
540
+ u"скидка": u"знижка", u"предложение": u"пропозиція",
541
+ u"укрупненная": u"укрупнена", u"ручная": u"ручна", u"пустая": u"порожня",
542
+ u"пром": u"пром", u"фирменной": u"фірмової", u"фирм": u"фірмової",
543
+ u"обычный": u"звичайний", u"создание": u"створення",
544
+ u"сведения": u"відомості", u"а": u"а", u"б": u"б", u"г": u"г",
545
+ u"р": u"р", u"п": u"п",
546
+
547
+ # The tail, found by `python tools/naming.py`. Three of these are misspellings in
548
+ # the infobase itself - `закрытыз`, `трансорта`, `вды` - and are kept as they are
549
+ # spelled there, because that is what the lookup sees.
550
+ u"экспорта": u"експорту", u"закрытыз": u"закритих", u"вды": u"види",
551
+ u"переброс": u"перекидання", u"рнокпп": u"РНОКПП",
552
+ u"перевозчиков": u"перевізників", u"трансорта": u"транспорту",
553
+ }
554
+
555
+ UK.update(_overlay())