Проблемы при обновлении

Программирование на языке СБиС++, создание обработчиков событий, редактирование окон, создание отчетов и т.д.

Проблемы при обновлении

обновлял до версии 2.4.479

При регистрации Модуля Хозрасчетный учет затыкается на
Регистрация таблицы Типы отпусков

и всё ...
оставлял на ночь - висит

после разбора нашёл,
что затыкается при выполнении функции УстановитьПараметрВидИмущ2017()

Посмотрел, что она делает - сделал это руками ...
заблокировал выполнение этой функции - регистрация модуля прошла успешно ...

Проблема с одной из нескольких баз.
Ошибок в БД нет.
База на первазиве

Перепроверьте данную функцию : похоже, при каких-то условиях - зацикливается ...

Код: Выделить всё
функция УстановитьПараметрВидИмущ2017()
# Описание:
#     Добавляет параметр ПРИЗНАК_ИМУЩ_2017 и устанавливаем его значения в корень реестров инвентарных карточек и на папки,
#     если значение параметра ПРИЗНАК_ИМУЩ на папке отличается от значения этого параметра на предыдущем уровне
#     Также проверяем/устанавливаем параметр на складских карточках
# Возвращает:
#     ничего не возвращает
# Автор: Богданова (21.06.17), (06.07.17)
{
   перем мРеестры = Массив( "Инвентарные карточки", "Складская картотека" );
   перем пНом;
   ДляВсех( Переменных( мРеестры, пНом ) )
   {
      перем пНазваниеВыборки = мРеестры[ пНом ];
      Если( пНазваниеВыборки )
      {
         перем оРеестр = Выборка( пНазваниеВыборки );   
         Если( пНазваниеВыборки == "Инвентарные карточки" )
         {  # на все карточки признак устанавливаем только для ОС
            оРеестр = оРеестр.КореньВыборки();
            Если( !оРеестр.ЕстьПараметр( "ПРИЗНАК_ИМУЩ_2017" ) )
               оРеестр.ДобавитьПараметр( "ПРИЗНАК_ИМУЩ_2017" );
            оРеестр.ПРИЗНАК_ИМУЩ_2017 = ЗначениеПризнакаИмущ2017( ЕслиЕсть( оРеестр.ПРИЗНАК_ИМУЩ, "" ) );
            оРеестр.Сохранить;
            оРеестр = Выборка( пНазваниеВыборки );
         }
         оРеестр.РазвернутьСУзлами();
         Пока( Следующий( оРеестр ) )
         {
            Если( оРеестр.ЕстьПараметр( "ПРИЗНАК_ИМУЩ" ) )
            {
               Если( !оРеестр.ЕстьПараметр( "ПРИЗНАК_ИМУЩ_2017" ) )
               {
                  оРеестр.ДобавитьПараметр( "ПРИЗНАК_ИМУЩ_2017" );
                  оРеестр.ПРИЗНАК_ИМУЩ_2017 = ЗначениеПризнакаИмущ2017( оРеестр.ПРИЗНАК_ИМУЩ );
                  оРеестр.Сохранить;
               }
            }
         } # Пока( Следующий( оРеестр ) )
      }
   }
}
функция ЗначениеПризнакаИмущ2017( пСтароеЗначение )
# Описание:
#     Определяет значение параметра ПРИЗНАК_ИМУЩ_2017 анализируя значение ранее используемого параметра КОД_ВИДА_ОПЕР
# Параметры:
#     пСтароеЗначение - строка, значение ранее используемого параметра КОД_ВИДА_ОПЕР
# Возвращает:
#     значение параметра ПРИЗНАК_ИМУЩ_2017
# Автор: Богданова (21.06.17)
{
   перем пНовоеЗначение = "";
   Если( пСтароеЗначение == "объекты недвижимого имущества на территориях разных субъектов" )
      пНовоеЗначение = "Объекты недвижимого имущества на территориях разных субъектов";
   Иначе
      пНовоеЗначение = пСтароеЗначение;
   вернуть пНовоеЗначение;
}
Вложения
obn04.jpg
obn04.jpg (81.73 Кб) Просмотров: 714
obn02.jpg
obn02.jpg (130.73 Кб) Просмотров: 708
obn01.jpg
obn01.jpg (38.99 Кб) Просмотров: 712
Редькин Владимир 
» 25 авг 2017, 23:02



Вернуться в Разработка и администрирование в СБиС++