Имя: Пароль:
1C
1С v8
Что это за формат и как его прочитать?
0 Euroset1
 
16.12.18
03:53
В этом формате скрытые модули (запароленные). В этом формате старый журнал регистрации. В этом формате какие-то структуры данных, из которых я выдрал кусок ниже. Что это? Сохраненный результат сериализации или что-то еще?
Просто мне нужно нечто подобное прочитать, чтобы потом работать как с объектом. А раз так, то может кто-то знает, как это сделать, не придумывая велосипед?


{"#",51e7a0d2-530b-11d4-b98a-008048da3034,
{1144,
{"#",4238019d-7e49-4fc9-91db-b6b951d5cf8e,
{4,
{
{"S","Номенклатура"},
{"#",4b1b49cb-5430-4f80-9818-a1cef1b3d410,116:80e1b083fee00c3a11e80a59363dac8d}
},
{
{"S","Организация"},
{"#",a1af1af2-f26f-40c9-a516-a66ff64531ed,124:80ddb083fee00c3a11e7fc5ef3a165cf}
},
{
{"S","СтруктурнаяЕдиница"},
{"#",2690b154-7e54-4c58-a3d7-fcb8ae5b5bdb,194:80ddb083fee00c3a11e7fc5205921874}
},
1 youalex
 
16.12.18
03:55
я бы попробовал ЗначениеИзСтрокиВнутр()
2 Злопчинский
 
16.12.18
05:29
(1) присоединяюсь
3 MSOliver
 
16.12.18
06:59
ЭТО Сериализация
4 Euroset1
 
20.12.18
02:31
Ну как я понял, после решетки всегда идет гуид типа, а далее идет непосредственное значение. И внутри значения уже, если это коллекция, идет еще и размер, а за ним элементы.

А если нужно например прочитать байт-код или старый 8.2 журнал регистрации, то вылезает ошибка формата потока. Что, только парсить остается?
5 Chameleon1980
 
20.12.18
04:21
начнем так:

ты где это взял?

может - отнеси назад? :)
6 Мыш
 
20.12.18
08:44
Структуры, массивы, коллекции данных.
7 Euroset1
 
20.12.18
08:57
(5) У себя же и взял. Купленная конфа - закрытый модуль оттуда. Алгоритм декодирования понятен, но парсить влом (быстродействие заведомо ниже). Журналы регистрации 8.2 один в один тот же формат. А кусок приведенного примера - это случайно найденный в закромах файлик, который и натолкнул на мысль типа "а может это можно и не парсить вовсе".

Но увы, пока что убиделся, что ЗначениеВСтрокуВнутр любой даже массив или структуру записывает с указанием типа через решетку. А ноунейм коллекции как в байт-коде или журнале регистрации ЗначениеИзСтрокиВнутр читать не хочет...
8 Мыш
 
20.12.18
09:09
(7) Только парсить. Специально предусмотренных методов - нет.
9 hhhh
 
20.12.18
09:09
(7) если всё официально куплено, зачем тогда декодировать закрытые модули.

К тому же если ты знаешь что делает модуль, проще и дешевле написать свой такой же, а закрытый выбросить.
10 Chameleon1980
 
20.12.18
09:15
XDTO со ссылками :)
11 Serg_1960
 
модератор
20.12.18
09:17
Предупреждение:
4. Не публикуйте алгоритмы взлома и ссылки на такие алгоритмы, а также всевозможные "патчи", "крэки", "эмуляторы", "серийные номера", "коды активации" и т.д.
13 Базис
 
naïve
20.12.18
09:23
Публикации тут нет. Исследование - есть, это нужно для понимания устройства и написания правильного (быстрого и лёгкого) кода.

В GUID внутри одной базы всегда есть повторяющийся фрагмент, идентификатор базы. У разных элементов одного справочника и фрагмент, обозначающий этот справочник, одинаковый.
Здесь же не нашёл глазами ни одного повторяющегося фрагмента.
14 Мыш
 
20.12.18
09:25
(13) 80ddb083fee00c3a11e7fc
15 Serg_1960
 
20.12.18
09:27
(13) Да ради бога, обсуждайте что хотите, но только не тему "Как декодировать закрытый модуль" - это нарушение авторского права.
16 novichok79
 
20.12.18
09:27
а чего сообщение то потерли?
так то ясно что если там написано Организация, то это скорее всего ссылка на организацию. берешь, получаешь GUID Организации, можно еще посмотреть как в Ref полях в SQL этот GUID записывается и сравнивать со значениями в полях структуры (мне почему-то кажется, что это - структура)
17 Мыш
 
20.12.18
09:28
(16) Не, скорее соответствие. Оно же "Map". Ключи не строковые )
18 novichok79
 
20.12.18
09:29
и да, повторю еще раз, я не верю, что человек, который работает в 1С 8 лет, ни разу не видел подобных коллекций!
19 Serg_1960
 
20.12.18
09:30
(16) Согласно правила "Не переходить на личности."
20 ptiz
 
20.12.18
09:31
(4) Непонятно, что у тебя за проблемы.
Текст - чистое ЗначениеВСтрокуВнутр.
Конкретно этот пример: массив, содержащий 1144 элементов, а первый из них - структура (дальше не видно).
21 Мыш
 
20.12.18
09:31
(18) Можешь не верить, но это норма (цы)
22 novichok79
 
20.12.18
09:32
(19) не, ну тогда надо половину форума подтереть. тут постоянно переходят на личности.
23 novichok79
 
20.12.18
09:35
(21) имхается мне, что это какая-то дичь. на ИС даже был парсер подобных коллекций, мне кажется. там чувак правил настройки СКД кажется.
24 Мыш
 
20.12.18
09:35
(22) Ну как маленький. Всех перевешать нереально, а периодический показательный расстрел устроить - полезно. )
25 Serg_1960
 
20.12.18
09:36
(18) "Специалист подобен флюсу: полнота его односторонняя"(цы)

(имхо) На форуме постоянно возникают вопросы по РИБ. Как по мне, - так эта тема проще паренной репы :) Но есть много тех, кто с Распределенными Информационными Базами не сталкивался в своей практике и имеет только чисто теоретические представления об этом далёкие от практики реализации в типовых конфигурациях.
26 novichok79
 
20.12.18
09:36
(24) у меня обычная пессимистичная логика - либо все, либо ничего.
27 Мыш
 
20.12.18
09:37
(26) Обычный юношеский максимализм
28 novichok79
 
20.12.18
09:38
(27) ко-ко-ко...
29 Serg_1960
 
20.12.18
09:39
(26) Намекаю: Вы опасно близко к нарушению правила №8. Вернитесь к теме автора.
30 novichok79
 
20.12.18
09:40
(29) ок
31 novichok79
 
20.12.18
09:41
накопрокодил вот такое:

    Карта = Новый Соответствие;
    
    Карта.Вставить("Номенклатура", Объект.Номенклатура);
    Карта.Вставить("Организация", Объект.Организация);
    Карта.Вставить("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница);

    КартаТекст = ЗначениеВСтрокуВнутр(Карта);
    
    Словарь = Новый Структура;
    
    Словарь.Вставить("Номенклатура", Объект.Номенклатура);
    Словарь.Вставить("Организация", Объект.Организация);
    Словарь.Вставить("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница);

    СловарьТекст = ЗначениеВСтрокуВнутр(Словарь);
32 novichok79
 
20.12.18
09:41
КартаТекст =
{"#",3d48feae-a9c6-4c5a-a099-9eb6477630c6,
{3,
{
{"S","Номенклатура"},
{"#",190a7469-3325-4d33-b5ec-28a63ac83b06,215:af150015e9b8c48d11e050911643ef2e}
},
{
{"S","Организация"},
{"#",55adb97e-a84e-453e-8020-7665bb2abdef,230:8e500050568b35ac11e7fac34c095da9}
},
{
{"S","СтруктурнаяЕдиница"},
{"#",7632c6fe-8cac-4d68-a50a-5714e18b1fec,42:8e500050568b35ac11e7fc56d018d71c}
}
}
}
33 novichok79
 
20.12.18
09:42
СловарьТекст =
{"#",4238019d-7e49-4fc9-91db-b6b951d5cf8e,
{3,
{
{"S","Номенклатура"},
{"#",190a7469-3325-4d33-b5ec-28a63ac83b06,215:af150015e9b8c48d11e050911643ef2e}
},
{
{"S","Организация"},
{"#",55adb97e-a84e-453e-8020-7665bb2abdef,230:8e500050568b35ac11e7fac34c095da9}
},
{
{"S","СтруктурнаяЕдиница"},
{"#",7632c6fe-8cac-4d68-a50a-5714e18b1fec,42:8e500050568b35ac11e7fc56d018d71c}
}
}
}
34 novichok79
 
20.12.18
09:43
ха, прикольно. они ничем не отличаются кроме UID типа. 1С, почему вы не напишите уже наконец платформенную функцию СоответствиеВСтруктуру и наоборот?
35 Tonik992
 
20.12.18
09:43
(15) Уточнить.
Закрытие кода автоматически присваивает коду статус "авторское право" ?
36 novichok79
 
20.12.18
09:47
(0) имхается мне, что это у тя массив структур.

Словарь = Новый Структура;
  
Словарь.Вставить("Номенклатура", Объект.Номенклатура);
Словарь.Вставить("Организация", Объект.Организация);
Словарь.Вставить("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница);
37 Lama12
 
20.12.18
09:55
(35) Авторское право присваивается даже если код не закрыт :-) Даже вот на этот самый текс имеется мое авторское право. ;-) Это по закону ГК 2 часть.
(0) А если там соль? Я бы, если б закрывал модуль, обязательно соль добавил бы. Даже в ущерб быстродействию.
38 novichok79
 
20.12.18
09:56
вот этот кусок в начале тоже намекает что это какой-то UID типа

{"#",51e7a0d2-530b-11d4-b98a-008048da3034,
{1144,
39 Serg_1960
 
20.12.18
10:01
(35) Уточняю: меню "Сервис" - "О программе"
Поставщик конфигурации имеет право закрыть доступ к изменению части кода. Конкретные права(правила) поставщика можно посмотреть в "Конфигурация" - "Поддержка" - "Настройка поддержки".
40 Tonik992
 
20.12.18
10:05
(37) Тем более. раз уж так. Тогда и открытый код нельзя обсуждать и использовать его в своих целях, т.к. это нарушение авторского права.
А то, что модуль стал закрытым, не несет никакой дополнительной правовой нагрузки.
41 novichok79
 
20.12.18
10:15
мля, не увидел (20) мужик, ты - гений десериализации 1С.
42 catena
 
20.12.18
10:15
(36)Если прочитать посты автора внимательно, приведенный кусок автору декодировать вовсе и не нужно...
43 novichok79
 
20.12.18
10:21
(42) автор просил "нечто подобное прочитать, чтобы потом работать как с объектом."
44 Serg_1960
 
20.12.18
11:38
(40) "не несет никакой дополнительной правовой нагрузки."
Закрытие исходного кода - это программная защита. пользовательским соглашением запрещено:
- использование "средств, изменяющих алгоритм работы программных или аппаратных средств защиты Продукта";
- "использовать Продукт с устраненными или измененными без разрешения Правообладателя средствами защиты";
- "восстанавливать исходный код, декомпилировать и/или деассемблировать программную часть Продукта, за исключением тех случаев, и лишь в той степени, в какой такая деятельность специально разрешена действующим законодательством РФ.".
45 hhhh
 
20.12.18
11:49
(44) ну, в (0) код не закрыт. А полностью открыт. Значит ничего не нарушаем. Просто пытаемся понять кусок программы.
46 Serg_1960
 
20.12.18
12:41
(45) См.(15)
47 catena
 
20.12.18
13:55
(43)Да, а "нечто подобное" у него - модуль. Сомневаюсь, что там прокатит какое-либо ЗначениеВСтрокуВнутр
48 novichok79
 
20.12.18
14:56
(47) дык всем (опытному 1серу) известно же о том, как это расшифровать, но говорить об этом я конечно же не буду.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс