Имя: Пароль:
1C
1С v8
Как в СКД получить случайное число?
,
0 RedTop
 
27.01.16
06:37
Собственно сабж. Как СКД построчко получить случайное число? Остаток мне нужно уменожить на число от 1 до 10

Про
ГСЧ = Новый ГенераторСлучайныхЧисел(255);
ГСЧ.СлучайноеЧисло(0, 10000);

знаю, но как в СКД это засунуть?
1 los_hooliganos
 
27.01.16
06:42
В СКД можно использовать внешние функции. Главное чтобы функции были в общем модуле.
2 los_hooliganos
 
27.01.16
06:42
Погугли язык выражений скд
3 RedTop
 
27.01.16
07:17
Сделал функцию. Запихнул ее вызов в СКД в Вычисляемые поля. Работает. НО. Случайное поле вычисляется ОДИН раз! видать только при инициализации, а мне нужно чтобы случайное число расчитывалось для КАЖДОЙ строчки отчета (
4 sda553
 
27.01.16
07:24
Функцию от номера строки или от любого значения в строке выборки можно сделать?
5 Лодырь
 
27.01.16
07:27
(3) Метод середины квадрата можно использовать ) И вычислять на основе предыдущего значения.
6 фобка
 
27.01.16
07:30
(3) Задержку может надо реализовать?
7 mehfk
 
27.01.16
07:37
(3) Потому что если ты сделал как в (0), то у тебя начальное число всегда одинаковое. Делай без указания начального значения Новый ГенераторСлучайныхЧисел().
8 RedTop
 
27.01.16
07:43
(7) Спасибо!
9 RedTop
 
27.01.16
08:10
а вот и нет.. один фик...
отчет формируется за секунду, и если указать диапазон от 1 до 4, то число на весь отчет будет одно... 1.2.3.4

полистал гугл. проблема не новая, но решения нет...
10 ЧеловекДуши
 
27.01.16
08:15
(9) Зачем?
А так можно отчет разделить.
Сперва заполнить ТЗ, а потом подсунуть в СКД :)
11 LordCMEPTb
 
27.01.16
08:21
(9) Скорее всего проблема в том, что при отсутствующем параметре конструктора генератора случайных чисел, берется значение текущей даты (ну или что-то похожее). Если нужно за одну секунду наклепать много конструкторов, то лучше явно указывать параметр конструктора (передавать, к примеру, номер строки отчета), что-то вроде
ГСЧ = Новый ГенераторСлучайныхЧисел(НомерСтроки);

Ну или обнаглеть и делать конструктор на основании времени:
ГСЧ = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
12 mehfk
 
27.01.16
08:31
(9) Сделай переменную глобального модуля типа глГенераторСлучайныхЧисел и не создавай новый ГСЧ каждый раз в своей функции.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший