Случайность, совпадение, закономерность. Генератор случайных чисел

Публикация № 730095

Разработка - Практика программирования

Генератор случайных чисел Камень ножницы бумага диаграмма распределения чисел инструменты программиста игра

6
Объект ГенераторСлучайныхЧисел удобно выдает случайные числа в заданном интервале значений. Исследование особенностей, рассуждения на тему случайных чисел, практика применения. Увлекательно в игровой форме можно исследовать работу генератора случайных чисел.

Ура!

Я не просто так начал статью с этого возгласа. Свершилось, есть в арсенале программиста удобный инструмент, который позволяет получить случайное целое число в заданном интервале. Стандартные функции в других языках программирования генерировали дробное число в интервале от 0 до 1. Не слишком удобное число для использования, приходится дополнительно напрягаться, для получения случайной последовательности в заданном интервале, например, от 1 до 5.

Удобный инструмент нужно проверить, зачастую ГСЧ не слишком качественные и приходится дополнительно упражняться в математике, чтоб повысить случайность генерируемых чисел, во имя избавления от плохо перемешанных псевдопоследовательностей. Зачастую случайным числам мы доверяем секреты, финансовые средства, развлечения, моделирование, испытания ответственных АСУ систем, тестирование программ, поэтому очень важно иметь уникальную последовательность ряда с разнообразными заданными характеристиками от интервалов значений, до степени перемешивания чисел последовательности.

Приведу пример неудачной генерации случайных чисел. В далеком 1993 году, когда хорошим считался нецветной VGA монитор c разрешением 640х480, от него меньше уставали глаза программистов,  была распространена СУБД Paradox. Жадины из Borland International решили заработать побольше денег и для сетевого доступа требовали ключ, состоящий из 10 цифр. Чем больше ключей ввел, тем больше пользователей могут одновременно подключится к базе.

Сейчас начну хвастаться своими успехами :). Разными способами ко мне попало 3 ключа и меня озарило, что последовательность псевдослучайная и плохо перемешанная. Без всякой техники, сложных вычислений и даже без калькулятора мне удалось подобрать любое количество этих ключей. Конечно компания Borland не понесла больших убытков, но раз уж занялся защитой, то делай это хорошо, либо не трать время на бесполезную работу. Не буду выводить из этого мораль, надеюсь становиться понятнее, что ГСЧ дело важное.

В защиту псевдослучайных последовательностей скажу, что иногда они необходимы, например, когда ключ защиты вычисляется по формуле и программа принимает решение об успешной верификации ключа в локальном режиме. В 1993 году интернет не был распространен и программистам приходилось придумывать алгоритмы последовательностей без проверки на сторонних серверах. Но хорошо перемешивать обязательно. При современном развитии сетей, верификацию серийного номера, как программ, так и оборудования, произвести стало в возможным с использованием серверов верификации. Данная система значительно повысила стойкость к подделкам, но не для кого не секрет, что несмотря на это все равно происходит несанкционированное использование программного обеспечения.

Вывод такой: замки и запоры ставят от честных людей.

Работает объект в платформе 1С исключительно просто, хотя есть некоторые особенности.

	ГСЧ = Новый ГенераторСлучайныхЧисел( Инициализация ); //Здесь можно изменить работу геренатора случайных чисел, изменение Инициализации числа дает разные результаты
	Возврат ГСЧ.СлучайноеЧисло(1, ВариантНастройки);

Если не задавать Инициализацию, тогда последовательности рождаются случайным образом, инициализируясь самостоятельно. Заданное число инициализации возвратит предсказуемую последовательность, что иногда бывает нужно и полезно. А если каждый раз задавать разное число, то получается весьма неплохое перемешивание последовательности чисел.

Для исследования работы генератора случайных чисел в 1С, создал пару обработок и чтоб было интереснее одна в виде игры, но игра позже, сначала дело.

Сгенерировано 500 случайных чисел, в интервале от 0 до 10000, при постоянной инициализации генератора функцией ТекущаяУниверсальнаяДатаВМиллисекундах(). На диаграмме видо хорошее распределение значений. Причудливый узор. По оси У величина значения числа, по оси Х номер итерации.

Положения точек довольно разряжены, они почти не липнут друг к другу, что очень хорошо, значит числа сгенерированы весьма разнообразные.

Искусственно создам плохой вариант диаграммы:

При хорошей генерации так быть не должно.

Настройки генератора случайных чисел очень важный момент. Их немного, но от них все зависит.

При данной настройке формируется последовательность из 500 чисел в интервале от 0 до 10000 и постоянной инициализации генератора новым числом.

Заглянем в сформированную таблицу значений, предварительно отсортировав ее по значениям, чтоб увидеть, есть ли повторяющиеся числа, выданные генератором.

Беглый визуальный просмотр отсортированного списка показал, что есть повторения, хотя вероятность его невысока. Задан широкий интервал чисел для генерации, но на 10 и 30 шаге числа повторились.

Делаем вывод: объект ГенераторСлучайныхЧисел может генерировать повторяющиеся числа.

Это иногда неприемлемо. Например, генерируем случайный номер документа, непоследовательно, для сообщения пользователю, который сможет открыть именно определенный документ. В этом случае повторения недопустимы, иначе при повторениях будет непонятно какой документ открывать.

Зачем нужна случайная нумерация? Допустим мы выдаем нашим партнерам номера документов к сданному в ремонт оборудованию. Можно выдавать номера сквозной последовательной нумерации, но клиент, обладая одним номером может посмотреть как минимум соседние и зная интервал нумерации может просмотреть все документы. В приведенном примере это не ахти какой секрет, но бывает нужно сохранить в тайне информацию из других документов.

При больших интервалах значений чисел генерации вероятность повторяющихся будет уменьшаться, но если событие может произойти, то оно непременно произойдет.

Решением может стать проверка сгенерированного числа на уникальность, но при очень длинных последовательностях это будет занимать много времени. Придется думать над более сложными перемешиваниями, но тем и интереснее задача;).

При выводе в диаграмму значений обработка начинает ощутимо тормозить, на моем компьютере после добавления 1000 значений, поэтому в настройках есть флажок "Не формировать диаграмму". При его установке скорость работы значительно возрастает при генерации длинных последовательностей, поэтому при исследованиях проявляйте осмотрительность задавая количество генерируемых чисел.

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

Скорость работы генератора хорошая, к примеру 100 000 чисел сгенерировались меньше чем за 0,5 секунд.

Пример применения ГСЧ на маленьком интервале чисел, покажу на примере игры Камень, Ножницы, Бумага.

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

Камень побеждает Ножницы.

Ножницы побеждают Бумагу.

Бумага побеждает Камень.

В данном варианте все равнозначны и вероятности победы одинаковые.

Сыграв 99 игр, я произвел одинаковое количество нажатий на каждую фигуру, по 33 раза, это видно по правой нижней диаграмме. Компьютер выигрывал чаще меня, немного обидно. Компьютер чаще использовал бумагу, это видно по левой нижней диаграмме. График в середине показывает, что в выигрыше я не был. Красный график выигрышей компьютера выше зеленого (моих выигрышей).

Попытайте свою удачу! Несмотря на одинаковую вероятность выпадения фигур, результат всегда разный.

Статистика игр отображается в середине, в верху в розовой группе элементов.

Нажав мышкой на кнопку один раз, можно в дальнейшем пользоваться цифрами клавиатуры (не дополнительной), для выбора нужной фигуры. Нажатием на клавиши получается немного быстрее вводить данные, особенно если нужно провести неосмысленные игры для накопления статистики.

Усложним игру. К классическим фигурам добавим еще Колодец. 

Камень побеждает Ножницы.

Ножницы побеждают Бумагу.

Бумага побеждает Камень и Колодец.

Колодец побеждает Камень и Ножницы.

В данном варианте появляется неравнозначность фигур и теоретически больше шансов победить, выбирая Бумагу и Колодец, так как в их арсенале победа над двумя коллегами фигурами. Проверим на практике:

Я нажимал только на сильные фигуры и выиграл. Теория подтвердилась практикой.

Нажатие только на слабые фигуры тоже дало свой результат, я проиграл.

Еще более сложный вариант игры при введении пятой фигуры, Огонь.

Камень побеждает Ножницы и Колодец проигрывает Бумаге и Огню.

Ножницы побеждают Бумагу и Огонь проигрывают Камню и Колодцу.

Бумага побеждает Камень и Колодец проигрывает Огню и Ножницам.

Колодец побеждает Огонь и Ножницы проигрывает Камню и Бумаге.

Огонь побеждает Бумагу и Камень проигрывает Ножницам и Колодцу.

В данном варианте фигуры равнозначны, но выигрывают и проигрывают двум фигурам, это вносит некоторую интригу и снижает вероятность ничьих.

Мои нажатия были хаотичными и компьютер меня опять обыграл. Во время игры видно какую фигуру компьютер использует чаще, исходя из этой информации можно попробовать играть не хаотично, а вдумчиво и возможно повысить свои шансы на успех.

Настройка генератора случайных чисел имеет свои особенности. При снятом флаге "Не использовать ответ пользователя" при инициализации ГСЧ используется номер нажатой игроком клавиши, что добавляет случайность генерации. Человек великолепный генератор случайных чисел, но все же у мозга тоже встречаются псевдопоследовательности. Если заставить человека произвести 100 нажатий на клавиши, то эта процедура может быть выполнена добросовестно, нажатием на как можно более разнообразные клавиши, а может халатно, нажатием только на одну кнопку. При установленном флаге работает только перемешивание компьютера.

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

Флаг "Не использовать инициализацию ГСЧ", включает/выключает режим инициализации. Если при создании объекта ГенераторСлучайныхЧисел не задать инициализацию, то генерируется перемешанная последовательность, я так понимаю, заложена некая инициализация, мне показалось вполне эффективная.

ГСЧ = Новый ГенераторСлучайныхЧисел();

Также, в обработке, можно задать свое число инициализации, тогда предсказуемо генерируется одно и тоже число.

При написании процедуры расчета выигрыша столкнулся с проблемой описания результата, особенно для игры с пятью фигурами. Прикинув понял, что будет много букв, так как много вариантов при таком количестве фигур. Комбинаторика подсказывает нам, что при трех фигурах у нас максимально есть 9 вариантов, при четырех 16 вариантов, то при пяти 25 вариантов. Откинув ничьи, это когда выбрана одинаковая фигура, я понял, что придется написать 19 вариантов условий. 

Я задумался, так как явно получится плохо читаемый код, и нашел как я считаю красивое решение. Всего с 9 условиями.

	Рез = Игрок - Комп;
	Если ВариантНастройки = 3 Тогда		
		Если (Рез = -1) ИЛИ (Рез = 2) Тогда
			Возврат 1; //Победа
		Иначе
			Возврат 2; //Поражение
		КонецЕсли;
	ИначеЕсли ВариантНастройки = 4 Тогда
		Если (Рез = -1) ИЛИ (Рез = 2) ИЛИ (Рез = 3) Тогда
			Возврат 1; //Победа
		Иначе
			Возврат 2; //Поражение
		КонецЕсли;
	ИначеЕсли ВариантНастройки = 5 Тогда
		Если (Рез = -1) ИЛИ (Рез = 2) ИЛИ (Рез = -3) ИЛИ (Рез = 4) Тогда
			Возврат 1; //Победа
		Иначе
			Возврат 2; //Поражение
		КонецЕсли;
	КонецЕсли;

Компактно, понятно, легко редактировать.

Я прикинул что каждая фигура имеет свой номер: 1 - Камень, 2 - Ножницы, 3 - Бумага, 4 - Колодец, 5 - Огонь. В результате игры я вычисляю разницу между номерами фигур, и эта разница дает мне однозначный ответ, на вопрос кто победил.

Обработки, помогающие исследовать свойства случайных последовательностей для управляемого приложения и написаны без привязки к конфигурации. Тестировались на платформе 8.3.10, 8.3.11 на тонком клиенте.

Данной статьей я надеялся донести важность и серьезное отношение при генерации последовательностей случайных чисел.

6

Скачать файлы

Наименование Файл Версия Размер
Возможности ГСЧ
.epf 9,26Kb
20.01.18
1
.epf 1.0.1.15 9,26Kb 1 Скачать
Игра Камень, Ножницы, Бумага
.epf 11,10Kb
20.01.18
1
.epf 3.0.4.6 11,10Kb 1 Скачать

Специальные предложения

Лучшие комментарии
57. user902916 29.01.18 09:16 Сейчас в теме
добавлю в закладки интересно
Ликреонский; +1 Ответить
Остальные комментарии
Избранное Подписка Сортировка: Древо
1. CyberCerber 313 20.01.18 18:27 Сейчас в теме
Начали серьезно, закончили игрушками... В середине статьи затронули, как мне показалось, самый полезный момент статьи - это как быстро сформировать последовательность неповторяющихся случайных чисел. Но дальше тема никак не развилась.
sCHTASS; rpgshnik; +2 Ответить
2. Ликреонский 201 21.01.18 13:09 Сейчас в теме
(1)На мой взгляд в игре заложен глубокий смысл. Обработка помогает раскрыть для себя значение теории вероятности, сделать наблюдение. Когда на себе прочувствуешь действие теории вероятности, тогда лучше усваивается материал.


(1)
В середине статьи затронули, как мне показалось, самый полезный момент статьи - это как быстро сформировать последовательность неповторяющихся случайных чисел. Но дальше тема никак не развилась.

Этому можно посветить отдельную статью. Алгоритмы на эту тему - это серьезная работа и вероятно публиковать их не захочется.
Есть мысли продолжить тему, но уже шире, а это исследование объекта в платформе 1С.
54. rpgshnik 1682 24.01.18 15:28 Сейчас в теме
(2) Какой смысл? Я пришел в 1С из Delphi. Там было всё просто - Randomize(N).
Зачем искать смысл в простых вещах, которые должны работать, а что бы генератор 1С заработал нужно приложить кодинг, бред. Юзаю данную функцию и не парюсь http://forum.infostart.ru/forum9/topic27839/message309401/#message309401 и кстати там очень много вариантов разных.

А если мне нужна последовательность от 1 до 100 без повторений и хаотичная, то мы просто создаем таблицу, первая колонка п/п, вторая генерация с помощью выше приведенной мной функции числа от 1 до 1000 допустим и потом сортируем по сгенерированному столбцу таблицу, вуаля последовательность без повторений и случайная (собственно у вас это то же сделано в примере...)
55. Ликреонский 201 24.01.18 16:01 Сейчас в теме
(54)
Там было всё просто - Randomize(N)

Я тоже пользовался такой функцией, но там приходилось предпринимать дополнительные действия, чтобы привести к нужному интервалу значений чисел. Пережить можно, но в ГенераторСлучайныхЧисел этим и соблазнительнее, поэтому раскрываю особенности его работы.
3. palsergeich 21.01.18 23:35 Сейчас в теме
Чуть чуть не в тему, но про особенность поведения Генератора случайных чисел в 1с, может быть кому то сэкономит время при похожей ситуации:
	Для Итер = 1 По 5 Цикл
		ГСЧ = Новый ГенераторСлучайныхЧисел;
		Реквизит1 = Реквизит1+ГСЧ.СлучайноеЧисло(1,5);
	КонецЦикла;

	ГСЧ = Новый ГенераторСлучайныхЧисел;
	Для Итер = 1 По 5 Цикл
		Реквизит2 = Реквизит2+ГСЧ.СлучайноеЧисло(1,5);
	КонецЦикла;

Причем то, что получается в случае Реквизит1 - очень бесит, когда генератор находится в отдельной функции - такая ситуация постоянна.
Воспроизводится с древних релизов 8.2 по последний релиз 8.3
Приходится генератор помещать как результат выполнения функции в модуль повторного использования\повторного использования на вызов.
Объясню как наткнулся, есть связь элементов один ко многим, Ввели некую аналитику и на момент запуска надо было имеющие данные псевдо-случайно более равномерно раскидать, я без задней мысли написал функцию выдачи случайного числа, и обработал связи, сказать что я был удивлен результату - ничего не сказать, а самое обидное что при обходе кода отладкой - не воспроизводится эта ситуация, без нее - воспроизводится.
Прикрепленные файлы:
4. CyberCerber 313 22.01.18 11:37 Сейчас в теме
(3) Поведение в первом примере абсолютно понятно. ГСЧ без параметров инициализируется, можно сказать, текущей миллисекундной. Т.к. цикл пробежал очень быстро, время не сменилось, то каждый раз ГСЧ иниц-ся одинаковым числом. А для одинаковых начальных чисел всегда будут одинаковые последовательности.
6. Ликреонский 201 22.01.18 12:04 Сейчас в теме
(4)Цикл очень быстро пробежит, если только генерация идет, при выводе в диаграмму проходит немало времени между итерациями.
В правы, кроме миллисекунд нужно перемешивать дополнительно, пропускать итерации, т.е. брать не каждое генерируемое число, а случайным образом делать выборку из последовательности.
Например, сгенерировали 10000 чисел, но выбрать из них только 1000.
Можно придумать еще много способов.
9. Perfolenta 22.01.18 15:31 Сейчас в теме
(3) вы просто не правильно им пользуетесь... генератор надо создать один раз и потом получить от него последовательность... не правильно создавать генератор для получения одного числа...
10. palsergeich 22.01.18 16:45 Сейчас в теме
(9) Если Вы внимательно прочитаете мое сообщение, то поймете причину возникновения и способ решения данной коллизии.
11. Perfolenta 22.01.18 17:36 Сейчас в теме
(10) да я только хотел сказать, что это не коллизия, а нормальное поведение генератора... даже в .Net то же самое...
5. acsent 1137 22.01.18 12:04 Сейчас в теме
Есть просто случайные числа. А есть "хорошие" случайные числа. Их используют, например, для случайного воспроизведения песен
https://habrahabr.ru/post/343482/
7. Ликреонский 201 22.01.18 12:09 Сейчас в теме
(5)Хорошая почва для размышлений. При случайном выборе песни нужно не забыть воспроизвести их все, это дополнительное условие. Такое не всегда требуется.
8. acsent 1137 22.01.18 15:17 Сейчас в теме
(7) Хорошесть там не в том чтобы все. ктож все 100 тыщ своих песен слушает за раз?
12. Vovan1975 14 22.01.18 17:49 Сейчас в теме
интересно, каким открытием для автора будет наличие криптографически стойких генераторов ПСЕВДО случайных чисел...
16. Ликреонский 201 22.01.18 21:27 Сейчас в теме
(12)Никаким, я про это знаю :)
13. cool.vlad4 45 22.01.18 19:03 Сейчас в теме
Зачем нужна случайная нумерация? Допустим мы выдаем нашим партнерам номера документов к сданному в ремонт оборудованию. Можно выдавать номера сквозной последовательной нумерации, но клиент, обладая одним номером может посмотреть как минимум соседние и зная интервал нумерации может просмотреть все документы. В приведенном примере это не ахти какой секрет, но бывает нужно сохранить в тайне информацию из других документов.

вот это непонятно. вроде нумерация должна быть уникальной в пределах заданной последовательности. случайные числа не гарантируют уникальность
14. cool.vlad4 45 22.01.18 19:05 Сейчас в теме
(13) для озвученной задачи подойдет кодирование, либо сопоставление номера некоему генерируемому токену, который также уникален
15. Ликреонский 201 22.01.18 21:26 Сейчас в теме
(13)Для случайных чисел достаточно проверить уникальность сгенерированного числа (про это есть в статье), при большом количество строк, достаточно воспользоваться индексом, если поле числовое, тогда проверка будет быстрой. Так же можно воспользоваться интервалами генерирования, чтоб не проверять индекс на всем количестве строк, и сократить время проверки уникальности при очень длинных последовательностях сгенерированных данных.
17. cool.vlad4 45 22.01.18 22:41 Сейчас в теме
(15) и зачем такие сложности?
20. Ликреонский 201 23.01.18 08:35 Сейчас в теме
(17)Токен тоже сложность. Программирование вообще непросто.
21. cool.vlad4 45 23.01.18 08:51 Сейчас в теме
(20) ок, я так завуалировал бредовый способ идентификации, ок?
23. Ликреонский 201 23.01.18 09:00 Сейчас в теме
(21)Могли не вуалировать, бред в комментариях у вас хорошо получается
24. cool.vlad4 45 23.01.18 09:07 Сейчас в теме
(23) ну да, чувак осиливший графики в офисных программах будет меня учить про сложность программирования и бред в комментариях, ты даже не соображаешь что пишешь. в том абзаце, "но клиент, обладая одним номером может посмотреть как минимум соседние" , и что мешает клиенту пробрутфорсить аналогично, получая только лишь случайные числа? ну я вежливо пытался намекнуть на бредовость написанного, но видимо вам тяжело дается думать, ну и как для человека написавшего на плюсах компоненту (в профиле) генерируюшую ПСЧ, мне просто смешно с вас
25. Ликреонский 201 23.01.18 09:46 Сейчас в теме
(24)
ты даже не соображаешь что пишешь. в том абзаце, "но клиент, обладая одним номером может посмотреть как минимум соседние"

Я думаю вы не соображаете или не хотите понять, чтоб написать гневный комментарий.
Статья не обязательна к прочтению для пользователей Инфостарта, у вас была возможность пройти мимо и не учить меня программированию.
26. cool.vlad4 45 23.01.18 11:27 Сейчас в теме
(25) мои комментарии не обязательны к прочтению, у вас была возможность пройти мимо и не писать херни...понять, что, то что вы вместо идентификаторов используете хреновый алгоритм генерации случайных чисел, якобы из-за того, что кто может додуматься прибавить 1 (а случайные числа видимо генерируют такие числа, которые не являются соседними для уже сгенерированных ранее когда либо sic!) программированию вас бесполезно учить
28. Ликреонский 201 23.01.18 11:57 Сейчас в теме
(26)Читаем тему, исследуется объект 1С и его качества, а ваши комментарии не в тему, бред и выпендреж.
31. cool.vlad4 45 23.01.18 12:05 Сейчас в теме
(28) ну да, все кто с тобой не согласен , это бред и выпендреж. выпендриваться ващет ты начал в комменте (20) но это было смешно в свете твоей достаточно нубской статьи
43. Ликреонский 201 23.01.18 12:35 Сейчас в теме
(31)В комменте (20) больная самооценка нашла выпендреж.
Вы предложили, то что к статье не относится, полный оффтоп.
Давайте предлагать клиентам код в виде 93247skdYUkslkcn838792, для проверки статуса рекламации. Я думаю он просто позвонит по телефону и спросит: "Ну, как там мое оборудование, уже отремонтировали?"
45. cool.vlad4 45 23.01.18 12:38 Сейчас в теме
(43) а давайте будем предлагать числа с большим интервалом, ага . 14153639478675186324759348759384756398 подойдет, да?
49. Ликреонский 201 23.01.18 12:48 Сейчас в теме
(45)По крайней мере нет разночтений в буквах.
46. cool.vlad4 45 23.01.18 12:40 Сейчас в теме
(43) ты мешаешь все в кучу. еще раз. проблемы доступа не решаются никакой нумерацией. рабоотает это так . клиент имеет номер(т.е. уже авторизовался в системе). пытается получить по нему информацию. смотрим, имеет ли он права на эту информацию. генерация тут ни при чем.
48. Ликреонский 201 23.01.18 12:48 Сейчас в теме
(46)Незачем создавать доступ для получения одного документа
27. cool.vlad4 45 23.01.18 11:32 Сейчас в теме
(25) ты на скрин блин посмотри свой - 715, 715, 716. ок, убираем твои идиотским алгоритмом повторы. внимание вопрос на миллион, 715 и 716 это соседние в твоей терминологии числа или нет?
29. Ликреонский 201 23.01.18 11:59 Сейчас в теме
(27)Для генерации не соседних чисел применяются дополнительные алгоритмы и увеличивается разброс, а скрины демонстрируют, что для этого случая это не подходит.
30. cool.vlad4 45 23.01.18 12:03 Сейчас в теме
(29) ну и что дает разброс в контексте вышеописанного случая? в чем проблема клиенту перебрать числа от 1 до 1000 и получить нужное? пример про клиента бред, а не мои комментарии
32. Ликреонский 201 23.01.18 12:13 Сейчас в теме
(30)
Делаем вывод: объект ГенераторСлучайныхЧисел может генерировать повторяющиеся числа.

Специально выделил в тексте, следующий абзац вы явно не читали, а если читали, то видимо не поняли, а теперь комментируете бред.
Я думаю в этом состоянии вы не способны понять, что написано в тексе, поэтому ваши комментарии именно бред.
33. cool.vlad4 45 23.01.18 12:15 Сейчас в теме
(32) млять причем здесь генераторслучайныхчисел. ты написал, цитирую:
Зачем нужна случайная нумерация? Допустим мы выдаем нашим партнерам номера документов к сданному в ремонт оборудованию. Можно выдавать номера сквозной последовательной нумерации, но клиент, обладая одним номером может посмотреть как минимум соседние и зная интервал нумерации может просмотреть все документы. В приведенном примере это не ахти какой секрет, но бывает нужно сохранить в тайне информацию из других документов.

ну и какой вывод мы можем сделать? что случайная нумерация это плод твоего воображения
34. Ликреонский 201 23.01.18 12:17 Сейчас в теме
(33)Вывод понятен из текста и только дебил это не понимает и несет бред.
36. cool.vlad4 45 23.01.18 12:20 Сейчас в теме
(34) еше раз, как твоя уникальность или не уникальность или что еще, спасет от того , что скрипт переберет диапазон чисел от 1 до миллиарда? ну скажи честно, что ты прикидывешься особенным
39. Ликреонский 201 23.01.18 12:25 Сейчас в теме
(36)Это особенно просто, ограничение скорости ввода чисел. Пароли тоже подбирают, однако с этим есть методы борьбы, причем широко известные. Большой, случайный номер документа в этом плане напоминает пароль, только для удобства задается исключительно знаками от 0 до 9.
35. cool.vlad4 45 23.01.18 12:17 Сейчас в теме
(33) ну вот и вопрос, как твоя случайная нумерация может спасти от того, что клиент может забрутфорсить другие числа. правильный ответ - никак. но нет, мы будем до последнего отстаивать собственный бред
37. Ликреонский 201 23.01.18 12:22 Сейчас в теме
(35)Повторяю, про последовательность написано, что она не подходит для целей сохранения секретности. Пример приведен неудачной генерации для этой цели.
Само собой, что для случайного номера будет генерироваться гораздо большие числа, с контролем неповторяемости и низкой вероятности соседних выпадений.
38. cool.vlad4 45 23.01.18 12:24 Сейчас в теме
(37) как спасет увеличение интервала от брутфорса? КАК? для машины перебрать все int32 и даже long проще простого за приемлимое время, программыст. какая нахрен секретность
40. Ликреонский 201 23.01.18 12:28 Сейчас в теме
(38)Кто даст перебирать все номера, сайт ограничивает скорость ввода, например 1 в секунду и тогда придется подбирать долго.
41. cool.vlad4 45 23.01.18 12:33 Сейчас в теме
(40) эээ, кому ты собрался ограничивать доступ, у тебя явно плохо с математикой. у тебя один клиент? почитай выше. у меня написано. за определенное время ты покроешь достаточной плотности числовое поле, чтобы программа напоролась пускай даже с твоими ограничениями (которые основываются на чем? на неверном вводе, так ведь? ) напоролась достаточно быстро на нужное число
47. Ликреонский 201 23.01.18 12:47 Сейчас в теме
(41)Во первых можно применять последовательность из 20 цифр, а не int32.
Во вторых, если на сервере будет активность по подбору чисел с миллиона адресов, то он просто ляжет или заблокируется от DDoS атаки.
Если секретность высокая, например коды из предоплаченных карт, но ничего не мешает к числам добавлять дополнительные символы или сильно увеличить разрядность.
Числа удобнее тем, то не возникает разночтений между "С" и "C".
По комбинаторике, если мы увеличиваем количество возможных символов, то увеличиваем основание для вариантов, а если увеличиваем разрядность то увеличиваем степень. Например:
Буквы английского алфавита и цифры, в основании получаем 36 и разрядов предполагаем 10 (36^10 = 3,6561584 × 10^15), или только числа, в основании и 20 разрядов (10^20). Второй вариант дает большее число.
44. cool.vlad4 45 23.01.18 12:36 Сейчас в теме
(37) пароли к твоему сведению для пользователей создаются именно из набора символа алфавита, таким образом что напороться на чужой пароль нереально, именно таким образом генерятся токены и идентификаторы. о чем я изначально и писал. учи комбинаторику. и это еще не все. учи механизмы аутентификации и авторизации, а то ты все в кучу
51. Ликреонский 201 23.01.18 12:51 Сейчас в теме
(44)Совет учи появляется когда кончаются аргументы, это не относится к спору. Я надеюсь что мы эмоции выплеснули и можем говорить конструктивно, поэтому предлагаю ограничится формулами и здравым смыслом,
22. cool.vlad4 45 23.01.18 08:54 Сейчас в теме
(20) про сложность программирования, это наверное прикол, в контексте вашей статьи
18. cool.vlad4 45 22.01.18 22:43 Сейчас в теме
для генерации самого идентификатора или уникального токена , наверное можно использовать случайное число, но первый раз слышу чтобы использовали само случайное число в качестве идентификатора, но да бог с ним, это я не по существу
19. cool.vlad4 45 22.01.18 22:50 Сейчас в теме
я кстати однажды делал случайные числа 1с-ом следующим образом, когда не мог использовать ВК (а ВК такая у меня есть) я заранее сгенерировал не 1С массив чисел и потом обычным 1С генератором использовал значения массива в качестве сида (опорных значений), повторений не было, хотя понятно что честным ГПСЧ это назвать сложно
Ликреонский; +1 Ответить
42. HAMMER_59 186 23.01.18 12:34 Сейчас в теме
"Генератор случайный чисел выдает одинаковые значения, да еще последовательно." Собственно - это один из тестов, который показывает, что человеческий мозг - плохой генератор случайных чисел. Тест в следующем: выдайте ряд случайных чисел со значениями от 1 до 6, как правило человек, помимо прочего выдает именно НЕ повторяющиеся значения, что не является правильным.

Хотите уникальный номер, есть ведь GUID - генерируйте на здоровье, зачем велосипед изобретать?
50. Ликреонский 201 23.01.18 12:49 Сейчас в теме
(42)Согласен, чаще всего для машинной обработки именно так и нужно делать, но человека GUID пугает.
52. Ликреонский 201 23.01.18 12:55 Сейчас в теме
Ийон Тихий
Предлагаю наше обсуждение перенести в одну ветку, сюда, и конструктивно предоставить наши аргументы
53. Ликреонский 201 23.01.18 12:59 Сейчас в теме
(52)Задача:
Клиенту некой организации выдать документ рекламации и дать уникальное число для отслеживания его статуса на сайте.
Или другой вариант, но чтоб по телефону не отвлекал людей от работы, и мог как можно раньше забрать свое оборудование из ремонта.

Ваше предложение.
56. palsergeich 25.01.18 11:35 Сейчас в теме
(53) не самое быстрое решение, но дающее уникальность:
Воспользуйтесь автонумератором специально для этого заведенного мусорного справочника. Я видел системы, которые так делают и нормально работают при больших нагрузках. Один минус - монотонное возрастание.
57. user902916 29.01.18 09:16 Сейчас в теме
добавлю в закладки интересно
Ликреонский; +1 Ответить
58. user916475 17.02.18 16:02 Сейчас в теме
очень познавательно, никогда об этом не задумывалась даже
Оставьте свое сообщение

См. также

Вам нравятся запросы в 1С? 13

Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования Разработка

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    8970    1    m-rv    73       

1С:Ассемблер. Немного летнего веселья! 283

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Разработка

Все вы, наверное, слышали, что 1С-ники жалуются на свою систему, считая язык 1С недостаточно низкоуровневым, скучным и т.п. Все они с тоской поглядывают в сторону "настоящих" языков программирования. Так вот, господа, они неправы. В системе 1С есть места, где можно размять программерский мозг и получить удовольствие от низкоуровневой техники. Предлагаю вам погрузиться в недра виртуальной машины 1С и понять, как она работает. Там есть свой "ассемблер" и мы попробуем его в действии!

1 стартмани

21.06.2019    12250    37    Evil Beaver    108       

Простые примеры сложных отчетов на СКД 245

Статья Программист Архив с данными v8 v8::СКД 1cv8.cf Абонемент ($m) Практика программирования

Подписи в отчете. Особенности соединения наборов: как соединить несоединяемое. Остатки на дату и обороты по месяцам в одном отчете. Курс валюты на каждую дату без группировок и соединений в запросе. Отчет с произвольными колонками и с произвольной последовательностью. "Неадекватный отчет".

1 стартмани

12.06.2019    11191    9    Hatson    22       

Безопасная работа с транзакциями во встроенном языке 183

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Разработка

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    13186    7    tormozit    35       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 509

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    24886    242    bonv    102       

Работа с публикациями "Инфостарт" 13

Инструменты и обработки Программист Архив с данными v8 УУ Абонемент ($m) Практика программирования О сообществе WEB

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    8120    10    RocKeR_13    12       

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 62

Инструменты и обработки Программист Бизнес-аналитик Приложение (apk) v8 Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    14650    23    informa1555    26       

Работа с данными выбора 38

Инструменты и обработки Программист Архив с данными v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    19591    13    kalyaka    15       

HTTP Сервисы: Путь к своему сервису. Часть 1 257

Статья Системный администратор Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Практика программирования WEB

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    34804    15    dsdred    22       

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") 105

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    18923    86    m-rv    57       

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному 236

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования БСП (Библиотека стандартных подсистем)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    26071    24    dsdred    34       

Как выполнить отчет на СКД через COM и получить данные отчета? 85

Статья Программист Архив с данными v8 УПП1 Россия Windows Абонемент ($m) Практика программирования

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    17148    10    wowik    3       

Работа со схемой запроса 170

Статья Программист Конфигурация (md, cf) v8 v8::Запросы Абонемент ($m) Инструментарий разработчика Практика программирования

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, - лучше воспользоваться объектной моделью запроса и использовать объект "Схема запроса". В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом "Схема запроса".

1 стартмани

24.04.2018    27075    71    kalyaka    34       

Заполняем по шаблону (по умолчанию) 68

Инструменты и обработки Программист Архив с данными v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования

Простой в подключении, универсальный и достаточно удобный механизм заполнения реквизитов произвольных документов/справочников значениями по умолчанию. Реализован в расширении, но может быть и непосредственно включен практически в любую конфигурацию на управляемых формах простым копированием одной формы и двух команд. Весь код в статье.

1 стартмани

08.02.2018    17359    20    mvxyz    17       

Каталог игр с приставок из моего детства 44

Отчеты и формы no Архив с данными v8 Windows Абонемент ($m) Игры

Каталог игр Dendy, Sega, Nintendo из нашего детства.

1 стартмани

06.02.2018    11655    56    user621724_Dimav1979    34       

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов 122

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    24227    61    rpgshnik    46       

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Печатные формы документов Практика программирования Универсальные функции

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    21337    21    agent00mouse    0       

Практика доступа в базу 1С через протокол oData. Чтение данных 275

Статья Системный администратор Программист Бизнес-аналитик Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Сервисные утилиты Практика программирования Администрирование данных 1С

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    54768    231    Dementor    42       

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП 26

Инструменты и обработки Программист Расширение (cfe) v8 БП3.0 Абонемент ($m) Практика программирования Универсальные печатные формы

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    17776    52    kwazi    6       

Простой бесплатный DashBoard с помощью http сервиса 256

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Практика программирования

Как создать свой DashBoard без дополнительных затрат и сложных технических доработок.

1 стартмани

25.11.2017    43351    58    dewersia    32       

Github и 1С. Пошаговая инструкция на конкретном примере 219

Статья Программист Архив с данными v8 Абонемент ($m) Математика и алгоритмы

Статья для тех, у кого есть неудержимое желание программировать и хочется доработать какую-то конфигурацию (или проект на 1С), выложенный на Github, но останавливают незнакомые слова Git, Github, Fork, Commit, Pull request, Merge, Issue.

1 стартмани

26.10.2017    34201    5    BlizD    51       

Макеты СКД 282

Статья Программист Внешний отчет (ert,erf) v8 v8::СКД 1cv8.cf Абонемент ($m) Практика программирования

Рассмотрены некоторые типовые задачи, которые решаются с помощью предопределенных макетов, а также перечислены несколько случаев, для которых макеты не подходят

1 стартмани

25.07.2017    67905    106    json    24       

Расширения конфигураций 1С: учимся перехватывать методы 110

Инструменты и обработки Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования

В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.

1 стартмани

30.05.2017    81623    14    signum2009    45       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 175

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    38282    166    DarkAn    86       

Сетевая игра "СловоБой" на управляемых формах 9

Отчеты и формы no Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Игры

СловоБой - это новый взгляд на ставшие уже классическими игры, где нужно составлять слова из букв, наподобие Балды и Эрудита. Играйте онлайн с друзьями! В игре СловоБой побеждает не тот, кто может придумать самое длинное слово, а тот, кто знаком с тактикой не понаслышке и способен использовать оптимальную стратегию.

1 стартмани

10.11.2016    15417    8    woldemarr    0       

Простой способ индексирования интервалов 181

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Практика программирования

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

1 стартмани

28.09.2016    31563    39    ildarovich    22       

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут 61

Инструменты и обработки Системный администратор Программист Компонента, плагин (dll, vbs,..) v8 Windows Абонемент ($m) Практика программирования

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    38009    35    Demanoidos    60       

Хранение файлов в томах на диске (для УПП 1.3) 76

Инструменты и обработки Программист Архив с данными v8 УПП1 Windows Абонемент ($m) Практика программирования

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    43394    4    wowik    27       

Остатки на каждый день в запросе 33

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf УУ Windows Учет ТМЦ Абонемент ($m) Практика программирования

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    33813    19    arakelyan    16       

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии 149

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Практика программирования

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    59914    132    igo1    49       

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом 28

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Практика программирования

При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать "Небольшой" запрос.

1 стартмани

03.03.2016    11902    1    Alexander.Shvets    5       

Простые радости жизни программиста 1С: выбор типа значения 51

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

Предлагаемая в работе обработка включает обычную и управляемую формы, которые максимально точно реализуют функциональность системного диалога выбора типа в толстом клиенте обычное приложение (включая оформление диалога). Эти формы имеют дополнительные интерфейсные удобства и могут быть использованы в качестве альтернативных диалогов выбора типа.

1 стартмани

17.02.2016    38473    45    yuraos    17       

Яндекс.Деньги "Благотворительность" 17

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Яндекс.Деньги теперь в 1С. Форма для приема благотворительных взносов. Форму легко сделать и вставить на любую страницу сайта или блога. Платежи будут приходить на ваш кошелек. На форме есть три способа платежа: из кошелька, с банковской карты, с баланса мобильного.

1 стартмани

16.02.2016    17002    9    Tatitutu    5       

Мастер рассылки e-mail 2.2 для управляемых форм 9

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m) Практика программирования Email

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    30332    20    milkers    4       

Нечеткий поиск одним запросом 37

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования

Использование механизма полнотекстового поиска в 1С не всегда оправдано, т.к. построение индекса и поддержание его в актуальном состоянии может значительно нагружать систему. Предлагаемая реализация нечеткого поиска методом N-грамм выполняется одним запросом, что позволяет производить поиск в любой таблице и не требует предварительного построения индекса.

1 стартмани

28.12.2015    18986    57    vasvl123    9       

Передача больших пакетов через веб-сервисы 137

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Абонемент ($m) Практика программирования Администрирование данных 1С Внешние источники данных

Реализация механизма передачи больших пакетов через веб-сервисы. С его помощью передать файл размером в несколько гигабайт не составит проблем.

1 стартмани

06.12.2015    40658    44    YPermitin    19       

Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram 242

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных

В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram. В данной статье рассмотрим следующее: Использование HTTPСоединение; Чтение JSON для версии 1С 8.3.6 и выше, а также аналог JSON для версии 1С ниже 8.3.6; Подключение обработчика ожидания; Некоторые основные возможности API Telegram; Как создать бота для Telegram; Программное создание колонок дерева на управляемой форме;

1 стартмани

19.11.2015    69315    417    Luchik    199       

Быстрое определение интервалов в запросе 177

Инструменты и обработки Программист Внешний отчет (ert,erf) v8 Абонемент ($m) Практика программирования

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    41656    32    ildarovich    41       

Полезные приемы при работе с Excel из 1С (Версия 3.1) 486

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    133774    444    Zerocl    60       

Javascript и 1С. Кросс-платформенное взаимодействие 268

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования

Что делать, если необходим богатый интерфейс, а управляемые формы нам его не могут обеспечить? Использовать HTML и JavaScript. В статье рассмотрено взаимодействие кода 1С и JavaScript, работающее на любой платформе: толстый, тонкий и веб-клиент, под Windows и Linux.

1 стартмани

14.09.2015    49877    186    VitaliyCeban    45       

Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I 10

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Практика программирования

Данный проект является чисто исследовательским примером использования Code First и Linq to EF на примере 1С версии 7.7. Так как сам я программист 1С, то мне всегда было интересно, как можно перенести модель объектов 1С на компилируемые языки, и использовать мощь Linq to EF. С появлением Code First давно хотел прикрутить, но все как-то руки не доходили, и вот, наконец ..

1 стартмани

28.08.2015    17873    4    Serginio    2       

Универсальная учетная система с конструктором документов и справочников в режиме 1С: Предприятие 95

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf УУ Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Заголовок статьи звучит фантастично, но это не шутка. Занимаясь внедрениями, я часто сталкивался с ситуацией, когда надо было к типовой конфе приделать простенький модуль учета чего-нибудь, не специфичного для самой конфы. Например в УТ учет материалов в эксплуатации. Модуль обычно состоял из пары справочников (2-3), 3-х документов и регистра или пары регистров. Однажды подобные пристройки понадобились одновременно на 3 проектах. Скучно делать одинаковую работу, и я подумал, а что, если сделать универсальный инструмент, в котором пользователь сам сможет нарисовать себе справочники, реквизиты к ним, документы и движения. Т.е. конструктор полноценных документов в пользовательском режиме. Это оказалось не так сложно - все дело в подходящей архитектуре данных.

1 стартмани

29.07.2015    25978    141    informa1555    39       

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 v8 1cv8.cf 1cv7.md Windows Абонемент ($m) Практика программирования Универсальные функции

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    21002    4    Serginio    1       

И снова "Как сжать картинки для экспорта в EXCEL?" или Умная картинка 8.2 14

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Загрузка и выгрузка в Excel

Прошла уже эпоха , когда экономили на трафике интернета. Но все же...повторюсь. Я предлагаю совершенно новый способ сжатия картинки - эффект в 20 раз !!!

1 стартмани

17.06.2015    22464    54    Tatitutu    10       

Подсистема "Планировщик" (версия 1.1) 138

Отчеты и формы no Конфигурация (md, cf) v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB Работа с интерфейсом

Конфигурация с подсистемой "Планировщик" (календарь). Бесплатная открытая версия для свободного использования не включает двустороннюю интеграцию с сервисом Google и Outlook.com.

5 стартмани

02.03.2015    55672    463    vandalsvq    62       

Регулярные выражения без COM объектов и внешних компонент 27

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Платформа до сих пор не поддерживает регулярные выражения, хотя они уже стали довольно востребованной возможностью в разных языках программирования. Использование COM объектов и внешних компонент имеет ограничения, поэтому предлагается вариант реализации ограниченного функционала на встроенном языке 1С.

1 стартмани

09.02.2015    20505    18    boogie    35       

Асинхронные вызовы 84

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования

В этой статье я покажу свою реализацию асинхронных вызовов серверных функций и процедур

1 стартмани

02.02.2015    33859    143    rtnm    25       

Разбор XML документа - почти все возможные способы 616

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Обмен через XML Практика программирования

К вам пришел XML документ, как получить из него данные для обработки в 1С. ЧтениеXML, ДокументDOM, XPath, ФабрикаXDTO, ПакетыXDTO в сравнении.

1 стартмани

05.11.2014    181940    657    svenderevsky    91