Некоторые картинки не загружаются из РФ и РК, используйте VPN.

вторник, 25 октября 2022 г.

- А нарисуй мне такую картину - прошу я
- Нарисую - отвечает Фрида Кало

В принципе я бы и не обратил внимания, т.к. мне не нравится ни художница ни ее работы, НО, при просмотре новых постов в каналах телеграмма я вижу выложенную картину именно за ее авторством.

Совпадение? - не думаю!



К полтретьего ночи понял, что план пойти пораньше, чтобы не проспать, провален с треском, поэтому далее было принято другое важное решение - не спать О_О

Пульмонолог сказал что не видит противопоказаний к прививке.

Чипирован Китаем, проверка чипа  на отторжение - 14 ноября.

суббота, 22 октября 2022 г.

Макс Фриш Назову себя Гантенбайн

 


До 5 утра не мог заснуть, очнулся в10:58 как огурчик.

Хотел прогуляться сегодня до Ретро-парка, но погода вообще не веселая - ветер холодный и сильный (((

Зато приготовил в гигантской кастрюле ))

 Опять же, жанр совсем не мой, один раз можно уделить внимание данному произведению, но не больше

пятница, 21 октября 2022 г.

Стою рядом с парадной (время - лето), на тарелке салатик из помидоров и огурцов со сметаной. С кем то говорю, подходит подозрительная женщина, жалом повела и отошла. Еще пара женщин прошла, некоторые подходят к парадной, некоторые заходят.

- Смотри - указывает на листки приклеенные к двери в парадную - это фото дверей квартир, где есть мужчины...

четверг, 20 октября 2022 г.

Mikrotik + EDGERouter ER-X VLANЫ

 Задача банальная:

Есть один клиент, у него торговый комплекс на два здания. Между зданиями 2 витых пары, одна под аналоговую камеру, а вторая под интернет. При этом, этим интернетом пользуется как минимум 4 разных группы людей. Из них одна группа доверенная, вторая частично (дает доступ к WiFi каждому), остальные вообще левые чуваки. Добрый арендодатель всем дает интернет....

пока на его принтере арендатор не распечатал....

Ну как обычно, враг ближе всех, Арнольд то не друг Сьюзи!

Лег ближе к 5 утра, сначала из-за Димы К., пытались настроить видеорегистратор - он все не подключался к облаку (в итоге проблема оказалась в dns сервере), а потом решал интересную задачку и как-то поперло. 

Встал в 11 и почти сразу звонок

- Алло, Андрей Владимирович?
- Да - отмечу, что на звонки я обычно отвечаю "Слушаю", чтобы не было возможности использовать как согласие, но здесь звонок поступил на номер Казахстана
- У Вас была запись к пульмонологу на субботу - отметил про себя "была"
- Да
- Врач не сможет прийти в субботу, можем перенести на понедельник, удобно будет?
- А время?
- Время то же
- Тогда давайте - тут как бы выбора особого нет


После умывально-едальных процедур решил все таки сходить в банк и забрать мультивалютную карту. Банки здесь жутко неудобно работают - с 9 до 18 с пн по пт (((



1СЗаготовка RegExp поиск слова

Задача: нужно проверять строку на наличие различных слов (масса, вес, длина, ширина, высота).

Решение: понятное дело, что простой поиск по строке СтрНайти(),Найти() не подойдут, т.к. вхождение может быть частью большего слова: масса = массаж, вес = весна и т.д. 

Решил использовать регулярные выражения, но и тут я обломался, т.к. регулярка \bbla\b не работает с Юникодом (кириллица), да и у 1С реализовано через ComObject(VBScript.RegExp), который принимает не все. Например параметр \i (регистронезависимость) вообще не принимает, в данном случае это параметр самого объекта (IgnoreCase), а не шаблона. В итоге использовав примеры гугла и поправки на VBScript.Regexp пришел к такой конструкции: 

"(^|[^А-Яа-яA-Za-z])(вес|масса)([^А-Яа-яA-Za-z]|$)"

Собственно разобрать такое легко:

(НачалоСтроки ИЛИ НеБуква(англ и кириллица)) И (вес ИЛИ масса) И (НеБуква ИЛИ КонецСтроки)

Для моей задачи подходит, мне нужно получить булево, а не замену. У данного варианта есть минусы, для меня не существенные:

  1. Любой небуквенный символ, предшествующий или последующий, попадает под шаблон, например "рполрволпва .вес. выраорл" вернет не "вес", а ".вес."
  2. Не работает с языками отличными от русского и английского

понедельник, 17 октября 2022 г.

Организм до сих пор не может привыкнуть к смене часовых поясов. Работаю до 3х ночи (час ночи по МСК) встаю в 10+ (8 утра по МСК).

1СЗаготовка Дублирование значение ячейки Ctrl+D (аналог Excel)

Готовый код для программного добавления кнопки (вызвать СоздатьКомандуДублироватьЗначение() из ПриСозданииНаСервере() формы), команды и сама процедура обработки:


&НаСервере
Функция СоздатьКомандуДублироватьЗначение()
	НоваяКоманда = Команды.Добавить("ДублироватьЗначение");
	НоваяКоманда.Действие= "ДублироватьЗначение";
	НоваяКоманда.Заголовок= "Дублировать значение";
	НоваяКоманда.ИзменяетСохраняемыеДанные = ?(найти(нрег(этаформа.ИмяФормы),"обработка")>0,Ложь,Истина);
	НоваяКоманда.Отображение= ОтображениеКнопки.Картинка;
	НоваяКоманда.Подсказка= "Дублируется значение предыдыущей ячейки, аналогично Excel. В т.ч. и выделенные строки";
	НоваяКоманда.СочетаниеКлавиш= Новый СочетаниеКлавиш(Клавиша.D, , Истина); // Ctrl+D
	
	// Опытным путем выявлено, что вызов команды сочетаниемклавиш не работает без кнопки
	// при этом кнопка должна быть на форме, Видимость=Истина
	// также замечено, что нажатие сочетанийклавишь активизирует кнопку
	// из-за чего ЭтаФорма.ТекущийЭлемент вернет кнопку
	// поэтому убираем кнопку в допМеню, этот фокус позволит получить именно текущий элемент
	НоваяКнопка=Элементы.Добавить("ДублироватьЗначение",Тип("КнопкаФормы"),ЭтаФорма.КоманднаяПанель);
	НоваяКнопка.вид=ВидКнопкиФормы.КнопкаКоманднойПанели;
	НоваяКнопка.ИмяКоманды="ДублироватьЗначение";
	НоваяКнопка.ПоложениеВКоманднойПанели=ПоложениеКнопкиВКоманднойПанели.ВДополнительномПодменю;
КонецФункции

&НаКлиенте
Функция ДублироватьЗначение()
	Если Типзнч(этаформа.ТекущийЭлемент)=Тип("ТаблицаФормы") Тогда     //работаем только с таблицами
		ИмяТФ=этаформа.ТекущийЭлемент.Имя;	// имя ТаблицыФормы
		ИмяТЗ=ПолучитьПутьКДанным(ИмяТФ);	// имя элемента формы может отличатся от имени реквизита
		ТЗнаФорме=Вычислить(ИмяТЗ);	// данные формы коллекция
		ВыделенныеСтроки=Элементы[ИмяТФ].ВыделенныеСтроки;
		// Определяем источник - строка предшествующая первой выделенной 
		// При удалении, перемещении строк, их идентификатор не меняется, и очень похож на номер строки
		// при этом индекс строки меняется
		ИндексСтрокиИсточника=9999999;
		Для каждого ИдСтроки ИЗ ВыделенныеСтроки Цикл
			ИндексСтроки=ТЗнаФорме.Индекс(ТЗнаФорме.НайтиПоИдентификатору(ИдСтроки));
			ИндексСтрокиИсточника=?(ИндексСтрокиИсточника>ИндексСтроки,ИндексСтроки,ИндексСтрокиИсточника);
		КонецЦикла;                                 
		ИндексСтрокиИсточника=ИндексСтрокиИсточника-1;
		
		Если ИндексСтрокиИсточника>=0 Тогда
			// опять же, имя элемента формы может отличатся от имени реквизита
			// при этом ПутьКДанным колонки содержит и ПутьКДанным таблицы, исключаем
			// обращатся к колонке по индексу также не стоит, т.к. порядок на форме может отличаться от порядка реквизитов
			ИмяТекКолонки=стрзаменить(ПолучитьПутьКДанным(Элементы[ИмяТФ].ТекущийЭлемент.Имя),""+ИмяТЗ+".","");

			ЗначениеИсточника=ТЗнаФорме[ИндексСтрокиИсточника][ИмяТекКолонки];
			
			Для Каждого СтрТЧ ИЗ ВыделенныеСтроки Цикл
				// ВыделенныеСтроки хранит не индекс строк, а их иденитфикаторы
				// при удалении строк из середины обновляется индекс, но не номер строки
				ТЗнаФорме.НайтиПоИдентификатору(СтрТЧ)[ИмяТекКолонки]=ЗначениеИсточника;
			КонецЦикла;
			Элементы[ИмяТФ].Обновить();  //обновляем данные в ТаблицеФормы
		КонецЕсли;
	КонецЕсли;		
КонецФункции

&НаСервере
Функция ПолучитьПутьКДанным(ИмяЭлемента)
	Возврат(Элементы[ИмяЭлемента].ПутьКДанным);
КонецФункции

Собственно комментарии рассказывают все подводные камни.

В теории можно подключить интерактивную запись и тем самым вызывать событие ПриИзменении(), но:

  1. Мне лень
  2. Нужно немного переделать код
  3. Для поддержки выделенных строк не забыть предварительно скопировать массив со строками
Собственно решение доработано и переделано уже несколько раз здесь

Картины: Флорина Штеттхаймер

 


воскресенье, 16 октября 2022 г.

Очень резкие переходы (восхождение, в могиле, журналист), до момента создается ощущение что это другая книга, я даже открыл и проверил...