Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Глюк при вызове глобальной функции со значениями "по умолчанию" или...?

v7: Глюк при вызове глобальной функции со значениями "по умолчанию" или...?
Я
   wopot
 
20.04.21 - 12:35
Ситуация следующая: в табличной части документа есть реквизит "ДатаКон" типа "Дата", рядом с ним есть колонка с функцией ДеньНеделиКраткоПоДате(ДатаКон), в колонку рядом с датой выводится день недели "пн", "вт" и т.д.

Функция в глобальном модуле очень простая

Функция ДеньНеделиКраткоПоДате(ПромДата,Заглавными=0) Экспорт
    ....
    ....
    Если Заглавными=0 Тогда
        Возврат ДниНедели[НомерДняНедели(ПромДата)];
    ИначеЕсли Заглавными=1 Тогда
        Возврат Врег(ДниНедели[НомерДняНедели(ПромДата)]);
    КонецЕсли;
КонецФункции

Всё бы ничего, и работает уже десятилетие, но сегодня увидел очень странную вещь. В некоторых строках, причём довольно бессистемно день недели был не строчными (пн, вт, ср), а заглавными буквами (ПН, ВТ, СР), будто функция вызывалась как ДеньНеделиКраткоПоДате(ДатаКон, 1). Первый раз такое вижу, что бы это могло быть не знаю. Windows Server 2016, 1c 7.7.027, FormEX 2.0.5.147
   Злопчинский
 
1 - 20.04.21 - 12:38
(0) начать надо с того, что функция написано говнокодисто.
   wopot
 
2 - 20.04.21 - 12:40
В чем "говнокодистость" заключается? ;)
   Злопчинский
 
3 - 20.04.21 - 12:41
плюс к этому верхнйи регистр по данному коду - не обязательно следствие работы функции, а вполне возможно что уже загнано в массив ВРЕГами
.
    Если Заглавными=0 Тогда
        Возврат НРег(ДниНедели[НомерДняНедели(ПромДата)]);
   wopot
 
4 - 20.04.21 - 12:42
Функция ДеньНеделиКраткоПоДате(ПромДата,Заглавными=0) Экспорт
    Перем ДниНедели[7];
    Если ПустоеЗначение(промДата)=1 Тогда
        Возврат "  ";
    КонецЕсли;
    ДниНедели[1]="пн";
    ДниНедели[2]="вт";
    ДниНедели[3]="ср";
    ДниНедели[4]="чт";
    ДниНедели[5]="пт";
    ДниНедели[6]="сб";
    ДниНедели[7]="вс";
    Если Заглавными=0 Тогда
        Возврат ДниНедели[НомерДняНедели(ПромДата)];
    ИначеЕсли Заглавными=1 Тогда
        Возврат Врег(ДниНедели[НомерДняНедели(ПромДата)]);
    ИначеЕсли Заглавными=2 Тогда
        пром=ДниНедели[НомерДняНедели(ПромДата)];
        Возврат врег(лев(пром,1))+сред(пром,2);
    КонецЕсли;    
КонецФункции// ДеньНеделиПоДате
   Злопчинский
 
5 - 20.04.21 - 12:42
(2) в том, что "я знаю что на вход не будет ничего кроме 0 и 1"
а тут внезапно 2!
   wopot
 
6 - 20.04.21 - 12:44
Если обратили внимание, то там ещё и ... было, которое заменяло массив и часть кода. Собственно, сути эти, наверное, не меняет :)

В экранной форме было так
01.05.2021 сб
01.05.2021 сб
03.05.2021 ПН - то есть понедельник почему-то пошёл заглавными
05.05.2021 ср

После выхода и входа в 1С, всё стало работать, как и прежде
   1Сергей
 
7 - 20.04.21 - 12:46
Случаем не оп ОЛЕ соединение с базой?
   wopot
 
8 - 20.04.21 - 12:48
Нет
   Злопчинский
 
9 - 20.04.21 - 12:50
(6) "После выхода и входа в 1С, всё стало работать, как и прежде"
- ну так и надо было проверить не выходя...
код вроде прсотой, траблов быть не должно...
   wopot
 
10 - 20.04.21 - 12:53
Десять лет и не было :) 
Если бы своими глазами не увидел, то словам пользователя бы не поверил.
В табличной части даже раскраска не используется.

Формула в "свойствах текста" формула ДеньНеделиКраткоПоДате(ДатаНач)

А такое впечатление, что 1С отрабатывала как ДеньНеделиКраткоПоДате(ДатаНач,1) только места выбирала случайным образом.
Сейчас сколько не пробовал воспроизвести это у себя, ничего такого не получается.
   Злопчинский
 
11 - 20.04.21 - 13:04
(10) догадки можно строить бесконечно...
   Kigo_Kigo
 
12 - 20.04.21 - 13:39
Серека еще сырая! :)
   Злопчинский
 
13 - 20.04.21 - 13:59
(12) Может дело в прокладке?!
   wopot
 
14 - 20.04.21 - 14:22
(13) Всякое бывает

Но в конкретной ситуации, именно этой функции лет 10, а конфигурации скоро 20...
Поэтому явно стечение обстоятельств, но какое и каких?
   Злопчинский
 
15 - 20.04.21 - 17:05
Никогда такого не было и вот - опять!
   SleepyHead
 
16 - 20.04.21 - 17:54
(2) А что, если в параметр "Заглавными" передать 2 ?
   Cthulhu
 
17 - 21.04.21 - 03:27
афигеть...
Сред("пнвтсрчтптсбвс",НомерДняНедели(ПробДата)*2-1,2);
   Андрей_Андреич
 
18 - 21.04.21 - 05:25
(17) Если тебе платить за строчки кода - с голода помрешь :=)
   Андрей_Андреич
 
19 - 21.04.21 - 06:06
(17) Код нечитаемый - у ТС лучше :)
   wopot
 
20 - 21.04.21 - 06:26
(17) Кратко и лаконично!

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.