#0
by Mr_Best
Доброго времени коллеги ! Необходимо преобразовать ГУИД в число и обратно, нашел эту ветку В самом конце есть две функцию, делающие желанные мной вычисления. Но они не работают из "коробки", так как авто забыл приложить дополнительные нестандартные функции. А именно: Первые две я заменил функциями вот отсюда: Что эта функция должна делать не могу догадаться ! Может кто знает ? Может Гений 1С скинет недостающие ?
#3
by Torquader
Что такое ГУИД - это 16 байт. Как перевести 16 байт в число - очень просто - вывести как десятичное число путём деления на 10 с остатком, рассматривая как очень длинное целое. В 1С с этим не должно быть проблем, так как для 1С очень длинные целые могут быть и более 16 байт.
#4
by h-sp
вы добавляйте ноль в короткие строки, если строка уже 32 символа, добавлять ноль не нужно.
#8
by Mr_Best
цель простая. У справочника есть реквизит МетаКод, принимающий значение например от 0 до 99. При записи справочника его необхожимо рассчитать по формуле х mod 99, где первые две цифры после нуля будет искомое значение. Таким образом числа 50, 150, 250 и т.д. до хуллиардов будут иметь МетаКод 50, другими словами каждый 50-тый. Используется для многопоточного обменна данными, где 99 количество потоков, а 50 номер потока который отправит эту регистрацию данных.
#11
by Cyberhawk
Для многопоточности хранить маркировку объектов в базе не нужно, что-то ты перемудрил. Ну или поясни, зачем хранить маркеры в базе
#12
by Mr_Best
кому чушь, кому скорость в на порядок выше пры выгрузки, но мы же 1сники, о какой это скрости я тут задумался ?
#13
by Mr_Best
транспорт обмена http для общего понимания. При записи справочника создается запись в справонике регистраций, у которого есть числовой код, имя метаданных, ссылка на отправляемый элемент и признак что объект был физически удален. По коду определяется порядок отправки, но при делении на например два потока цепочку изменений одного объекта нужно целиком отнести в один поток, тут мне и поможет метаКод.
#15
by Mr_Best
вообще то вы правы, я планировал держать всегда один, но на принимающей стороне тоже этот объект может быть изменен, при разраве связи и отказа онлайн обмена, возможно прийдется решать коллизию, тут это и пригодится.
#17
by EugeniaK
А при чем тут вообще ГУИД? Присваивай рандомное число от 1 до 50ти. Выборка ровнее будет.
#18
by Cyberhawk
Даже если нужно выгружать историю состояний объекта, то не ясно, почему не хватает ссылки на объект БД в твоем отдельном справочнике и зачем маркировать сам объект БД...
#19
by Mr_Best
вариант ))) раз выгрузка равномернее будет, тогда так и надо сделать. объект баз данных не маркируется, маркируется его регистрация, по одной лишь ссылке невозможно определить диапазон потоков, нужно преобразовать сначала в число. А если в про то, что по ссылке в момент отправки можно все рассчитать, то тут все просто, упадет производительность. Я добился увеличения скорости обмена по тестам в 10 раз ! И эта цифра ограничена в том числе количеством потоков и может быть быстрее, все зависит от свободных ресурсов. Код должен быть написан так, что бы "вся нагрузка" была полезной, вот и заморачиваюсь с математикой.
#22
by Mr_Best
я тоже на это подумал, потому что если у гуида убрать "-" и получившееся 16-ти разрядное число конвернуть в 10 и обратно в 16, результат разнится. Остается тогда вопрос, как у Гения 1С это работает по ссылке
#25
by Кирпич
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 340 282 366 920 938 463 463 374 607 431 768 211 455
#32
by Mr_Best
Это код (функции из ссылки выше): Ш1 = СтрЗаменить(Строка(РезультатЗапроса[0].UUID), "-", ""); Это результат: 232d9a88a53011e694cdd43d7e023fd3 46 686 852 211 343 832 774 667 430 018 811 047 667 231F8F87F53010F693EEF42F6F022EF3
#40
by Mr_Best
Если это баг платформы, то в моей копилке это будет четвертый который я смогу легко воспроизвести :)
#48
by Mr_Best
Создал новую обработку и на другой базе проверил, в обработке одна команда и код формы: &AtServer Функция Из_10_В_Любую(Знач Значение=0,Нотация=16) Экспорт Функция Из_Любой_В_10(Знач Значение="0",Нотация=16) Экспорт Результат: 4e090376-0710-43d2-9609-c398fa23caa9 5 491 141 155 062 634 646 918 224 854 143 808 955 412 217 3F090375F070FF42F1F9608EF397EF22EEF9
#54
by Кирпич
в 1с не все функции с большими числами работают. я даже ВК делал одному умному чуваку, который чота вычислял большое на 1с и у него не работала функция Exp
#55
by Mr_Best
Полный проверенный код, честно слизанный с статей из топика и собранный в кучу: КонецФункции
#58
by Chikko
На тему случайно наткнулся, мб кому в будущем поможет: в ут11 функции "ЧисловойКодПоСсылке" и "ПолучитьСсылкуПоШтрихкодуТабличногоДокумента" делают то что нужно. (типовой текст, думаю, копипастить не нужно)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Конвертация данных, ошибка при проведении документа.
- Отражение ЗП в БУ(ЗУП 3-БП 3), нужна методичка по дГПХ
- Процессор для программиста 1С
- Ошибки при расчете себестоимости КА 2.2
- Полная выемка после закрытия смены Розница 2.2
- Печать ценников в 1С 8.2
- Комиссия банка при УСН в КА 1.1.
- Внешняя печатная форма для УПП 1.3
- v7: Как выгрузить из ТИС7.7 987 товары с ценами на сайт. Хотя бы на 1с Битрикс
- Как админить windows server без рабочего стола?
- Какие права доступа должны быть на Присоединенные файлы?
- УПП 1.3 не копируются документы
- Второй язык для программиста 1С
- Тонкий клиент, управляемые формы, Табличный документ
- Как в СКД по условие можно не выводить заголовок и шапку отчета?
- ЗУП ред. 2.5. Как работает список задач (Мои задачи)?
- БП 2.0 после обновления платформы и конфигурации не растягиваются элементы
- СКД остатки на начало и конец периода
- Зуп 2.5. Подарки для сотрудников
- РМК Кассира Розница 2.2 - оптимизация процесса