1C: вывод картинки в списке формы документа с изменением

Задача: необходимо сделать чтобы при двойном клике по ячейке статуса документа динамически изменялась картинка и соответственно его статус в форме списка документа.

Решение:

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

Далее форму списка сделаем динамической, и добавим в запрос настройки списка связку с регистром:

...
	ВЫБОР
		КОГДА СК_ГР_Статусы_ДПС.Статус = ЗНАЧЕНИЕ(Перечисление.СК_ГР_СтатусКартинкой.Флажок)
			ТОГДА 0
		КОГДА СК_ГР_Статусы_ДПС.Статус = ЗНАЧЕНИЕ(Перечисление.СК_ГР_СтатусКартинкой.Галочка)
			ТОГДА 1
		ИНАЧЕ 2
	КОНЕЦ КАК СтатусК
ИЗ
	Документ.СК_ЗаявкаНаКУКУ КАК ДокументСК_ЗаявкаНаСК_ЗаявкаНаКУКУ 
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СК_ГР_Статусы_ДПС КАК СК_ГР_Статусы_ДПС
		ПО (СК_ГР_Статусы_ДПС.ДокОснование = ДокументСК_ЗаявкаСК_ЗаявкаНаКУКУ .Ссылка)
...

Для следующего шага необходимо подготовить картинку высотой 32 пикселя, и шириной 32*количество_статусов, например что-то в этом духе:

Далее на форме списка, у колонки «СтатусК», выберем вид «Поле картинки» и в свойство «Картинка значений», загрузим картинку:

Ну и соответственно в событие таблицы «выбор» добавим изменение статуса по двойному клику по столбцу «СтатусК»:

&НаСервере
Функция ПолучитьТекущийСтатусДокумента(Регистратор) 
	ТекущийСтатус=Перечисления.СК_ГР_СтатусКартинкой.ПустаяСсылка();
	Запрос = Новый Запрос;	
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	СК_ГР_Статусы_ДПС.Статус КАК Статус
		|ИЗ
		|	РегистрСведений.СК_ГР_Статусы_ДПС КАК СК_ГР_Статусы_ДПС
		|ГДЕ
		|	СК_ГР_Статусы_ДПС.ДокОснование = &Регистратор";
	
	Запрос.УстановитьПараметр("Регистратор", Регистратор);
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ТекущийСтатус=ВыборкаДетальныеЗаписи.Статус;
	КонецЦикла;

	возврат ТекущийСтатус;
КонецФункции	

&НаСервере
Процедура ИзменитьСтатусКНаСервере(НомерДок)
	док=Документы.СК_ЗаявкаНаИсполнениеПлатныхУслуг.НайтиПоНомеру(НомерДок);
	ТекСтат=ПолучитьТекущийСтатусДокумента(док);
	если ТекСтат=Перечисления.СК_ГР_СтатусКартинкой.ПустаяСсылка() тогда
		ТекСтат=Перечисления.СК_ГР_СтатусКартинкой.Флажок;
	иначеесли ТекСтат=Перечисления.СК_ГР_СтатусКартинкой.Флажок тогда
		ТекСтат=Перечисления.СК_ГР_СтатусКартинкой.Галочка;
	иначеесли ТекСтат=Перечисления.СК_ГР_СтатусКартинкой.Галочка тогда
		ТекСтат=Перечисления.СК_ГР_СтатусКартинкой.ПустаяСсылка();
	конецесли;
	
	МенеджерЗаписи = РегистрыСведений.СК_ГР_Статусы_ДПС.СоздатьМенеджерЗаписи(); 
	МенеджерЗаписи.ДокОснование = док; 
	МенеджерЗаписи.Статус = ТекСтат; 
	МенеджерЗаписи.Записать();   	
	
КонецПроцедуры


&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	если Поле.Имя="СтатусК" тогда 
		ИзменитьСтатусКНаСервере(Элемент.ТекущиеДанные.Номер);
		Элементы.Список.Обновить(); 
		СтандартнаяОбработка=ложь;
	конецесли;	
КонецПроцедуры

Android Studio: обработка сайтов с сертификатом Минкомсвязи в webview компоненте приложения

При попытке отобразить в webview компоненте сайт с сертификатом выданным Минкомсвязи, возникает ошибка проверки SSL соединения, т.к. этому корневому сертификату система не «доверяет». В частности ошибка возникает в настоящий момент при процессинге платежей банка Тинькофф и Сбербанк. В настоящий момент существует путь заставить компонент webview корректно проходить проверку сертификата на таких сайтах. Для этого в файл манифеста приложения необходимо добавить строчку вида:

<application
        android:networkSecurityConfig="@xml/network_security_config"
...

А так-же в папке ресурсов добавить папку xml, и разместить там файл network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">ru</domain>
        <trust-anchors>
            <certificates src="@raw/root"/>
            <certificates src="@raw/sub"/>
            <certificates src="system"/>
            <certificates src="user"/>
        </trust-anchors>
    </domain-config>
</network-security-config>

Сертификаты Минкомсвязи, соответственно нужно положить в android/src/res/raw. Скачать их можно тут

В результате проведенных манипуляций, все сайты в зоне ru, будут сначала проверяться при помощи сертификата Минкомсвязи, а в случае не успеха — встроенными сертификатами системы и установленными сертификатами пользователя.

1С: получаем список НКО с сервера minjust.gov.ru

Почему то у нас как всегда всё.. Государство требует проверять контрагента является ли он НКО, а инструментарий для этого не предлагает. Не, ну какой-никакой сервис у них был — можно было зайти на сайт, ввести в поле поиска название НКО и и получить результат — есть в списке это организация или нет. Но это согласитесь бред. «Автоматизировать процесс проверки?? А зачем? Куча бухгалтеров — бездельников, чего делать будет? ;)». Всего файла целиком скачать возможности не было. Поэтому приходилось парсить у них сайт, собирая по кусочками Excel файлы в одну кучу (была у них кнопка «экспорт текущей страницы»). Теперь сайт изменили..но лучше не стало. Возможности скачать весь файл целиком как не было так и не стало. Чуть поковыряв их страницу нашел как получить «сессионный ключ» и способ как передавать правильные POST параметры, чтобы получить кусочки JSON, кои потом можно склеить в единую базу. Результат вылился в обработку для 1С, которую можно скачать тут

Python: ошибка установки cv2

При попытке установить:

pip install cv2

Получаем ошибку:

ERROR: Could not find a version that satisfies the requirement cv2 (from versions: none)

А всё просто. Почему то авторы пакета обозвали его в репозитарии pip как opencv-python. Соответственно и устанавливать его нужно так:

pip install opencv-python

А использовать так:

import cv2

Сохранение весов модели нейросети

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

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

traning_model_save=base_dir+"\save_model\cp.ckpt"
....
EPOCHS = 10
print("- настраиваем кэлбеки для сохранения натренированной модели")
# Создаем колбек для сохранения контрольной точки
cp_callback = tf.keras.callbacks.ModelCheckpoint(traning_model_save,
                                                 save_weights_only=True,
                                                 save_freq=EPOCHS,
                                                 verbose=1)
print("- тренируем модель")
history = model.fit(
    train_data_gen,
    steps_per_epoch=int(np.ceil(total_train / float(BATCH_SIZE))),
    epochs=EPOCHS,
    validation_data=val_data_gen,
    validation_steps=int(np.ceil(total_val / float(BATCH_SIZE))),
    callbacks = [cp_callback]   # вызываем кэлбек после каждого шага обучения
)

Так-же можно сохранять не только веса, но и всю модель целиком:

model.save('model.h5')
1 34 35 36 37 38 300