Преодолел лень и нашел загрузку контрагентов с сайта. УНФ 3.0

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

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

В итоге глянул немного модули и нашел нужный ОбменССайтом, а в нем функцию СоздатьКонтрагента.

Немножко модифицировал:

&Вместо("СоздатьКонтрагента")
Функция сайт_СоздатьКонтрагента(ДокументОбъект, КонтрагентXDTO, Параметры, ОписаниеОшибки)
	//Осипов 2024-04-27 - доработки по сайту
	НовыйКонтрагент = ПродолжитьВызов(ДокументОбъект, КонтрагентXDTO, Параметры, ОписаниеОшибки);
	
	//Вести расчеты по договорам - не ставим
	НовыйКонтрагент.ВестиРасчетыПоДоговорам = ложь;
	
	Попытка
		НовыйКонтрагент.сайт_СтрокаXDTO = ОбъектXDTOВстроку(КонтрагентXDTO);		
	Исключение
		ЗаписьЖурналаРегистрации("Ошибка.Отладка",,, НовыйКонтрагент, "Не записался реквизит XDTO контрагента" + ОписаниеОшибки());
	КонецПопытки;
	
	НовыйКонтрагент.Записать(); 
	
	Возврат НовыйКонтрагент;
КонецФункции


Функция ОбъектXDTOВстроку(ОбъектXDTO) Экспорт
    // Создание объекта ЗаписьXML
    ЗаписьXML = Новый ЗаписьXML;
    // Указываем, что запись производится в строку, а не в файл
    ЗаписьXML.УстановитьСтроку();
    // При помощи объекта ФабрикаXDTO записываем данные пакета XDTO в запись XML
    ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
    // Получаем текст записи XML
    ТекстОбъектаXDTO = ЗаписьXML.Закрыть();    
    Возврат ТекстОбъектаXDTO;
КонецФункции

Решил сохранять текст XDTO контрагента. Преобразование XDTO изолировал от ошибок, потому что не на чем было проверить — обмен с сайтом проходит только в рабочей базе.

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

Кстати, поле текста XDTO контрагента добавил программно в свертываемую группу таким образом:


&НаСервере
Процедура сайт_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	Привязка = Элементы.КолонкаСправа;
	Гр = Элементы.Добавить("сайт_ГруппаСайт", Тип("ГруппаФормы"), Привязка);
	Гр.Вид = ВидГруппыФормы.ОбычнаяГруппа;
	Гр.Заголовок = "Сайт";
	Гр.Поведение = ПоведениеОбычнойГруппы.Свертываемая;
	
	Элемент = Элементы.Добавить("сайт_СтрокаXDTO", Тип("ПолеФормы"), Гр);
	Элемент.Вид = ВидПоляФормы.ПолеВвода;
	Элемент.Заголовок = "Строка XDTO с сайта";
	Элемент.ПутьКДанным = "Объект.сайт_СтрокаXDTO";
	Элемент.МногострочныйРежим = истина;
	Элемент.АвтоМаксимальнаяШирина = ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура сайт_ПриОткрытииПосле(Отказ)              
	Элементы.сайт_ГруппаДополнительно.Скрыть();
КонецПроцедуры

Среда: УНФ 3.0.7.122 Облако: Cloud 42 Объем: 1 час

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *