|
|
|
Заполнить строку с GUIDами элементов справочника «Платформы», разделённые символом «;» | ☑ | ||
|---|---|---|---|---|
|
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
✎
21:41
|
(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}")
|
|||
|
21
Asmody
14.08.25
✎
22:38
|
(20) осталась фигня – придумать быстрый алгоритм, который давал последовательность цифр числа π, начиная с нужного знака.
|
|||
|
22
Волшебник
14.08.25
✎
22:39
|
(21) Такие алгоритмы есть!
|
|||
|
23
Asmody
14.08.25
✎
22:59
|
кстати, если плясать от определения "π - отношение длины окружности к диаметру", то меняя определение "окружности" (точнее - вводя разные метрики) можно получить разные значения π от обычного 'π' до 4.
https://t.me/mathematics_not_for_you/6218 |
|||
|
24
Волшебник
14.08.25
✎
23:59
|
(23) В военное время даже синус может доходить до 4
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |