From 738755bf8ddc6e0cd03fc2cbcc0e14353948e663 Mon Sep 17 00:00:00 2001 From: Anton Ivanov Date: Mon, 8 Jan 2018 14:11:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BE=D1=82=20@pallid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...обавленияАвтораКомментарияВНаблюдателиЗаЗадачей.epf | Bin 9242 -> 9242 bytes .../Form/Форма/Форма.bsl | 313 ++++++++++++++ .../ObjectModule.bsl | 1 + .../maps.txt | 1 + .../renames.txt | 9 + .../und/70e297e0-e8a2-43bf-8be1-62e408f610a1 | 15 + .../und/70e297e0-e8a2-43bf-8be1-62e408f610a1.0 | 395 ++++++++++++++++++ .../und/79a499cc-1782-4a2f-abe7-61ea4d49fd5a | 17 + .../und/8aa13ab8-188a-4f59-be4f-031aa5450c90.0/info | 1 + .../und/copyinfo | 16 + .../und/root | 1 + .../und/version | 3 + .../und/versions | 1 + 13 files changed, 773 insertions(+) create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/Form/Форма/Форма.bsl create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/ObjectModule.bsl create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/maps.txt create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/renames.txt create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/70e297e0-e8a2-43bf-8be1-62e408f610a1 create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/70e297e0-e8a2-43bf-8be1-62e408f610a1.0 create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/79a499cc-1782-4a2f-abe7-61ea4d49fd5a create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/8aa13ab8-188a-4f59-be4f-031aa5450c90.0/info create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/copyinfo create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/root create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/version create mode 100644 src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/versions diff --git a/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей.epf b/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей.epf index e817804692d34b5586973280362f89ba0c44c7cb..633a3acd8edb9078c89e58df9cfa54cbd0839f44 100644 GIT binary patch delta 1015 zcmbQ`G0S6v9}`c4)Lo(HPD~6SdUF)hBvg^fQA`1wJy?|mP}P--PGaIm)(JFWvV=qo zvteq=2zOxT zP*hZ86s^@$I_}u_SX7PQq5RU+?;MHOX2+^72)=MMyZYGY$L~L%)0uucJ;mV!@1?$r z0Y?;N--=4#a&$kuTjCSbb)n1q5^numaCNtdYR39COV{eD^XJw7-B($dF7UPei6Q5c zlWeOvN~Z3eSZDdabivG&CRI-1+v@KB_n;@d%6Eg8w4+U+Nd;Hf>XTq+8>1U+|3h`Ul!k{1@%pg)926rI~J?GahAM$vvmm@W+I&bet7d5YKgRZOO6JsbB3v{(sN9cvt(@+_fpmZdwzIYF;g= z6gwl~EA)fq_zGp)FY^|ayFHZN6}`={XVHt-ceb|Q%IIIW?{(=u-*=O1H@Rm$%0H=W zv-YaBKJVM9`(Mp9j9ea68DCJ@`|g(ep5;68OTx=S%LBcRzG_cwFTCj^csuvb$#o&N zD-U_(y_)bb=JphJ#jU!p_N@98aduhY;yu$1M2&fO3pvG!JCzB%G~?L%S$k8iKvg=& zZr($0codJ?OVm%CC^9)fo^$eEMKRQbvRx_)H9>8bl?_4_nS5VSZ1Y5UCk#YcDLSJr^Xr94nqYKn*F6AKkp#=Jkw)*J#XGtaoXo#J|!AGF(k&+h7a`~QEkLbEkP zpYf!*CcKrExXmElXE5ud+FcRh?8u5;>zWIW7`fIt{xO;H*WlD#-nCP2g+H)3^&t6P zitDCxXZPq>=jy8eS9;Cr{nT_jm+pd&$vlw>+v{^J(iLJ~3w>I$a$^?D7FEy9bqD|G z%y|2R@!IZo)z$Iom${q2e^xa-af3JG{*69n*Gp|POpU}dl-O$8o8jf`1a)W+cUVT=W%$w0`WZ&v|(tN`2XA<2d z^P=v__rG5{$*sber+wzJhV85z@hseNtIx~6T0Kqv`QOK1KTdmL7BF3bqmW^H%)`Ut rJzrKlo7?iY{?Fo&IVI0RSY5xKS-wMuXND#>f3DG&$qCB4m>3uUhMLST delta 635 zcmbQ`G0S6v9}|y2j;6qKCng3Ey*Y|$5~|4LD5ikT9<0g&JPW)(@qyHV=*{J#lb9w> z6qzh55zcI2ZaI0rylDOJ|NrZ4nT45UJ`_ndG%jpqnqg*S5Mbcn%)lC_SG(Ynjlw_v zE7wjRI#AHYdMHhTRhj9)r1pu8OmiBi*lfr=nQ|i8Bl(2;#k>h^rlouD@7;eZ;&{Mu z2X{};;|t16cDM(NFT4_ZXu_!gMwP&z>6+`VEL~tAbwXK;0SY$GY-F4qAkR5@uc8=_ z!eof2K=kJAQc+B(BC@hUs3Mc^D~fHNDDQ+Js>%rQT<=83JXr-Em-mOH+|495^d}#f zw&~>hNvncFzotZf@!0G1*E}};tiim>&)+|v*IyOoz4Cg?j-!pL?G2rhI?J55+p(3~ zZ10Z}tGfJ@L+@I{Z@vj{SvFfPKB8ixReG;%-CWjR{0K zr8jSVEXESbl@BbCUeF;>*6hq30Q+CgojY%K6>onO76}nD6v7n}AyDGnT=w zy$)5oH*E3e*_j@!CT#p_8>`2WPmcm_oMXIkGH1!rz#6sB)6Tdlc=TNP7;@o5kGrDr zw*}kMb)SEH`}}pZ&AguV-APKB3vb?FDiL-(R3v<`QEBTQd%64Gsb0yKi`fJ2v6P+S zDKC2GDD^w;)6`q?|NedaRiSO_{lq6xVTa1Z?|i@4u>M@SKJ%T)pZ$LpUs07=E`9jT Z$%gN)8>W3xVt>WE@#dxb|0hn|0RV`u5~lzF diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/Form/Форма/Форма.bsl b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/Form/Форма/Форма.bsl new file mode 100644 index 000000000..037dd1b67 --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/Form/Форма/Форма.bsl @@ -0,0 +1,313 @@ +//начало текста модуля + +/////////////////////////////////////////////////// +//Служебные функции и процедуры +/////////////////////////////////////////////////// + +&НаКлиенте +// контекст фреймворка Vanessa-Behavior +Перем Ванесса; + +&НаКлиенте +// Структура, в которой хранится состояние сценария между выполнением шагов. Очищается перед выполнением каждого сценария. +Перем Контекст Экспорт; + +&НаКлиенте +// Структура, в которой можно хранить служебные данные между запусками сценариев. Существует, пока открыта форма Vanessa-Behavior. +Перем КонтекстСохраняемый Экспорт; + +&НаКлиенте +// Функция экспортирует список шагов, которые реализованы в данной внешней обработке. +Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт + Ванесса = КонтекстФреймворкаBDD; + + ВсеТесты = Новый Массив; + + Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ЯСталНаблюдателемЗаЗадачейСНомером(Парам01,Парам02)","ЯСталНаблюдателемЗаЗадачейСНомером","Тогда я стал наблюдателем за задачей ""ЭтоТестоваяЗадача"" с номером '9999999'"); + + Возврат ВсеТесты; +КонецФункции + +&НаСервере +// Служебная функция. +Функция ПолучитьМакетСервер(ИмяМакета) + ОбъектСервер = РеквизитФормыВЗначение("Объект"); + Возврат ОбъектСервер.ПолучитьМакет(ИмяМакета); +КонецФункции + +&НаКлиенте +// Служебная функция для подключения библиотеки создания fixtures. +Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт + Возврат ПолучитьМакетСервер(ИмяМакета); +КонецФункции + + + +/////////////////////////////////////////////////// +//Работа со сценариями +/////////////////////////////////////////////////// + +&НаКлиенте +// Процедура выполняется перед началом каждого сценария +Процедура ПередНачаломСценария() Экспорт + СостояниеVanessaBehavior = Ванесса.ПолучитьСостояниеVanessaBehavior(); + ИмяСценария = СостояниеVanessaBehavior.ТекущийСценарий.Имя; + ПредставлениеСправочника = "узЗадачи"; + + ЭлементСправочника = утвПолучитьЭлементГруппуСправочника(ПредставлениеСправочника, , "ЭтоТестоваяЗадача"); + утвУдалитьЭлементСправочника(ПредставлениеСправочника, ЭлементСправочника); + + СоздатьЭлементСправочникаСНаименованиеНаСервере(ПредставлениеСправочника, "ЭтоТестоваяЗадача"); + Задача = утвПолучитьЭлементГруппуСправочника(ПредставлениеСправочника, , "ЭтоТестоваяЗадача",,ИСТИНА); + + УстановитьЗначениеРеквизитаСправочника(Задача, "Код", 9999999); + + КонтекстСохраняемый.Вставить("Задача", Задача); + +КонецПроцедуры + +&НаКлиенте +// Процедура выполняется перед окончанием каждого сценария +Процедура ПередОкончаниемСценария() Экспорт +КонецПроцедуры + +/////////////////////////////////////////////////// +//Реализация шагов +/////////////////////////////////////////////////// + +&НаСервере +Процедура СоздатьЭлементСправочникаСНаименованиеНаСервере(ИмяСправочника, Наименование) + ЭлементСправочника = Справочники[ИмяСправочника].СоздатьЭлемент(); + ЭлементСправочника.Наименование = Наименование; + ЭлементСправочника.Записать(); +КонецПроцедуры + +&НаСервере +Функция утвПолучитьЭлементГруппуСправочника(ИмяСправочника, Код = "", Наименование = "", ИскатьГруппу = Ложь, ДолженБыть = ЛОЖЬ) + ПредставлениеПоиска = ""; + + Если Истина + И ПустаяСтрока(Код) + И ПустаяСтрока(Наименование) + Тогда + + ВызватьИсключение "Не заполнено ни одно свойство поиска"; + + ИначеЕсли Истина + И ЗначениеЗаполнено(Код) + И ЗначениеЗаполнено(Наименование) + Тогда + + ПредставлениеПоиска = "коду """ + Код + """ и наименованию """ + Наименование + """"; + + ИначеЕсли ЗначениеЗаполнено(Код) Тогда + ПредставлениеПоиска = "коду """ + Код + """"; + + ИначеЕсли ЗначениеЗаполнено(Наименование) Тогда + ПредставлениеПоиска = "наименованию """ + Наименование + """"; + + КонецЕсли; + + ТекстИсключения = "Не нашли #ГруппуИлиЭлемент справочника #ИмяСправочника по #ПредставлениеПоиска"; + + ТекстИсключения = СтрЗаменить(ТекстИсключения, "#ГруппуИлиЭлемент" , ?(ИскатьГруппу, "группу", "элемент")); + ТекстИсключения = СтрЗаменить(ТекстИсключения, "#ИмяСправочника" , ИмяСправочника); + ТекстИсключения = СтрЗаменить(ТекстИсключения, "#ПредставлениеПоиска", ПредставлениеПоиска); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Справочник.Ссылка + |ИЗ + | Справочник.Пользователи КАК Справочник + |ГДЕ + | &МоиУсловия"; + + ТекстМоиУсловия = ""; + + Если ИскатьГруппу Тогда + СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, "Справочник.ЭтоГруппа = &ИскатьГруппу"); + КонецЕсли; + + Если ЗначениеЗаполнено(Код) Тогда + СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, "Справочник.Код = &Код"); + КонецЕсли; + + Если ЗначениеЗаполнено(Наименование) Тогда + СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, "Справочник.Наименование = &Наименование"); + КонецЕсли; + + Если ПустаяСтрока(ТекстМоиУсловия) Тогда + ТекстМоиУсловия = "ИСТИНА"; + КонецЕсли; + + СтрокаЗаменыСправочника = "Справочник." + ИмяСправочника + " КАК Справочник"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&МоиУсловия", ТекстМоиУсловия); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.Пользователи КАК Справочник", СтрокаЗаменыСправочника); + + Запрос.УстановитьПараметр("ИскатьГруппу", ИскатьГруппу); + Запрос.УстановитьПараметр("Код", Код); + Запрос.УстановитьПараметр("Наименование", Наименование); + + РезультатЗапроса = Запрос.Выполнить(); + Если ДолженБыть И РезультатЗапроса.Пустой() Тогда + ВызватьИсключение ТекстИсключения; + КонецЕсли; + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + ВыборкаДетальныеЗаписи.Следующий(); + + Возврат ВыборкаДетальныеЗаписи.Ссылка; +КонецФункции + +&НаСервере +Процедура СформироватьТекстУсловияЗапроса(ТекстРезультат, ТекстУсловия) + Если НЕ ПустаяСтрока(ТекстРезультат) Тогда + ТекстРезультат = ТекстРезультат + " И " + КонецЕсли; + ТекстРезультат = ТекстРезультат + ТекстУсловия; +КонецПроцедуры + +&НаСервере +Процедура утвУдалитьЭлементСправочника(ИмяСправочника, ЭлементСправочника) + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Справочник.Ссылка + |ИЗ + | Справочник." + ИмяСправочника + " КАК Справочник + |ГДЕ + | Справочник.Ссылка = &ЭлементСправочника"; + + Запрос.УстановитьПараметр("ЭлементСправочника", ЭлементСправочника); + + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + ЭлементОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); + + ЭлементОбъект.Удалить(); + КонецЦикла; +КонецПроцедуры + + +&НаСервере +Процедура УстановитьЗначениеРеквизитаСправочника(ЭлементСправочника, ИмяРеквизита, Значение, ЗначениеВХранилище = ЛОЖЬ) + СпрОбъект = ЭлементСправочника.ПолучитьОбъект(); + Если ЗначениеВХранилище Тогда + СпрОбъект[ИмяРеквизита] = Новый ХранилищеЗначения(Значение); + Иначе + СпрОбъект[ИмяРеквизита] = Значение; + КонецЕсли; + СпрОбъект.Записать(); +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьАктивноеОкноИзТестовоеПриложение() + Возврат КонтекстСохраняемый.ТестовоеПриложение.ПолучитьАктивноеОкно(); +КонецФункции + +&НаКлиенте +Функция ПолучитьАктивноеОкноИзКонтекста() + Возврат Контекст.АктивноеОкно; +КонецФункции + +&НаКлиенте +Функция НайтиПолеПоИмени(ИмяПоля,НужнаяФорма = Неопределено) + Получилось = Ложь; + Если Не Получилось Тогда + Если НужнаяФорма = Неопределено Тогда + ОкноПриложения = ПолучитьАктивноеОкноИзТестовоеПриложение(); + НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип("ТестируемаяФорма")); + КонецЕсли; + + Если НужнаяФорма = Неопределено Тогда + //иногда 1С некорректно отдаёт текущее окно, тогда будем искать во всех окнах + //сначала поищем в недавно открытом окне + + Попытка + ОкноПриложения = ПолучитьАктивноеОкноИзКонтекста(); + НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип("ТестируемаяФорма")); + Исключение + + КонецПопытки; + + //Если НужнаяФорма = Неопределено Тогда + // //затем будем искать во всех окнах + // МассивОкон = КонтекстСохраняемый.ТестовоеПриложение.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения")); + // Для каждого ТекОкно Из МассивОкон Цикл + // + // НужнаяФорма = ТекОкно.НайтиОбъект(Тип("ТестируемаяФорма")); + // Если НужнаяФорма <> Неопределено Тогда + // Контекст.Вставить("АктивноеОкно",ОкноПриложения); //произошла неявная смена активного окна + // КонецЕсли; + // + // КонецЦикла; + // + //КонецЕсли; + КонецЕсли; + + + Если ИмяПоля = "" Тогда + Поле = НужнаяФорма.НайтиОбъект(Тип("ТестируемоеПолеФормы")); + Иначе + Поле = НужнаяФорма.НайтиОбъект(Тип("ТестируемоеПолеФормы"),,ИмяПоля); + КонецЕсли; + + КонецЕсли; + + Возврат Поле; +КонецФункции + +&НаСервере +Процедура УстановитьЗначениеКонстаны(ИмяКонстанты, Результат) + Константы[ИмяКонстанты].Установить(Результат); +КонецПроцедуры + +&НаКлиенте +//Тогда я стал наблюдателем за задачей "ЭтоТестоваяЗадача" с номером '9999999' +//@ЯСталНаблюдателемЗаЗадачейСНомером(Парам01,Парам02) +Процедура ЯСталНаблюдателемЗаЗадачейСНомером(НаименованиеЗадачи, НомерЗадачи) Экспорт + + Результат = ПолучитьЗаписьРСПоЗадаче(КонтекстСохраняемый.Задача); + + Ванесса.ПроверитьНеРавенство(Неопределено, Результат, "Ожидаемое значение результата"); + Ванесса.ПроверитьРавенство(НаименованиеЗадачи, Результат.Наименование, "Ожидаемое значение наименования задачи"); + Ванесса.ПроверитьРавенство(НомерЗадачи, Результат.Номер, "Ожидаемое значение номера задачи"); + +КонецПроцедуры + +Функция ПолучитьЗаписьРСПоЗадаче(Задача) + + Результат = Неопределено; + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | узНаблюдателиЗаЗадачами.Задача.Наименование КАК Наименование, + | узНаблюдателиЗаЗадачами.Задача.Код КАК Номер, + | узНаблюдателиЗаЗадачами.Пользователь КАК Пользователь + |ИЗ + | РегистрСведений.узНаблюдателиЗаЗадачами КАК узНаблюдателиЗаЗадачами + |ГДЕ + | узНаблюдателиЗаЗадачами.Задача = &Задача + | И узНаблюдателиЗаЗадачами.Пользователь = &Пользователь"; + + Запрос.УстановитьПараметр("Задача", Задача); + Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь()); + + Выборка = Запрос.Выполнить().Выбрать(); + + Если Выборка.Следующий() Тогда + Результат = Новый Структура("Наименование, Номер", Выборка.Наименование, Формат(Выборка.Номер,"ЧГ=0")); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +//окончание текста модуля \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/ObjectModule.bsl b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/ObjectModule.bsl new file mode 100644 index 000000000..66d1e8446 --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/ObjectModule.bsl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/maps.txt b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/maps.txt new file mode 100644 index 000000000..078b09d2a --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/maps.txt @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->70e297e0-e8a2-43bf-8be1-62e408f610a1.0 (46, 358) diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/renames.txt b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/renames.txt new file mode 100644 index 000000000..e716158bf --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/renames.txt @@ -0,0 +1,9 @@ +70e297e0-e8a2-43bf-8be1-62e408f610a1-->und\70e297e0-e8a2-43bf-8be1-62e408f610a1 +70e297e0-e8a2-43bf-8be1-62e408f610a1.0-->und\70e297e0-e8a2-43bf-8be1-62e408f610a1.0 +79a499cc-1782-4a2f-abe7-61ea4d49fd5a-->und\79a499cc-1782-4a2f-abe7-61ea4d49fd5a +8aa13ab8-188a-4f59-be4f-031aa5450c90.0\info-->und\8aa13ab8-188a-4f59-be4f-031aa5450c90.0\info +8aa13ab8-188a-4f59-be4f-031aa5450c90.0\text-->ObjectModule.bsl +copyinfo-->und\copyinfo +root-->und\root +version-->und\version +versions-->und\versions diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/70e297e0-e8a2-43bf-8be1-62e408f610a1 b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/70e297e0-e8a2-43bf-8be1-62e408f610a1 new file mode 100644 index 000000000..e7c1214ab --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/70e297e0-e8a2-43bf-8be1-62e408f610a1 @@ -0,0 +1,15 @@ +{1, +{1, +{0, +{12, +{1, +{0,0,70e297e0-e8a2-43bf-8be1-62e408f610a1},"Форма", +{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, +{0} +} +},0} \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/70e297e0-e8a2-43bf-8be1-62e408f610a1.0 b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/70e297e0-e8a2-43bf-8be1-62e408f610a1.0 new file mode 100644 index 000000000..b7f401307 --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/70e297e0-e8a2-43bf-8be1-62e408f610a1.0 @@ -0,0 +1,395 @@ +{3, +{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{1,0},0,0,1,1,1,0,1,0, +{0,1,0}, +{0},1, +{21, +{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,9,"ФормаКоманднаяПанель", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{0,0,1},0,1,0,0,0,3,3},0,"","",1, +{21, +{0},0,0,0,7,"Navigator", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{10, +{0},0,0,0,0,"NavigatorExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,1,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",0,0,0,0,0,0,3,3,0,0,0},"//начало текста модуля + +/////////////////////////////////////////////////// +//Служебные функции и процедуры +/////////////////////////////////////////////////// + +&НаКлиенте +// контекст фреймворка Vanessa-Behavior +Перем Ванесса; + +&НаКлиенте +// Структура, в которой хранится состояние сценария между выполнением шагов. Очищается перед выполнением каждого сценария. +Перем Контекст Экспорт; + +&НаКлиенте +// Структура, в которой можно хранить служебные данные между запусками сценариев. Существует, пока открыта форма Vanessa-Behavior. +Перем КонтекстСохраняемый Экспорт; + +&НаКлиенте +// Функция экспортирует список шагов, которые реализованы в данной внешней обработке. +Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт + Ванесса = КонтекстФреймворкаBDD; + + ВсеТесты = Новый Массив; + + Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,""ЯСталНаблюдателемЗаЗадачейСНомером(Парам01,Парам02)"",""ЯСталНаблюдателемЗаЗадачейСНомером"",""Тогда я стал наблюдателем за задачей """"ЭтоТестоваяЗадача"""" с номером '9999999'""); + + Возврат ВсеТесты; +КонецФункции + +&НаСервере +// Служебная функция. +Функция ПолучитьМакетСервер(ИмяМакета) + ОбъектСервер = РеквизитФормыВЗначение(""Объект""); + Возврат ОбъектСервер.ПолучитьМакет(ИмяМакета); +КонецФункции + +&НаКлиенте +// Служебная функция для подключения библиотеки создания fixtures. +Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт + Возврат ПолучитьМакетСервер(ИмяМакета); +КонецФункции + + + +/////////////////////////////////////////////////// +//Работа со сценариями +/////////////////////////////////////////////////// + +&НаКлиенте +// Процедура выполняется перед началом каждого сценария +Процедура ПередНачаломСценария() Экспорт + СостояниеVanessaBehavior = Ванесса.ПолучитьСостояниеVanessaBehavior(); + ИмяСценария = СостояниеVanessaBehavior.ТекущийСценарий.Имя; + ПредставлениеСправочника = ""узЗадачи""; + + ЭлементСправочника = утвПолучитьЭлементГруппуСправочника(ПредставлениеСправочника, , ""ЭтоТестоваяЗадача""); + утвУдалитьЭлементСправочника(ПредставлениеСправочника, ЭлементСправочника); + + СоздатьЭлементСправочникаСНаименованиеНаСервере(ПредставлениеСправочника, ""ЭтоТестоваяЗадача""); + Задача = утвПолучитьЭлементГруппуСправочника(ПредставлениеСправочника, , ""ЭтоТестоваяЗадача"",,ИСТИНА); + + УстановитьЗначениеРеквизитаСправочника(Задача, ""Код"", 9999999); + + КонтекстСохраняемый.Вставить(""Задача"", Задача); + +КонецПроцедуры + +&НаКлиенте +// Процедура выполняется перед окончанием каждого сценария +Процедура ПередОкончаниемСценария() Экспорт +КонецПроцедуры + +/////////////////////////////////////////////////// +//Реализация шагов +/////////////////////////////////////////////////// + +&НаСервере +Процедура СоздатьЭлементСправочникаСНаименованиеНаСервере(ИмяСправочника, Наименование) + ЭлементСправочника = Справочники[ИмяСправочника].СоздатьЭлемент(); + ЭлементСправочника.Наименование = Наименование; + ЭлементСправочника.Записать(); +КонецПроцедуры + +&НаСервере +Функция утвПолучитьЭлементГруппуСправочника(ИмяСправочника, Код = """", Наименование = """", ИскатьГруппу = Ложь, ДолженБыть = ЛОЖЬ) + ПредставлениеПоиска = """"; + + Если Истина + И ПустаяСтрока(Код) + И ПустаяСтрока(Наименование) + Тогда + + ВызватьИсключение ""Не заполнено ни одно свойство поиска""; + + ИначеЕсли Истина + И ЗначениеЗаполнено(Код) + И ЗначениеЗаполнено(Наименование) + Тогда + + ПредставлениеПоиска = ""коду """""" + Код + """""" и наименованию """""" + Наименование + """"""""; + + ИначеЕсли ЗначениеЗаполнено(Код) Тогда + ПредставлениеПоиска = ""коду """""" + Код + """"""""; + + ИначеЕсли ЗначениеЗаполнено(Наименование) Тогда + ПредставлениеПоиска = ""наименованию """""" + Наименование + """"""""; + + КонецЕсли; + + ТекстИсключения = ""Не нашли #ГруппуИлиЭлемент справочника #ИмяСправочника по #ПредставлениеПоиска""; + + ТекстИсключения = СтрЗаменить(ТекстИсключения, ""#ГруппуИлиЭлемент"" , ?(ИскатьГруппу, ""группу"", ""элемент"")); + ТекстИсключения = СтрЗаменить(ТекстИсключения, ""#ИмяСправочника"" , ИмяСправочника); + ТекстИсключения = СтрЗаменить(ТекстИсключения, ""#ПредставлениеПоиска"", ПредставлениеПоиска); + + Запрос = Новый Запрос; + Запрос.Текст = + ""ВЫБРАТЬ + | Справочник.Ссылка + |ИЗ + | Справочник.Пользователи КАК Справочник + |ГДЕ + | &МоиУсловия""; + + ТекстМоиУсловия = """"; + + Если ИскатьГруппу Тогда + СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, ""Справочник.ЭтоГруппа = &ИскатьГруппу""); + КонецЕсли; + + Если ЗначениеЗаполнено(Код) Тогда + СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, ""Справочник.Код = &Код""); + КонецЕсли; + + Если ЗначениеЗаполнено(Наименование) Тогда + СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, ""Справочник.Наименование = &Наименование""); + КонецЕсли; + + Если ПустаяСтрока(ТекстМоиУсловия) Тогда + ТекстМоиУсловия = ""ИСТИНА""; + КонецЕсли; + + СтрокаЗаменыСправочника = ""Справочник."" + ИмяСправочника + "" КАК Справочник""; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, ""&МоиУсловия"", ТекстМоиУсловия); + Запрос.Текст = СтрЗаменить(Запрос.Текст, ""Справочник.Пользователи КАК Справочник"", СтрокаЗаменыСправочника); + + Запрос.УстановитьПараметр(""ИскатьГруппу"", ИскатьГруппу); + Запрос.УстановитьПараметр(""Код"", Код); + Запрос.УстановитьПараметр(""Наименование"", Наименование); + + РезультатЗапроса = Запрос.Выполнить(); + Если ДолженБыть И РезультатЗапроса.Пустой() Тогда + ВызватьИсключение ТекстИсключения; + КонецЕсли; + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + ВыборкаДетальныеЗаписи.Следующий(); + + Возврат ВыборкаДетальныеЗаписи.Ссылка; +КонецФункции + +&НаСервере +Процедура СформироватьТекстУсловияЗапроса(ТекстРезультат, ТекстУсловия) + Если НЕ ПустаяСтрока(ТекстРезультат) Тогда + ТекстРезультат = ТекстРезультат + "" И "" + КонецЕсли; + ТекстРезультат = ТекстРезультат + ТекстУсловия; +КонецПроцедуры + +&НаСервере +Процедура утвУдалитьЭлементСправочника(ИмяСправочника, ЭлементСправочника) + Запрос = Новый Запрос; + Запрос.Текст = + ""ВЫБРАТЬ + | Справочник.Ссылка + |ИЗ + | Справочник."" + ИмяСправочника + "" КАК Справочник + |ГДЕ + | Справочник.Ссылка = &ЭлементСправочника""; + + Запрос.УстановитьПараметр(""ЭлементСправочника"", ЭлементСправочника); + + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + ЭлементОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); + + ЭлементОбъект.Удалить(); + КонецЦикла; +КонецПроцедуры + + +&НаСервере +Процедура УстановитьЗначениеРеквизитаСправочника(ЭлементСправочника, ИмяРеквизита, Значение, ЗначениеВХранилище = ЛОЖЬ) + СпрОбъект = ЭлементСправочника.ПолучитьОбъект(); + Если ЗначениеВХранилище Тогда + СпрОбъект[ИмяРеквизита] = Новый ХранилищеЗначения(Значение); + Иначе + СпрОбъект[ИмяРеквизита] = Значение; + КонецЕсли; + СпрОбъект.Записать(); +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьАктивноеОкноИзТестовоеПриложение() + Возврат КонтекстСохраняемый.ТестовоеПриложение.ПолучитьАктивноеОкно(); +КонецФункции + +&НаКлиенте +Функция ПолучитьАктивноеОкноИзКонтекста() + Возврат Контекст.АктивноеОкно; +КонецФункции + +&НаКлиенте +Функция НайтиПолеПоИмени(ИмяПоля,НужнаяФорма = Неопределено) + Получилось = Ложь; + Если Не Получилось Тогда + Если НужнаяФорма = Неопределено Тогда + ОкноПриложения = ПолучитьАктивноеОкноИзТестовоеПриложение(); + НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип(""ТестируемаяФорма"")); + КонецЕсли; + + Если НужнаяФорма = Неопределено Тогда + //иногда 1С некорректно отдаёт текущее окно, тогда будем искать во всех окнах + //сначала поищем в недавно открытом окне + + Попытка + ОкноПриложения = ПолучитьАктивноеОкноИзКонтекста(); + НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип(""ТестируемаяФорма"")); + Исключение + + КонецПопытки; + + //Если НужнаяФорма = Неопределено Тогда + // //затем будем искать во всех окнах + // МассивОкон = КонтекстСохраняемый.ТестовоеПриложение.НайтиОбъекты(Тип(""ТестируемоеОкноКлиентскогоПриложения"")); + // Для каждого ТекОкно Из МассивОкон Цикл + // + // НужнаяФорма = ТекОкно.НайтиОбъект(Тип(""ТестируемаяФорма"")); + // Если НужнаяФорма <> Неопределено Тогда + // Контекст.Вставить(""АктивноеОкно"",ОкноПриложения); //произошла неявная смена активного окна + // КонецЕсли; + // + // КонецЦикла; + // + //КонецЕсли; + КонецЕсли; + + + Если ИмяПоля = """" Тогда + Поле = НужнаяФорма.НайтиОбъект(Тип(""ТестируемоеПолеФормы"")); + Иначе + Поле = НужнаяФорма.НайтиОбъект(Тип(""ТестируемоеПолеФормы""),,ИмяПоля); + КонецЕсли; + + КонецЕсли; + + Возврат Поле; +КонецФункции + +&НаСервере +Процедура УстановитьЗначениеКонстаны(ИмяКонстанты, Результат) + Константы[ИмяКонстанты].Установить(Результат); +КонецПроцедуры + +&НаКлиенте +//Тогда я стал наблюдателем за задачей ""ЭтоТестоваяЗадача"" с номером '9999999' +//@ЯСталНаблюдателемЗаЗадачейСНомером(Парам01,Парам02) +Процедура ЯСталНаблюдателемЗаЗадачейСНомером(НаименованиеЗадачи, НомерЗадачи) Экспорт + + Результат = ПолучитьЗаписьРСПоЗадаче(КонтекстСохраняемый.Задача); + + Ванесса.ПроверитьНеРавенство(Неопределено, Результат, ""Ожидаемое значение результата""); + Ванесса.ПроверитьРавенство(НаименованиеЗадачи, Результат.Наименование, ""Ожидаемое значение наименования задачи""); + Ванесса.ПроверитьРавенство(НомерЗадачи, Результат.Номер, ""Ожидаемое значение номера задачи""); + +КонецПроцедуры + +Функция ПолучитьЗаписьРСПоЗадаче(Задача) + + Результат = Неопределено; + + Запрос = Новый Запрос; + Запрос.Текст = ""ВЫБРАТЬ + | узНаблюдателиЗаЗадачами.Задача.Наименование КАК Наименование, + | узНаблюдателиЗаЗадачами.Задача.Код КАК Номер, + | узНаблюдателиЗаЗадачами.Пользователь КАК Пользователь + |ИЗ + | РегистрСведений.узНаблюдателиЗаЗадачами КАК узНаблюдателиЗаЗадачами + |ГДЕ + | узНаблюдателиЗаЗадачами.Задача = &Задача + | И узНаблюдателиЗаЗадачами.Пользователь = &Пользователь""; + + Запрос.УстановитьПараметр(""Задача"", Задача); + Запрос.УстановитьПараметр(""Пользователь"", Пользователи.ТекущийПользователь()); + + Выборка = Запрос.Выполнить().Выбрать(); + + Если Выборка.Следующий() Тогда + Результат = Новый Структура(""Наименование, Номер"", Выборка.Наименование, Формат(Выборка.Номер,""ЧГ=0"")); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +//окончание текста модуля", +{4,1, +{9, +{1},0,"Объект", +{1,0}, +{"Pattern", +{"#",1fa267af-3d54-4f70-ac00-718486d7aafd} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},1,0,0,0, +{0,0}, +{0,0} +},0,0, +{#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 +aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u +LXN5c3RlbS9zZXR0aW5ncyIgeG1sbnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUv +OC4xL2RhdGEtY29tcG9zaXRpb24tc3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJo +dHRwOi8vdjguMWMucnUvOC4xL2RhdGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0 +cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9 +Imh0dHA6Ly92OC4xYy5ydS84LjEvZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRw +Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj +LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 +LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 +cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} +}, +{0,0}, +{0,0}, +{0,0}, +{0,0},0,0} \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/79a499cc-1782-4a2f-abe7-61ea4d49fd5a b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/79a499cc-1782-4a2f-abe7-61ea4d49fd5a new file mode 100644 index 000000000..44595548c --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/79a499cc-1782-4a2f-abe7-61ea4d49fd5a @@ -0,0 +1,17 @@ +{1, +{79a499cc-1782-4a2f-abe7-61ea4d49fd5a},1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f, +{1, +{4,1fa267af-3d54-4f70-ac00-718486d7aafd,ed829681-4496-44fd-adeb-667f09d931c3, +{0, +{1, +{0,0,8aa13ab8-188a-4f59-be4f-031aa5450c90},"ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей", +{1,"ru","Проверка добавления автора комментария в наблюдатели за задачей"},"",0,0} +},70e297e0-e8a2-43bf-8be1-62e408f610a1,"",00000000-0000-0000-0000-000000000000},4, +{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, +{3daea016-69b7-4ed4-9453-127911372fe6,0}, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,70e297e0-e8a2-43bf-8be1-62e408f610a1}, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0} +} +} +} \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/8aa13ab8-188a-4f59-be4f-031aa5450c90.0/info b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/8aa13ab8-188a-4f59-be4f-031aa5450c90.0/info new file mode 100644 index 000000000..c70b5f39b --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/8aa13ab8-188a-4f59-be4f-031aa5450c90.0/info @@ -0,0 +1 @@ +{3,1,0,"",0} \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/copyinfo b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/copyinfo new file mode 100644 index 000000000..534ce89a6 --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/copyinfo @@ -0,0 +1,16 @@ +{4, +{2, +{70e297e0-e8a2-43bf-8be1-62e408f610a1,70e297e0-e8a2-43bf-8be1-62e408f610a1,1, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"} +}, +{8aa13ab8-188a-4f59-be4f-031aa5450c90,8aa13ab8-188a-4f59-be4f-031aa5450c90,1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей"} +} +}, +{1, +{1fa267af-3d54-4f70-ac00-718486d7aafd,8aa13ab8-188a-4f59-be4f-031aa5450c90,0} +}, +{0}, +{0,0}, +{0} +} \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/root b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/root new file mode 100644 index 000000000..8acebfec4 --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/root @@ -0,0 +1 @@ +{2,79a499cc-1782-4a2f-abe7-61ea4d49fd5a,} \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/version b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/version new file mode 100644 index 000000000..c23bfe28a --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/version @@ -0,0 +1,3 @@ +{ +{216,0} +} \ No newline at end of file diff --git a/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/versions b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/versions new file mode 100644 index 000000000..23b7487b6 --- /dev/null +++ b/src/features/step_definitions/ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей/und/versions @@ -0,0 +1 @@ +{1,9,"",866c4490-4922-4015-a5b0-51a4d39d3c60,"70e297e0-e8a2-43bf-8be1-62e408f610a1",27c05e94-b56f-40c5-aef2-487ae177b3b0,"70e297e0-e8a2-43bf-8be1-62e408f610a1.0",476d9837-3cce-4887-af1d-ee503fa28c80,"79a499cc-1782-4a2f-abe7-61ea4d49fd5a",42fb4a9f-54d2-4034-85d1-3dfcdb050889,"8aa13ab8-188a-4f59-be4f-031aa5450c90.0",8f078f9d-d37e-43c8-a027-62db3be5182d,"copyinfo",b6e043a5-113e-4684-93bd-3bbd4c57396e,"root",38b1a0cb-6e17-4dac-84f0-ac47726dc9b7,"version",b1509780-834c-4127-b5b7-5f619ab2384b,"versions",063e6699-909b-41cc-8b1c-6a4d0e3d3a0b} \ No newline at end of file