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

среда, 26 октября 2022 г.

1СЗаготовка Чтение CSV (ТонкийКлиент,ВебКлиент)

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

  1. Классический выбор файла здесь не работает
  2. Прочитать файл просто так не получилось
  3. Пришлось отказаться от чтения при помощи Excel (типа универсальная была)
Поэтому пришлось использовать БСП, сохранять во временный файл и читать оттуда:


&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
    ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
    
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогВыбораФайла.Фильтр = "Excel CSV (*.csv)|*.csv"; 
	ДиалогВыбораФайла.МножественныйВыбор=Ложь;
	ДиалогВыбораФайла.Заголовок = "Выберите файл";
	ДиалогВыбораФайла.ПредварительныйПросмотр = Истина;
	ДиалогВыбораФайла.ИндексФильтра = 0;
    
    ПараметрыЗагрузки.Диалог = ДиалогВыбораФайла;
    
    ОповещениеЗавершенияВыбораФайла = Новый ОписаниеОповещения("ВыборФАйлаЗавершение", ЭтотОбъект);
    
    ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОповещениеЗавершенияВыбораФайла, ПараметрыЗагрузки); //БСП
КонецПроцедуры
&НаКлиенте
Процедура ВыборФАйлаЗавершение(Результат, ДополнительныеПараметры) Экспорт 
	Если Результат<>Неопределено Тогда
		ИмяФайла=Результат[0].ПолноеИмя;
		АдресВХранилище=Результат[0].Хранение;
		ПрочитатьФайлCSV(АдресВХранилище);
		Элементы.Таблица.Обновить();
		ДоступностьКнопкиСоздания();
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПрочитатьФайлCSV(АдресВХранилище)
	Данные = ПолучитьИзВременногоХранилища(АдресВХранилище);
	ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("csv");
	Данные.Записать(ИмяПромежуточногоФайла);
	УдалитьИзВременногоХранилища(АдресВХранилище);	//очищаем временное хранилище
	
	оТаблица=Новый ТаблицаЗначений;	
	//очищаем таблицу и удаляем колонки
	Таблица.Очистить();
	оТаблица=Таблица.Выгрузить();
	
	Разделитель=";";
	ЗаголовкиИзПервойСтроки=Истина;
	
	Текст = Новый ЧтениеТекста(ИмяПромежуточногоФайла);
	
	 //создадим колонки
	ТекСтрока = Текст.ПрочитатьСтроку();
	Если ТекСтрока <> Неопределено Тогда
		МассивЗначений = СтрРазделить(ТекСтрока, Разделитель);
		ИндексКолонки = 0;
		Для Каждого ИмяКолонки Из МассивЗначений Цикл
			ИмяКолонки = ?(ЗаголовкиИзПервойСтроки, "Кол"+ИндексКолонки, ИмяКолонки);
			оТаблица.Колонки.Добавить(ИмяКолонки);
			ИндексКолонки = ИндексКолонки + 1;
		КонецЦикла;
		Если ЗаголовкиИзПервойСтроки Тогда
			ТекСтрока = Текст.ПрочитатьСтроку();
		КонецЕсли;
	КонецЕсли;

	Пока ТекСтрока <> Неопределено Цикл // строки читаются до символа перевода строки
		НоваяСтрока = оТаблица.Добавить();
		
		МассивЗначений = СтрРазделить(ТекСтрока, Разделитель);
		ИндексКолонки = 0;
		Для Каждого ТекЗначение Из МассивЗначений Цикл
			Попытка
				ЗначениеЯчейки=Дата(ТекЗначение+":00");
			Исключение
				ЗначениеЯчейки=Число(СтрЗаменить(ТекЗначение," ",""));
			КонецПопытки;
			НоваяСтрока[ИндексКолонки] = ЗначениеЯчейки;
			ИндексКолонки = ИндексКолонки + 1;
		КонецЦикла;

		ТекСтрока = Текст.ПрочитатьСтроку();
	КонецЦикла;
		
	//Возврат Результат;
	
	Таблица.Загрузить(оТаблица);
	
	//удаляем временный файл
	Попытка
		УдалитьФайлы(ИмяПромежуточногоФайла);
	Исключение
	   ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Действие'"), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
	КонецПопытки;
КонецПроцедуры


Картины: Татьяна Ниловна Яблонская

 


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

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

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

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



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

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

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

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


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

суббота, 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 г.

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

В местном минисквере есть вот такая ротонда, чисто мое мнение - она здесь хоть и смотрится, но лишняя



А это ответ, почему газон зеленый в парке, а в остальных местах его практически нету.


Здесь много бродячих собак, НО они скорее всех, чем ничьи. К многим тут относятся именно как к животному, а не к чему то противному. Почти все собаки имеют бирку.


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

Похоже это главное здание Лесотехнической Академии СПб, но если повернуться спиной к нему, то это не парк, а какой-то лес. Прохожу вдоль здания, вижу бежит ежиха и двумя ежатами, радуюсь этому и хочу с кем-то поделиться. Мимо проходит или пробегает человек, толи с собакой, толи без, ему не интересно, да и я потерял семейство ежей. Разворачиваюсь и бегу искать их обратно, на встречу пара людей со сворой собак (наверное проекция соседки с 4мя собаками):

- Я тут ежиков видел, а вот они - указываю пальцем на кого то с иголками, но нет, это не ежики ...

Сначала я вижу классическую рыжую белку, но с иголками и даже успеваю погладить, а потом серую, и тоже с иголками и их много О_О

1СЗаготовка Строка значение и единица измерения в число

 Простенькая функция приводит "480 г" в "0,48", "10 см" в "0,1" и т.д. 

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


// Функция - Значение в единицу измерения
//
// Параметры:
//  мНаименование	 - Строка - Наименование характеристики - может содержать единицу измерения Пример (Длина в упаковке, кг:)
//  мЗначение		 - Строка - Само значение, может содержать единцу измерения пример (10 грамм)
// 
// Возвращаемое значение:
//  Число - Коэффициент умножения для привидения к КГ или СМ
//
&НаСервере
Функция ЗначениеВЕдиницуИзмерения(мНаименование,мЗначение)
	ЗначЕдИзм=РегЭксп(мЗначение,"ОставитьЦифры",Истина,"");
	МножителиЕдиницИзмерения=Новый Соответствие;
	МножителиЕдиницИзмерения.Вставить("г","0,001");
	МножителиЕдиницИзмерения.Вставить("грамм","0,001");
	МножителиЕдиницИзмерения.Вставить("g","0,001");
	МножителиЕдиницИзмерения.Вставить("gram","0,001");
	МножителиЕдиницИзмерения.Вставить("кг","1");
	МножителиЕдиницИзмерения.Вставить("килограмм","1");
	МножителиЕдиницИзмерения.Вставить("kg","1");
	МножителиЕдиницИзмерения.Вставить("kilogram","1");
	МножителиЕдиницИзмерения.Вставить("т","1000");
	МножителиЕдиницИзмерения.Вставить("тонна","1000");
	МножителиЕдиницИзмерения.Вставить("ton","1000");
	МножителиЕдиницИзмерения.Вставить("мм","0,1");
	МножителиЕдиницИзмерения.Вставить("миллиметр","0,1");
	МножителиЕдиницИзмерения.Вставить("mm","0,1");
	МножителиЕдиницИзмерения.Вставить("milimetre","0,1");
	МножителиЕдиницИзмерения.Вставить("см","1");
	МножителиЕдиницИзмерения.Вставить("сантиметр","1");
	МножителиЕдиницИзмерения.Вставить("cm","1");
	МножителиЕдиницИзмерения.Вставить("centimetre","1");
	МножителиЕдиницИзмерения.Вставить("дм","10");
	МножителиЕдиницИзмерения.Вставить("дециметр","10");
	МножителиЕдиницИзмерения.Вставить("м","100");
	МножителиЕдиницИзмерения.Вставить("метр","100");
	МножителиЕдиницИзмерения.Вставить("m","100");
	МножителиЕдиницИзмерения.Вставить("metre","100");
	МножителиЕдиницИзмерения.Вставить("км","1000");
	МножителиЕдиницИзмерения.Вставить("километр","1000");
	МножителиЕдиницИзмерения.Вставить("km","1000");
	МножителиЕдиницИзмерения.Вставить("kilometre","1000");
	
	НаимЕдИзм="";
	НаимЕдИзмНайдено=Ложь;
	
	РегЭксп= Новый COMОбъект("VBScript.RegExp");
	РегЭксп.IgnoreCase = "True"; //Игнорировать регистр 
	РегЭксп.Global = Истина; //Поиск всех вхождений шаблона 
	РегЭксп.MultiLine = Ложь; //Многострочный режим 

	Для каждого ЭлементСоответствия Из МножителиЕдиницИзмерения Цикл
		РегЭксп.Pattern = строка("(^|[^А-Яа-яA-Za-z])("+ЭлементСоответствия.Ключ+")([^А-Яа-яA-Za-z]|$)");
		НаимЕдИзмНайдено=РегЭксп.Test(мЗначение);
		Если НЕ НаимЕдИзмНайдено Тогда
			НаимЕдИзмНайдено=РегЭксп.Test(мНаименование);
		КонецЕсли;
		Если НаимЕдИзмНайдено Тогда 
			НаимЕдИзм=ЭлементСоответствия.Ключ;
			Прервать;
		КонецЕсли;		
	КонецЦикла;

	Если МножителиЕдиницИзмерения.Получить(НаимЕдИзм)=Неопределено Тогда
		ЗначениеЕдИзм=мЗначение;
	Иначе
		ЗначениеЕдИзм=ЗначЕдИзм*МножителиЕдиницИзмерения[НаимЕдИзм];
	КонецЕсли;
	
	Сообщить(СтрШаблон("Значение ""%1"" => ""%2"" (%3)",мЗначение,ЗначениеЕдИзм,НаимЕдИзм));
	Возврат(ЗначениеЕдИзм);
	 
КонецФункции


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

 Марк Леви "Сильнее страха"

Это было сложно - встать в 8 утра, хоть и лег в 12, сон был беспокойный из-за знания того, что нужно не проспать.

Онколог удивился как и я, требованию пройти осмотр. Но, т.к. деньги уплачены, пришлось немного поработать. Собственно никаких противопоказаний он не нашел, посмотрим что скажет пульмонолог. Единственно отметил он, что болеть КВИ мне не стоит, т.к. и без нее есть фиброз участков легких.

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


 И таки нашел, но тут возник затык с размерами, я себя почувствовал просто жирным ибо 3-5XL это гигантский размер в моем понимании, а у них они практически не отличаются и близко к моему

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

 Вчера приехали тапочки, кофе полкило, новая бритва oneblade и еще по мелочи мелочи. Даже с доставкой из СПб бритва мне обошлась дешевле, чем покупка здесь. А смотря на цену кофе (от 2500 за кг), я также получал от мозга отказ в покупке, при знании того, что дома почти 3кг кофе, который практически никто не пьет.

- Но я не люблю когда меня окунают головой в бассейн, в Нью-Джерси меня так чуть не утопили 

- Тогда вам нужно отказаться от коктейлей

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

 За что действительно стыдно должно быть жителю СЗФО РФ - это за посредственное или полное отсутствие знания языка отличного от русского, да и русский у многих хромает. Когда обращаешься к кому-либо здесь, в Атырау, практически все могут тебе что-то объяснить на русском. Замечу, что это не сравнимо с попытками испанца объяснить на ломаном английском русскому, с еще более худшим знанием английского. Также отметим, что русскоязычные кичатся величием своего языка, но не могут в мере большей понимать смежные славянские языки, нежели те же украинцы и белорусы. Они понимают польский или сербский много раз легче, нежели русскоязычный,  а последний порой и с украинским и белорусским встает в ступор.

 Хм, здесь детская и взрослые поликлиники совмещены в одну...

Интересный диалог с медсестрой в поликлинике

- А Вы откуда?

- Из Санкт-Петербурга

- Ооо, прямо из Питера

- А вакцинация Вам зачем?

- Хочу дальше поехать

- А куда?

- Азербайджан, Грузия

- Что все туда едут, а у нас некуда ехать?

- Увы, дальше некуда

- Разбежались великие державы!


Врач при осмотре отказала мне вакцинации без консультации онколога и пульмонолога, потому как у меня заболевание легких и я на длительной гормональной терапии. При этом у них (городская поликлиника) я даже за платно не могу пройти к этим специалистам. Записался на субботу к онкологу, и на следующую субботу к пульмонологу. Т.о., плюс 25 дней на вакцинацию, я тут застреваю еще и на ноябрь.....

 Три часа, дам с детками заменил подростки на мопеде...

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

"С ним не о чем говорить" - описал про себя главный герой (рассказчик) Гэтсби

 Полвторого, на площадке смеется ребенок и разговоры говорят дамочки

Нет, ребенки, их там несколько, судя по голосу не более 5 лет....

" Сегодня ты обедаешь у меня и я подумал, что было бы неплохо вместе прокатится" - сказал Гэтсби, подъехав на своем автомобиле

И ведь реально есть люди, которые так себя ведут, беее

1СОшибка ODBC разделитель запятая

Тривиальная задача - импорт CSV в ТЗ, но CSV с точки зрения EXCEL кривой, т.к. имеет многострочные колонки:


Гугл докс нормально кушает файл, загрузка на сайт тоже, а вот Excel нет. Соответственно классический построчный перебор и конвертация строки в массив с последующим вложенным перебором нам не подходит. Наткнулся на статьи на Infostart  и обрадовался, узнав что вариации ODBC умеют многострочные колонки в CSV. Кстати, EXCEL понимает ограничитель строк, но только в том случае, если он на одной строке.

 В прошлом году клинануло и я сделал тыкву, в этом году не получится (((



 Сидя здесь, практически в изоляции, появилась возможность решить одну задачку.

Задачку я эту, изначально хотел сплавить беженцам из Украины, но увы первый отказался на следующий день, а второй (девушка) не выходила на связь на всем протяжении срока выполнения и даже больше, третий сразу отказался, ссылаясь на отсутствие опыта работы с системой.

Сама задача:

Имея разношерстные прайсы поставщиков, слить их в один в формате необходимом для загрузки на сайт под управлением OpenCart. При этом надо создать общее дерево категорий (сложность номер раз). Собственно итоговый файл должен быть шаблоном, чтобы при необходимости я в него загружал исходник и получал файл в нужном формате.

Технически, если упороться, то можно решить за 24-48 часов, я давал сначала неделю (парню), потом две недели (девушке), в рублях 15К если они самостоятельно решат, иначе меньше. В итоге спустя 1,5 месяца я сам решил решить эту задачу, деньги то не лишние.

Задачу я предлагал решать именно в экселе, так как он есть много где, а гибкости в нем прилично. Но одной гибкости ему не хватило, а именно ПоискПоз по синонимам, когда у тебя критериев больше одного, а искать нужно сначала первый, потом второй, потом третий и выбрать первую ИСТИНА. Это наверно можно решить макросом, но возникла другая проблема, где взять синонимы? Это нужно для автоматического сопоставления товара и категории, у разных поставщиков разные категории, у некоторых они глубже, а у кого то их нет вообще.

В итоге решил сверстать на коленке конфигурацию на базе 1С для конвертации выгрузок поставщиков. Собственно это я сейчас и делаю. 

А к чему это я?

Я уже неоднократно замечал, пишешь какой-то модуль, бывает по разному - 100-200-500-1000 строк кода, потом отлаживаешь, ловишь пару жуков и бац оно работает. А по пути решения в воображении понимаешь что такой подход не подойдет, меняешь на другой, вылавливаешь зависимость с третьим. И вот то самое чувство когда оно работает, просто не передаваемо.

Три часа ночи, воды нет, ни холодной, ни горячей О_О

среда, 12 октября 2022 г.

 Как говорится "вода дырочку найдет", из трех батарей у одной есть протечка

 Вода поползла по трубам...

 Дети не унимаются, почему они не могут пойти на улицу?

Кстати, детей тут очень много, а вот площадка подкачала...

Ты можешь подобрать новый телевизор? - говорит Ольга Л. (бухгалтер) - наш сдох, надо бы новый

Всё происходит в помещении в котором в реальности Ольга Л. никогда не была, оно больше похоже на помещение в котором сидит бухгалтер Елена Ш.. Ольга Л. протягивает листок, на котором указана модель старого телевизора и список уже подобранных самой Ольгой Л. телевизоров и их цен. Ладно, думаю я, я тоже поищу, а рядом стоит стеллаж, ставлю на него ноутбук и давай искать. Так на телевизоры у меня есть скидка, перепродам через себя, заработаю копеечку. 

Тут меня зовет Алексей К. (руководитель), вместе со мной подходит еще кто-то, они что то обсуждают, а я разглядываю помещение. В помещении стоит стол в виде буквы Т, отмечу, у Алексея такого стола никогда не было, такой стол есть у Инны Ф.Р.. Алексей сидит на вершине, слева от него окно, зарешечено в крупную такую клетку. В помещении, как и в предыдущем, почему то мало света, именно поэтому я замечаю собак справа от Алексея не сразу. Один пес - двор-терьер, а второй - бельгиец, и именно малинуа. Глажу пса, Алексей освобождается, садится на пол и тоже гладит пса. В этот момент я замечаю, что у него провал в верхней челюсти от ноздри и ниже, меня это удивляет, но момент спустя все исчезает. Остается только недельная небритость, которая нехарактерна для него.

-Это же бельгиец?

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

Дальше мы с ним обсуждаем что то, в том числе и здоровье, где он упоминает тот самый провал на лице. 

Все....

___________________________________________________

Что уже неоднократно замечено - во сне смотря на человека ты говоришь себе это допустим Вася, ты знаешь его как Васю, но если приглядеться, то мы видим что на Васю он не похож, а ярлык висит. Во всех снах что я помню, очень мало людей по внешности (то как я ее помню, воспоминание может пройти через десятки лет) соответствуют ярлыку, который повесил разум.

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

Наверное полумрак также относится к этому видео.

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

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

Что я слышу? барабанная дробь по отливу, это же дождь...


дождь кончился....

 "Я надеюсь она будет дурой, маленькой прекрасной дурой..."

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

Я что то обсуждаю с кем то, тут подходит София Я.

-На, Андрюша, я не знаю что это, оно мне не нужно - говорит София

Вручает мне нечто не особенно тяжелое, завернутое в пупырку, я разворачиваю и вижу кусок металла буквой П, с ушками для установки в серверную стойку. Это крышка (модуль защиты) для вот такого агрегата:


Только у него почему то есть слоты для USB-dongle, чего в оригинале нету. 

- Откуда это у Вас? - спрашиваю я. Вопрос резонный, т.к. агрегат рассчитан на 64 устройства, ни ей, ни юр лицам связанным с ней, такой объем не нужен и стоит эта дура под 200 000 рублей в полной комплектации, я знаю, потому что у меня есть такая

- Не знаю, хочешь забирай

Дальше я не помню



 Вчера часов 18 включили горячую воду, а вот холодную до сих порт нет ((

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


ПыСы

Дети этажом выше по прежнему бегают с утра до вечера. Сегодня в час ночи туда добавили еще и вопли

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

Картины: Феде Галиция

 


Оставлю свою маленькую ремарку. Нижняя часть корзины, и стол с фруктами выдают примерное время работы (XVI-XVII века). В персиках тоже проглядывается, но не так ярко. Первый взгляд на персики (без нижней части картины) привел меня в восторг.

День сегодняшний встретил меня полным отсутствием воды в кране О_О, спас фильтр питьевой воды, т.к. он накопительного типа. Хватило на кашу и стакан воды. Да, умывался в стакане воды

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

Ф.СКОТТ ФИЦДЖЕРАЛЬД «ВЕЛИКИЙ ГЭТСБИ». 

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


А вообще, стиль совсем не мой, мне это напомнило серию детективов "Черный котенок", которые я читал в детстве.

УИЛЬЯМ ФЕРГЮСОН "ЧЕРНЫЕ ФИГУРЫ"

 К чем сложно привыкнуть - нетерпеливость местных водителей. Зеленый только включился, он пятый-десятый в очереди и уже жмет клаксон. При этом на части светофоров желтый не включается вообще. Клаксонят* и во дворах порой почем зря, мои нервы с трудом переносят это. Также, видать из-за иммунитета местного населения, некоторые на легковушку ставят звуковой сигнал от большегрузов. После таких звуков, я к вомбату становлюсь все ближе*.

_______________________________________________________

Клаксонить - нажимать на клаксон, протяжно бибкнуть. Тут я вспоминаю Нурию из Испании, которая удивлялась легкому превращению брюк в элегантные шорты существительного в глагол.

Вомбат - австралийский эндемик, родственник коалы, примечателен тем, что срёт кубиками

 В пятницу этажом выше подселили детей, они бегают туда сюда аж до 12 ночи О_О

Картины: Ким Джанг Ги


 

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

 Подбежал парень, 

-Ты местный? 

-Нет

-А знаешь кого с машиной? - показывает на машину

-Нет, но в чем вопрос?

-Нужен ключ на 12

-Ну пошли, у меня машина двумя домами дальше

Дал ему ключ на 12 и 10, на всякий случай, а сам в магазин. Минут через 20 возвращаюсь, а они все возятся с машиной

-Андрюх, не знаешь что может быть, аккумулятор поменяли, а все равно не заводится

-Увы, авто - не моя тема

Отдал мне ключ и пошел обратно. Идя с ключом, думал в чем может быть проблема? Аккумулятор, технически несет только одну нагрузку - завести авто и поддержать электросеть при выключенном зажигании. Надо было послушать как она заводится, думал я. В этот момент подбегает его напарник:

-Андрюха, дай ключ, мы поняли - это сигналка

И тут я вспомнил, что я был ровно в такой же ситуации на тыковке*, она отказалась заводится после очень сильного дождя, а еще на Toyota corola 89 года... Правда я не разбирал тачку и не снимал аккумулятор

______________________________________________

Тыковка - Mazda 323 зеленого цвета, тыковкой прозвана из-за номера ТКВ

Маленький закос под мост "Золотые ворота" и только для людей


С одной стороны заканчивается скейт-площадкой


47°05'49.1"N 51°53'43.9"E Жилгородок, Атырау (https://goo.gl/maps/QqXZrvCy7k68hoL86)

Вдоль реки идет вело-пешеходная дорожка

Здесь опять видим попытки искусственного полива 


С другой стороны мост упирается в парк. Парк посвящен героям ВОВ (здесь есть "Аллея памяти") и совмещен с парком развлечений. Что интересно, это как ровно посажены деревья


И как не обойтись без рекламы?



А вот этого зверя я вижу впервые


UP
Поиск по картинке дал ответ, это катальпа или трубное дерево


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

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

Пошел утром делать карточку в банк БЦК, хочу мультивалютную. Без приключений не обошлось, навигатор сказал - 9 минут ехать, ну ок. Приехал, вижу банкоматы, вижу заклеенные окна второго этажа и ... все... Говорю навигатору: ты дура, давай следующий, а по следующему адресу только жилой дом! Ладно, зайду на сайт и посмотрю там, выбираю первый попавшийся, еду .. и ... я на первом месте. Ладно, может я дурак все таки, поводил жалом и выяснил что вход внутри комплекса. Хочу заказать мультивалютную TravelCard, а консультант говорит что картакарта придется в любом случае делать, плюс к этому Travelcard выпускается неделю, стоит 10000 тенге, облуживание 5000 тенге в месяц. Ну ладно, я знал на что иду. Долго и нудно оформляем это дело, все.

Еду на рынок Дина. Хм, у нас в СПб это овощебаза (например на Непокоренных или Софийская). Я не умею и не люблю торговаться, от чего такие места вызывают у меня не самые приятные ощущения. Но здесь, в отличии от магазина рядом с домом, на помидоры и огурцы можно смотреть без слез, а картоха, какая тут картоха. Купил еще кабачков, но они какие то маленькие (((

Еду дальше домой, по пути вижу торговый комплекс, большой такой, думаю, дай ка зарулю. Угу, зарулить то зарулил, а вырулить не смог, т.к. парковка платная, а оплата только онлайн О_О. Потратил минут тридцать на поиск способа оплаты, а в чем проблема?, да в том, что оплата возможна либо через приложение Рахмет либо через Каспи. А каспи у меня нет, быстро сварганить его тоже не получилось. А приложения Рахмет (именно так на стенде написано) отсутствует в Google Play. Только спросив у гугла "рахмет парковки", я выяснил что приложение называЛОСЬ Rahmet (!), а теперь это Choco. Выехал...

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

Птиц я тут практически не видел, но машину мою они походу увидели 


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

"Помогут пристать к берегу жизни и избежать пучины мрака"

 Сижу жду манны небесной, а именно ИИН, без него нельзя сделать банковскую карту. Заказал я его 3го числа, сказали отгрузка 5го, но вот уже шестое, а заветного письма сова не несет ((((

Позвонил, сказали что нагрузка большая и обработка увеличена с одного до ПЯТИ рабочих дней....

А я кушац хочу....

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

EXCEL СчетЕсли пара фокусов

Счет с отрицанием

=СЧЁТЕСЛИ(A:A;"<>"&"БЛАБЛА")

Счет непустых ячеек

=СЧЁТЕСЛИ(A:A;"<>"&"")

Счет при более одном условии (посчитать ячейки не пустые и без пробела)

=СЧЁТЕСЛИМН(A:A;"<>"&" ";A:A;"<>"&"")

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

 Еще в 20 году я заприметил так называемые наушники с костной проводимостью, и прям загорелся, но цена 13К меня не радовала, да и попробовать нельзя. Ходил, думал. в итоге по  акции себе на ДР в 21 году купил сей девайс:

AFTERSHOKZ AEROPEX

И таки да - это то что нужно лично для меня, потому как большинство вставок вываливается, особенно при разговоре или жевании или ходьбе. От гарнитуры образуется маленькая пролежень и постоянно норовит смыться, да и громкость такая себе. Эти же наушники перевернули мир, да и они не без недостатков, но меня они устраивают и позволяют слушать подкасты и книги при уборке, когда я на монтаже или крафчу дома, даже в ванной можно. А с появлением пса я могу теперь и на прогулке слушать. И можно еще и с людьми разговаривать по телефону )))


 Суровая детская площадка. Дети сегодня там что-то строили из кирпичей. 
Тут можно себе задать вопрос, а нет ли параллели с рассказом (повестью?) Д.Лондона "Бурый"

1С БП нет вида операции - "Перечисление заработной платы работнику"

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

 Утром, в ожидании минутки у операциониста в налоговой Атырау, обратил внимание на сопряженное помещение за стеклянными стенами. Провода висящие на трубе сразу возвестили что здесь живет как минимум техник. А более подробный осмотр подсказал что это серверная-кабинет системного администратора, а еще склад мебели О_О

ПыСы
По определенным причинам не буду описывать детально, но думаю многие поймут из чего я сделал вывод о помещении и хозяине

 Записали меня в ЦОН на 11 утра, и что ты думаешь?, Меня везде пинают

Приехал в 10.45 по адресу, который указал мне записывающий, там охранник сказал туды иди, там оператор сказала иди в первое окошко, а там сказали что ЦОНа здесь нет давно. При это на карте есть

Поехал по следующему адресу на картах, там тоже нет ЦОНа, Добрый человек дал адрес ЦОН1

Здесь с первого этажа послали на второй, а второй именно туда - в пеший эротический, а конкретно северная промзона 69, но карты не знают такого адреса! Отправляют в Москву. Только одна карта подсказала что это северная промышленная зона 69 где и вправду есть специализированный ЦОН для автомобилей!

Оператор по телефону удивилась, говорит пойду выяснять, пока она выясняла, я каким то чудом в интернетах откапал запись в газете от 29/09/2022, где говорится что к модели отдельного ЦОНа для мигрантов присоединяется и Атырау, в котором сие и происходило. А время то уже 12.20

Тут также послали, сказав мигрантам сзади. Ладно, тут толпа, очереди нет, кто нахальней, тому и лавры. Где это видано, выходит сотрудник операционного зала и говорит "Узбеки" и хватает штук 10-15, дальше они почти в цивильной очереди стоят. Потом снова выходит и кричит "Русские", хватает пачку и толкает. А все от того, что Узбекистан регистрировать по регламенту до 15 минут, а РФ - 3 минуты. В итоге вся процедура заняла около 40 минут, без записей.


При всем при этом езда по городу по гугловскому навигатору - отдельная тема, он опаздывает, т.о. пропускаешь повороты на раз, в некоторых местах по карте есть проезд, а по факту нет, данные по картам неактуальны. Яндекс в ту же степь, но он иногда опаздывает на сто км. Пока лучше всех справился 2Гис, но у него хоть и есть в быстрых настройках отключения звука, он не отключает оповещение о камерах и перебивает собеседника!

 


Вот такие вещи тут растут, прямо напротив полицейского департамента

 Все эти гринго лживые твари!

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

Картины: Джордж Фредерик Уоттс

 


 Отмечу что вокруг Атырау степь, почти пустыня, но в самом городе видны попытки добавить зелени в виде аллей и прочих насаждений, в некоторых местах даже есть полив, но увы большею частью оно заброшено. Да деревья для текущего климата (Астана уже заморозки, а здесь +21). Забавно смотреть на зеленую зону - вытоптанные полянки, еле пробивающаяся растительность, вычурные скамейки и гранитные урны...



Интересный метод сбора вод 


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

Году в 21ом я сделал себе загран паспорт, с надеждой иметь возможность таки перейти Нарву, когда я снова поеду в Ивангород на фестиваль или просто так. Увы, Нарву я так и не перешел, но как выясняется паспорт сделал я не зря. И никто не знал что первым будет Казахстан, дык еще и на машине

28.09.2022 15.40 выехал

01.10.2022 17.24 прибыл на место посадки в Атырау

Суммарный пролет ~3200 км

Навигатор завел через пром зону, выглядит нелицеприятно....


А вот и дом



 Странные ощущения, когда видишь дорогу так далеко на горизонте. Отметим что по ровной глади до горизонта примерно 5км, здесь спуск и сложно представить сколько до него. А как дорожным рабочим, которые обновляют покрытие этой трассы (А-27) (пысы, в 2021 году еще делали)?

 Другой банк работает с 10 утра, уже 10:06, жалюзи внутри подняты, но дверь закрыта

Ага, в том банке (kaspi) все таки началась движуха. 

В смысле талоны тех, кто не успел вчера?

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

 Уже 50 минут прошло, а банк закрыт. Сотрудник только подъехала!

 По площади гуляют и вороны, не вороны, а вороны О_О

 Если банк себе позволить может открыться на полчаса позже, то на что способны остальные?

 Оказывается сорока больше голубя

 В Актобе сороки летают прямо по вокзальной площади...

 Отвык от бездомных собак

 Казахский ветер сносил бензин...

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