Преобразовать строку в гуид 1с
Почему нельзя упорядочить по ссылке, если в ней содержится дата создания?
Как уже было описано, guid изначально был придуман для РАСПРЕДЕЛЕННЫХ систем, в которых ПРОБЛЕМА УНИКАЛЬНОСТИ идентификаторов решена полным ОТКАЗОМ ОТ АВТОИНКРЕМЕНТА в пользу СЛУЧАЙНЫХ чисел и специальных техник. GUIDы случайны и неповторяемы по определению и в этом его достоинство и недостаток. Например, в предопределенных элементах и произвольных идентификаторах используется Random GUIDs (Version 4). В "типизированных" же Time-Based GUIDs (Version 1).
Можно ли вытащить время из гуида?
Можно. Но не нужно.
bdb62d89-cede-11e4-b12b-d4ae52b5e909
Алгоритм:
дата содержится в первых символах, bdb62d89-cede-11e4 которые нужно переставить задом наперед: 11e4-cede-bdb62d89
первый символ отбрасываем, убираем "лишние" знаки "-"(тире)
интервал в десятых долях микросекунд (HEX) получается равным: интервал16= 1E4CEDEBDB62D89
переводим его в десяничный интервал интервал10 = HexToDec(интервал16);
в результате получаем: интервал10 = 136 461 344 788 852 105
находим интервал в секундах: интервалСек = интервал10 / 10 000 000;
Делаем сдвиг даты от [3]
Почему части времени идут "задом-наперед"?
"Так сложилось" ;)
Например потому что guid'ы появились задолго до того, как до них добрались руки ietf и баз данных.
Или потому что платформа написана на C, а не на Java, а как мы знаем из асемблера архитектура x86 имеет little-endian byte order.
Или, как говорит википедия, использовалось 2 варианта: для передачи по сети "on-wire" "network" (big-endian) byte order, а для хранения "native" (little-endian) byte order.
В любом случая я не знаю как там было и можно только догадываться.
[2] [3]
Если отчет из одной конфигурации копипастой тащу в другую - ID сохранится его?(в моей его не было) (c) 2michael
Ответ: При копировании объекта из одной конфы в другую _копипастом_ внутренний гуид меняется!
НО: при сравнении объединении этого не видно!, так как происходит сопоставление по имени.
НО: это не касается и предопределённых данных! Если добавлять их вручную, а потом конфу разработки сравнить-объединить с боевой - возникнут дубли в справочнике!
В edt же есть режим сравнения только по guid.
При замене отчета в дереве конфигурации командой "Заменить на внешнюю обработку, отчет. " меняется ли внутренний идентификатор объекта (отчета)? (с) Pandoch upd:02.07.20
Ответ: Нет, гуид при замене из файла остаётся прежним
Другая вариация вопроса: Есть две разные конфы. Но в них есть одинаковый объект метаданных например документ "Покупка". Как можно получить внутренний идентификатор этого объекта в обеих базах, используемый в сравнении и объединении, чтобы удостовериться, что этот объект, не зависимо от имени, замениться, а не дублируется ? Как я понял ЗначениеВСтрокуВнутр() дает не тот ID который нужен мне.
При каждой выгрузке во внешний отчет/обработку guid генерируется заного. При загрузке из файла - востанавливается. Это позволяет хоть 10 раз выгрузить отчет/обработу во внешний файл, и каждый из этих файлов можно будет открыть параллельно в клиенте.
ЗначениеВСтрокуВнутр() выдает идентификатор прикладного типа, а не внутреннего объекта метаданных. Помимо внутреннего идентификатора у каждого объекта метаданных есть идентификаторы типов. Например ОтчетМенеджер.<Имя отчета> и ОтчетОбъект.<ИмяОтчета>:
Все типы имеют свои идентификаторы, но при загрузке через "Заменить на внешнюю обработку, отчет. " они, так же как и идентификатор метаданных, заменяются на текущие.
Например - загрузка в отчет ABCАнализПокупателей внешнего отчета ДебиторскаяЗадолжность.epf вызовет лишь добавление суффикса (такой отчет уже есть в конфигурации), а все идентификаторы остаются прежними.
Скрин до загрузки - после загрузки:
Идентификаторы не изменились.
Почему используется "перевернутый" формат UUID внутри 1с?
<Объект не найден> (26:80f408002771598b11e7a3f0a3a64c3b)
Не знаю. Знаю только что первая цифра соответствует имени таблицы в sql: Reference26 -> ВидыНоменклатуры
[1]
Есть же спецификация?
Есть.
Расшифровываю:
Timestamp - это 60-битное число, содержащее количество 100-наносекундных интервалов с 15 октября 1582 г.
Часть low обнуляется каждые 2^32 / 10^7 / 60
7 минут, часть mid через 1 год, часть hi сами представляете.
Version - старшие 4 бита в седьмом октете, содержат тип гуида.
0x0001 1 time-based version
0x0010 2 DCE Security version (POSIX UIDs)
0x0011 3 name-based version (MD5 hashing)
0x0100 4 randomly generated version
0x0101 5 name-based version (SHA-1 hashing)
Clock Sequence - используется чтобы избежать появления дубликатов, когда часы переводятся назад или меняется идентификатор узла. Если предыдущее значение счетчика известно - то увеличивается на единицу, иначе берется случайное число.
Node - содержит физический MAC-адрес сервера. Дада, проверьте ipconfig /all ;)
Примеры? Есть их у меня.
Мы же "программисты", накодим функции:
Проверим ссылку обычного документа:
Проверим ссылку, сформированную вручную:
Проверим работу счетчика "уникальности":
Можно даже так:
Какой мак-адрес у меня, вы уже знаете ;)
ps: под "упорядочить по ссылке" везде имеется ввиду сортировка в порядке создания ссылок и вообще в каком-либо порядке, отличном от сравнения в побитовом бинарном формате хранения бд.
Ну вот и все.
Надеюсь, теперь мысль о том, чтобы "упорядочить по ссылке", я из вас вытряхнул окончательно.
Ни для кого не секрет, что 1С 8 интерпретирует стандартный GUID в свой формат. Особенно при потере какого-либо документа выдается не нормальный GUID документа, а его внутреннее представление в 1С.
Данная утилита помогает конвертировать GUID, не загружая саму 1С.
Специальные предложения
// Преобразует ГУИД из формата 1С в формат SQL
Функция ГУИДдляSQL(Строка) Экспорт
Если ПустаяСтрока(Строка) Тогда
Возврат Строка;
КонецЕсли;
Результат = "";
Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, "-",""), "", "");
СтрокаПозиций = "23211917272531291315091101030507";
Для к = 0 По 15 Цикл
ИсхПозиция = Число(Сред(СтрокаПозиций, к*2+1,2));
Результат = Результат + Сред(Строка, ИсхПозиция, 2);
КонецЦикла;
Возврат Врег(Сред(Результат, 1, 8)+"-"+Сред(Результат, 9, 4)+"-"+Сред(Результат, 13, 4)+"-"+Сред(Результат, 17, 4)+"-"+Сред(Результат, 21, 12));
// Преобразует ГУИД из формата SQL в формат 1С
Функция ГУИДдля1С(Строка) Экспорт
Если ПустаяСтрока(Строка) Тогда
Возврат Строка;
КонецЕсли;
Результат = "";
Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, "-",""), "", "");
СтрокаПозиций = "25272931212317190705030111091513";
Для к = 0 По 15 Цикл
ИсхПозиция = Число(Сред(СтрокаПозиций, к*2+1,2));
Результат = Результат + Сред(Строка, ИсхПозиция, 2);
КонецЦикла;
Возврат Врег(Сред(Результат, 1, 8)+"-"+Сред(Результат, 9, 4)+"-"+Сред(Результат, 13, 4)+"-"+Сред(Результат, 17, 4)+"-"+Сред(Результат, 21, 12));
КонецФункции
можно было попроще) надо же просто кусочки ключа в определенном порядке переставить)
гуид = Строка(докссылка.УникальныйИдентификатор());
Для й = 1 по СтрЧислоВхождений(гуид,"-") Цикл
гуид = СтрЗаменить(гуид,"-", Символы.ПС);
КонецЦикла;
скульныйгуид = "0x" + СтрПолучитьСтроку(гуид,4) + СтрПолучитьСтроку(гуид,5) + СтрПолучитьСтроку(гуид,3) + СтрПолучитьСтроку(гуид,2) + СтрПолучитьСтроку(гуид,1);
да можно. Вариантов кучу уже предложили.
Но нужно было не загружая 1С :) В sql гуид имеет такой вид 0x91300bd4a49e7db34be9ba7f2c1bf3ee, всегда начинается с 0x . А эти функции ни чего такого не делают. И кроме того они возвращают нечто с дефисами, а в моем примере дефиса нет. Объясните пожалуйста как искать гуид в 1с есль есть гуид sql вида 0x91300bd4a49e7db34be9ba7f2c1bf3ee?
Просмотры 19534
Загрузки 134
Рейтинг 11
Создание 07.08.10 15:30
Обновление 02.07.21 13:40
№ Публикации 73917
Тип файла Приложение (exe)
Конфигурация Конфигурации 1cv8
Операционная система Windows
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
См. также
Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо
Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю.
1 стартмани
01.09.2012 66889 1378 AnryMc 46
Базоскоп
Базоскоп - это универсальный просмотрщик базы 1С. От консоли запросов он отличается тем, что "понимает" метаданные. У него к тому же более простой интерфейс и еще несколько дополнительных фич.
1 стартмани
06.08.2021 5387 28 mkalimulin 74
Диалог выбора файлов/каталогов на сервере
Эмуляция привычного диалога ОС для работы с файловой системой сервера 1С.
1 стартмани
29.06.2021 4651 2 Yashazz 14
DT2CF - Экстрактор конфигурации из дампа информационной базы
Инструмент для извлечения файла конфигурации из файла резервной копии информационной базы (без использования платформы).
10 стартмани
21.12.2020 4566 8 SerVer1C 5
Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек. Промо
Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.
1 стартмани
04.11.2018 54206 533 Eugen-S 35
Создание *.dt файла из рабочей базы на сервере 1С без завершения работы пользователей
Предлагаемая обработка создает *.dt файл (выгрузку ИБ) из рабочей базы на сервере 1С:Предприятие 8.3 без завершения работы пользователей.
1 стартмани
19.01.2020 19580 98 Sedaiko 20
Командный интерпретатор для 1С
Инструмент для выполнения команд CMD / PowerShell из 1С.
2 стартмани
15.11.2019 18618 35 YPermitin 41
Удаление неактивных и повторно запущенных пользователем сеансов - обработкой в фоне или внешней обработкой
1 стартмани
13.11.2019 7358 19 IVC_goal 11
Блин, мы забыли включить регламентные задания… Промо
Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию. В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.
1 стартмани
08.04.2019 25185 19 slozhenikin_com 37
Закрытие незавершенных сеансов
Как удалять потерянные сеансы пользователей, чтобы они не мешали работе. Обработка протестирована на платформе версии 8.3.13.1644.
1 стартмани
20.09.2019 28333 103 AnatolPopov 12
Сканер ключей 1С
Определяет время отклика ключа защиты 1С.
1 стартмани
13.09.2019 11002 16 sivin-alexey 2
Мониторинг потребления ресурсов базами кластеров сервера
Обработка позволяет, в графической форме, производить мониторинг потребляемых ресурсов базами данных кластера сервера 1с для платформ 8.3, 8.2. Обработка работает на платформе не ниже 8.3.6
2 стартмани
17.07.2019 13368 53 IVC_goal 34
Легкое и гибкое управление списком доступных баз 1С у пользователей Промо
Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.
7 стартмани
05.12.2018 22023 22 RomikR 9
CFU-reader (версия 2.6).
3 стартмани
21.06.2019 11802 32 vandalsvq 9
DBManager для 1C
Менеджер баз данных для 1С с расширенными возможностями.
1 стартмани
11.05.2019 15648 27 seriouskeks 13
Bash-скрипт для установки 1С:Предприятие 8.3 и СУБД PostgreSQL на сервер CentOS 7
Данный скрипт позволяет полностью установить сервер 1С и СУБД PostgreSQL на одном хосте. Потом это же скрипт можно использовать для обновление платформы и дистрибутивов установки
1 стартмани
07.04.2019 20441 50 Sedaiko 31
1 стартмани
18.08.2014 47743 26 Demonobond 34
Утилита для регистрации ComConnector и консоли администрирования сервером по установленным версиям платформы
Утилита для разработчиков и пользователей с большим количеством установленных платформ 1С, для быстрой регистрации необходимых версий COMConnector и консоли администрирования серверов из одного места.
1 стартмани
20.03.2019 12388 38 vardeg 10
Сценарии пакетного режима
Сценарии пакетного режима. Тестировалось на 1С:Предприятие 8.3.13.1690. Автоматическое создание команд пакетного режима. Создание, хранение и запуск сценариев команд пакетного режима.
1 стартмани
06.03.2019 11441 11 lastpioneer 11
LicDataDecoder - расшифровка файла программной лицензии 1С
Представляю вашему вниманию утилиту, предназначенную для работы с файлами программных лицензий 1С (*.lic).
1 стартмани
10.02.2019 50809 428 GeraltSnow 62
V8 Viewer. Открытие и сравнение внешних обработок в Проводнике + исходники Промо
Вы хотите получить возможность быстро посмотреть содержимое внешнего отчета или обработки? А сравнить ее с другой? И все это без запуска 1С:Предприятия, только из оболочки ОС? Тогда мы идем к вам! :) В конце заметки - ссылка на исходники.
2 стартмани
06.03.2013 72974 714 Evil Beaver 159
Удобная консоль регламентных и фоновых заданий
1 стартмани
06.02.2019 22210 211 Alxby 20
Универсальный монитор лицензий 1С
Хотите узнать, какие программные лицензии установлены на сервере и все их технические подробности? А может быть, вам нужна информация по использованию всех видов лицензий кластера? Нет ничего проще, читай далее, чтобы быть в курсе!
3 стартмани
03.01.2019 49169 449 Xershi 81
Скрипт обновления конфигурации
Как обновить конфигурацию базы? Столько всего сделать надо: И базу заблокировать, и пользователей выгнать. А ещё надо дождаться загрузки конфигурации и после этого применить её. Если же конфигурация на БСП, то запустить с ключом /C ЗапуститьОбновлениеИнформационнойБазы. И только потом можно пускать пользователей. А ещё на каждом этапе надо ждать окончания предыдущего. Это скучно. Давайте заливать конфигурацию в базы весело!
1 стартмани
11.12.2018 16649 62 MrWonder 24
Быстрое удаление неиспользуемых версий 1С:Предприятие 8, кэша метаданных и информационных баз Промо
При обновлении платформы 1С:Предприятие 8 предыдущие версии не удаляются. Со временем количество неиспользуемых версий платформы растет. Они занимают место на диске. Для решения этой проблемы предназначена программа OneCleaner. Она позволяет быстро удалить неиспользуемые версии платформы, а также почистить кэш метаданных и удалить ненужные информационные базы данных.
1 стартмани
14.11.2017 29079 96 bonv 15
Чистка кэша 1С (теперь в .exe)
Попробуйте поискать в интернете "Очистить кэш 1С". Практически везде вы наткнетесь на всякие батники, ps-скрипты, рекомендации зайти и удалить вручную, поставить /ClearCache для баз на УФ и т.д. В подавляющем большинстве случаев предлагается бездумно удалить все содержимое \Roaming\1C\1cv8\ и \Local\1C\1cv8\, но это как переустановить Windows, чтобы почистить Temp.
1 стартмани
18.11.2018 21884 111 riposte 43
Bluetooth сканер штрихкодов и мобильное приложение 1С (Android)
Сервис для работы со сканером штрихкодов и передачи данных в мобильное приложение 1С.
1 стартмани
06.11.2018 25364 80 Isonic 23
Обнаружено нарушение целостности системы
Ошибка «Обнаружено нарушение целостности системы», причины и варианты устранения ошибки.
1 стартмани
03.10.2018 213037 1027 Palmer1976 71
Очистка регистров накопления, сведений, расчета или бухгалтерии Промо
Очистка регистров накопления, сведений, расчета или бухгалтерии (обычная и управляемая форма)
2 стартмани
25.12.2009 69475 1241 sebe 20
1С:Коммандер (УФ)
Коммандер для просмотра файлов на клиенте и сервере.
2 стартмани
07.09.2018 12834 24 Student1C 13
Отображение регламентных заданий на планировщике времени
Расширение к типовой обработке Регламентные и фоновые задания, которое позволяет визуально управлять расписанием регламентных заданий.
1 стартмани
29.08.2018 6468 20 akimych 9
1C + Arduino + сканер отпечатков пальцев + RFID считыватель
Связываем 1C, Arduino, сканер отпечатков пальцев и RFID считыватель для системы учёта рабочего времени или пропускной системы.
1 стартмани
21.08.2018 30958 16 DGorgoN 39
Автокликер для 1С Промо
Внешняя обработка, запускаемая в обычном (неуправляемом) режиме для автоматизации действий пользователя (кликер). ActiveX компонента, используемая в обработке, получает события от клавиатуры и мыши по всей области экрана в любом приложении и транслирует их в 1С, получает информацию о процессах, текущем активном приложении, выбранном языке в текущем приложении, умеет сохранять снимки произвольной области экрана, активных окон, буфера обмена, а также, в режиме воспроизведения умеет активировать описанные выше события. Все методы и свойства компоненты доступны при непосредственной интеграции в 1С. Примеры обращения к компоненте представлены в открытом коде обработки.
1 стартмани
03.04.2017 36990 82 slava_1c 67
Универсальная консоль администрирования
Универсальная консоль администрирования. Работает с сервером 1С 8.3 любой версии. Для любителей зоопарков. :-)
1 стартмани
14.06.2018 14498 36 berezdetsky 7
Менеджер баз 1С (пакетное обновление, выполнение произвольного кода и многое другое)
Данная разработка пригодится системным администраторам для группового выполнения действий над базами данных 1С.
10 стартмани
21.11.2017 19526 38 Termokrator 12
V8 Log Scanner - утилита для быстрого парсинга логов ТЖ
Как можно быстро настраивать logcfg.xml и парсить логи технологического журнала с помощью самописной open-source утилиты V8LogScanner. Без необходимости погружаться в регулярные выражения.
1 стартмани
07.11.2017 25096 5 ripreal1 27
Универсальный редактор реквизитов объектов. Мультиобработчик Промо
Constantus --> ConstantusИмеется некий отчет СКД, который получает данные
1. 62eb77f6-0bf6-4ba3-84e9-8751e13ee027 - уникальный код как СТРОКА
2. 62eb77f6-0bf6-4ba3-84e9-8751e13ee027 - как "УникальныйИдентификатор"
Как видно визуально значения одинаковы, но типы разные. Имеется ли возможность сравнить эти два типа и сделать вывод, что эти значения одинаковы или нет?
Т.е. сравнивать в СКД УникальныйИдентификатор и СТРОКУ?
Vofka --> VofkaДля сравнения строка должна быть ограниченной длины
Правильно поставленный вопрос содержит до 90% ответа. Vofka --> Vofka
.
- Возьмем, например, 1000, или для ровного счета 1024. Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". Vofka --> Vofka
Все верно, 36. 32 значимых и 4 для дефизов. Я тоже за то, чтобы считать точно Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". Constantus --> Constantus
Попробую уточнить задачу, сейчас подробности вышли (как всегда до последнего в тайне держат
Есть Заказ, в его ТЧ есть реквизит "КлючСтроки" как уникальный индентификатор
Имеется регистр накопления, "Итоги", там имеются данные с регистром "КлючСтроки", но как СТРОКА.
Требуется объединить (левое объединение) ТЧ Заказа и этого РН "Итоги" по реквизиту "КлючСтроки" один из которых уникальный индентификатор (ТЧ Заказа) другой СТРОКА из регистра накопления.
Как в СКД сделать подобное объединение?
Ни для кого не секрет, что 1С 8 интерпретирует стандартный GUID в свой формат. Особенно при потере какого-либо документа выдается не нормальный GUID документа, а его внутреннее представление в 1С.
Данная утилита помогает конвертировать GUID, не загружая саму 1С.
Специальные предложения
// Преобразует ГУИД из формата 1С в формат SQL
Функция ГУИДдляSQL(Строка) Экспорт
Если ПустаяСтрока(Строка) Тогда
Возврат Строка;
КонецЕсли;
Результат = "";
Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, "-",""), "", "");
СтрокаПозиций = "23211917272531291315091101030507";
Для к = 0 По 15 Цикл
ИсхПозиция = Число(Сред(СтрокаПозиций, к*2+1,2));
Результат = Результат + Сред(Строка, ИсхПозиция, 2);
КонецЦикла;
Возврат Врег(Сред(Результат, 1, 8)+"-"+Сред(Результат, 9, 4)+"-"+Сред(Результат, 13, 4)+"-"+Сред(Результат, 17, 4)+"-"+Сред(Результат, 21, 12));
// Преобразует ГУИД из формата SQL в формат 1С
Функция ГУИДдля1С(Строка) Экспорт
Если ПустаяСтрока(Строка) Тогда
Возврат Строка;
КонецЕсли;
Результат = "";
Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, "-",""), "", "");
СтрокаПозиций = "25272931212317190705030111091513";
Для к = 0 По 15 Цикл
ИсхПозиция = Число(Сред(СтрокаПозиций, к*2+1,2));
Результат = Результат + Сред(Строка, ИсхПозиция, 2);
КонецЦикла;
Возврат Врег(Сред(Результат, 1, 8)+"-"+Сред(Результат, 9, 4)+"-"+Сред(Результат, 13, 4)+"-"+Сред(Результат, 17, 4)+"-"+Сред(Результат, 21, 12));
КонецФункции
Читайте также: