Л Георгий

194
Рейтинг

geron4
Георгий Л



  •   Регистрация: 07.11.2011 (12 лет назад)

  •   Был(а) на сайте: 02.04.2024

Друзья
  • Дмитрий Малышев
Подписчики 12

Группы

Профессиональный разработчик

IE 2021 Online

IE2022 Online

Рейтинг 194

RLS - дубли условий в запросах к СУБД

Статья Программист Платформа 1С v8.3 Управление правами Конфигурации 1cv8 Абонемент ($m) Конфигурация (md, cf) Роли и права

"Подводные камни", возникающие при бездумном копировании ролей с ограничениями RLS, как это отражается на производительности, разбор примера и инструмент для анализа.

1 стартмани

07.10.2019    12006    44    geron4    4       

49

В помощь готовящимся к экзамену 1С:Эксперт по технологическим вопросам

Статья Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free) Нет файла Подготовка к аттестации

Краткий рассказ о подготовке к экзамену 1С:Эксперт по технологическим вопросам, на что стоит обратить внимание, список литературы и Интернет-источников.

26.12.2017    33340    geron4    34       

147

Комментарии

HighLoadYellowBalancer: балансировщик процессов и потоков по группам NUMA#11 12.10.22 8:50
Насколько мне известно, 1С никак не решает проблему неравномерной загрузки ядер CPU, когда количество выделенных ядер для виртуальной машины превышает значение NUMA. Решение давно существует, делайте кластер 1С из нескольких ВМ, на ВМ не превышайте значение NUMA, т.е. кол-во vCPU <= NUMA.
HighLoadОбслуживание баз данных. Не так просто, как кажется#5 14.10.19 15:38
(4) На счет перехвата запросов - очень интересно, в каких-то версиях MSSQL есть штатные механизмы для отлова и подмены. Вспомнил почему не получилось штатными средствами - там привязка к точному тексту запроса, а если у тебя таблицы соединяются с временными, например #TT800 (или #TT1000), то запрос всегда разный.

На счет номеров временных таблиц это шутка из Терминатора :))), номера всегда разные.
HighLoadОбслуживание баз данных. Не так просто, как кажется#3 14.10.19 15:28
Как-то был у меня на практике случай, 1С ЗУП + MSSQL (версия Standart 2014) перестал использовать индекс, сбор/пересбор статистики не помогали, пришлось новый индекс запилить, оптимизатор его сам подхватил.

Хинты к сожалению в 1С не поставишь, есть вариант перехвата запроса и добавления хинта, точно не помню, но там тоже что не пошло.
Вот в случае, когда в течении дня статистика может стать не актуальной - хинты на индексы бы нормально зашли, только платформа их конечно не поддерживает. :(
Как вариант, можно капнуть, чтобы запретить менять план запроса для некоторых запросов, но это тема для изучения.
DevRLS - дубли условий в запросах к СУБД#2 07.10.19 14:47
(1) Журнал документов это физическая таблица, на него можно наложить RLS только на чтение (read), если у пользователя есть роль с наложенными ограничениями RLS для Журнала документов, то ограничения будут всегда применяться при любом запросе к объекту метаданных, т.к. это добавляется платформой к запросу к СУБД. На счет указания в форме RLS - не в курсе.
DevRLS - дубли условий в запросах к СУБД#0 07.10.19 9:30
"Подводные камни", возникающие при бездумном копировании ролей с ограничениями RLS, как это отражается на производительности, разбор примера и инструмент для анализа.
УчетРабота фирмы "1С" со стороны. Или статистика выпуска релизов#1 24.06.19 9:12
Как-то попросили меня доработать кон-фу, хозяева из Греции, подключился через удаленку, зашел в конфигуратор и понял что кон-фа написана на английском (а чего ты ждал???). Через минуту понял, что не готов возиться с англоязычным кодом, т.к. им срочно надо было.
Думаю 1С зря сделала программирование на русском/английском языках, надо было делать только инглиш, тогда экспансия на мировые рынки была бы куда проще, огромное число программеров из России в помощь.
HighLoadДругой взгляд на APDEX и подсистему "Оценка производительности"#21 22.02.19 8:59
Приведу пример когда APDEX не хватает для понятия ситуации:

целевое время проведения документа "Х" = 10 сек,
все замеры попали в интервал 10.2 - 10.5 сек - APDEX равен 0.5, что "неприемлемо",
но превышение целевого времени 200-500 мс на самом деле не является проблемой для пользователя,
если он согласен на 10 сек, то 10.5 сек не будут проблемой.
Поэтому мы еще смотрим среднее, минимальное и максимальное.

Прикрепленные файлы:

2019-02-22_10-52-19.png
DevДобавить адреса физических лиц программно#16 06.12.18 12:41
Кому надо вот готовый кусок кода по загрузке адресов ФизЛиц, сам запарился делать, пока нашел как все срастить. Этот код добавляет адрес на форму ФЛ, небольшая модификация и пойдет для ваших задач.
Плюсы приветствуются.

Адреса грузятся в структуру с "сокращением", например "Краснодарский край", "Тюменская обл", "Ленина ул" и т.д.


Код
Процедура ОбработатьДанныеАдреса(сАдрес, пВидыКонтактнойИнформации)

    ЧастиАдреса = Новый Структура();
    ЧастиАдреса.Вставить("Страна", ВРег(сАдрес.country));
   ЧастиАдреса.Вставить("Индекс", сАдрес.postal_code);
    ЧастиАдреса.Вставить("Регион", СокрЛП("" + сАдрес.region + " " + сАдрес.region_type));
    ЧастиАдреса.Вставить("Район", СокрЛП("" + сАдрес.area + " " + сАдрес.area_type));
    ЧастиАдреса.Вставить("Город", СокрЛП("" + сАдрес.city + " " + сАдрес.city_type));
    ЧастиАдреса.Вставить("НаселенныйПункт", СокрЛП("" + сАдрес.settlement + " " + сАдрес.settlement_type));
    ЧастиАдреса.Вставить("Улица", СокрЛП("" + сАдрес.street + " " + сАдрес.street_type));
    ЧастиАдреса.Вставить("Дом",  Строка(сАдрес.house));
   ЧастиАдреса.Вставить("Корпус",  Строка(сАдрес.block));
    ЧастиАдреса.Вставить("Квартира", Строка(сАдрес.flat));
   ЧастиАдреса.Вставить("ТипДома", Строка(сАдрес.house_type_full));
   ЧастиАдреса.Вставить("ТипКорпуса", Строка(сАдрес.block_type_full));
   ЧастиАдреса.Вставить("ТипКвартиры", Строка(сАдрес.flat_type_full));
   
   
    АдреcXML = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(ЧастиАдреса, ,Перечисления.ТипыКонтактнойИнформации.Адрес);
   
   РезультатПроверкиАдреса = РаботаСАдресами.ПроверитьАдрес(АдреcXML, Новый Структура("ТолькоНациональныйАдрес,ФорматАдреса", Истина, "ФИАС"));
   Если РезультатПроверкиАдреса.Результат = "Корректный" Тогда
   
      сПоиск = Новый Структура("Вид,Тип", пВидыКонтактнойИнформации, Перечисления.ТипыКонтактнойИнформации.Адрес);
      рекв = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(сПоиск);
      
       ПредставлениеАдреса = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформации(АдреcXML,  Перечисления.ТипыКонтактнойИнформации.Адрес);      
      
      рекв[0].ЗначенияПолей = АдреcXML;
      ЭтотОбъект[рекв[0].ИмяРеквизита] = ПредставлениеАдреса;
      рекв[0].Представление = ПредставлениеАдреса;
      
      
      Результат = Новый Структура("ИмяРеквизита,ОбновитьКонтекстноеМеню", рекв[0].ИмяРеквизита, Истина);
      Подключаемый_ОбновитьКонтактнуюИнформацию(Результат);
      
   Иначе
      Сообщить("АдресМестаПроживания не корректный: " + сАдресBPMS.result);
   КонецЕсли; 

КонецПроцедуры
HighLoadОчистка регистра Версии Объектов от одинаковых версий#35 16.03.18 12:10
(34) Сейчас они создаются (дубли), но по факту пустые, т.е. ХранилищеЗначений имеет тип Неопределено.
DevВ помощь готовящимся к экзамену 1С:Эксперт по технологическим вопросам#0 25.12.17 10:40
Краткий рассказ о подготовке к экзамену 1С:Эксперт по технологическим вопросам, на что стоит обратить внимание, список литературы и Интернет-источников.