21 октября 2020 г.

Ящик для комплекта видеонаблюдения

На одном из объектов хотел собрать такой же вариант, но не было регистратора в наличии. Имеющийся был меньше и не позволял внутри расположить роутер, в думах я представил, а потом и реализовал вот такой ящик:


Крышка задвигается. В изначальной реализации слева должен был быть кабель канал, как бы уходящий в короб, но на месте пришлось переделать.


19 октября 2020 г.

Chrome удалять профиль при закрытии

 Сотрудник после обновления ПК начал жаловаться на то, что при закрытии хрома, его открытый аккаунт и синхронизация не удаляются, а раньше удалялось. 

Я удивился, ну думаю где-то галка должна стоять, поискал и ничего не нашел. Запросы в  гугл "удалять при закрытии"/"выходить при закрытии" и прочие не давали нужного ответа.
Поразмыслив логически попробовал принудить инкогнито, но он не позволяет синхронизировать. Попробовал запретить изменения в папке профиля, также, успеха не было. В итоге решил что это все лапша и перекинул задание помощнику.
Спустя неделю ответ был найден, имя ему "Временный профиль", настраивается в реестре:

Registry HiveHKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
Registry PathSoftware\Policies\Google\Chrome
Value NameForceEphemeralProfiles
Value TypeREG_DWORD
Enabled Value1
Disabled Value0

Переезд с HP DL380 G5 на HP DL380 G8

Время летит и требования 1С растут

Был куплен в 2013-2014 годах БУ сервер HP Proliant DL380 G5, хорош тогда был - быстр и шумен. Для меня тогда новшеством были диски 2,5" в сервере, но сервер нормально работал. Конфигурация следующая:

  1. 2 процессора
  2. 16 Гб ОЗУ
  3. Дисковая подсистема
    1. 2*130Гб SAS RAID1 - под систему
    2. 2*750 SATA WD Blue (WD750BPVX) RAID1 - под данные
    3. 2*120 SSD (Intel SSDSC2CW120A3) - под базы 1С
Через какое-то время добавили оперативной памяти до 22Гб. Потом заменили SSD 120Gb на SSD 480GB (SSDSC2KG480G701). А также были установлены двухтерабайтные WD-шки, о чем я пожалел, эти диски вешали сервер.

И наконец встал вопрос о замене сервера, так как вешался он не только из-за дисков. Обратился в тот же магазин и выбрал DL380 G8 с дисками 3,5" в конфигурации:
  1. 2x Xeon 8C E5-2670 (8*2.6 Ghz/20M)
  2. 64 Гб DDR3 ECC
  3. HP SA P420i
  4. 2*480W блок питания
  5. 4*1Gbps сетевые карты
  6. iLo
  7. Рельсы в стойку
Они переспрашивали, точно ли 3,5?, я - да, точно.
Забрал новую игрушку за 77000, пришлось еще докупать салазки (8*1200) и переходники с 2,5 на 3,5 (1200*6). Я собирался переставить SAS, HDD 750Gb, SSD со старого, а WD 2Tb заменить на полноценный энтерпрайз. По ходу откопались еще 2 SSD по 480Гб, их я пустил вместо SAS. По ходу выяснилось что можно диски в массиве (RAID1) просто переставить в новый сервер и контроллер увидит массив, но я все равно сделал копии (ушел один день).
Сделал системный массив, массив с базами, массив для бэкапа на 2 WD, остался массив на двух голубых WD. Вставляю диски, сначала сервер вообще отказался запускаться, выдавал ошибку отсека, в итоге запустился, но система охлаждения была запущена на 100% (раскручивается на моменте запуска ОС). Пошел разбираться, проверил по iLo, все вентиляторы в норме. Температура по датчику 25 около 54, т.е. нормальная. На одном из форумов говорилось о том, что после обновления микропрограммы нужно обесточить сервер, обесточил и вроде как бы помогло, на 30 минут, за это время система разогналась. В поисках причины я наткнулся на этот пост, хоть речь и идет о предыдущем поколении серверов и контроллера, он был применим и ко мне. Виной были синие диски WD, заменил их на желтые и проблема ушла.

Памятка по драйверам:

PCI\VEN_8086&DEV_3C2C&CC_0800

iLO 3/4 Channel Interface Driver for Windows Server 2008 to Server 2012 R2

https://support.hpe.com/hpsc/swd/public/detail?swItemId=MTX_e74f93921947408eb5de783d27&swEnvOid=4064


PCI\VEN_103C&DEV_3307&CC_0880

Combined Chipset Identifier for Windows Server 2008 R2

https://support.hpe.com/hpsc/swd/public/detail?swItemId=MTX_bbe9d65bc5d2495db28dfa65dd&swEnvOid=4064

5 сентября 2020 г.

Проект #32 Домофон, кодовая панель и замок

Проект в офисном здании. Имеем 3 двери, нужно установить "кодовый замок". Предложил электро-механический замок с кодовой панелью (совмещена с контроллером). Две двери рядом, поэтому имеет один блок резервного питания. Заказывать двери с кабель-каналом отказались, поэтому было решено устанавливать контактную группу. Замок для двери оказался толстоват. Замок специально выбирали нормально-закрытый электро-механический, чтобы в случае выключения электроэнергии замок оставался закрытым (возможность открытия ключом имеется). 

24 августа 2020 г.

CMD Удаляем и подключаем шару

 Когда нет GPO, приходится довольствоваться руками и собственной автоматизацией. Чтобы не ходить по пользователям можно подготовить пачку батников и попросить их запустить их.

cmdkey /add:nas /user:USERNAME /pass:USER_PASS
net use /DELETE Z:
net use /DELETE Y:
net use Z: \\nas\SharedFolder /persistent:yes
net use Y: \\nas\Skan /persistent:yes

Совсем простенько, первая строка добавляет запись в "Учетные данные Windows", если у пользователя локального имя и пароль совпадают с шарой, то необязательно.

Вторая и третья удаляют текущие занятые диски, можно использовать net use /DELETE *

Последние добавляют шары, можно использовать имя ресурса, а не IP.

IP привязывать на роутере. У Mikrotik для этого нужно использовать домен (иначе не будет резловить за пределами роутера):

Если речь идет о сервере (я подключал NAS через туннель), то сопоставить можно в файле hosts

23 августа 2020 г.

1С Открыть значение поля динамического списка

 У полей динамического списка нет события Выбор, что иногда очень неудобно.

Данное событие есть у строки, а также имеются соответствующие реквизиты ТекущиеДанные, единственный момент - как получить значение именно выбранного поля? На входе события есть параметр "Поле" содержащий склеенное имя (если в авто режиме создавались элементы формы), поэтому расклеиваем и получаем значение вот так:

  
Элемент.ТекущиеДанные[СтрЗаменить(Поле.Имя,Элемент.имя,"")]
  
 

Ну и открываем. Этот вариант не требует знания типа ссылки, но пытается открыть в модальном режиме

  
&НаКлиенте
Процедура КомплектующиеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
  ОткрытьЗначение(Элемент.ТекущиеДанные[СтрЗаменить(Поле.Имя,Элемент.имя,"")])
КонецПроцедуры;
  
  

Поэтому такой вариант лучше. ФормаОбъекта - стандартная форма, даже если ее нету

  
&НаКлиенте
Процедура КомплектующиеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	СсылкаДляОткрытия=Элемент.ТекущиеДанные[СтрЗаменить(Поле.Имя,Элемент.имя,"")];
	ПараметрыФормы = Новый Структура("Ключ", СсылкаДляОткрытия);
	Если ТипЗнч(СсылкаДляОткрытия)=тип("СправочникСсылка.Спр1") Тогда
		ИмяФормыСправочника="Справочник.Спр1.ФормаОбъекта";
	ИначеЕсли ТипЗнч(СсылкаДляОткрытия)=тип("СправочникСсылка.Спр2") Тогда
		ИмяФормыСправочника="Справочник.Спр2.ФормаОбъекта";
	Иначе
		Возврат;
	КонецЕсли;
	ОткрытьФорму(ИмяФормыСправочника, ПараметрыФормы);
КонецПроцедуры;
  
  

14 июля 2020 г.

1С Удалить до числа включительно в строке

Задача:

В строке "Лот ..12345... Новая облицовка" удалить число и все что перед ним.

Задача слегка расплывчата, т.к. первая реализация столкнулась с тем, что первое число может быть и не в начале и не подпадать под определение. Поэтому решил сделать так:
  1. Функция имеет два параметра: строка и длина предполагаемого числа
  2. Функция ищет первое вхождение числа в обрезанной строке
  3. Если число найдено, то ищет первое вхождение буквы после первого числа в обрезанной строке
  4. Обрезает строку
  5. Проверяет наличие в начале строки не букв (пробелы, точки, запятые и т.д.)
  6. Возвращает новую строку