Skip to content

Commit beccdbf

Browse files
committed
fix: Исправлена работа на клиенте
1 parent b00c6f8 commit beccdbf

File tree

2 files changed

+18
-19
lines changed

2 files changed

+18
-19
lines changed
34 Bytes
Binary file not shown.

src/ExternalDataProcessors/РаботаСЦветами/ObjectModule.bsl

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4461,15 +4461,19 @@
44614461
Возврат КонструкторЦвета(0, 0, 0);
44624462
КонецЕсли;
44634463

4464+
#Если Сервер Тогда
44644465
Хеш = Новый ХешированиеДанных(ХешФункция.CRC32);
44654466
Хеш.Добавить(Строка);
44664467
ХешСтроки = Хеш.ХешСумма;
4468+
#Иначе
4469+
ХешСтроки = КонтрольнаяСумма(Строка);
4470+
#КонецЕсли
44674471

44684472
Индекс = ХешСтроки % КаталогЦветов.Количество();
44694473

44704474
Если ТипЗнч(КаталогЦветов) = Тип("Соответствие") Тогда
4471-
Таблица = СоответствиеВТаблицуЗначений(КаталогЦветов);
4472-
Результат = АбсолютныйЦвет(Таблица[Индекс].Значение);
4475+
Массив = СоответствиеВМассив(КаталогЦветов);
4476+
Результат = АбсолютныйЦвет(Массив[Индекс]);
44734477
ИначеЕсли ТипЗнч(КаталогЦветов) = Тип("Массив") Тогда
44744478
Результат = АбсолютныйЦвет(КаталогЦветов[Индекс]);
44754479
Иначе
@@ -5143,29 +5147,24 @@
51435147

51445148
КонецФункции
51455149

5146-
// Преобразует Соответствие в ТаблицаЗначений
5150+
// Числовое представление строки. Любую строку превращает в Число, которое соответствует строке.
5151+
// Используется контрольная сумма Флетчера https://ru.wikipedia.org/wiki/Контрольная_сумма_Флетчера
51475152
//
51485153
// Параметры:
5149-
// Соответствие - Соответствие из КлючЗначение - исходной соответствие
5154+
// Строка - Строка - исходная строка.
51505155
//
51515156
// Возвращаемое значение:
5152-
// ТаблицаЗначений - Соответствие в таблицу значений:
5153-
// * Ключ - Строка - представление цвета
5154-
// * Значение - Цвет - сам цвета
5155-
Функция СоответствиеВТаблицуЗначений(Знач Соответствие)
5156-
5157-
Таблица = Новый ТаблицаЗначений;
5158-
Таблица.Колонки.Добавить("Ключ");
5159-
Таблица.Колонки.Добавить("Значение");
5160-
Для Каждого Элемент из Соответствие Цикл
5161-
НоваяСтрока = Таблица.Добавить();
5162-
НоваяСтрока.Ключ = Элемент.Ключ;
5163-
НоваяСтрока.Значение = Элемент.Значение;
5164-
КонецЦикла;
5157+
// Число - Контрольная сумма строки (два байта).
5158+
Функция КонтрольнаяСумма(Знач Строка)
51655159

5166-
Таблица.Сортировать("Ключ");
5160+
Сумма1 = 0;
5161+
Сумма2 = 0;
5162+
Для Индекс = 1 По СтрДлина(Строка) Цикл
5163+
Сумма1 = (Сумма1 + КодСимвола(Строка, Индекс)) % 255;
5164+
Сумма2 = (Сумма2 + Сумма1) % 255;
5165+
КонецЦикла;
51675166

5168-
Возврат Таблица;
5167+
Возврат ПобитовоеИли(ПобитовыйСдвигВлево(Сумма2, 8), Сумма1);
51695168

51705169
КонецФункции
51715170

0 commit comments

Comments
 (0)