Вторник, 08.10.2024, 03:52
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Тестирование метаданных
klinvalДата: Четверг, 16.02.2017, 14:29 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 2
Статус: Оффлайн
1. Проверка форм. Форма документа.
В процедуре ГлобальныйТестФорм запускается тест формы через 
Код
Тестироватьформу(Форма, ИмяОперации);
Но перед этим не проверяется, что Форма=Неопределено. Точнее сказать проверяется, но после этого происходит попытка получить форму ещё раз:
Код
Форма = ПолучитьНовуюФорму(МетаФорма, ВнешнийОбъект, КлючВременнойФормы, ПараметрыФормы);
               Если Форма = Неопределено Тогда
                      ОтменитьТранзакцию();
                      Продолжить;
               КонецЕсли;
...
Если ЭтоФормаСсылочногоОбъекта Тогда
....
    Если Выборка.Следующий() Тогда
                    ПараметрыФормы.Вставить("ЗначениеКопирования", Выборка.Ссылка);
                         КонецЕсли;
    Форма = ирОбщий.ПолучитьФормуЛкс(МетаФорма.ПолноеИмя(), ПараметрыФормы, , КлючВременнойФормы);
    //Тут мы получаем Неопределено
....
КонецЕсли;
...
Тестироватьформу(Форма, ИмяОперации);
Внутри этой функции происходит открытие через "ПолучитьФорму", которое может возвращать "Неопределено" если в ПриСозданииНаСервере Отказ=Истина. Если разработчик даст вам получить форму, но принудительно сделает Отказ=Истина, если ЗначениеЗаполнено(ЗначениеКопирования), то в первый раз всё будет нормально, а потом Неопределено. Дальше выйдет ошибка, т.к. дальше идёт попытка открыть форму, а форма у нас = Неопределено.

2. Проверка элементов форм.
Есть такой код:

Код
ирОбщий.ИнтерактивноЗаписатьВЭлементУправленияЛкс(ПолеФормы, НепустоеЗначение);
В переменную ПолеФормы в Управляемых формах часто передаётся тип "ПолеФормы". В элементе этого типа нет свойства "Значение", а в процедуре далее идёт:

Код
Результат = ЭлементУправления.Значение = Значение;
Возникает ошибка.

Добавлено (16.02.2017, 14:29)
---------------------------------------------
3. Проверка форм.
Предлагаю изменить код на форме обработки:


Код
Функция ПолучитьНовуюФорму(МетаФорма, ВнешнийОбъект = Неопределено, КлючВременнойФормы = Неопределено, ПараметрыФормы = Неопределено)

   Если ВнешнийОбъект <> Неопределено Тогда
      Форма = ВнешнийОбъект.ПолучитьФорму(МетаФорма.Имя, , КлючВременнойФормы);
   Иначе
      //Форма = МенеджерТипа.ПолучитьФорму(МетаФорма.Имя, , КлючВременнойФормы);
      Форма = ирОбщий.ПолучитьФормуЛкс(МетаФорма.ПолноеИмя(), ПараметрыФормы, , КлючВременнойФормы);
   КонецЕсли; 
   Если ПараметрыФормы <> Неопределено Тогда //Старый код
   Если ПараметрыФормы <> Неопределено И Форма <> Неопределено Тогда //Новый код
      ЗаполнитьЗначенияСвойств(Форма, ПараметрыФормы); 
   КонецЕсли; 
   Возврат Форма;

КонецФункции


Причины: как и в сообщении выше, бывают случаи отказа ПриСозданииНаСервере, Форма=Неопределено и на ЗаполнитьЗначениеСвойств выходит ошибка. Например БП 3.0 Справочник.БанковскийСчет выдаст ошибку.
 
tormozitДата: Суббота, 18.02.2017, 12:32 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Спасибо. Ошибки понятны.
 
tormozitДата: Воскресенье, 19.02.2017, 18:20 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Исправлено в 3.98
 
  • Страница 1 из 1
  • 1
Поиск: