Публикации

БСП
Разработки

Найдено результатов: 155


Чтение XML через DOM

Чтение XML через DOM
Андрей 23 4
функция читаемХМЛ2014(путь,атр) экспорт
	х 		= новый массив;
	y 		= новый массив;
	мДОМ 	= новый ПостроительDOM;
	
	заявка = новый таблицаЗначений;
	заявка.Колонки.Добавить("номерДок");
	заявка.Колонки.Добавить("клиент");
	заявка.Колонки.Добавить("адрес");
	заявка.Колонки.Добавить("товар");
	заявка.Колонки.Добавить("кодТовара");
	заявка.Колонки.Добавить("количество");
	заявка.Колонки.Добавить("цена");
	заявка.Колонки.Добавить("сумма");
	
	чтение 	= Новый ЧтениеXML ;
	чтение.ОткрытьФайл(сокрЛП(путь));
	мДокументДОМ = мДОМ.Прочитать(чтение);
	чтение.Закрыть();
	номерДок = "";
	клиент   = "";
	адрес    = "";
	_documents =  мДокументДОМ.ПолучитьЭлементыПоИмени("documents");
	для каждого а1 из _documents цикл
		_preorder = а1.ПолучитьЭлементыПоИмени("preorder");
		для каждого а2 из _preorder цикл
			_ттн = а2.дочерниеУзлы;
			для каждого а21 из _ттн цикл
				если (а21.имяУзла = "innercode") тогда
					номерДок =а21.ТекстовоеСодержимое;
				конецЕсли; 
				если (а21.имяУзла = "buypointjuridicalname") тогда
					клиент   = а21.ТекстовоеСодержимое;
				конецЕсли;
				если (а21.имяУзла = "buypointaddress") тогда
					адрес    = а21.ТекстовоеСодержимое;
				конецЕсли;
			конецЦикла;
			_item = а2.ПолучитьЭлементыПоИмени("item");
			для каждого а3 из _item цикл
				_товар  = а3.ДочерниеУзлы;
				хх = заявка.Добавить();
				хх.номерДок = номерДок;
				хх.клиент   = клиент;
				хх.адрес    = адрес;
				для каждого а4 из _товар цикл
					если  (а4.имяУзла = "SKUname") тогда
						хх.товар = а4.ТекстовоеСодержимое;
					конецЕсли;
					если (а4.имяУзла = "SKUcode")тогда 
						хх.кодТовара = а4.ТекстовоеСодержимое;
					конецЕсли;
					если (а4.имяУзла = "quantity")тогда 
						хх.количество = а4.ТекстовоеСодержимое;
					конецЕсли;
					если (а4.имяУзла = "priceDiscount")  тогда
						хх.цена = а4.ТекстовоеСодержимое;
					конецЕсли;
					если (а4.имяУзла = "amount")  тогда
						хх.сумма = а4.ТекстовоеСодержимое;
					конецЕсли;
				конецЦикла;
			конецЦикла;
		конецЦикла;
	конецЦикла;
	
	
	//мРазыменовательПИ = мДокументДОМ.СоздатьРазыменовательПИ(мДокументДОМ);
	//мЗапрос		= "/documents/preorders/preorder/body/item/*";
	//мХПуть		= мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
	//мРезультат	= мХПуть.Вычислить(мДокументДОМ);
	//мРодитель	= мРезультат.ПолучитьСледующий();
	//пока мРодитель <> неопределено цикл
	//	//если  мРодитель.ИмяЭлемента = "body" тогда
	//	//	  
	//	//	
	//	//	сообщить("");
	//	//	мРодитель=мРезультат.ПолучитьСледующий();
	//	//	продолжить;
	//	//конецЕсли;	 
	//	х.Добавить( мРодитель.ИмяЭлемента+" "+мРодитель.ТекстовоеСодержимое);
	//	сообщить(мРодитель.ИмяЭлемента+" "+мРодитель.ТекстовоеСодержимое);
	//	мРодитель=мРезультат.ПолучитьСледующий();
	//конецЦикла;
	
	возврат заявка;
конецФункции  //функция читаемХМЛ2014(путь)

Запись Чтение XML 2

Артур 46 2 3
   //Имя справочника для примера
    ИмяСправочника = "Номенклатура";
    
    ////////////////////////////////////////////////////////////­/////////////
    //Выгрузка
    
    Запись = Новый ЗаписьXML;
    Запись.УстановитьСтроку();
    
    //записываем объявление xml файла: <?xml version="1.0"?>
    Запись.ЗаписатьОбъявлениеXML();
    
    //записываем корневой элемент, по спецификации xml он может быть только один, назовем его "Данные"
    Запись.ЗаписатьНачалоЭлемента("Данные");
    
    //для того чтобы пространства имен не объявлялись сериализатором в кажом элементе, пишем их в корневой элемент
    //они будут работать на все вложеные элементы
    //пространство имен по-умолчанию
    Запись.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.1/data/enterprise/current-config");
    
    //пространства имен остальные префиксы
    Запись.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema");
    Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    
    //ограничение количества выгружаемых элементов для примера
    Кол = 4;
    Выборка = Справочники[ИмяСправочника].Выбрать();
    Пока Выборка.Следующий() Цикл
        
        //вместо этого кода в боевой реализации выгрузки будет создание ОбъектаXDTO и его сериализация
        //через ФабрикуXDTO и загруженные в нее схемы конфигурации приемника
        СериализаторXDTO.ЗаписатьXML(Запись, Выборка.ПолучитьОбъект());
        //
        
        Кол = Кол - 1;
        Если Кол=0 Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    //записываем конец корневого элемента
    Запись.ЗаписатьКонецЭлемента();
    
    //покажем что получилось
    Текст = Запись.Закрыть();
    Сообщить("Содержимое файла:");
    Сообщить(Текст);
    
    //а теперь загрузим это обратно
    
    ////////////////////////////////////////////////////////////­/////////////
    //Загрузка
    Сообщить("Данные полученные при загрузке:");
    
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(Текст);
    
    //прочитаем начало xml файла
    Чтение.ПерейтиКСодержимому();
    
    //прочитаем начало корневого элемента
    Чтение.Прочитать();
    
    //читаем содержимое пока текущим не станет конец корневого элемента, т.к. мы писали туда только целые элементы справочника,
    //а сериализатор читает каждый из их полностью, то мы упремся именно в конец корневого
    Пока Чтение.ТипУзла<>ТипУзлаXML.КонецЭлемента Цикл
        
        //читаем очередной элемент справочника
        Объект = СериализаторXDTO.ПрочитатьXML(Чтение);
        
        //покажем что прочитали, осталось только записать объект
        Сообщить(""+ТипЗнч(Объект)+" - "+Объект);
    КонецЦикла;
    
    Чтение.Закрыть();

Чтение Excel через Табличный документ

chugindanil 16 1
//На клиенте

ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбора.Заголовок = "Выберите файл";

Если ДиалогВыбора.Выбрать() Тогда
	ИмяФайла = ДиалогВыбора.ПолноеИмяФайла; 
	Команда1НаСервере(ИмяФайла);
	
КонецЕсли; 


//На сервере

//Вывод в табличный документ

ТабличныйДокумент = Новый ТабличныйДокумент;

ТабличныйДокумент.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);

//вывод в таблицу значений

ПЗ = Новый ПостроительЗапроса;

ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());

ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

ПЗ.ЗаполнитьНастройки();

ПЗ.Выполнить();

ТаблицаЗначений = ПЗ.Результат.Выгрузить();

ПроизвестиЧтениеДанных

Выполняет чтение файла данных при загрузке.
ОбщийМодуль.ОбменДаннымиXDTOСервер
Автор: 1С
// Выполняет чтение файла данных при загрузке.
//
// Параметры:
//  КомпонентыОбмена - Структура - содержит все правила и параметры обмена.
//  ТаблицыДляЗагрузки - ТаблицаЗначений - Таблица, в которую следует загрузить данные (при интерактивном сопоставлении данных).
//
Процедура ПроизвестиЧтениеДанных(КомпонентыОбмена, ТаблицыДляЗагрузки = Неопределено) Экспорт
	
	КомпонентыОбмена.ТаблицаОбъектовСозданныхПоСсылкам.Очистить();
	
	Если ТипЗнч(ТаблицыДляЗагрузки) = Тип("ТаблицаЗначений")
		И ТаблицыДляЗагрузки.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Если КомпонентыОбмена.ЭтоОбменЧерезПланОбмена
		И КомпонентыОбмена.УзелКорреспондентаОбъект = Неопределено Тогда
		КомпонентыОбмена.УзелКорреспондентаОбъект = КомпонентыОбмена.УзелКорреспондента.ПолучитьОбъект();
	КонецЕсли;
	
	Если КомпонентыОбмена.ЭтоОбменЧерезПланОбмена Тогда
		ОчиститьСписокОшибокПриЗагрузкеДанных(КомпонентыОбмена.УзелКорреспондента);
	КонецЕсли;
	
	Результаты = Неопределено;
	ПрочитатьСообщениеОбмена(КомпонентыОбмена, Результаты, ТаблицыДляЗагрузки);
	
	Если Не КомпонентыОбмена.ФлагОшибки
		И КомпонентыОбмена.РежимЗагрузкиДанныхВИнформационнуюБазу Тогда
		ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Истина);
		
		ПрименитьУдалениеОбъектов(КомпонентыОбмена, Результаты.МассивОбъектовКУдалению, Результаты.МассивЗагруженныхОбъектов);
		УдалитьВременныеОбъектыСозданныеПоСсылкам(КомпонентыОбмена);
		ОтложенноеЗаполнениеОбъектов(КомпонентыОбмена);
		
		ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Ложь);
		
		Если Не КомпонентыОбмена.ФлагОшибки Тогда
			Попытка
				КомпонентыОбмена.МенеджерОбмена.ПослеКонвертации(КомпонентыОбмена);
			Исключение
				ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru = 'Направление: %1.
					|Обработчик: ПослеКонвертации.
					|
					|Ошибка выполнения обработчика.
					|%2.'"),
					КомпонентыОбмена.НаправлениеОбмена,
					ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
			КонецПопытки;
				
			ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Истина);
			
			ВыполнитьОтложенноеПроведениеДокументов(КомпонентыОбмена);
			ВыполнитьОтложеннуюЗаписьОбъектов(КомпонентыОбмена);
			
			ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Ложь);	
				
		КонецЕсли;
	КонецЕсли;
	
	// Фиксация успешного завершения обмена.
	Если КомпонентыОбмена.СостояниеОбменаДанными.РезультатВыполненияОбмена = Неопределено Тогда
		КомпонентыОбмена.СостояниеОбменаДанными.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Выполнено;
	КонецЕсли;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Чтение XML в таблицу значений

ArturR 31 2
Режим = РежимДиалогаВыбораФайла.Открытие;
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);        
	ДиалогОткрытияФайла.ПолноеИмяФайла = "";
	Фильтр = "Текст(*.XML)|*.XML";
	ДиалогОткрытияФайла.Фильтр = Фильтр;
	ДиалогОткрытияФайла.МножественныйВыбор = Ложь;             
	ДиалогОткрытияФайла.Заголовок = "Выберите файл для загрузки";
	
	Если ДиалогОткрытияФайла.Выбрать() Тогда 
		ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
		ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
		Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
		ТЗ = Сериализатор.ПрочитатьXML(ЧтениеXML,Тип("ТаблицаЗначений"));
		ЧтениеXML.Закрыть();
	КонецЕсли;
	
		ЭтотОбъект.Контрагент 		  	= Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ТЗ[0].КонтрагентИНН);
		ЭтотОбъект.КРВ_IDМенеджер	  	= ТЗ[0].IDМенеджер;
		ЭтотОбъект.КРВ_НомерЗаказаУНФ 	= ТЗ[0].Номер;
		ЭтотОбъект.Склад 				= Справочники.Склады.НайтиПоНаименованию(ТЗ[0].Склад);
	
Для каждого СтрокаТЗ Из ТЗ Цикл
КонецЦикла; 

Чтение файла XML в объект XDTO

Чтение файла XML в объект XDTO
acsent 82 15
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
	
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
	
ЧтениеXML.Закрыть();
	

ОписаниеОтчета

Служебные реквизиты (только для чтения):
ОбщийМодуль.ВариантыОтчетов
Автор: 1С
//     
//     Служебные реквизиты (только для чтения):
//       * Отчет               - <см. Справочники.ВариантыОтчетов.Реквизиты.Отчет> - полное имя или ссылка на отчет. 
//       * Метаданные          - ОбъектМетаданных: Отчет - метаданные отчета.
//       * КлючВарианта        - Строка - имя варианта отчета.
//       * ОписаниеПолучено    - Булево - флажок что описание строки уже получено.
//           Описание получается методом ОписаниеВарианта().
//       * СистемнаяИнформация - Структура - другая служебная информация.
//
Функция ОписаниеОтчета(Настройки, Отчет) Экспорт

	Если ТипЗнч(Отчет) = Тип("ОбъектМетаданных") Тогда
		Результат = Настройки.НайтиСтроки(Новый Структура("Метаданные, ЭтоВариант", Отчет, Ложь));
	Иначе
		Результат = Настройки.НайтиСтроки(Новый Структура("Отчет, ЭтоВариант", Отчет, Ложь));
	КонецЕсли;
	
	Если Результат.Количество() <> 1 Тогда
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Недопустимое значение параметра Отчет в функции ВариантыОтчетов.ОписаниеОтчета.
			|Отчет ""%1"" не подключен к подсистеме ""%2"". Проверьте свойство ""Хранилище вариантов"" в свойствах отчета.'"),
			Строка(Отчет), НаименованиеПодсистемы(""));
	КонецЕсли;
	
	Возврат Результат[0];
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ОписаниеВарианта

Служебные реквизиты (только для чтения):
ОбщийМодуль.ВариантыОтчетов
Автор: 1С
//     
//     Служебные реквизиты (только для чтения):
//       * Отчет               - <см. Справочники.ВариантыОтчетов.Реквизиты.Отчет> - полное имя или ссылка на отчет. 
//       * Метаданные          - ОбъектМетаданных: Отчет - метаданные отчета.
//       * КлючВарианта        - Строка - имя варианта отчета.
//       * ОписаниеПолучено    - Булево - флажок что описание строки уже получено.
//           Описание получается методом ОписаниеВарианта().
//       * СистемнаяИнформация - Структура - другая служебная информация.
//
Функция ОписаниеВарианта(Настройки, Отчет, КлючВарианта) Экспорт
	Если ТипЗнч(Отчет) = Тип("СтрокаТаблицыЗначений") Тогда
		ОписаниеОтчета = Отчет;
	Иначе
		ОписаниеОтчета = ОписаниеОтчета(Настройки, Отчет);
	КонецЕсли;
	
	КлючВариантаОтчета = ?(ПустаяСтрока(КлючВарианта), ОписаниеОтчета.ОсновнойВариант, КлючВарианта);
	Результат = Настройки.НайтиСтроки(Новый Структура("Отчет,КлючВарианта,ЭтоВариант", ОписаниеОтчета.Отчет, КлючВариантаОтчета, Истина));
	Если Результат.Количество() <> 1 Тогда
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Недопустимое значение параметра КлючВарианта в функции ВариантыОтчетов.ОписаниеВарианта:
				|вариант ""%1"" отсутствует в отчете ""%2"".'"),
			КлючВарианта, ОписаниеОтчета.Метаданные.Имя);
	КонецЕсли;
	
	ЗаполнитьОписаниеСтрокиВарианта(Результат[0], ОписаниеОтчета);
	Возврат Результат[0];
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЕстьПравоЧтенияИнформацииОВерсияхОбъектов

ОбщийМодуль.ВерсионированиеОбъектов
Автор: 1С
Функция ЕстьПравоЧтенияИнформацииОВерсияхОбъектов() Экспорт
	Возврат ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.ВерсииОбъектов);
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЕстьПравоЧтенияДанныхВерсийОбъектов

ОбщийМодуль.ВерсионированиеОбъектов
Автор: 1С
Функция ЕстьПравоЧтенияДанныхВерсийОбъектов() Экспорт
	Возврат ПравоДоступа("Просмотр", Метаданные.ОбщиеКоманды.ИсторияИзменений);
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПравоЧтения

Возвращает Истина если у пользователя есть право чтения вариантов отчетов.
ОбщийМодуль.ВариантыОтчетовПовтИсп
Автор: 1С
// Возвращает Истина если у пользователя есть право чтения вариантов отчетов.
Функция ПравоЧтения() Экспорт
	Возврат ПравоДоступа("Чтение", Метаданные.Справочники.ВариантыОтчетов);
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЧтениеРазрешено

Проверяет, что чтение существующего объекта из базы данных разрешено на уровне прав и
ОбщийМодуль.УправлениеДоступом
Автор: 1С
// Проверяет, что чтение существующего объекта из базы данных разрешено на уровне прав и
// на уровне записей для текущего пользователя.
//
// Параметры:
//  ОписаниеДанных - СправочникСсылка,
//                   ДокументСсылка,
//                   ПланВидовХарактеристикСсылка,
//                   ПланСчетовСсылка,
//                   ПланВидовРасчетаСсылка,
//                   БизнесПроцессСсылка,
//                   ЗадачаСсылка,
//                   ПланОбменаСсылка - ссылка на объект, который требуется проверить.
//                 - РегистрСведенийКлючЗаписи,
//                   РегистрНакопленияКлючЗаписи,
//                   РегистрБухгалтерииКлючЗаписи,
//                   РегистрРасчетаКлючЗаписи - ключ записи, которую требуется проверить.
//
// Возвращаемое значение:
//  Булево
//
Функция ЧтениеРазрешено(ОписаниеДанных) Экспорт
	
	Возврат УправлениеДоступомСлужебный.ДоступРазрешен(ОписаниеДанных, Ложь);
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Чтение XML файла

Чтение XML файла по объектно. (Экономим память, не читаем файл полностью, а отдельными блоками)
eXtend88 58 1 1 1
ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(ИмяФайлаНаСервере);
	Пока ЧтениеXML.Прочитать() Цикл
		Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Цикл
			Если ЧтениеXML.Имя = "Товар" Тогда // Считываем номенклатуру в XDTO
				ДанныеТовараXML = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
				НоменклатураОбъект = Справочники.Номенклатура.СоздатьОбъект();
				//  Заполняем реквизиты номенклатруы данными объекта XDTO 
				НоменклатураОбъект.Записать();
				Сообщение = Новый СообщениеПользователю;
				Сообщение.Текст = "Создана:" + НоменклатураОбъект.Наименование;
				Сообщение.Сообщить();
			Иначе
				ЧтениеXML.Прочитать();
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	ЧтениеXML.Закрыть();

ПриПовторномЧтенииНаСервереФормыРедактированияРазрешенныхЗначений

При повторном чтении заполняет или обновляет вспомогательные данные,
ОбщийМодуль.УправлениеДоступомСлужебный
Автор: 1С
// При повторном чтении заполняет или обновляет вспомогательные данные,
// требуемые для работы формы, которые зависят от содержания объекта.
//
Процедура ПриПовторномЧтенииНаСервереФормыРедактированияРазрешенныхЗначений(Форма, ТекущийОбъект) Экспорт
	
	УдалитьНесуществующиеВидыИЗначенияДоступа(Форма, ТекущийОбъект);
	УдалитьНесуществующиеВидыИЗначенияДоступа(Форма);
	
	УправлениеДоступомСлужебныйКлиентСервер.ЗаполнитьСвойстваВидовДоступаВФорме(Форма);
	
	УправлениеДоступомСлужебныйКлиентСервер.ПриИзмененииТекущегоВидаДоступа(Форма, Ложь);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПроизвестиЧтениеДанныхВРежимеАнализа

Выполняет чтение файла данных при загрузке в режиме анализа (при интерактивной синхронизации данных).
ОбщийМодуль.ОбменДаннымиXDTOСервер
Автор: 1С
// Выполняет чтение файла данных при загрузке в режиме анализа (при интерактивной синхронизации данных).
//
// Параметры:
//  КомпонентыОбмена - Структура - содержит все правила и параметры обмена.
//  ПараметрыАнализа - Структура - параметры интерактивной загрузки данных.
//
Процедура ПроизвестиЧтениеДанныхВРежимеАнализа(КомпонентыОбмена, ПараметрыАнализа = Неопределено) Экспорт
	
	Результаты = Неопределено;
	ПрочитатьСообщениеОбмена(КомпонентыОбмена, Результаты, , Истина);
	
	ПрименитьУдалениеОбъектов(КомпонентыОбмена, Результаты.МассивОбъектовКУдалению, Результаты.МассивЗагруженныхОбъектов);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПроверитьЧтениеРазрешено

Проверяет, что чтение существующего объекта из базы данных разрешено на уровне прав и
ОбщийМодуль.УправлениеДоступом
Автор: 1С
// Проверяет, что чтение существующего объекта из базы данных разрешено на уровне прав и
// на уровне записей для текущего пользователя. Если не разрешено, вызывается исключение.
//
// Параметры:
//  ОписаниеДанных - СправочникСсылка,
//                   ДокументСсылка,
//                   ПланВидовХарактеристикСсылка,
//                   ПланСчетовСсылка,
//                   ПланВидовРасчетаСсылка,
//                   БизнесПроцессСсылка,
//                   ЗадачаСсылка,
//                   ПланОбменаСсылка - ссылка на объект, который требуется проверить.
//                 - РегистрСведенийКлючЗаписи,
//                   РегистрНакопленияКлючЗаписи,
//                   РегистрБухгалтерииКлючЗаписи,
//                   РегистрРасчетаКлючЗаписи - ключ записи, которую требуется проверить.
//
Процедура ПроверитьЧтениеРазрешено(ОписаниеДанных) Экспорт
	
	УправлениеДоступомСлужебный.ДоступРазрешен(ОписаниеДанных, Ложь, Истина);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ОбъектПриЧтенииНаСервере

Обработчик события формы ПриЧтенииНаСервере, который
ОбщийМодуль.АвтономнаяРабота
Автор: 1С
// Обработчик события формы ПриЧтенииНаСервере, который
// встраивается в формы элементов данных
// (элементов справочников, документов, записей регистров, и др.),
// чтобы заблокировать форму, если это попытка изменения неразделенных данных,
// получаемых из приложения, в автономном рабочем месте.
//
// Параметры:
//  ТекущийОбъект       - СправочникОбъект,
//                        ДокументОбъект,
//                        ПланВидовХарактеристикОбъект,
//                        ПланСчетовОбъект,
//                        ПланВидовРасчетаОбъект,
//                        БизнесПроцессОбъект,
//                        ЗадачаОбъект,
//                        ПланОбменаОбъект,
//                        РегистрСведенийМенеджерЗаписи,
//                        РегистрНакопленияМенеджерЗаписи,
//                        РегистрБухгалтерииМенеджерЗаписи,
//                        РегистрРасчетаМенеджерЗаписи - менеджер записи.
//	ТолькоПросмотр - Булево - Свойство ТолькоПросмотр формы.
//
Процедура ОбъектПриЧтенииНаСервере(ТекущийОбъект, ТолькоПросмотр) Экспорт
	
	Если Не ТолькоПросмотр Тогда
		
		ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(ТекущийОбъект));
		АвтономнаяРаботаСлужебный.ОпределитьВозможностьИзмененияДанных(ОбъектМетаданных, ТолькоПросмотр);
		
	КонецЕсли;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЧтениеНовостейСлужбыПоддержки

Процедура регламентного задания ЧтениеНовостейСлужбыПоддержки
ОбщийМодуль.ИнформационныйЦентрСервер
Автор: 1С
// Процедура регламентного задания ЧтениеНовостейСлужбыПоддержки
//
Процедура ЧтениеНовостейСлужбыПоддержки() Экспорт
	
	ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ЧтениеНовостейСлужбыПоддержки);
    
    Если Не ЗначениеЗаполнено(Константы.АдресСервисаНовостей.Получить()) Тогда
        Возврат;
    КонецЕсли;
    
    УстановитьПривилегированныйРежим(Истина);
    
    ПрефиксСервиса = Константы.ПрефиксСервисаДляНовостей.Получить();
    ИмяКонфигурации = Метаданные.Имя;
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    	"ВЫБРАТЬ ПЕРВЫЕ 1
        |   ОбщиеДанныеИнформационногоЦентра.ДатаНачалаАктуальности КАК ДатаНачалаАктуальности
        |ИЗ
        |   Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра
        |ГДЕ
        |   ОбщиеДанныеИнформационногоЦентра.ТипИнформации = &УведомлениеОПожелании
        |   ИЛИ ОбщиеДанныеИнформационногоЦентра.ТипИнформации = &Новость
        |
        |УПОРЯДОЧИТЬ ПО
        |   ДатаНачалаАктуальности УБЫВ";
    
    Запрос.УстановитьПараметр("УведомлениеОПожелании", ОпределитьСсылкуТипаИнформации("УведомлениеОПожелании"));
    Запрос.УстановитьПараметр("Новость", ОпределитьСсылкуТипаИнформации("Новость"));
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Если Выборка.Следующий() Тогда
        ДатаНачала = Выборка.ДатаНачалаАктуальности;
    Иначе
        ДатаНачала = '00010101000000';
    КонецЕсли;
     
    Прокси = ПолучитьПроксиНовостейСлужбыПоддержки();
    Ответ = Прокси.getNews(ПрефиксСервиса, ИмяКонфигурации, ДатаНачала);
    
    Для каждого НовостьXDTO Из Ответ.news Цикл
        
        Идентификатор = Новый УникальныйИдентификатор(НовостьXDTO.id);
        
        Если ЗначениеЗаполнено(Идентификатор) Тогда
            ТипИнформации = ОпределитьСсылкуТипаИнформации("УведомлениеОПожелании");
        Иначе
            ТипИнформации = ОпределитьСсылкуТипаИнформации("Новость");
            Идентификатор = Новый УникальныйИдентификатор();
        КонецЕсли;    
        
        Новость                           = Справочники.ОбщиеДанныеИнформационногоЦентра.СоздатьЭлемент();
    	Новость.Идентификатор             = Идентификатор;
    	Новость.Наименование              = НовостьXDTO.name;
    	Новость.ДатаНачалаАктуальности    = НовостьXDTO.startDate;
    	Новость.ДатаОкончанияАктуальности = НовостьXDTO.endDate;
    	Новость.ТипИнформации             = ТипИнформации;
    	Новость.Критичность               = НовостьXDTO.criticality;
        Новость.ТекстHTML                 = НовостьXDTO.textHTML.htmlText;
        
        Если НовостьXDTO.textHTML.Свойства().Получить("images") <> Неопределено Тогда
            Картинки = Новый Структура;
            Если ТипЗнч(НовостьXDTO.textHTML.images) = Тип("ОбъектXDTO") Тогда
                Картинки.Вставить(НовостьXDTO.textHTML.images.name, Новый Картинка(XMLЗначение(Тип("ДвоичныеДанные"), НовостьXDTO.textHTML.images.data), Истина));
            Иначе
                Для каждого КартинкаXDTO Из НовостьXDTO.textHTML.images Цикл
                    Картинки.Вставить(КартинкаXDTO.name, Новый Картинка(XMLЗначение(Тип("ДвоичныеДанные"), КартинкаXDTO.data), Истина));        	
                КонецЦикла;
            КонецЕсли;
            Новость.Вложения = Новый ХранилищеЗначения(Картинки);
        КонецЕсли; 
        
    	Новость.Записать();
        
    КонецЦикла; 
    
    УстановитьПривилегированныйРежим(Ложь);
    
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПередЧтениемXDTOКонтактнаяИнформация

Преобразует XML. Обратная совместимость.
ОбщийМодуль.РаботаСАдресами
Автор: 1С
// Преобразует XML. Обратная совместимость.
//
Функция ПередЧтениемXDTOКонтактнаяИнформация(ТекстXML) Экспорт
	
	Если СтрНайти(ТекстXML, "Адрес") = 0 Тогда
		Возврат ТекстXML;
	КонецЕсли;
	
	Если СтрНайти(ТекстXML, "http://www.v8.1c.ru/ssl/contactinfo_ru") > 0 Тогда
		Возврат ТекстXML;
	КонецЕсли;
	
	ТекстXML = СтрЗаменить(ТекстXML, "xsi:type=""АдресРФ""", "xmlns:rf=""http://www.v8.1c.ru/ssl/contactinfo_ru"" xsi:type=""rf:АдресРФ""");
	
	ТекстXML = СтрЗаменить(ТекстXML, "<СубъектРФ", "<rf:СубъектРФ");
	ТекстXML = СтрЗаменить(ТекстXML, "/СубъектРФ>", "/rf:СубъектРФ>");
	ТекстXML = СтрЗаменить(ТекстXML, "<СубъектРФ/>", "<rf:СубъектРФ/>");
	
	ТекстXML = СтрЗаменить(ТекстXML, "<Округ", "<rf:Округ");
	ТекстXML = СтрЗаменить(ТекстXML, "/Округ>", "/rf:Округ>");
	ТекстXML = СтрЗаменить(ТекстXML, "<Округ/>", "<rf:Округ/>");
	
	ТекстXML = СтрЗаменить(ТекстXML, "<СвРайМО", "<rf:СвРайМО");
	ТекстXML = СтрЗаменить(ТекстXML, "/СвРайМО>", "/rf:СвРайМО>");
	ТекстXML = СтрЗаменить(ТекстXML, "<СвРайМО/>", "<rf:СвРайМО/>");
	
	ТекстXML = СтрЗаменить(ТекстXML, "<Район", "<rf:Район");
	ТекстXML = СтрЗаменить(ТекстXML, "/Район>", "/rf:Район>");
	ТекстXML = СтрЗаменить(ТекстXML, "</Район>", "</rf:Район>");
	
	ТекстXML = СтрЗаменить(ТекстXML, "<Город", "<rf:Город");
	ТекстXML = СтрЗаменить(ТекстXML, "/Город>", "/rf:Город>");
	ТекстXML = СтрЗаменить(ТекстXML, "<Город/>", "<rf:Город/>");
	
	ТекстXML = СтрЗаменить(ТекстXML, "ВнутригРайон", "rf:ВнутригРайон");
	
	ТекстXML = СтрЗаменить(ТекстXML, "НаселПункт", "rf:НаселПункт");
	
	ТекстXML = СтрЗаменить(ТекстXML, "<Улица", "<rf:Улица");
	ТекстXML = СтрЗаменить(ТекстXML, "/Улица>", "/rf:Улица>");
	ТекстXML = СтрЗаменить(ТекстXML, "<Улица/>", "<rf:Улица/>");
	
	ТекстXML = СтрЗаменить(ТекстXML, "ОКТМО", "rf:ОКТМО");
	ТекстXML = СтрЗаменить(ТекстXML, "ОКАТО", "rf:ОКАТО");
	
	ТекстXML = СтрЗаменить(ТекстXML, "ДопАдрЭл", "rf:ДопАдрЭл");
	
	ТекстXML = СтрЗаменить(ТекстXML, "<Номер", "<rf:Номер");
	ТекстXML = СтрЗаменить(ТекстXML, "/Номер>", "/rf:Номер>");
	ТекстXML = СтрЗаменить(ТекстXML, "<Номер/>", "<rf:Номер/>");
	
	ТекстXML = СтрЗаменить(ТекстXML, "<Местоположение", "<rf:Местоположение");
	ТекстXML = СтрЗаменить(ТекстXML, "/Местоположение>", "/rf:Местоположение>");
	ТекстXML = СтрЗаменить(ТекстXML, "<Местоположение/>", "<rf:Местоположение/>");
	
	Возврат ТекстXML;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ОбработатьФайлПослеПолученияТолькоЧтения

Продолжение процедуры ОбработатьФайл.
ОбщийМодуль.РаботаСФайламиСлужебныйКлиент
Автор: 1С
// Продолжение процедуры ОбработатьФайл.
Процедура ОбработатьФайлПослеПолученияТолькоЧтения(ТолькоЧтение, Контекст) Экспорт
	
	Если ТолькоЧтение <> Null Тогда
		Контекст.СвойстваДляПолучения.ТолькоЧтение = ТолькоЧтение;
	КонецЕсли;
	
	Если Контекст.СвойстваДляПолучения.Свойство("Невидимость") Тогда
		Контекст.Файл.НачатьПолучениеНевидимости(Новый ОписаниеОповещения(
			"ОбработатьФайлПослеПолученияНевидимости", ЭтотОбъект, Контекст,
			"ОбработатьФайлПослеОшибки", ЭтотОбъект));
	Иначе
		ОбработатьФайлПослеПолученияНевидимости(Null, Контекст);
	КонецЕсли;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////