1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2024-11-24 08:22:22 +02:00

Merge pull request #405 from bia-technologies/feature/401

401 / Исправлена ошибка удаления тестовых данных при создании объекта
This commit is contained in:
Koryakin Aleksey 2024-09-04 17:38:54 +03:00 committed by GitHub
commit e31086d4fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
34 changed files with 296 additions and 197 deletions

View File

@ -21,6 +21,12 @@
Функция СерверноеХранилищеТестов() Экспорт
АдресХранилища = ЮТКонтекстСлужебный.ЗначениеКонтекста(ИмяКонтекстаХранилище());
Если АдресХранилища = Неопределено Тогда
ВызватьИсключение "Не удалось получить адрес серверного хранилища тестов.
|Возможно сломана транзакция. ТранзакцияАктивна=" + ТранзакцияАктивна();
КонецЕсли;
Возврат ПолучитьИзВременногоХранилища(АдресХранилища);
КонецФункции

View File

@ -123,8 +123,6 @@
Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
Возврат Ссылка;
КонецФункции
@ -149,8 +147,6 @@
Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
Возврат Ссылка;
КонецФункции

View File

@ -69,7 +69,7 @@
ПолучитьСообщенияПользователю(Истина);
#КонецЕсли
// Установка контекста исполнения вызывается в см. ЮТИсполнительСлужебныйКлиентСервер.ПередКаждымТестом
УстановитьКонтекстИсполнения(ОписаниеСобытия.Модуль, ОписаниеСобытия.Набор, ОписаниеСобытия.Тест);
ЮТКонтекстСлужебный.УстановитьКонтекстТеста();
КонецПроцедуры

View File

@ -310,7 +310,7 @@
Функция Менеджер(Знач Менеджер) Экспорт
#Если Сервер Тогда
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);
Если Описание = Неопределено Тогда

View File

@ -80,7 +80,8 @@
Процедура СформироватьОтчетВФормате(РезультатВыполнения, ГенераторОтчета, ИмяФайлаОтчета, Формат, Обработчик)
Если Формат.СамостоятельнаяЗаписьОтчета Тогда
ГенераторОтчета.ЗаписатьОтчет(РезультатВыполнения, ИмяФайлаОтчета, Формат, Обработчик)
ГенераторОтчета.ЗаписатьОтчет(РезультатВыполнения, ИмяФайлаОтчета, Формат, Обработчик);
ЮТЛогирование.Информация("Сохранен отчет о тестировании " + ИмяФайлаОтчета);
Иначе
ДанныеОтчета = ГенераторОтчета.ДанныеОтчета(РезультатВыполнения, Формат);
@ -88,6 +89,7 @@
ЮТЛогирование.Ошибка("Не удалось получить данные отчета");
Иначе
ДанныеОтчета.Записать(ИмяФайлаОтчета);
ЮТЛогирование.Информация("Сохранен отчет о тестировании " + ИмяФайлаОтчета);
КонецЕсли;
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик);

View File

@ -27,11 +27,9 @@
КаталогПроекта = ЮТНастройкиВыполнения.КаталогПроекта();
ЕстьПолноеИмя = ЮТОбщий.ПеременнаяСодержитСвойство(ПереданныеФайлы[0], "ПолноеИмя");
Для Каждого Файл Из ПереданныеФайлы Цикл
ИмяФайла = ?(ЕстьПолноеИмя, Файл.ПолноеИмя, Файл.Имя);
ИмяФайла = ?(ЗначениеЗаполнено(Файл.ПолноеИмя), Файл.ПолноеИмя, Файл.Имя);
ИмяВКаталоге = СтрЗаменить(ИмяФайла, КаталогПроекта, "");
ПолноеИмя = ЮТФайлы.ОбъединитьПути(Контекст.РабочийКаталог, ИмяВКаталоге);

View File

@ -102,7 +102,15 @@
Возврат;
КонецЕсли;
РезультатПередачиФайлов = ЮТРазрешениеЗависимостейСлужебныйВызовСервера.ПоместитьФайлыВРабочийКаталог(ПомещенныеФайлы);
ОписаниеФайлов = Новый Массив;
Для Каждого Файл Из ПомещенныеФайлы Цикл
ОписаниеФайла = Новый Структура("Имя, Хранение, ПолноеИмя");
ЗаполнитьЗначенияСвойств(ОписаниеФайла, Файл);
ОписаниеФайлов.Добавить(ОписаниеФайла);
КонецЦикла;
РезультатПередачиФайлов = ЮТРазрешениеЗависимостейСлужебныйВызовСервера.ПоместитьФайлыВРабочийКаталог(ОписаниеФайлов);
Результат = ЮТФабрикаСлужебный.РезультатРазрешенияЗависимости();
Результат.Успешно = РезультатПередачиФайлов <> Неопределено;

View File

@ -86,6 +86,7 @@
ДанныеОшибки = ДанныеОшибки(Неопределено, Сообщение, ЮТФабрикаСлужебный.ТипыОшибок().Исполнения);
Объект.Ошибки.Добавить(ДанныеОшибки);
ЮТЛогирование.Ошибка(Сообщение);
КонецПроцедуры

View File

@ -308,6 +308,7 @@
Функция ВызватьСервернуюОбработкуСобытияИсполненияТестов(ИмяСобытия, ОписаниеСобытия)
ЮТЛогирование.Отладка("Вызов серверной обработки события " + ИмяСобытия);
Параметры = Новый Массив(4);
Параметры[0] = ИмяСобытия;
@ -323,7 +324,10 @@
Параметры[3] = ЮТИсполнительСлужебныйКлиентСервер.ИдентификаторТеста(ОписаниеСобытия.Модуль, ОписаниеСобытия.Набор, ОписаниеСобытия.Тест);
КонецЕсли;
Возврат ЮТМетодыСлужебный.ВызватьФункциюКонфигурацииНаСервере("ЮТСобытияСлужебный", "СерверныйВызовОбработкиСобытияИсполненияТестов", Параметры);
Результат = ЮТМетодыСлужебный.ВызватьФункциюКонфигурацииНаСервере("ЮТСобытияСлужебный", "СерверныйВызовОбработкиСобытияИсполненияТестов", Параметры);
ЮТЛогирование.Отладка("Завершена серверная обработка события " + ИмяСобытия);
Возврат Результат;
КонецФункции

View File

@ -20,99 +20,13 @@
Функция ТаблицыРавны(Знач Данные1, Знач Данные2) Экспорт
Если Данные1.Количество() <> Данные2.Количество() Тогда
Возврат Ложь;
КонецЕсли;
Если Данные1.Колонки.Количество() <> Данные2.Колонки.Количество() Тогда
Возврат Ложь;
КонецЕсли;
Для Каждого Колонка Из Данные1.Колонки Цикл
Если Данные2.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Индекс = Данные1.Количество() - 1;
Пока Индекс >= 0 Цикл
Если НЕ ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Данные1[Индекс][Колонка.Имя], Данные2[Индекс][Колонка.Имя]) Тогда
Возврат Ложь;
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
КонецЦикла;
Возврат Истина;
Возврат ЮТСравнениеСлужебныйСервер.ТаблицыРавны(Данные1, Данные2);
КонецФункции
Функция ТабличныеДокументыРавны(Знач ТабличныйДокумент1, Знач ТабличныйДокумент2) Экспорт
Данные1 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент1);
Данные2 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент2);
Возврат ТаблицыРавны(Данные1, Данные2);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// https://github.com/vanessa-opensource/add
// перенесен из Functest
Функция ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь)
ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент);
Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда
ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента";
КонецЕсли;
Если УчитыватьТолькоВидимыеКолонки И УчитыватьТолькоВидимыеСтроки Тогда
ЮТОбщийСлужебныйВызовСервера.ТаблицаИзТабличногоДокумента(ТипТабличногоДокумента);
КонецЕсли;
НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы;
НомерПоследнейСтроки = ТабличныйДокумент.ВысотаТаблицы;
НоваяТаблицаЗначений = Новый ТаблицаЗначений;
Колонки = НоваяТаблицаЗначений.Колонки;
ТипСтрока = Новый ОписаниеТипов("Строка");
// TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимость колонки определяется по формату первой строки
УчитываемыеКолонки = Новый Массив;
Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл
ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки);
УчитыватьКолонку = Не УчитыватьТолькоВидимыеКолонки Или ОбластьКолонки.Видимость;
Если УчитыватьКолонку Тогда
УчитываемыеКолонки.Добавить(НомерКолонки);
ШиринаКолонки = ОбластьКолонки.ШиринаКолонки;
Если ШиринаКолонки <= 1 Тогда
ШиринаКолонки = 1;
КонецЕсли;
ИмяКолонки = "К" + Формат(Колонки.Количество() + 1, "ЧН=; ЧГ=0");
Колонки.Добавить(ИмяКолонки, ТипСтрока, ИмяКолонки, ШиринаКолонки);
КонецЕсли;
КонецЦикла;
ГраницаКолонок = УчитываемыеКолонки.ВГраница();
Для НомерСтроки = 1 По НомерПоследнейСтроки Цикл
Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки, , НомерСтроки).Видимость Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = НоваяТаблицаЗначений.Добавить();
Для Индекс = 0 По ГраницаКолонок Цикл
НомерКолонки = УчитываемыеКолонки[Индекс];
Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
НоваяСтрока[Индекс] = Область.Текст;
КонецЦикла;
КонецЦикла;
Возврат НоваяТаблицаЗначений;
Возврат ЮТСравнениеСлужебныйСервер.ТабличныеДокументыРавны(ТабличныйДокумент1, ТабличныйДокумент2);
КонецФункции

View File

@ -65,7 +65,11 @@
ИначеЕсли ТипЗначения = Тип("ТабличныйДокумент") Тогда
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
Результат = ЮТСравнениеСлужебныйСервер.ТабличныеДокументыРавны(Данные1, Данные2);
#Иначе
Результат = ЮТСравнениеСлужебныйВызовСервера.ТабличныеДокументыРавны(Данные1, Данные2);
#КонецЕсли
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоПримитивныйТип(ТипЗначения) ИЛИ ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипЗначения) Тогда
// Возвращаем ложь, так как для этих типов должно сработать обычное равенство
@ -75,7 +79,7 @@
#Если Сервер Тогда
Если ТипЗначения = Тип("ТаблицаЗначений") Тогда
Результат = ЮТСравнениеСлужебныйВызовСервера.ТаблицыРавны(Данные1, Данные2);
Результат = ЮТСравнениеСлужебныйСервер.ТаблицыРавны(Данные1, Данные2);
ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда

View File

@ -0,0 +1,119 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
Функция ТаблицыРавны(Знач Данные1, Знач Данные2) Экспорт
Если Данные1.Количество() <> Данные2.Количество() Тогда
Возврат Ложь;
КонецЕсли;
Если Данные1.Колонки.Количество() <> Данные2.Колонки.Количество() Тогда
Возврат Ложь;
КонецЕсли;
Для Каждого Колонка Из Данные1.Колонки Цикл
Если Данные2.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Индекс = Данные1.Количество() - 1;
Пока Индекс >= 0 Цикл
Если НЕ ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Данные1[Индекс][Колонка.Имя], Данные2[Индекс][Колонка.Имя]) Тогда
Возврат Ложь;
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
КонецЦикла;
Возврат Истина;
КонецФункции
Функция ТабличныеДокументыРавны(Знач ТабличныйДокумент1, Знач ТабличныйДокумент2) Экспорт
Данные1 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент1);
Данные2 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент2);
Возврат ТаблицыРавны(Данные1, Данные2);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь)
// https://github.com/vanessa-opensource/add
// перенесен из Functest
ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент);
Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда
ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента";
КонецЕсли;
Если УчитыватьТолькоВидимыеКолонки И УчитыватьТолькоВидимыеСтроки Тогда
ЮТОбщийСлужебныйВызовСервера.ТаблицаИзТабличногоДокумента(ТипТабличногоДокумента);
КонецЕсли;
НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы;
НомерПоследнейСтроки = ТабличныйДокумент.ВысотаТаблицы;
НоваяТаблицаЗначений = Новый ТаблицаЗначений;
Колонки = НоваяТаблицаЗначений.Колонки;
ТипСтрока = Новый ОписаниеТипов("Строка");
// TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимость колонки определяется по формату первой строки
УчитываемыеКолонки = Новый Массив;
Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл
ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки);
УчитыватьКолонку = Не УчитыватьТолькоВидимыеКолонки Или ОбластьКолонки.Видимость;
Если УчитыватьКолонку Тогда
УчитываемыеКолонки.Добавить(НомерКолонки);
ШиринаКолонки = ОбластьКолонки.ШиринаКолонки;
Если ШиринаКолонки <= 1 Тогда
ШиринаКолонки = 1;
КонецЕсли;
ИмяКолонки = "К" + Формат(Колонки.Количество() + 1, "ЧН=; ЧГ=0");
Колонки.Добавить(ИмяКолонки, ТипСтрока, ИмяКолонки, ШиринаКолонки);
КонецЕсли;
КонецЦикла;
ГраницаКолонок = УчитываемыеКолонки.ВГраница();
Для НомерСтроки = 1 По НомерПоследнейСтроки Цикл
Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки, , НомерСтроки).Видимость Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = НоваяТаблицаЗначений.Добавить();
Для Индекс = 0 По ГраницаКолонок Цикл
НомерКолонки = УчитываемыеКолонки[Индекс];
Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
НоваяСтрока[Индекс] = Область.Текст;
КонецЦикла;
КонецЦикла;
Возврат НоваяТаблицаЗначений;
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="17ae9a55-0aa3-40ca-af3b-6637c32c6f3f">
<name>ЮТСравнениеСлужебныйСервер</name>
<synonym>
<key>ru</key>
<value>Сравнение сервер</value>
</synonym>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -45,7 +45,6 @@
КонецЕсли;
Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь);
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
Возврат Ссылка;
@ -75,7 +74,6 @@
КонецЕсли;
Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь);
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
Возврат Ссылка;
@ -859,11 +857,11 @@
// Ссылки - Массив из ЛюбаяСсылка - Массив ссылок на объекты, которые необходимо удалить.
// Привилегированно - Булево - Выполнить удаление в привилегированном режиме (без учета прав на объекты)
Процедура Удалить(Ссылки, Привилегированно = Ложь) Экспорт
Если ЗначениеЗаполнено(Ссылки) Тогда
ЮТТестовыеДанныеСлужебныйВызовСервера.Удалить(Ссылки, Привилегированно);
КонецЕсли;
КонецПроцедуры
// Возвращает объект подражателя для формирования осмысленных тестовых данных

View File

@ -57,7 +57,6 @@
Иначе
Значение = ЮТТестовыеДанныеСлужебныйВызовСервера.ФикцияЗначенияБазы(Тип, РеквизитыЗаполнения);
ДобавитьТестовуюЗапись(Значение);
КонецЕсли;
@ -166,12 +165,21 @@
ПараметрыЗаполнения = ЮТФабрикаСлужебный.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов);
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
Возврат ЮТТестовыеДанныеСлужебныйСервер.ЗагрузитьИзМакета(Макет,
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
ПараметрыЗаполнения,
ТаблицаЗначений);
#Иначе
Возврат ЮТТестовыеДанныеСлужебныйВызовСервера.ЗагрузитьИзМакета(Макет,
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
ПараметрыЗаполнения,
ТаблицаЗначений);
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
ПараметрыЗаполнения,
ТаблицаЗначений);
#КонецЕсли
КонецФункции

View File

@ -22,10 +22,10 @@
ПараметрыЗаписи = ПараметрыЗаписи(ПараметрыЗаписи);
Объект = НовыйОбъект(Менеджер, Данные,
ПараметрыЗаписи.ДополнительныеСвойства, ПараметрыЗаписи.УникальныйИдентификаторСсылки);
Объект = НовыйОбъект(Менеджер, Данные, ПараметрыЗаписи.ДополнительныеСвойства, ПараметрыЗаписи.УникальныйИдентификаторСсылки);
КлючЗаписи = ЗаписатьОбъект(Объект, ПараметрыЗаписи);
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(КлючЗаписи);
Если ВернутьОбъект Тогда
Возврат Объект;
@ -148,7 +148,10 @@
ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных);
Возврат ЗаписатьОбъект(Объект, ПараметрыЗаписи());
КлючЗаписи = ЗаписатьОбъект(Объект, ПараметрыЗаписи());
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(КлючЗаписи);
Возврат КлючЗаписи;
КонецФункции
@ -159,26 +162,12 @@
Знач ПараметрыЗаполнения,
Знач ТаблицаЗначений) Экспорт
Таблица = ЮТТестовыеДанныеСлужебныйТаблицыЗначений.ЗагрузитьИзМакета(Макет,
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
ПараметрыЗаполнения);
Если ТаблицаЗначений Тогда
Возврат Таблица;
КонецЕсли;
Реквизиты = СтрСоединить(ЮТКоллекции.ВыгрузитьЗначения(Таблица.Колонки, "Имя"), ",");
Результат = Новый Массив(Таблица.Количество());
Для Инд = 0 По Таблица.Количество() - 1 Цикл
Запись = Новый Структура(Реквизиты);
ЗаполнитьЗначенияСвойств(Запись, Таблица[Инд]);
Результат[Инд] = Запись;
КонецЦикла;
Возврат Результат;
Возврат ЮТТестовыеДанныеСлужебныйСервер.ЗагрузитьИзМакета(Макет,
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
ПараметрыЗаполнения,
ТаблицаЗначений);
КонецФункции
@ -268,7 +257,7 @@
// BSLLS:BeginTransactionBeforeTryCatch-off
// BSLLS:PairingBrokenTransaction-off
// BSLLS:PairingBrokenTransaction-off
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
// BSLLS:BeginTransactionBeforeTryCatch-on
// BSLLS:PairingBrokenTransaction-on
// BSLLS:PairingBrokenTransaction-on
@ -465,32 +454,36 @@
КонецПроцедуры
Процедура УдалитьСсылку(Ссылка, ОшибкиОбработки)
Процедура УдалитьСсылку(Значение, ОшибкиОбработки)
ТипЗначения = ТипЗнч(Ссылка);
ТипЗначения = ТипЗнч(Значение);
Если Ссылка = Неопределено ИЛИ ЮТТипыДанныхСлужебный.ЭтоТипПеречисления(ТипЗначения) Тогда
Если Значение = Неопределено ИЛИ ЮТТипыДанныхСлужебный.ЭтоТипПеречисления(ТипЗначения) Тогда
Возврат;
КонецЕсли;
Попытка
Если ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипЗначения) Тогда
Объект = Ссылка.ПолучитьОбъект();
Если ЮТТипыДанныхСлужебный.ЭтоТипОбъекта(ТипЗначения) Тогда
Если НЕ Значение.ЭтоНовый() Тогда
Значение.Удалить();
КонецЕсли;
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипЗначения) Тогда
Объект = Значение.ПолучитьОбъект();
Если Объект <> Неопределено Тогда
Объект.Удалить();
КонецЕсли;
Иначе
Менеджер = ЮТОбщий.Менеджер(ТипЗначения);
Запись = Менеджер.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Ссылка);
ЗаполнитьЗначенияСвойств(Запись, Значение);
Запись.Прочитать();
Запись.Удалить();
КонецЕсли;
Исключение
ОшибкиОбработки.Добавить(ЮТРегистрацияОшибокСлужебный.ПредставлениеОшибки("Удаление " + Ссылка, ИнформацияОбОшибке()));
ОшибкиОбработки.Добавить(ЮТРегистрацияОшибокСлужебный.ПредставлениеОшибки("Удаление " + Значение, ИнформацияОбОшибке()));
КонецПопытки;

View File

@ -18,7 +18,37 @@
#Область СлужебныйПрограммныйИнтерфейс
Функция ЗагрузитьИзМакета(Макет, ОписанияТипов, КэшЗначений, ЗаменяемыеЗначения, ПараметрыЗаполнения) Экспорт
Функция ЗагрузитьИзМакета(Знач Макет,
Знач ОписанияТипов,
КэшЗначений,
Знач ЗаменяемыеЗначения,
Знач ПараметрыЗаполнения,
Знач ТаблицаЗначений) Экспорт
Таблица = ЗагрузитьВТаблицуИзМакета(Макет, ОписанияТипов, КэшЗначений, ЗаменяемыеЗначения, ПараметрыЗаполнения);
Если ТаблицаЗначений Тогда
Возврат Таблица;
КонецЕсли;
Реквизиты = СтрСоединить(ЮТКоллекции.ВыгрузитьЗначения(Таблица.Колонки, "Имя"), ",");
Результат = Новый Массив(Таблица.Количество());
Для Инд = 0 По Таблица.Количество() - 1 Цикл
Запись = Новый Структура(Реквизиты);
ЗаполнитьЗначенияСвойств(Запись, Таблица[Инд]);
Результат[Инд] = Запись;
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ЗагрузитьВТаблицуИзМакета(Макет, ОписанияТипов, КэшЗначений, ЗаменяемыеЗначения, ПараметрыЗаполнения)
ДанныеМакета = ДанныеМакета(Макет);
ТипДанныхМакета = ТипЗнч(ДанныеМакета);
@ -35,10 +65,6 @@
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ЗагрузитьДанныеИзТабличногоДокумента(ДанныеМакета, ОписанияТипов, ЗаменяемыеЗначения, КэшЗначений, ПараметрыЗаполнения)
КолонкиМакета = Новый Массив();

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="18cbfea5-3366-44ec-b0bd-7fd1d933bbf8">
<name>ЮТТестовыеДанныеСлужебныйТаблицыЗначений</name>
<name>ЮТТестовыеДанныеСлужебныйСервер</name>
<synonym>
<key>ru</key>
<value>Тестовые данные таблицы значений</value>

View File

@ -139,11 +139,12 @@
<commonModules>CommonModule.ЮТСообщенияСлужебный</commonModules>
<commonModules>CommonModule.ЮТСравнениеСлужебныйВызовСервера</commonModules>
<commonModules>CommonModule.ЮТСравнениеСлужебныйКлиентСервер</commonModules>
<commonModules>CommonModule.ЮТСравнениеСлужебныйСервер</commonModules>
<commonModules>CommonModule.ЮТСтроки</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанные</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанныеСлужебный</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанныеСлужебныйВызовСервера</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанныеСлужебныйТаблицыЗначений</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанныеСлужебныйСервер</commonModules>
<commonModules>CommonModule.ЮТТесты</commonModules>
<commonModules>CommonModule.ЮТТестыСлужебный</commonModules>
<commonModules>CommonModule.ЮТТипыДанныхСлужебный</commonModules>

View File

@ -18,7 +18,7 @@
<content>CommonModule.ЮТТестовыеДанные</content>
<content>CommonModule.ЮТТестовыеДанныеСлужебный</content>
<content>CommonModule.ЮТТестовыеДанныеСлужебныйВызовСервера</content>
<content>CommonModule.ЮТТестовыеДанныеСлужебныйТаблицыЗначений</content>
<content>CommonModule.ЮТТестовыеДанныеСлужебныйСервер</content>
<content>DataProcessor.ЮТКонструкторОбъектаXDTO</content>
<content>DataProcessor.ЮТКонструкторТестовыхДанных</content>
<subsystems>ЮТПодражатель</subsystems>

View File

@ -7,4 +7,5 @@
</synonym>
<comment></comment>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -7,4 +7,5 @@
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -7,4 +7,5 @@
</synonym>
<comment></comment>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -7,4 +7,5 @@
</synonym>
<comment></comment>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -7,4 +7,5 @@
</synonym>
<comment></comment>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -4,13 +4,5 @@
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:CommonModuleExtension">
<module>Extended</module>
<global>Checked</global>
<clientManagedApplication>Checked</clientManagedApplication>
<server>Checked</server>
<externalConnection>Checked</externalConnection>
<serverCall>Checked</serverCall>
<clientOrdinaryApplication>Checked</clientOrdinaryApplication>
</extension>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
</mdclass:CommonModule>

View File

@ -21,7 +21,7 @@
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.ДобавитьТест("ЛомающийКонтекстТест")
.ДобавитьСерверныйТест("ЛомающийКонтекстТест")
.ДобавитьТест("ПроверкаТранзакции")
.СПараметрами(Ложь).ВТранзакции(Ложь)
.СПараметрами(Истина).ВТранзакции(Истина)

View File

@ -34,6 +34,7 @@
.ДобавитьТест("СоздатьГруппу")
.ДобавитьТест("УстановитьРеквизиты")
.ДобавитьТест("УстановитьСсылкуНового")
.ДобавитьСерверныйТест("СозданиеОбъекта").ВТранзакции(Ложь)
;
КонецПроцедуры
@ -327,7 +328,7 @@
Процедура УстановитьСсылкуНового() Экспорт
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары");
УникальныйИдентификатор = Новый УникальныйИдентификатор();
Ссылка = Конструктор.УстановитьСсылкуНового(УникальныйИдентификатор).Записать();
ЮТест.ОжидаетЧто(Ссылка.УникальныйИдентификатор(), "Уникальный идентификатор")
@ -378,4 +379,14 @@
КонецПроцедуры
Процедура СозданиеОбъекта() Экспорт
Объект = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
.Записать(Истина);
ЮТест.ОжидаетЧто(Объект)
.ИмеетТип("СправочникОбъект.Товары");
КонецПроцедуры
#КонецОбласти

View File

@ -78,6 +78,20 @@
КонецЦикла;
#Если Сервер Тогда
Объекты = Новый Массив;
Объекты.Добавить(ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара").Записать(Истина));
Объекты.Добавить(ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара").НовыйОбъект());
ЮТест.Данные().Удалить(Объекты);
Для Каждого Объект Из Объекты Цикл
СсылкаСуществует = ПомощникТестированияВызовСервера.СсылкаСуществует(Объект.Ссылка);
ЮТест.ОжидаетЧто(СсылкаСуществует, "Объект не удален").ЭтоЛожь();
КонецЦикла;
#КонецЕсли
КонецПроцедуры
Процедура ВариантыПараметров() Экспорт
@ -380,11 +394,18 @@
.ВыбрасываетИсключение("не найдена в макете основная колонка с именем `Товар`");
ОжидаемоеСообщение = ?(ЮТОкружение.ИспользуетсяАнглийскаяЛокальПлатформы(), "Section not found", "Область не найдена");
Если ЮТест.Окружение().ОбычноеПриложение Тогда
ОжидаемоеИсключение = "Ошибка при вызове метода контекста (ПолучитьОбласть)";
Иначе
ОжидаемоеИсключение = ОжидаемоеСообщение + ": ОсновнаяТаблица";
КонецЕсли;
ЮТест.ОжидаетЧто(ЮТест.Данные())
.Метод("ЗагрузитьИзМакета")
.Параметр("ОбщийМакет.ЮТ_МакетТестовыхДанных.ОсновнаяТаблица")
.Параметр(Новый Структура("Цена", Новый ОписаниеТипов("Дата")))
.ВыбрасываетИсключение(ОжидаемоеСообщение + ": ОсновнаяТаблица");
.ВыбрасываетИсключение(ОжидаемоеИсключение);
КонецПроцедуры
@ -621,7 +642,7 @@
ЮТест.Данные().УстановитьФоновуюБлокировку(Блокировка);
ОжидаемаяОшибка = ?(ЮТОкружение.ИспользуетсяАнглийскаяЛокальПлатформы(),
"Lock conflict during the transaction",
"Lock conflict during the transaction",
"Конфликт блокировок при выполнении транзакции");
ЮТест.ОжидаетЧто(Конструктор)

View File

@ -79,15 +79,9 @@
.ДобавитьТест("СодержитПредикат")
.ДобавитьТест("НеСодержитПредикат")
.ДобавитьТест("ФорматированныеСтроки")
;
Массив = ЮТКоллекции.ЗначениеВМассиве(0, 1, "2");
Список = Новый СписокЗначений();
Список.ЗагрузитьЗначения(Массив);
ЮТТесты.ДобавитьТест("ВСписке")
.СПараметрами(Массив)
.СПараметрами(Список)
.ДобавитьТест("ВСписке")
.СПараметрами("Массив")
.СПараметрами("Список")
;
КонецПроцедуры
@ -2431,7 +2425,16 @@
КонецПроцедуры
Процедура ВСписке(Коллекция) Экспорт
Процедура ВСписке(ТипКоллекции) Экспорт
Массив = ЮТКоллекции.ЗначениеВМассиве(0, 1, "2");
Если ТипКоллекции = "Массив" Тогда
Коллекция = Массив;
Иначе
Коллекция = Новый СписокЗначений();
Коллекция.ЗагрузитьЗначения(Массив);
КонецЕсли;
ЮТест.ОжидаетЧто(0)
.ВСписке(Коллекция);

View File

@ -78,11 +78,12 @@
ЮТест.ОжидаетЧто(Тесты.Количество(), "Количество тестов модуля")
.БольшеИлиРавно(1);
ТипКлиента = ?(ЮТест.Окружение().ОбычноеПриложение, "КлиентОбычноеПриложение", "КлиентУправляемоеПриложение");
ЮТест.ОжидаетЧто(Тесты[0], "Первый тест")
.Свойство("Имя").Равно("ИсполняемыеСценарииМодуля")
.Свойство("Представление").НеЗаполнено()
.Свойство("Теги").Равно(Новый Массив())
.Свойство("КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве("КлиентУправляемоеПриложение"));
.Свойство("КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве(ТипКлиента));
ПараметрыЗапуска = ЮТФабрика.ПараметрыЗапуска();
ПараметрыЗапуска.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("tests");

View File

@ -76,11 +76,7 @@
Процедура ПослеВсехТестов() Экспорт
ЮТест.Контекст().Значение("Коллекция").Добавить("ПослеВсехТестов");
#Если ТолстыйКлиентОбычноеПриложение Тогда
ЮТест.ОжидаетЧто(ЮТест.Контекст().Значение("Коллекция"))
.ИмеетДлинуБольше(17)
.ИмеетДлинуМеньше(21);
#ИначеЕсли Клиент Тогда
#Если Клиент Тогда
ЮТест.ОжидаетЧто(ЮТест.Контекст().Значение("Коллекция"))
.ИмеетДлину(24); // Количество вызванных обработчиков событий
#Иначе
@ -182,7 +178,7 @@
#ИначеЕсли ТолстыйКлиентУправляемоеПриложение Тогда
Утверждение.Свойство("ОбычноеПриложение").Равно(Ложь)
.Свойство("ТолстыйКлиент").Равно(Истина);
#Иначе
#ИначеЕсли Клиент Тогда
Утверждение.Свойство("ОбычноеПриложение").Равно(Ложь)
.Свойство("ТолстыйКлиент").Равно(Ложь);
#КонецЕсли

View File

@ -4,14 +4,5 @@
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:CommonModuleExtension">
<module>Extended</module>
<global>Checked</global>
<clientManagedApplication>Checked</clientManagedApplication>
<server>Checked</server>
<externalConnection>Checked</externalConnection>
<serverCall>Checked</serverCall>
<clientOrdinaryApplication>Checked</clientOrdinaryApplication>
</extension>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -4,14 +4,5 @@
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:CommonModuleExtension">
<module>Extended</module>
<global>Checked</global>
<clientManagedApplication>Checked</clientManagedApplication>
<server>Checked</server>
<externalConnection>Checked</externalConnection>
<serverCall>Checked</serverCall>
<clientOrdinaryApplication>Checked</clientOrdinaryApplication>
</extension>
<server>true</server>
<externalConnection>true</externalConnection>
<serverCall>true</serverCall>
</mdclass:CommonModule>