Доступ к другой БД 1С через V83.COMConnector

Задача: перенести содержимое регистра из одной БД в другую.

Решение: одним из способов (помимо обработки ВыгрузкаЗагрузкаДанныхXML.epf) является прямая загрузка через COM подключение. Вышло примерно так:

// соединяемся с БД	
		V8=Новый COMОбъект("V83.COMConnector");
		Попытка
			База=V8.Connect("Srvr=""fserferfw""; Ref=""ewrfwe""; Usr=""werfwerfwe""; Pwd=""werfwerfwer"";")
		Исключение
			сообщить("Чтото пошло не так..");
		КонецПопытки;
	
	// делаем выборку из нашего регистра
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 10
		|	ОчередьРаботыСВотцапСрезПоследних.Телефон КАК Телефон,
		|	ОчередьРаботыСВотцапСрезПоследних.ЛицевойСчет КАК ЛицевойСчет,
		|	ОчередьРаботыСВотцапСрезПоследних.ЛицевойСчет.Код КАК ЛицевойСчетКод,
		|	ОчередьРаботыСВотцапСрезПоследних.Период КАК Период,
		|	ОчередьРаботыСВотцапСрезПоследних.Сообщение КАК Сообщение,
		|	ОчередьРаботыСВотцапСрезПоследних.ДатаОбработки КАК ДатаОбработки
		|ИЗ
		|	РегистрСведений.ОчередьРаботыСВотцап.СрезПоследних КАК ОчередьРаботыСВотцапСрезПоследних
		|ГДЕ
		|	ОчередьРаботыСВотцапСрезПоследних.Результат = &Результат";	
	Запрос.УстановитьПараметр("Результат", перечисления.ГринРезультатЗапроса.Успешно);	
	РезультатЗапроса = Запрос.Выполнить();	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл							
			МенеджерЗаписи =База.РегистрыСведений.ОчередьРаботыСВотцап.СоздатьМенеджерЗаписи();			
			МенеджерЗаписи.ЛицевойСчет = База.справочники.vscЛицевыеСчета.НайтиПоКоду(ВыборкаДетальныеЗаписи.ЛицевойСчетКод);
			МенеджерЗаписи.Телефон = ВыборкаДетальныеЗаписи.Телефон;
			МенеджерЗаписи.Действие =  База.перечисления.ГринДействияСВотцап.ПроверкаНаличияВотцап;
			МенеджерЗаписи.Результат=  База.перечисления.ГринРезультатЗапроса.Успешно;
			МенеджерЗаписи.ДатаОбработки=ВыборкаДетальныеЗаписи.ДатаОбработки;
			МенеджерЗаписи.Период=ВыборкаДетальныеЗаписи.Период;
			МенеджерЗаписи.Статус= База.перечисления.СтатусОчередиВотцап.Обработан;
			МенеджерЗаписи.Записать();  		
		
	КонецЦикла;

Python: из объекта в JSON

Если применять json.dumps с объектом, то можно словить ошибку сериализации объекта. Для обхода этого можно применить следующий способ:

def serialize(obj):    
    return obj.__dict__
loc=json.dumps(loc, default=serialize)

В этом случае, если штатный сериализатор «не справляется», то ему будет передана «подсказка» о типе

UBUNTU: настройка ротации логов

В Ubuntu за ротацию логов отвечает утилита logrotate. Обычно она уже установлена в «базе».

Для настройки используется каталог /etc/logrotate.d В этой папке необходимо добавить файл вида:

/home/user/ocpp_servers/*.log {
        weekly
        missingok
        rotate 90
        compress
        delaycompress
        notifempty
        create 755 root adm
        sharedscripts
}

Собственно просто указываем файлы которые нуждаются в «ротации», и внутри скобок — что делать с ними.

  • rotate — указывает сколько старых логов нужно хранить, в параметрах передается количество;
  • create — указывает, что необходимо создать пустой лог файл после перемещения старого;
  • dateext — добавляет дату ротации перед заголовком старого лога;
  • compress — указывает, что лог необходимо сжимать;
  • delaycompress — не сжимать последний и предпоследний журнал;
  • extension — сохранять оригинальный лог файл после ротации, если у него указанное расширение;
  • mail — отправлять Email после завершения ротации;
  • maxage — выполнять ротацию журналов, если они старше, чем указано;
  • missingok — не выдавать ошибки, если лог файла не существует;
  • olddir — перемещать старые логи в отдельную папку;
  • postrotate/endscript — выполнить произвольные команды после ротации;
  • start — номер, с которого будет начата нумерация старых логов;
  • size — размер лога, когда он будет перемещен;
  • hourly — каждый час;
  • daily — каждый день;
  • weekly — каждую неделю;
  • monthly — каждый месяц;
  • yearly — каждый год.

Тестирование получившейся конфигурации:

logrotate -d /etc/logrotate.d/ocpp

1 2