Имя: Пароль:
1C
1С v8
Не удалось выполнить обновление ЗУП 3.0
0 Dzhart
 
10.08.16
18:07
Приветствую, друзья!

Уже пару дней бодаюсь с косяком не могу понять, в чем же дело. После очередного обновления на 3.0.43.257 стала лезть ошибка обновления информационной базы уже в режиме предприятия. Текст такой:

{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(3962)}: Преобразование значения к типу Число не может быть выполнено
        ПортКластера = Число(Сред(ИмяСервера, РазделительПорта + 1));

Проблема в том, что ИмяСервера, которая получается посредством обрезания строки из функции СтрокаСоединенияИнформационнойБазы(), содержит вначале конструкцию "TCP://" (пример: "TCP://1C-SERV:1541"), из-за чего 1с и не может преобразовать имя сервера в числа, поскольку в коде:

"Процедура ПрочитатьПараметрыИзСтрокиСоединения(СтруктураПараметровАдминистрирования)
    
    ПодстрокиСтрокиСоединения = СтрРазделить(СтрокаСоединенияИнформационнойБазы(), ";");
    
    СтрокаИмениСервера = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(Сред(ПодстрокиСтрокиСоединения[0], 7));
    СтруктураПараметровАдминистрирования.ИмяВКластере = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(Сред(ПодстрокиСтрокиСоединения[1], 6));
    
    СписокСерверовКластера = СтрРазделить(СтрокаИмениСервера, ",");
    
    ИмяСервера = СписокСерверовКластера[0];
    РазделительПорта = СтрНайти(ИмяСервера, ":");
    Если РазделительПорта > 0 Тогда
        АдресАгентаСервера = Сред(ИмяСервера, 1, РазделительПорта - 1);
        ПортКластера = Число(Сред(ИмяСервера, РазделительПорта + 1));
        Если СтруктураПараметровАдминистрирования.ПортКластера = 1541 Тогда
            СтруктураПараметровАдминистрирования.ПортКластера = ПортКластера;
        КонецЕсли;
    Иначе
        АдресАгентаСервера = ИмяСервера;
    КонецЕсли;
    
    СтруктураПараметровАдминистрирования.АдресАгентаСервера = АдресАгентаСервера;
    
КонецПроцедуры"

он ищет двоеточие, чтобы отрезать лишнее и выделить порт, но, к сожалению, он находит двоеточие раньше.

Проверил на таком же релизе другие базы. В них всё ок, адрес кластера отображается без этой злое... конструкции. Соответственно, спокойно можно преобразовать строку в число.  

Единственная разница в том, что база, в которой проблема, находится на другом сервере. Хотел бы узнать у Вас, друзья, может ли это быть как-то связано? Если нет, то как быть в целом? Два дня уже бодаюсь. Тупик.
1 Мыш
 
10.08.16
19:25
СтрЗаменить(СтрокаСоединенияИнформационнойБазы(),"TCP://","")
2 shuhard
 
10.08.16
20:34
(0) дружок, найди того, что воткнул цифру в имя сервера 1С и оторви ему всё важное
3 Dzhart
 
11.08.16
09:19
(1) Конфигурация типовая, нельзя врезаться в код. (2) Проблема не в этом. Я написал же, что логика такая: ищется двоеточие в имени сервера для того, чтобы обрезать всё до этого двоеточия и выделить порт. Но двоеточие встречается намного раньше, поскольку впереди имени сервера стоит "TCP://". Поэтому и вопрос: откуда возникает это TCP:// и как его убрать из имени сервера

P.S. Если отдельной обработкой в режиме предприятия вызвать функцию "СтрокаСоединенияИнформационнойБазы()", то имя сервера получается в нормальном виде без "TCP://"
4 Amra
 
11.08.16
09:28
ЗУП 3.0.43? Такой нет и не будет
5 Dzhart
 
11.08.16
09:34
(4) да, косяк, имел ввиду БП. Но на проблему никакого влияния не оказывает. Есть идеи по существу?
6 Горогуля
 
11.08.16
09:42
поломай чуток кода, будь мыжиком
7 Dzhart
 
11.08.16
09:47
(6) не
8 Мыш
 
11.08.16
09:58
(3) > Конфигурация типовая, нельзя врезаться в код.
За два (три) дня уже успел бы сделать такой финт:
- поправить код
- обновить базу
- сделать конфу обратно типовой
9 DJ Anthon
 
11.08.16
10:04
переменную можно в табло поправить разово, не ломая конфигурацию.

например. с помощью обработки, которая содержит такой модуль объекта

Функция Ду(Код, П=Неопределено, П1=Неопределено, П2=Неопределено, П3=Неопределено, П4=Неопределено)  Экспорт
    Перем Р;
    Выполнить(Код);
    Возврат Р;
КонецФункции

Функция Присвоить(А,Б) Экспорт
    А=Б; Возврат А;
КонецФункции

//пример использования ВнешниеОбработки.Создать("C:\debug.epf").Присвоить(А, Неопределено)
10 Горогуля
 
11.08.16
10:20
(9) бывают платформы с такой своей ерундовиной
11 Ksantos
 
12.08.16
10:06
Тоже столкнулись с такой проблемой

Решил так:

Остановил службу сервера 1с

отредактировал файл "C:\Program Files\1cv8\srvinfo\reg_1541\1CV8Clst.lst"

убрал tcp:// из Srvr=tcp://имя_сервера

Запустил службу, проблема пропала.