mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-02-01 19:14:35 +02:00
Исправил замечания + доработал документацию
This commit is contained in:
parent
a658d1a1bd
commit
a9cca3309a
@ -176,18 +176,21 @@ tags: [Начало, Тестовые данные]
|
||||
|
||||
4. Таблица значений из табличного документа (или таблицы markdown)
|
||||
|
||||
Пример табличного документа:
|
||||
**Пример № 1**
|
||||
|
||||
В качестве источника данных можно использовать весь табличный документ. В этом случае будет получена таблица значений, начиная с 1-ой строки и 1-ой колонки табличного документа до первой пустой строки.
|
||||
|
||||
Пример табличного документа:
|
||||
|
||||
| Товар | Товар.Поставщик | Товар.Вид | Цена | Количество | Сумма |
|
||||
|---------|-----------------|-----------|-------|------------|-------|
|
||||
| Товар 1 | Поставщик | Товар | 100 | 1 | 100 |
|
||||
| Товар 2 | Поставщик | Товар | 2 000 | 1 | 2000 |
|
||||
| Товар 1 | Поставщик 1 | Товар | 100 | 1 | 100 |
|
||||
| Товар 1 | | | 100 | 2 | 200 |
|
||||
| Товар 1 | Поставщик 2 | Товар | 100 | 3 | 300 |
|
||||
| Товар 2 | Поставщик 1 | Товар | 2 000 | 1 | 2000 |
|
||||
| Услуга | | Услуга | 300,5 | 1 | 300.5 |
|
||||
|
||||
**Пример № 1**
|
||||
|
||||
В качестве источника данных можно использовать весь табличный документ. В этом случае будет получена таблица значений, начиная с 1-ой строки и 1-ой колонки табличного документа до первой пустой строки:
|
||||
Значение в колонке "Товар" является идентификатором ссылки. Для справочника значение этой колонки по умолчанию записывается в реквизит "Наименование" или "Код", в зависимости от того, какой из этих реквизитов является основным представлением. Для документа это значение никуда не записывается, оно лишь является идентификатором. Таким образом, если одному значению в колонке "Товар" соответствуют различные значения в других колонках, то в элемент справочника запишутся реквизиты из первой строки, а для других строк ссылка на этот элемент будет проставлена по соответствующему идентификатору:
|
||||
|
||||
```bsl
|
||||
ИсходныеДанные = ПолучитьОбщийМакет("ЮТ_МакетТестовыхДанных");
|
||||
@ -205,25 +208,33 @@ tags: [Начало, Тестовые данные]
|
||||
|
||||
Ютест.ОжидаетЧто(ТаблицаТоваров)
|
||||
.ИмеетТип("ТаблицаЗначений")
|
||||
.ИмеетДлину(3)
|
||||
.ИмеетДлину(5)
|
||||
.Свойство("[0].Товар.Наименование").Равно("Товар 1")
|
||||
.Свойство("[0].Товар.Поставщик.Наименование").Равно("Поставщик")
|
||||
.Свойство("[0].Товар.Вид").Равно(Перечисления.ВидыТоваров.Товар)
|
||||
.Свойство("[0].Количество").Равно(1)
|
||||
.Свойство("[0].Цена").Равно(100)
|
||||
.Свойство("[0].Сумма").Равно(100)
|
||||
.Свойство("[1].Товар.Наименование").Равно("Товар 2")
|
||||
.Свойство("[1].Товар.Поставщик.Наименование").Равно("Поставщик")
|
||||
.Свойство("[1].Товар.Вид").Равно(Перечисления.ВидыТоваров.Товар)
|
||||
.Свойство("[1].Количество").Равно(1)
|
||||
.Свойство("[1].Цена").Равно(2000)
|
||||
.Свойство("[1].Сумма").Равно(2000)
|
||||
.Свойство("[2].Товар.Наименование").Равно("Услуга")
|
||||
.Свойство("[2].Товар.Поставщик").НеЗаполнено()
|
||||
.Свойство("[2].Товар.Вид").Равно(Перечисления.ВидыТоваров.Услуга)
|
||||
.Свойство("[2].Количество").Равно(1)
|
||||
.Свойство("[2].Цена").Равно(300.5)
|
||||
.Свойство("[2].Сумма").Равно(300.5);
|
||||
.Свойство("[1].Товар").Равно(ТаблицаТоваров[0].Товар)
|
||||
.Свойство("[1].Количество").Равно(2)
|
||||
.Свойство("[1].Цена").Равно(100)
|
||||
.Свойство("[1].Сумма").Равно(200)
|
||||
.Свойство("[2].Товар").Равно(ТаблицаТоваров[0].Товар)
|
||||
.Свойство("[2].Количество").Равно(3)
|
||||
.Свойство("[2].Цена").Равно(100)
|
||||
.Свойство("[2].Сумма").Равно(300)
|
||||
.Свойство("[3].Товар.Наименование").Равно("Товар 2")
|
||||
.Свойство("[3].Товар.Поставщик.Наименование").Равно("Поставщик")
|
||||
.Свойство("[3].Товар.Вид").Равно(Перечисления.ВидыТоваров.Товар)
|
||||
.Свойство("[3].Количество").Равно(1)
|
||||
.Свойство("[3].Цена").Равно(2000)
|
||||
.Свойство("[3].Сумма").Равно(2000)
|
||||
.Свойство("[4].Товар.Наименование").Равно("Услуга")
|
||||
.Свойство("[4].Товар.Поставщик").НеЗаполнено()
|
||||
.Свойство("[4].Товар.Вид").Равно(Перечисления.ВидыТоваров.Услуга)
|
||||
.Свойство("[4].Количество").Равно(1)
|
||||
.Свойство("[4].Цена").Равно(300.5)
|
||||
.Свойство("[4].Сумма").Равно(300.5);
|
||||
```
|
||||
|
||||
**Пример № 2**
|
||||
@ -232,11 +243,27 @@ tags: [Начало, Тестовые данные]
|
||||
|
||||
Пример юнит-теста для проверки работы метода. На входе он получает таблицу значений, которую заполняет и/или возвращает. В одной области табличного документа - исходные данные, передаваемые в качестве входящего параметра, а в другой - таблица с ожидаемым значением.
|
||||
|
||||
_Исходные данные_:
|
||||
|
||||
| Товар | Товар.Поставщик | Товар.Вид | Количество |
|
||||
|---------|-----------------|-----------|------------|
|
||||
| Товар 1 | Поставщик 1 | Товар | 1 |
|
||||
| Товар 2 | Поставщик 1 | Товар | 1 |
|
||||
| Услуга | | Услуга | 1 |
|
||||
|
||||
_Ожидаемое значение_:
|
||||
|
||||
| Товар | Цена | Количество | Сумма |
|
||||
|---------|-------|------------|-------|
|
||||
| Товар 1 | 100 | 1 | 100 |
|
||||
| Товар 2 | 2 000 | 1 | 2000 |
|
||||
| Услуга | 300,5 | 1 | 300.5 |
|
||||
|
||||
```bsl
|
||||
ТабличныйДокумент = ПолучитьОбщийМакет("ЮТ_МакетТестовыхДанных");
|
||||
|
||||
ИсходныеДанные = ТабличныйДокумент.ПолучитьОбласть(2, 1, 5, 11);
|
||||
ОжидаемоеЗначение = ТабличныйДокумент.ПолучитьОбласть(8, 1, 11, 6);
|
||||
ИсходныеДанные = ТабличныйДокумент.ПолучитьОбласть(2, 1, 5, 4);
|
||||
ОжидаемоеЗначение = ТабличныйДокумент.ПолучитьОбласть(7, 1, 10, 4);
|
||||
|
||||
ОписанияТипов = Новый Соответствие;
|
||||
ОписанияТипов.Вставить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары"));
|
||||
@ -245,9 +272,10 @@ tags: [Начало, Тестовые данные]
|
||||
ОписанияТипов.Вставить("Сумма", Новый ОписаниеТипов("Число"));
|
||||
|
||||
// Для общего использования созданных значений используется переменная КешЗначений.
|
||||
// Например, в тесте используются две таблицы. В каждой из них есть колонка "Товар" со значение "Товар № 1".
|
||||
// Чтобы в обеих таблицах этому товару соответствовало одно значение справочника - нужно передавать в параметре
|
||||
// функции переменную, в которой будут храниться соответствия наименований к ссылкам на объекты.
|
||||
// В двух табличных документах одинаковый состав товаров.
|
||||
// Чтобы в обеих таблицах этому товару соответствовало одно значение справочника -
|
||||
// нужно передавать в параметре функции переменную, в которой будут храниться соответствия
|
||||
// наименований к ссылкам на объекты.
|
||||
КэшЗначений = Новый Соответствие;
|
||||
|
||||
ТаблицаИсходныхДанных = ЮТест.Данные().ТаблицаЗначенийИзТабличногоДокумента(
|
||||
@ -266,41 +294,57 @@ tags: [Начало, Тестовые данные]
|
||||
|
||||
Ютест.ОжидаетЧто(ТаблицаРезультата)
|
||||
.Равно(ТаблицаОжидаемыхЗначений);
|
||||
|
||||
```
|
||||
|
||||
**Пример № 3**
|
||||
|
||||
Интеграционный-тест для проверки формирования движений документа по некоторому регистру. В первой таблице - табличная часть документа. Во второй - реквизиты самого документа. В третьей - эталонные движения по регистру, который нужно протестировать.
|
||||
Интеграционный-тест для проверки формирования движений документа по некоторому регистру. В первой таблице - табличная часть документа. Во второй - реквизиты самого документа. В третьей - ожидаемые движения по регистру, который нужно протестировать.
|
||||
|
||||
_Реквизиты документа_:
|
||||
| ПриходТовара | Дата | Поставщик | Валюта | Склад | Организация |
|
||||
|--------------|------|-------------|--------|-------|-------------|
|
||||
| Документ 1 | Дата | Поставщик 1 | Валюта | Склад | Организация |
|
||||
|
||||
_Табличная часть документа_:
|
||||
| Документ | Товар | Товар.Поставщик | Товар.Вид | Цена | Количество | Сумма |
|
||||
|------------|---------|-----------------|-----------|-------|------------|-------|
|
||||
| Документ 1 | Товар 1 | Поставщик 1 | Товар | 100 | 1 | 100 |
|
||||
| Документ 1 | Товар 2 | Поставщик 1 | Товар | 2 000 | 1 | 2000 |
|
||||
| Документ 1 | Услуга | | Услуга | 300,5 | 1 | 300.5 |
|
||||
|
||||
_Ожидаемые движения_:
|
||||
| Период | Активность | ВидДвижения | Регистратор | Склад | Товар | Количество |
|
||||
|--------|------------|-------------|-------------|-------|---------|------------|
|
||||
| Дата | Истина | Приход | Документ 1 | Склад | Товар 1 | 1 |
|
||||
| Дата | Истина | Приход | Документ 1 | Склад | Товар 2 | 1 |
|
||||
| Дата | Истина | Приход | Документ 1 | Склад | Услуга | 1 |
|
||||
|
||||
```bsl
|
||||
ДанныеТоваров = ТабличныйДокумент.ПолучитьОбласть("Товары");
|
||||
ДанныеДокументов = ТабличныйДокумент.ПолучитьОбласть("Документы");
|
||||
ДанныеТоваров = ТабличныйДокумент.ПолучитьОбласть("Товары");
|
||||
ОжидаемыеДвижения = ТабличныйДокумент.ПолучитьОбласть("Движения");
|
||||
|
||||
ОписанияТипов = Новый Соответствие;
|
||||
ОписанияТипов.Вставить("Период", Новый ОписаниеТипов("Дата"));
|
||||
ОписанияТипов.Вставить("Активность", Новый ОписаниеТипов("Булево"));
|
||||
ОписанияТипов.Вставить("ВидДвижения", Новый ОписаниеТипов("ВидДвиженияНакопления"));
|
||||
ОписанияТипов.Вставить("Регистратор", Новый ОписаниеТипов("ДокументСсылка.ПриходТовара"));
|
||||
ОписанияТипов.Вставить("Документ", Новый ОписаниеТипов("ДокументСсылка.ПриходТовара"));
|
||||
ОписанияТипов.Вставить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
|
||||
ОписанияТипов.Вставить("Поставщик", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
|
||||
ОписанияТипов.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
|
||||
ОписанияТипов.Вставить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
|
||||
ОписанияТипов.Вставить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары"));
|
||||
ОписанияТипов.Вставить("Цена", Новый ОписаниеТипов("Число"));
|
||||
ОписанияТипов.Вставить("Количество", Новый ОписаниеТипов("Число"));
|
||||
ОписанияТипов.Вставить("Сумма", Новый ОписаниеТипов("Число"));
|
||||
|
||||
КэшЗначений = Новый Соответствие;
|
||||
|
||||
Организация = Ютест.КонтекстМодуля().Организация;
|
||||
Поставщик = ЮТест.Данные().СоздатьЭлемент(Справочники.Контрагенты, "Поставщик");
|
||||
ДатаДокумента = НачалоДня(ТекущаяДатаСеанса());
|
||||
|
||||
// Если нужно не создавать новое значение, а использовать существующее, например, созданное ранее, то можно
|
||||
// использовать соответствие - значение из табличного документа к нужному значению
|
||||
// Если нужно не создавать новое значение, а использовать существующее,
|
||||
// например, созданное ранее, то можно использовать соответствие -
|
||||
// значение из табличного документа к нужному значению.
|
||||
ЗаменяемыеЗначения = Новый Соответствие;
|
||||
ЗаменяемыеЗначения.Вставить("Тестовая организация", Организация);
|
||||
ЗаменяемыеЗначения.Вставить("Организация", Организация);
|
||||
ЗаменяемыеЗначения.Вставить("Поставщик 1", Поставщик);
|
||||
ЗаменяемыеЗначения.Вставить("Дата", ДатаДокумента);
|
||||
|
||||
ОписанияТипов = Новый Соответствие;
|
||||
ОписанияТипов.Вставить("ПриходТовара", Новый ОписаниеТипов("ДокументСсылка.ПриходТовара"));
|
||||
ОписанияТипов.Вставить("Дата", Новый ОписаниеТипов("Дата"));
|
||||
ОписанияТипов.Вставить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
|
||||
ОписанияТипов.Вставить("Поставщик", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
|
||||
ОписанияТипов.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
|
||||
ОписанияТипов.Вставить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
|
||||
|
||||
ТаблицаДокументов = ЮТест.Данные().ТаблицаЗначенийИзТабличногоДокумента(
|
||||
ДанныеДокументов,
|
||||
@ -309,6 +353,13 @@ tags: [Начало, Тестовые данные]
|
||||
ЗаменяемыеЗначения
|
||||
);
|
||||
|
||||
ОписанияТипов = Новый Соответствие;
|
||||
ОписанияТипов.Вставить("Документ", Новый ОписаниеТипов("ДокументСсылка.ПриходТовара"));
|
||||
ОписанияТипов.Вставить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары"));
|
||||
ОписанияТипов.Вставить("Цена", Новый ОписаниеТипов("Число"));
|
||||
ОписанияТипов.Вставить("Количество", Новый ОписаниеТипов("Число"));
|
||||
ОписанияТипов.Вставить("Сумма", Новый ОписаниеТипов("Число"));
|
||||
|
||||
ТаблицаТоваров = ЮТест.Данные().ТаблицаЗначенийИзТабличногоДокумента(
|
||||
ДанныеТоваров,
|
||||
ОписанияТипов,
|
||||
@ -316,6 +367,15 @@ tags: [Начало, Тестовые данные]
|
||||
ЗаменяемыеЗначения
|
||||
);
|
||||
|
||||
ОписанияТипов = Новый Соответствие;
|
||||
ОписанияТипов.Вставить("Период", Новый ОписаниеТипов("Дата"));
|
||||
ОписанияТипов.Вставить("Активность", Новый ОписаниеТипов("Булево"));
|
||||
ОписанияТипов.Вставить("ВидДвижения", Новый ОписаниеТипов("ВидДвиженияНакопления"));
|
||||
ОписанияТипов.Вставить("Регистратор", Новый ОписаниеТипов("ДокументСсылка.ПриходТовара"));
|
||||
ОписанияТипов.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
|
||||
ОписанияТипов.Вставить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары"));
|
||||
ОписанияТипов.Вставить("Количество", Новый ОписаниеТипов("Число"));
|
||||
|
||||
ТаблицаДвижений = ЮТест.Данные().ТаблицаЗначенийИзТабличногоДокумента(
|
||||
ОжидаемыеДвижения,
|
||||
ОписанияТипов,
|
||||
@ -323,10 +383,9 @@ tags: [Начало, Тестовые данные]
|
||||
ЗаменяемыеЗначения
|
||||
);
|
||||
|
||||
Отбор = Новый Структура("Документ");
|
||||
Для Каждого ДанныеДокументов Из ТаблицаДокументов Цикл
|
||||
|
||||
ЗаполнитьЗначенияСвойств(Отбор, ДанныеДокументов);
|
||||
Отбор = Новый Структура("Документ", ДанныеДокументов.ПриходТовара);
|
||||
ТоварыДокумента = ТаблицаТоваров.Скопировать(Отбор);
|
||||
|
||||
ДокументОбъект = ДанныеДокументов.Документ.ПолучитьОбъект();
|
||||
@ -337,6 +396,7 @@ tags: [Начало, Тестовые данные]
|
||||
ТоварныеЗапасы.Прочитать();
|
||||
ТаблицаТоварныхЗапасов = ТоварныеЗапасы.Выгрузить();
|
||||
|
||||
Отбор = Новый Структура("Регистратор", ДанныеДокументов.ПриходТовара);
|
||||
ОжидаемыеТоварныеЗапасы = ТаблицаДвижений.Скопировать(Отбор);
|
||||
|
||||
Ютест.ОжидаетЧто(ТаблицаТоварныхЗапасов)
|
||||
@ -344,3 +404,62 @@ tags: [Начало, Тестовые данные]
|
||||
|
||||
КонецЦикла;
|
||||
```
|
||||
|
||||
**Пример № 4**
|
||||
|
||||
Создание и заполнение объектов двойной вложенности и более (например, "Товар.Поставщик.ВидКонтрагента") не поддерживается. Если есть такая потребность, следует использовать переменную "ЗаменяемыеЗначения". Т.е. следует создать и заполнять нужный объект перед преобразованием табличного документа в таблицу значений, а затем передать его в функцию получения таблицы значений.
|
||||
|
||||
```bsl
|
||||
Поставщик = ЮТест.Данные().КонструкторОбъекта(Справочники.Контрагенты)
|
||||
.Установить("ВидКонтрагента", ВидКонтрагента)
|
||||
.Записать();
|
||||
|
||||
// В табличном документе должна быть колонка [Товар.Поставщик] со значением "Некий поставщик".
|
||||
// В этом случае в таблицу значений проставится значение, полученное из соответствия
|
||||
ЗаменяемыеЗначения = Новый Соответствие;
|
||||
ЗаменяемыеЗначения.Вставить("Некий поставщик", Поставщик);
|
||||
|
||||
ТаблицаЗначений = ЮТест.Данные().ТаблицаЗначенийИзТабличногоДокумента(
|
||||
ТабличныйДокумент,
|
||||
ОписанияТипов,
|
||||
Неопределено,
|
||||
ЗаменяемыеЗначения
|
||||
);
|
||||
|
||||
ЮТест.ОжидаетЧто(ТаблицаЗначений)
|
||||
.Свойство("[0].Товар.Поставщик.ВидКонтрагента").Равно(ВидКонтрагента);
|
||||
```
|
||||
|
||||
**Пример № 5**
|
||||
|
||||
Можно использовать составные типы в колонках таблицы значений, но создание объектов метаданных для такой колонки не поддерживается. Можно воспользоваться соответствием "ЗаменяемыеЗначения", если потребуется в одну колонку записать значения разных типов.
|
||||
|
||||
```bsl
|
||||
ТипАналитики = Новый ОписаниеТипов("СправочникСсылка.Товары,СправочникСсылка.Контрагенты");
|
||||
|
||||
ОписанияТипов = Новый Соответствие;
|
||||
ОписанияТипов.Вставить("Аналитика", ТипАналитики);
|
||||
|
||||
Поставщик = ЮТест.Данные().СоздатьЭлемент(Справочники.Контрагенты);
|
||||
Товар = ЮТест.Данные().СоздатьЭлемент(Справочники.Товары);
|
||||
|
||||
ЗаменяемыеЗначения = Новый Соответствие;
|
||||
ЗаменяемыеЗначения.Вставить("Аналитика (Поставщик)", Поставщик);
|
||||
ЗаменяемыеЗначения.Вставить("Аналитика (Товар)", Товар);
|
||||
|
||||
ТаблицаЗначений = ЮТест.Данные().ТаблицаЗначенийИзТабличногоДокумента(
|
||||
ТабличныйДокумент,
|
||||
ОписанияТипов,
|
||||
Неопределено,
|
||||
ЗаменяемыеЗначения
|
||||
);
|
||||
|
||||
ЮТест.ОжидаетЧто(ТаблицаЗначений)
|
||||
.Свойство("[0].Аналитика").Равно(Поставщик)
|
||||
.Свойство("[1].Аналитика").Равно(Товар)
|
||||
;
|
||||
```
|
||||
|
||||
**Некоторые особенности функционала**
|
||||
|
||||
При преобразовании табличного документа в таблицу значений существующие объекты метаданных не изменяются, только создаются новые. Нужно проявлять внимательность в случаях, если в базе уже имеются данные с тем же кодом/наименованием (и по ним используется контроль уникальности), что и в табличном документе.
|
||||
|
@ -34,6 +34,14 @@
|
||||
Возврат Новый ТаблицаЗначений;
|
||||
КонецЕсли;
|
||||
|
||||
ИменаКолонок = ЮТОбщий.ВыгрузитьЗначения(Данные[0], "Ключ");
|
||||
|
||||
НедостающиеКолонки = НедостающиеКолонкиДанных(ИменаКолонок, ОписанияТипов);
|
||||
Если ЗначениеЗаполнено(НедостающиеКолонки) Тогда
|
||||
ТекстИсключения = "Отсутствуют данные для ожидаемых колонок: " + СтрСоединить(НедостающиеКолонки, ",");
|
||||
Вызватьисключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗаменяемыеЗначения = Неопределено Тогда
|
||||
ЗаменяемыеЗначения = Новый Соответствие;
|
||||
КонецЕсли;
|
||||
@ -44,8 +52,6 @@
|
||||
|
||||
ПараметрыСозданияОбъектовМетаданных = Параметры.СозданиеОбъектовМетаданных;
|
||||
|
||||
ИменаКолонок = ЮТОбщий.ВыгрузитьЗначения(Данные[0], "Ключ");
|
||||
|
||||
СведенияОбъектовМетаданных = СведенияОбъектовМетаданныхИзОписанийТипов(ИменаКолонок, ОписанияТипов);
|
||||
СведенияОРеквизитахОбъектов = СведенияРеквизитовОбъектовМетаданных(ИменаКолонок, СведенияОбъектовМетаданных);
|
||||
ТаблицаЗначений = ИнициализированнаяТаблицаЗначений(ИменаКолонок, ОписанияТипов);
|
||||
@ -164,6 +170,20 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция НедостающиеКолонкиДанных(ИменаКолонок, ОписанияТипов)
|
||||
|
||||
НедостающиеКолонки = Новый Массив;
|
||||
ОжидаемыеКолонки = ЮТОбщий.ВыгрузитьЗначения(ОписанияТипов, "Ключ");
|
||||
Для Каждого ИмяКолонки Из ОжидаемыеКолонки Цикл
|
||||
Если ИменаКолонок.Найти(ИмяКолонки) = Неопределено Тогда
|
||||
НедостающиеКолонки.Добавить(ИмяКолонки);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат НедостающиеКолонки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СведенияОбъектовМетаданныхИзОписанийТипов(ИменаКолонок, ОписанияТипов)
|
||||
|
||||
МенеджерыЗначений = Новый Соответствие;
|
||||
@ -224,12 +244,14 @@
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Типы = ОписаниеТипа.Типы();
|
||||
Если Не ЗначениеЗаполнено(Типы) Тогда
|
||||
Возврат Неопределено;
|
||||
Если ТипЗнч(ОписаниеТипа) <> Тип("ОписаниеТипов") Или Не ЗначениеЗаполнено(ОписаниеТипа.Типы()) Тогда
|
||||
Вызватьисключение ЮТОбщий.НеподдерживаемыйПараметрМетода(
|
||||
"ЮТТестовыеДанные_ТаблицыЗначений.ТипИзОписанияТипа",
|
||||
ОписаниеТипа
|
||||
);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Типы[0];
|
||||
Возврат ОписаниеТипа.Типы()[0];
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -23,7 +23,9 @@
|
||||
ЮТТесты
|
||||
.ВТранзакции()
|
||||
.УдалениеТестовыхДанных()
|
||||
.ДобавитьТест("ТипизированнаяТаблицаЗначений");
|
||||
.ДобавитьТестовыйНабор("ТипизированнаяТаблицаЗначений")
|
||||
.ДобавитьТест("ЗаполнитьТипизированнуюТаблицуЗначений")
|
||||
.ДобавитьТест("ВызватьИсключениеПриНехваткеДанных");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -47,7 +49,7 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ТипизированнаяТаблицаЗначений() Экспорт
|
||||
Процедура ЗаполнитьТипизированнуюТаблицуЗначений() Экспорт
|
||||
|
||||
// Подготовка тестового окружения
|
||||
|
||||
@ -123,4 +125,32 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВызватьИсключениеПриНехваткеДанных() Экспорт
|
||||
|
||||
// Подготовка тестового окружения
|
||||
|
||||
Данные = "
|
||||
|| Товар | Цена | Количество |
|
||||
||---------|-------|------------|
|
||||
|| Товар 1 | 100 | 1 |
|
||||
|| Товар 2 | 2 000 | 1 |
|
||||
|| Услуга | 300,5 | 1 |
|
||||
|";
|
||||
|
||||
ИсходныеДанные = ЮТест.Данные().ТаблицаMarkdown(Данные);
|
||||
|
||||
ОписанияТипов = Новый Соответствие;
|
||||
ОписанияТипов.Вставить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары"));
|
||||
ОписанияТипов.Вставить("Цена", Новый ОписаниеТипов("Число"));
|
||||
ОписанияТипов.Вставить("Количество", Новый ОписаниеТипов("Число"));
|
||||
ОписанияТипов.Вставить("Сумма", Новый ОписаниеТипов("Число"));
|
||||
|
||||
// Проверка поведения и результатов
|
||||
|
||||
ЮТУтверждения.Что(ЮТТестовыеДанные_ТаблицыЗначений)
|
||||
.Метод("ТипизированнаяТаблицаЗначений", Мокито.МассивПараметров(ИсходныеДанные, ОписанияТипов))
|
||||
.ВыбрасываетИсключение("Отсутствуют данные для ожидаемых колонок: Сумма");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user