Архив метки: server

1С: Пять способов вывода сообщений с «сервера»

Конфигурации, платформы и БСП разные бывают, потому где-то сработает одно, где-то другое.

1) Универсальный способ: 

сообщить("Текст сообщения")

2)  Через СообщениеПользователю:

		    Сообщение = Новый СообщениеПользователю();
		    Сообщение.Текст = "Вид начисления "+стр.ВидНачисления+" в таблице 'Расчет ОДН' не соответствует виду услуги "+ВидУслуги;
		   Сообщение.Поле = "ДанныеДляНачиселенийПоОДН[0].ВидНачисления";
			Сообщение.ПутьКДанным = "Объект";
            Сообщение.КлючДанных = Ссылка;
		    Сообщение.Сообщить();

3) Старые БСП (ниже 3-й версии):

ОбщегоНазначения.Сообщение(Сообщение.Текст,, "Объект.ДанныеДляНачиселенийПоОДН",,);

4) Свежие БСП (выше 3 версии)

ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "Объект.Товары",, Отказ);

5) Через «ВызватьИсключение»

Может быть полезно например при отказе в проведении документа в процедуре ОбработкаПроведения:

Процедура ОбработкаПроведения(Отказ, Режим)
блабла..
блабла...
проверки..

Отказ=истина;
ВызватьИсключение(Сообщение.Текст);

Ошибка преобразования данных XDTO, управляемые формы

При передаче данных какого-то документа или справочника из клиента на сервер, иногда возникает ошибка вида:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:

Фактически это означает, что сериализатор 1С не смог преобразовать данные в доступный для передачи вид. Скорее всего в справочнике есть таблица значений.  Что делать?

А всё просто — передадим на сервер уникальный идентификатор, а уж на сервер «восстановим» по нему объект:

&НаСервере
Функция ДобавитьТУВетвьНаСервере(ИмяВетви,ВидНачисленияВетви,РодительОТУ);
...
	данные=Справочники.ВидыНачислений.ПолучитьСсылку(Новый УникальныйИдентификатор(ВидНачисленияВетви));
...
КонецФункции
&НаКлиенте
Процедура СоздатьТочкиУчетаВеткиНачислений(СтрокиДерева,родительОТУ)
...
 ТУВетвь=ДобавитьТУВетвьНаСервере(элемента.Наименование,элемента.ВидНачисления.УникальныйИдентификатор(),родительОТУ);
...
КонецПроцедуры

 

1С: передача файла с клиента на сервер, управляемое приложение

Ситуация: пользователь на клиенте выбирает файл, и его нужно обработать. Удобнее всего это сделать на сервере, т.к. на клиенте многие функции и процедуры не доступны. Реализовать это возможно помещение данных во временное хранилище, а далее из него, при вызове серверной процедуры, «обратное» изьятие. Например реализовать это можно как-то вот так:

&НаКлиенте
Процедура ЗагрузитьSonex()
	
	БинарныйФайл = Новый ДвоичныеДанные(Объект.ИмяФайла);
	сообщить("-помещаем во временное хранилище");
	АдресВХ = ПоместитьВоВременноеХранилище(БинарныйФайл,ЭтаФорма.УникальныйИдентификатор);	
	ОбработатьНодХМЛНаСервере(АдресВХ,объект.ГруппаЗагрузки);
	
	сообщить("-ок");
	
КонецПроцедуры

&НаСервере
Процедура ОбработатьНодХМЛНаСервере(АдресВХ,владелец);
	сообщить(АдресВХ);
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВХ);
	
	тПуть = "c:\temp\pricesonix.xml"; //для примера...
	ДвоичныеДанные.Записать(тПуть);	
	
	ЧтениеХ=Новый ЧтениеXML;
	ЧтениеХ.ОткрытьФайл(тПуть);	
КонецПроцедуры

 

Новый проект. DHCP сервер с выборкой из БД на Python

Задачей было написать аналог проекта DHCP2DB , но только на Python вместо C.

В принципе уже как прототип работает. Может отдавать IP адрес как обычным устройствам, так и свичам работающим по опции 82.

Ссылка на GIT: https://github.com/donpadlo/dhcp2dbpy

Полное описание проекта тут

Read only для CalDAV+CardDAV сервера Baikal

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

Однако! Чуть покопавшись в движке, можно сделать небольшой патч, который позволит на нужное время включать режим readonly, и выключать его (на период когда нужно подправить общий справочник).

Открываем baikal/vendor/sabre/dav/lib/CardDAV/Card.php и в строке 195 меняем write на read.

У себя я оформил всё 3 файлами: 1) Патч 2) Включение режима readonly 3) Выключение режима

readonly.path:

--- /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php	2018-07-23 14:17:02.792202000 +0300
+++ /home/pavel/path_dav/Card.php	2018-07-23 14:18:20.941978000 +0300
@@ -220,7 +220,7 @@
                 'protected' => true,
             ],
             [
-                'privilege' => '{DAV:}write',
+                'privilege' => '{DAV:}read',
                 'principal' => $this->addressBookInfo['principaluri'],
                 'protected' => true,
             ],

readonly.sh

#!/bin/sh
patch /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php /home/pavel/path_dav/readonly.path

write.sh

#!/bin/sh
patch -R /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php /home/pavel/path_dav/readonly.path