Skip to content

Commit

Permalink
Добавлены два шага (#694)
Browse files Browse the repository at this point in the history
1. Дано в базе нет элементов справочника "Справочник1" с указанным в таблице реквизитом "ИмяРеквизита"
 - Удаляет элементы справочника, если находит их по значению реквизита из таблицы
2. Тогда в базе есть элементы справочника "Справочник1" с указанным в таблице значением реквизита "ИмяРеквизита"
    Проверяет наличие в базе элементов справочника с указаным значением реквизитов из таблицы
  • Loading branch information
Petrolius authored Mar 2, 2020
1 parent 902a3c8 commit 29069a4
Showing 1 changed file with 57 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@
"Создает элементы справочник по наименованием в таблице","Данные");
Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВБазеЕстьЭлементыСправочникаСУказаннымиВТаблицеНаименованиями(Парам01,ТабПарам)","ВБазеЕстьЭлементыСправочникаСУказаннымиВТаблицеНаименованиями","И в базе есть элементы справочника ""Справочник1"" с указанными в таблице наименованиями",
"Проверяет наличе в базе элементов справочника по наименованиям в таблице","Данные");
Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВБазеНетЭлементовСправочникаСУказаннымВТаблицеРеквизитом(Парам01,Парам02,ТабПарам)","ВБазеНетЭлементовСправочникаСУказаннымиВТаблицеРеквизитом","Дано в базе нет элементов справочника ""Справочник1"" с указанным в таблице реквизитом ""ИмяРеквизита""",
"Проверяет наличие в базе элементов справочника с реквизитом из таблицы и при их наличии удаляет","Данные");
Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВБазеЕстьЭлементыСправочникаСУказаннымиВТаблицеЗначениямиРеквизита(Парам01,Парам02,ТабПарам)","ВБазеЕстьЭлементыСправочникаСУказаннымиВТаблицеЗначениямиРеквизита","Тогда в базе есть элементы справочника ""Справочник1"" с указанными в таблице значениями реквизита ""ИмяРеквизита""",
"Проверяет наличие в базе элементов справочника с реквизитом из таблицы","Данные");


Возврат ВсеТесты;
Expand Down Expand Up @@ -162,55 +166,51 @@
КонецФункции

&НаСервереБезКонтекста
Процедура УдалитьЭлементСправочникаЕслиОнЕсть(ВидСправочника,Наименование)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Справочник1.Ссылка
|ИЗ
| Справочник.Справочник1 КАК Справочник1
|ГДЕ
| Справочник1.Наименование = &Наименование";


Запрос.Текст = СтрЗаменить(Запрос.Текст,"Справочник1",ВидСправочника);
Запрос.УстановитьПараметр("Наименование", Наименование);

РезультатЗапроса = Запрос.Выполнить();
Процедура УдалитьЭлементСправочникаЕслиОнЕсть(ВидСправочника,ЗначениеРеквизита, ИмяРеквизита = Неопределено)
РезультатЗапроса = ПолучитьТекстЗапросаПоПоискаПоРеквизиту(ВидСправочника, ЗначениеРеквизита, ИмяРеквизита);

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СпрОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Сообщить("Удаляю элемент справочника <" + ВидСправочника + "> : <" + СпрОбъект.Наименование + ">");
Сообщить("Удаляю элемент справочника <" + ВидСправочника + "> : <" + СпрОбъект[ИмяРеквизита] + ">");
СпрОбъект.Удалить();
КонецЦикла;

КонецПроцедуры

&НаСервереБезКонтекста
Функция НайтиСправочникаЕслиОнЕсть(ВидСправочника,Наименование)
Функция ПолучитьТекстЗапросаПоПоискаПоРеквизиту(Знач ВидСправочника,ЗначениеРеквизита, ИмяРеквизита)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Справочник1.Ссылка
|ИЗ
| Справочник.Справочник1 КАК Справочник1
|ГДЕ
| Справочник1.Наименование = &Наименование";


Запрос.Текст = СтрЗаменить(Запрос.Текст,"Справочник1",ВидСправочника);
Запрос.УстановитьПараметр("Наименование", Наименование);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Если РезультатЗапроса.Количество()> 0 Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Справочник1.Ссылка
|ИЗ
| Справочник.%1 КАК Справочник1
|ГДЕ
| Справочник1.%2 = &ЗначениеРеквизита";

Если ИмяРеквизита = Неопределено Тогда

ИмяРеквизита = "Наименование";

КонецЕсли;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%1", ВидСправочника);
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "%2", ИмяРеквизита);
Запрос.УстановитьПараметр("ЗначениеРеквизита", ЗначениеРеквизита);

Возврат Запрос.Выполнить();

Возврат Истина;

КонецЕсли;
КонецФункции

&НаСервереБезКонтекста
Функция НайтиСправочникаЕслиОнЕсть(ВидСправочника, ЗначениеРеквизита, ИмяРеквизита = Неопределено)

РезультатЗапроса = ПолучитьТекстЗапросаПоПоискаПоРеквизиту(ВидСправочника, ЗначениеРеквизита,ИмяРеквизита);

Возврат Не РезультатЗапроса.Пустой();
КонецФункции


Expand Down Expand Up @@ -288,3 +288,25 @@
ЯСоздаюОдинЭлементСправочникаСервер(ВидСправочника,СтрокаТаблицы.Кол1);
КонецЦикла;
КонецПроцедуры

&НаКлиенте
//Дано в базе нет элементов справочника "Справочник1" с указанным в таблице реквизитом "ИмяРеквизита"
//@ВБазеНетЭлементовСправочникаСУказаннымВТаблицеРеквизитом(Парам01,Парам02,ТабПарам)
Процедура ВБазеНетЭлементовСправочникаСУказаннымиВТаблицеРеквизитом(ВидСправочника, ИмяРеквзитаДляСравнения, ТабПарам) Экспорт
Для Каждого СтрокаТаблицы Из ТабПарам Цикл
УдалитьЭлементСправочникаЕслиОнЕсть(ВидСправочника,СтрокаТаблицы.Кол1, ИмяРеквзитаДляСравнения);
КонецЦикла;
КонецПроцедуры

&НаКлиенте
//Тогда в базе есть элементы справочника "Справочник1" с указанным в таблице значением реквизита "ИмяРеквизита"
//@ВБазеЕстьЭлементыСправочникаСУказаннымиВТаблицеЗначениямиРеквизита(Парам01,Парам02,ТабПарам)
Процедура ВБазеЕстьЭлементыСправочникаСУказаннымиВТаблицеЗначениямиРеквизита(ВидСправочника,ИмяРеквизита,ТабПарам) Экспорт
ЭлементСуществует = Ложь;
Для Каждого СтрокаТаблицы Из ТабПарам Цикл
ЭлементСуществует = НайтиСправочникаЕслиОнЕсть(ВидСправочника,СтрокаТаблицы.Кол1, ИмяРеквизита);
Если НЕ ЭлементСуществует Тогда
ВызватьИсключение Ванесса.СтрШаблон_(НСтр("ru = 'Значение %1 реквизита %2 в справочнике %3 не существует!'"), СтрокаТаблицы.Кол1, ИмяРеквизита,ВидСправочника );
КонецЕсли;
КонецЦикла
КонецПроцедуры

0 comments on commit 29069a4

Please sign in to comment.