Имя: Пароль:
1C
1C 7.7
v7: Не работает функция
0 abbas
 
23.06.22
09:15
Доброе времени суток, подскажите пжста, в каких случаях перестает работать %
4%2 = 0
5%2 = 0
чтобы не писал, все равно 0
А вчера работало
1 abbas
 
23.06.22
09:39
Ап
2 asady
 
23.06.22
09:47
(0) покажи свой код
3 abbas
 
23.06.22
09:56
флагРанд = 0;
    Пока флагРанд=0 цикл
        Ранд =_GetPerformanceCounter()*ТекущаяДата()%(9999);
        Если Стрдлина(Ранд)    = 4 Тогда
            флагРанд=1;
        КонецЕсли;
    КонецЦикла;
4 abbas
 
23.06.22
09:57
_GetPerformanceCounter()*ТекущаяДата() = выдает число
а после %(Число) выдает 0
5 Деспот_1С
 
23.06.22
10:05
(0) 4%2 = 0 так и должно быть потому что  у = х % а. Берется остаток от деления «х» на «а». Результатом всегда будет значение между 0 и а-1
6 asady
 
23.06.22
10:15
(3) да...

Число = Число * Дата % число;
Строка = Число;

столько неявных преобразований типов - может как-то причешешь код
Глядишь и ошибки уйдут
7 Злопчинский
 
23.06.22
18:30
Число, помноженное на дату - это сильно...
8 Злопчинский
 
23.06.22
18:32
(4) а что говорит
ТипЗначенияСтр(_GetPerformanceCounter()*ТекущаяДата())
9 NorthWind
 
23.06.22
21:41
(7) Нередко дата - это на самом деле унутре и есть целое, которое обозначает число дней, прошедших с какого-то определенного момента. Соответственно может быть положительным (после момента) и отрицательным (до момента).
10 NorthWind
 
23.06.22
21:44
не сильно удивлюсь, если в 7.7 дата тоже приводится к целому по тому же принципу, хотя ни разу не пробовал так делать
11 NorthWind
 
23.06.22
22:04
Да, в семерке тоже приводится к целому, нынешний день дает значение 2459754. Если сминусовать день из даты и опять привести, то 2459753, что логично. Но вот если сминусовать все это из текущей даты и напечатать как дату, то показывает белиберду с отрицательным годом, хотя по идее должно показать "начало времен" :) Релиз 7.7.027.
12 Злопчинский
 
25.06.22
02:19
(11) там сингулярность просто... ;-)
13 NorthWind
 
25.06.22
08:51
(12) :) но, однако, факт, что преобразования от даты к целому и наоборот действуют, и для каждой даты есть свое уникальное целое. Может пригодиться.
14 Злопчинский
 
25.06.22
12:17
(13) как-то не приходилось так извращаться ;-)
.
ТекущаяДата()-738695 = 01.01.0000
15 MWWRuza
 
гуру
25.06.22
13:04
Да уж...
Век живи, век учись - и все равно дураком подохнешь...
Я для того, что-бы обеспечить уникальность файлов выгрузки из бэка во фронты, функцию создавал...
Функция ВернутьТекДатуВремяЧислом()
    СтрДата        = Строка(НомерДняГода(ТекущаяДата()));
    СтрВремя     = СтрЗаменить(Строка(ТекущееВремя()), ":", "");
    СтрДатВрем    = СтрДата + СтрВремя;
    Возврат Число(СтрДатВрем);
КонецФункции
А можно было проще сделать, в одну строчку :-)
16 ДедМорроз
 
25.06.22
13:17
Можно просто перебрать файлы с 1 и занять свободный.
17 MWWRuza
 
гуру
25.06.22
13:24
(16) Да нечего перебирать. Файлы удаляет бэк, в случае удачной загрузки. И фиг с ними, они не нужны.
А вот в случае ошибок, нони пропускаются при загрузке, но копия файла помещается в подпапку "EROR" папки загрузки. И вот там, уже нужна уникальность, если несколько файлов с ошибками загружены. Бэком я не рулю, он не 1С, а совершенно сторонний, и копирует файлы в подпапку ошибок как есть, не переименовывая... Поэтому, мне проще сразу уникальные имена сделать, на всякий случай.
18 MWWRuza
 
гуру
25.06.22
13:25
+(17) Бэком я не рулю

Пардон, фронтом... ОписАлся...