<?xml version="1.0" encoding="UTF-8"?>

<rss version=".92">
 <channel>
	<title>Сообщения блогов группы  "Блоги сотрудников про 1С" (www.miko.ru)</title>
	<link>http://www.miko.ru</link>
	<guid>http://www.miko.ru</guid>
	<language>ru</language>
	<docs>http://backend.userland.com/rss092</docs>

    <item>
      <title>Михаил Беляев: Файл базы данных поврежден. Повреждено содержимое внутреннего файла &quot;Описание базы данных&quot;</title>
      <description><![CDATA[<i>&quot;Не всё пропало&quot; или Методика восстановления файловой базы, когда CHDBFL разводит руками<br /></i><br />Привет! <br /><br /><b>Предыстория</b><br /><p>В конце октября 2022 поступила задача на восстановление файловой базы, которая была разрушена в процессе обновления конфигурации ИБ с долгой реструктуризацией, прерванной аварийно... :/</p><p><img src="https://infostart.ru/upload/iblock/19c/19c6c1b99cac56222cca946efef38183.png" border="0" width="609" height="328" data-bx-image="https://infostart.ru/upload/iblock/19c/19c6c1b99cac56222cca946efef38183.png" data-bx-onload="Y" /></p><p>CHDBFL после быстрой неуспешной попытки, сказал что &quot;на этом его полномочия всё&quot;<img src="https://infostart.ru/upload/iblock/f67/f671d7844936bef2c791f2c739b13649.png" border="0" width="536" height="358" data-bx-image="https://infostart.ru/upload/iblock/f67/f671d7844936bef2c791f2c739b13649.png" data-bx-onload="Y" /></p><p>...<i>Продолжение следует по ссылке</i> <a href="https://telegra.ph/Fajl-bazy-dannyh-povrezhden-Povrezhdeno-soderzhimoe-vnutrennego-fajla-Opisanie-bazy-dannyh-11-19" target="_blank" >https://telegra.ph/Fajl-bazy-dannyh-povrezhden-Povrezhdeno-soderzhimoe-vnutrennego-fajla-Opisanie-ba...</a></p><br /><a href="http://www.miko.ru/blogs/metalblog/fayl-bazy-dannykh-povrezhden-povrezhdeno-soderzhimoe-vnutrennego-fayla/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/fayl-bazy-dannykh-povrezhden-povrezhdeno-soderzhimoe-vnutrennego-fayla/</link>
    </item>

    <item>
      <title>Михаил Беляев: Внедрение подсистемы оценки производительности в старые конфигурации без БСП</title>
      <description><![CDATA[1. Скачиваем файл из вложения<br />2. Открываем конфигуратор анализируемой базы<br />3. Делаем &quot;Сравнить/объединить с конфигурацией из файла...&quot;, указываем файл из п.1<br />4. Делаем &quot;Отметить по подсистемам файла&quot;, отмечаем только ОценкаПроизводительности<br />5. В модуле сеанса дописываем в конец метода <b>УстановитьЗначениеПараметраСеанса </b>строки<br />
====code====
<pre>// ОценкаПроизводительности
ОценкаПроизводительностиСлужебный.УстановкаПараметровСеанса(ИмяПараметра, УстановленныеПараметры);
// } </pre>
=============
Также для удобного доступа к настройкам подсистемы из обычного приложения можно вынести куда то в интерфейс (например на форму параметров учёта) 3 новых константы<br />Либо они будут доступны сразу в управляемом режиме<br />6. Обновляемся, входим в пользовательский режим (1С:Предприятие), заполняем настройки<br /><ul><li>Взводим константу ВыполнятьЗамерыПроизводительности, другие 2 заполняем тоже ненулевыми значениями<br /><li>В коде вписываем по шаблонам из соседних <a href="https://www.miko.ru/blogs/metalblog/shablon-dlya-obychnogo-zamera-cherez-bsp-/" target="_blank" >публикаций</a> места в коде для сбора данных<br /><li>Для сбора данных на клиенте еще потребуется заполнить регистр НастройкиКлючевыхОпераций<br /></ul>7. Собираем данные, смотрим в управляемом режиме отчёты<br /><br />PS Прикладываю также расширение, через которое также можно подключить эту подсистему, НО есть минусы<br />А. Замеры в журнале регистрации будут выглядеть криво<br />Б. В модуль сеанса всё равно придётся прописать нужные строки из пункта 5 <br />В. Регламентное задание на очистку старых замеров добавить через расширение не получится, придётся через конфигурацию<br /><a href="http://www.miko.ru/blogs/metalblog/327/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/327/</link>
    </item>

    <item>
      <title>Михаил Беляев: Шаблон замера длительной операции через БСП</title>
      <description><![CDATA[Замер длительной операции отличается от обычного наличием вложенных операций и возможностью указать количество данных, так как иногда важно отследить зависимость времени обработки ключевой операции от объёма обработанных данных<br />
====code====
<pre>// &#38;ЗамерДлительнойОперации {
ОписаниеЗамера = ОценкаПроизводительности.НачатьЗамерДлительнойОперации("ИмяДлительнойКлючевойОперации");

// начало цикла/шага
ОценкаПроизводительности.ЗафиксироватьЗамерДлительнойОперации(ОписаниеЗамера, КоличествоДанныхНаШаге, ОписаниеШагаИлиИтератораЦикла, КомментарийШага);
// конец цикла/шага

ОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(ОписаниеЗамера, КоличествоДанныхВсего, НеобязательноОписаниеФинальногоШага, КомментарийЗамера);
// }</pre>
=============<br /><a href="http://www.miko.ru/blogs/metalblog/326/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/326/</link>
    </item>

    <item>
      <title>Михаил Беляев: Шаблон для обычного замера через БСП</title>
      <description><![CDATA[====code====
<pre>// &#38;ЗамерПроизводительности {
&nbsp;&nbsp;&nbsp;ИмяКлючевойОперации = "ЧекККМ.WSПрокси.БонусныеКарты.ЗафиксироватьОплату";
&nbsp;&nbsp;&nbsp;#Если Клиент Тогда&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;Замер = ОценкаПроизводительностиРТКлиент.НачатьЗамер(Ложь, ИмяКлючевойОперации);
&nbsp;&nbsp;&nbsp;#КонецЕсли 
&nbsp;&nbsp;&nbsp;#Если Сервер Тогда&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;ДатаНачалаЗамера = ОценкаПроизводительности.НачатьЗамерВремени();
&nbsp;&nbsp;&nbsp;#КонецЕсли 
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;// САМО ЧУДНОЕ ДЕЙСТВИЕ!
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;#Если Клиент Тогда
&nbsp;&nbsp;&nbsp;// РАСКОММЕНТИРОВАТЬ ДЛЯ КОММЕНТАРИЯ К ЗАМЕРУ &#91;простите за каламбур&#93; Если Замер&#60;&#62;Неопределено Тогда ОценкаПроизводительностиКлиент.УстановитьКомментарийЗамера(Замер.Идентификатор, КомментарийЗамера); КонецЕсли;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;ОценкаПроизводительностиРТКлиент.ЗакончитьЗамер(Замер);
&nbsp;&nbsp;&nbsp;#КонецЕсли 
&nbsp;&nbsp;&nbsp;#Если Сервер Тогда&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;ОценкаПроизводительности.ЗакончитьЗамерВремени(ИмяКлючевойОперации, ДатаНачалаЗамера); // ВесЗамера = 1, Комментарий = Неопределено
&nbsp;&nbsp;&nbsp;#КонецЕсли 
&nbsp;&nbsp;&nbsp;// }</pre>
=============
<br />ВАЖНО:<br />1. Замер НаСервере выполняется независимо от регистра НастройкиКлючевыхОпераций<br />2. Нужно помнить, что в файловом режиме выполнятся обе конструкции, и &quot;#Клиент&quot;, и &quot;#Сервер&quot;<br />3. НаКлиенте есть возможность установить произвольный комментарий к замеру, для этого раскомментируйте соответствующую строчку<br /><a href="http://www.miko.ru/blogs/metalblog/325/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/325/</link>
    </item>

    <item>
      <title>Михаил Беляев: Методика восстановления файловых баз на низком уровне</title>
      <description><![CDATA[<a href="https://infostart.ru/public/182889/" target="_blank" >https://infostart.ru/public/182889/</a><br />Во вложении итоговая обработка с моими правками для 8.3 для лечения повреждения после динамического обновления<br /><br />Инструкция коротко<br />1. Открыть приложенную обработку из управляемого приложения<br />2. Указать проблемную базу<br />3. Нажать &quot;Очистить config save&quot;<br />4. Прогнать проблемную базу через chdbfl.exe , вполне вероятно что при этом будет написано &quot;Ошибок не обнаружено&quot;, несмотря на эту надпись - chdbfl.exe всё же что-то делает<br />5. Попробовать войти в конфигуратор проблемной базы, если всё ок - получится!<br /><a href="http://www.miko.ru/blogs/metalblog/324/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/324/</link>
    </item>

    <item>
      <title>Михаил Беляев: Если &quot;умер&quot; TEMPDB</title>
      <description><![CDATA[Рабочий способ тут <br /><a href="https://www.xtivia.com/start-sql-server-lost-tempdb-data-files/" target="_blank" >https://www.xtivia.com/start-sql-server-lost-tempdb-data-files/</a><br /><a href="http://www.miko.ru/blogs/metalblog/esli-umer-tempdb/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/esli-umer-tempdb/</link>
    </item>

    <item>
      <title>Михаил Беляев: Версия MSSQL сервера запросом</title>
      <description><![CDATA[Все подробности в 2 клика<br />
====code====
<pre>--Version Number
select @@version

--Edition
select serverproperty('Edition')

--Service Pack
select serverproperty('ProductLevel')

--Version Number
select serverproperty('ProductVersion')</pre>
=============<br /><a href="http://www.miko.ru/blogs/metalblog/versiya-mssql-servera-zaprosom/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/versiya-mssql-servera-zaprosom/</link>
    </item>

    <item>
      <title>Михаил Беляев: Программная работа с сетевыми картами</title>
      <description><![CDATA[Иногда бывает нужно быстро активировать один сетевой адаптер, и отключить - другой<br />Программно это можно сделать так<br />В консоли CMD выполнить 
====code====
<pre>wmic nic get name, index</pre>
=============
чтоб получить индекс сетевого адаптера<br /><br />
====code====
<pre>wmic path win32_networkadapter where index=7 call disable</pre>
=============
чтоб отключить ненужный (7 поменять на индекс отключаемой карты из п.1)<br /><br />
====code====
<pre>wmic path win32_networkadapter where index=15 call enable</pre>
=============
чтоб включить нужный (15 поменять на индекс подключаемой карты из п.1)<br /><br /><br />Подробно этот и другие варианты здесь: <a href="https://vynesimozg.com/kak-otklyuchit-vklyuchit-setevoj-adapter-v-windows/" target="_blank" >https://vynesimozg.com/kak-otklyuchit-vklyuchit-setevoj-adapter-v-windows/</a><br /><a href="http://www.miko.ru/blogs/metalblog/programmnaya-rabota-s-setevymi-kartami/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/programmnaya-rabota-s-setevymi-kartami/</link>
    </item>

    <item>
      <title>Михаил Беляев: Как проверить успешно ли скопировался большой архив</title>
      <description><![CDATA[Бывает, что большой архив базы копируется с одного сервера на другой через интернет.<br />Занимает время. При использовании обычного копирования, а не специальных утилит (вроде Resilio Sync) - по пути может повредиться. Обнаруживается это только при восстановлении.<br />Исходим из того, что на сервере-отправителе архив целый (живой, восстановимый). <br />Проверить идентичность бэкапа без восстановления (либо ДО восстановления, если копированием и восстановлением занимаются разные люди) можно с помощью сравнения хэшей (например, MD5) исходного и скопированного файлов.<br />Сделать это проще всего с помощью утилиты<a href="https://www.winmd5.com/" target="_blank" >https://www.winmd5.com/</a><br /><br /><b>UPD </b>В новых версиях Windows появилась возможность посчитать хэш с помощью стандартных функций<br />Для этого запускаем консоль cmd<br />И пишем команду <br />====quote====<br />certutil -hashfile &lt;имя_файла&gt; md5<br />=============<br />Для удобства имя файла можно перетащить из Проводника через drag-n-drop &nbsp;<br /><a href="http://www.miko.ru/blogs/metalblog/320/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/320/</link>
    </item>

    <item>
      <title>Михаил Беляев: Как закодировать строку в Base64</title>
      <description><![CDATA[Иногда при работе с web-сервисами требуется передать данные в закодированном в Base64 виде. <br />Сложность в том, что платформенные методы кодировки в base64 на входе не принимают строку, а только двоичные данные.<br />Соответственно, строку сперва необходимо превратить в двоичные данные, например через сохранение в файл.<br />Ниже пример кода - как именно сохранить текст в файл, чтобы правильно сработало преобразование<br /><br />
====code====
<pre>Функция Base64(ВходящаяСтрока)

&nbsp;&nbsp;&nbsp;ВременныйФайл = ПолучитьИмяВременногоФайла("base64_txt");
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл, "CESU-8");
&nbsp;&nbsp;&nbsp;ЗаписьТекста.Записать(ВходящаяСтрока);
&nbsp;&nbsp;&nbsp;ЗаписьТекста.Закрыть();
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;ДвоичныеДанные = Новый ДвоичныеДанные(ВременныйФайл);
&nbsp;&nbsp;&nbsp;СтрокаBase64 = Base64Строка(ДвоичныеДанные);
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;УдалитьФайлы(ВременныйФайл);
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;Возврат СтрокаBase64;

КонецФункции&nbsp;&nbsp;
</pre>
=============
<br /><a href="http://1centerprise8.blogspot.com/2015/03/binary-data-base64.html" target="_blank" >http://1centerprise8.blogspot.com/2015/03/binary-data-base64.html</a><br /><a href="http://www.miko.ru/blogs/metalblog/319/">Подробнее...</a>]]></description>
      <link>http://www.miko.ru/blogs/metalblog/319/</link>
    </item>

  </channel>
</rss>