![]() |
![]() |
![]() |
|
Заполнить строку с GUIDами элементов справочника «Платформы», разделённые символом «;» Волшебник, Мультук, Дима1С-ник, craxx, big, rozer76, DimR_71, vis, PR, Олдж, sxfoxi, ejikbeznojek, zzz_zzz_zzz, X Leshiy, Шурик71, Dedal, arsik, Доминошник, alexxx961503, nick86, formista2000, San787, unenu, ptiz, Timon1405, Fish, Amra, H A D G E H O G s, p-soft, Kigo_Kigo, asady, SleepyHead, Vstur, takefive, DiMel_77, boozin, АнализДанных, Terrixus
| ☑ | ||
---|---|---|---|---|
0
Дима1С-ник
naïve
14.08.25
✎
16:50
|
В конфигурации есть справочник «Платформы»; состав реквизитов:
- Наименование (строка, 100 знаков); - ЧисловойКод (число, 3; значения от 100 до 999; контроль уникальности); - Ключевая (булево). В конфигурации существует константа «ПлатформыРезерв» с типом данных «ХранилищеЗначений». Добавляем в хранилище значений данной константы добавляем следующую информацию: - Строка с GUIDами элементов справочника «Платформы», разделённые символом «;» Сделал через Массив //======Код================ СтрокаГУИД = Новый Массив; Номенклатура = Справочники.Платформы; Выборка = Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл СтрокаГУИД.Добавить(Выборка.Ссылка.УникальныйИдентификатор()); //Константы.ПлатформыРезерв.Установить(СтрокаГУИД); КонецЦикла; СтрокаГУИД1 = СтрСоединить(СтрокаГУИД,";"); Константы.ПлатформыРезерв.Установить(СтрокаГУИД1); //=================================== Можно ли сделать это через Структуру или ТаблицуЗначений |
|||
1
Волшебник
14.08.25
✎
16:52
|
массив - норм
|
|||
2
Волшебник
14.08.25
✎
16:53
|
а вот константа со списком значений - это зашквар
|
|||
3
Мультук
гуру
14.08.25
✎
17:00
|
(0)
Суть (назначение) этой константы? Вариант1 Кэш ? Вариант2 Константа содержит только кошерные платформы ? Добавьте в справочник реквизит ЭтоКошернаяПлатформа Булево |
|||
4
Волшебник
14.08.25
✎
17:04
|
можно без цикла
Запрос = Новый Запрос("ВЫБРАТЬ УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Ссылка) КАК GUID ИЗ Справочник.Платформы"); м = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("GUID"); Константы.бяка.Установить(СтрСоединить(м,";")); |
|||
5
Дима1С-ник
naïve
14.08.25
✎
17:06
|
(1) Спасибо, но если например из этой константы «ПлатформыРезерв» будем удалять все указатели (ссылки или GUIDы) на платформы, признак «Ключевая» у которых равен «Ложь». То тогда надо структурой сделать
|
|||
6
Волшебник
14.08.25
✎
17:09
|
(5) Ну так не надо было вообще заводить эту константу
|
|||
7
Fish
гуру
14.08.25
✎
17:13
|
А почему нельзя было сделать нормальный регистр сведений?
|
|||
8
ptiz
14.08.25
✎
17:14
|
(5) Зачем понадобилось такую чудную константу заводить?
|
|||
9
craxx
14.08.25
✎
17:18
|
(0) какая жесть🤦
|
|||
10
Дима1С-ник
naïve
14.08.25
✎
17:20
|
(8) Это было ТЗ я его сделал с помощью массива, после чего добавили еще условие, удалить из этой константы с типом хранилезначений все указатели (ссылки или GUIDы) на платформы, признак «Ключевая» у которых равен «Ложь»...
|
|||
11
Волшебник
14.08.25
✎
17:22
|
(10) Просто перезаполните константу другим запросом:
Запрос = Новый Запрос("ВЫБРАТЬ УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Ссылка) КАК GUID ИЗ Справочник.Платформы ГДЕ Ключевая"); м = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("GUID"); Константы.бяка.Установить(СтрСоединить(м,";")); |
|||
12
craxx
14.08.25
✎
17:56
|
(10) А если кто-то удалит этот элемент справочника, что в константе будет? Битая ссылка?
|
|||
13
X Leshiy
14.08.25
✎
18:35
|
Больше ада)
|
|||
14
Волшебник
14.08.25
✎
18:52
|
(13) Можно строку закодировать в base64 и рассматривать как картинку. Получится фотография справочника
|
|||
15
Волшебник
14.08.25
✎
20:16
|
(14)+ При наличии неограниченной вычислительной мощности, можно найти эту строку в числе Пи и хранить только позицию, откуда начинать читать, и сколько байтов прочитать. То есть можно справочник любого объёма закодировать в два целых числа.
Я уверен, что можно и до одного свести, например, первое число — это целая часть, а второе число — это десятичная часть, записанная с хвостовыми нулями. Или можно свести до одного комплексного числа, у которого первое число — это действительная часть, а второе число — это мнимая часть. |
|||
16
ejikbeznojek
14.08.25
✎
19:11
|
Значениевстрокувнутр(ваша таблица)
|
|||
17
PR
14.08.25
✎
19:15
|
(0) Прекрасная задача на проверку дебилов
Вот ТС дебил, проверку не прошел Ему сказали сделать бессмысленную константу и хранить в ней гуиды всего справочника через запятую, он и пошел делать Не ну а чо, в ТЗ же так написано |
|||
18
Волшебник
14.08.25
✎
20:05
|
(16)👍 Красавчег!
|
|||
19
Волшебник
14.08.25
✎
20:09
|
(17) Тест на бота? wiki:Тест_Тьюринга
|
|||
20
Волшебник
14.08.25
✎
20:53
|
(15) + Примерный алгоритм от DeepSeek, как закодировать любой объём информации в одно число (идеальный архиватор, который очень удобен для вселенского блокчейна https://wizard.mista.ru/music/my-songs/blockchain.html ):
Коды исходного справочника: [1, 4, 159]
1. Кодирование в искомую строку: [1 → "11", 4 → "14", 159 → "3159"] Искомая строка = "11143159" 2. Поиск в π (иррациональное число бесконечной длины, в котором содержится фсё!): Ищется последовательность "11143159" в дробной части π Найдена на позиции 1924 (пример), длина 8 3. Пи-фото справочника в виде комплексного числа. Заметьте, что это не хэш! Это снимок или вектор, который содержит всю исходную последовательность целиком, причём без потери точности, что важно для блокчейна: complex(1924, 8) = 1924 + 8i 4. Восстановление справочника из Пи-фото: Чтение 8 символов из π начиная с позиции 1924 Декодирование "11143159" → [1, 4, 159] Есть даже код на Python, который не запускался Подробностиdef build_kmp_table(pattern: str) -> list: """Строит таблицу префиксов для алгоритма Кнута-Морриса-Пратта""" table = [0] * len(pattern) length = 0 i = 1 while i < len(pattern): if pattern[i] == pattern[length]: length += 1 table[i] = length i += 1 else: if length != 0: length = table[length-1] else: table[i] = 0 i += 1 return table def encode_numbers(numbers: list) -> str: """Кодирует список чисел в уникальную строку с префиксами длин""" return ''.join(f"{len(str(num))}{num}" for num in sorted(numbers)) def find_in_pi(pattern: str, pi_file: str = 'pi.txt') -> tuple[int, int]: """Ищет подстроку в числе π с использованием алгоритма KMP""" if not pattern: return 0, 0 kmp_table = build_kmp_table(pattern) state = 0 current_pos = 0 found = False try: with open(pi_file, 'r') as f: # Пропускаем "3." в начале файла if f.read(2) == "3.": pass # Уже в дробной части else: f.seek(0) # Читаем файл с начала если нет "3." # Буферизированное чтение chunk_size = 131072 # 128KB buffer = "" keep = max(0, len(pattern) - 1) # Сохраняем хвост для поиска while True: chunk = f.read(chunk_size) if not chunk: break buffer += chunk index = buffer.find(pattern) if index != -1: start_pos = current_pos + index return start_pos, len(pattern) # Обновляем позицию и буфер if len(buffer) > keep: processed = len(buffer) - keep current_pos += processed buffer = buffer[-keep:] if keep > 0 else "" except FileNotFoundError: pass return -1, 0 # Последовательность не найдена def make_pi_photo(numbers: list, pi_file: str = 'pi.txt') -> complex: """Создает π-фото для списка чисел""" # Кодируем числа в уникальную строку pattern = encode_numbers(numbers) # Ищем подстроку в числе π start, length = find_in_pi(pattern, pi_file) # Возвращаем результат в виде комплексного числа return complex(start, length) def decode_photo(photo: complex) -> tuple[int, int]: """Декодирует π-фото в позицию и длину""" return int(photo.real), int(photo.imag) def decode_pi_sequence(pi_file: str, start: int, length: int) -> list: """Восстанавливает исходные числа из последовательности в π""" try: with open(pi_file, 'r') as f: # Пропускаем "3." и начальные позиции header = f.read(2) skip_chars = 2 + start if header == "3." else start # Позиционируем и читаем нужную длину f.seek(skip_chars) sequence = f.read(length) # Декодируем последовательность numbers = [] i = 0 while i < len(sequence): # Первая цифра - длина числа num_length = int(sequence[i]) i += 1 # Извлекаем само число num_str = sequence[i:i+num_length] i += num_length numbers.append(int(num_str)) return numbers except (FileNotFoundError, ValueError, IndexError): return [] # Ошибка чтения или декодирования # Пример использования if __name__ == "__main__": # Пример с известными первыми цифрами π numbers = [1, 4, 1, 5, 9, 2, 6, 5, 3, 5] photo = make_pi_photo(numbers) print(f"π-фото: {photo}") start, length = decode_photo(photo) print(f"Начало: {start}, Длина: {length}") # Восстановление исходных чисел из π restored = decode_pi_sequence('pi.txt', start, length) print(f"Восстановленные числа: {restored}") print(f"Совпадает с исходными? {sorted(numbers) == restored}") |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |