Skip to content

Commit 8de2f06

Browse files
committed
fix EvilBeaver#1626.1: проверка корректности имени добавляемой колонки
1 parent 90cb7e7 commit 8de2f06

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/OneScript.StandardLibrary/Collections/ValueTable/ValueTableColumnCollection.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ public ValueTableColumnCollection(ValueTable owner)
4545
/// <returns>КолонкаТаблицыЗначений</returns>
4646
[ContextMethod("Добавить", "Add")]
4747
public ValueTableColumn Add(string name, TypeDescription type = null, string title = null, int width = 0)
48-
{
48+
{
49+
if (!Utils.IsValidIdentifier(name))
50+
throw ColumnException.WrongColumnName(name);
51+
4952
if (FindColumnByName(name) != null)
5053
throw ColumnException.DuplicatedColumnName(name);
5154

@@ -67,6 +70,9 @@ public ValueTableColumn Add(string name, TypeDescription type = null, string tit
6770
[ContextMethod("Вставить", "Insert")]
6871
public ValueTableColumn Insert(int index, string name, TypeDescription type = null, string title = null, int width = 0)
6972
{
73+
if (!Utils.IsValidIdentifier(name))
74+
throw ColumnException.WrongColumnName(name);
75+
7076
if (FindColumnByName(name) != null)
7177
throw ColumnException.DuplicatedColumnName(name);
7278

tests/valuetable.os

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@
7878
ВсеТесты.Добавить("ТестДолжен_ПроверитьЗапятуюВИменахКолонок_СПустыми");
7979
ВсеТесты.Добавить("ТестДолжен_ПроверитьИсключениеДляИндекса");
8080

81+
82+
ВсеТесты.Добавить("ТестДолжен_ВызватьИсключениеПриДобавленииКолонкиСНевернымИменем");
83+
ВсеТесты.Добавить("ТестДолжен_ВызватьИсключениеПриВставкеКолонкиСНевернымИменем");
84+
85+
8186
Возврат ВсеТесты;
8287

8388
КонецФункции
@@ -1234,3 +1239,25 @@
12341239

12351240
ВызватьИсключение "Ожидали исключение, но его не было";
12361241
КонецПроцедуры
1242+
1243+
Процедура ТестДолжен_ВызватьИсключениеПриДобавленииКолонкиСНевернымИменем() Экспорт
1244+
ТЗ = Новый ТаблицаЗначений();
1245+
Попытка
1246+
ТЗ.Колонки.Добавить("!@#");
1247+
Исключение
1248+
Возврат;
1249+
КонецПопытки;
1250+
1251+
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
1252+
КонецПроцедуры
1253+
1254+
Процедура ТестДолжен_ВызватьИсключениеПриВставкеКолонкиСНевернымИменем() Экспорт
1255+
ТЗ = Новый ТаблицаЗначений();
1256+
Попытка
1257+
ТЗ.Колонки.Вставить(0,"!@#");
1258+
Исключение
1259+
Возврат;
1260+
КонецПопытки;
1261+
1262+
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
1263+
КонецПроцедуры

0 commit comments

Comments
 (0)