Поиск строки XML-файла, содержащей значение, не соответствующее типу свойства XDTO пакета

Публикация № 1007741

Разработка - Обработки

Ведется обмен со сторонней системой через XML-файлы. XML-файлы содержат данные, соответствующие ПакетуXDTO, и загружаются с использованием ФабрикиXDTO. Сторонняя система не всегда корректно формирует XML-файл и при загрузке файла метод ПрочитатьXML() ФабрикиXDTO выбрасывает исключение. По описанию ошибки не всегда можно понять, какая именно секция содержит некорректное значение.

Формат загружаемого файла должен соответствовать ПакетуXDTO

<?xml version="1.0" encoding="UTF-8"?>
<My-Object xmlns="http://www.MyURL" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<header>
		<num>2019-02-10</num> <!-------тут должно быть число----->
		<sender-id>00001</sender-id>
		<reciever-id>00000</reciever-id>
		<created-date>2019-02-11T08:09:09</created-date>
	</header>
	<docs>
		<doc>
			<doc-date>100</doc-date> <!-------тут должна быть дата----->
			<doc-num>1</doc-num>
			<doc-gds>
				<doc-gd>
					<line-num>1</line-num>
					<gd-code>000001</gd-code>
					<qnty>10</qnty>
					<sum>1000</sum>
					<price>100</price>
				</doc-gd>
			</doc-gds>
		</doc>
	</docs>
</My-Object>

Но сторонняя система ничего не знает об XDTO и XSD. Она формирует по сути текстовый файл определенного формата. Поэтому при его создании валидность не проверяется.

При больших объемах XML-файлов поиск секции содержащей некорректное значение становится проблемой. Ошибки выдаваемые платформой не очень информативны

Мы можем отсюда понять, что некая секция вместо даты содержит значение "100". Нам нужно найти секцию, которая согласно ПакетуXDTO имеет тип "Дата", но при этом содержит значение "100". Значение "100" может встречаться в файле многократно, а типы секций в XML-файле не обозначены.

Со значением "2019-02-10" и типом Integer ситуация аналогичная.

Если читать XML-файл построчно, то сопоставить получаемые данные с ПакетомXDTO будет проблематично. Поэтому реализация выполнена  через ДокументDOM.

Алгоритм следующий:

  1. Читаем XML-файл в ДокументDOM
  2. Получаем корневой узел.
  3. Затем последовательно перебираем соседние узлы первого уровня вложенности
  4. Читаем полученный узел ФабрикойXDTO с указанием типа
  5. Если чтение произошло без ошибок переходим к следующему соседнему узлу и переходим к пункту 4
  6. Если чтение узла выбросило исключение, то проверяем тип и состав вложенного узла
  7. Если дочерний узел содержит простое значение, значит оно и является некорректным. Получаем следующий соседний узел и переходим к пункту 4
  8. Если вложенный узел содержит дочерние узлы, то проверяем должен ли он их содержать согласно ПакетуXDTO. Если нет, значит этот узел и является некорректным. Получаем следующий соседний узел и переходим к пункту 4
  9. Если вложенный узел содержит дочерние узлы, то последовательно получаем каждый из них. Проверяем есть ли такой узел в ПакетеXDO. Если нет, значит этот узел и является некорректным. Получаем следующий соседний узел и переходим к пункту 4
  10. После перебора всех вложенных узлов проверяем, что все обязательные узлы присутствую.

Таким образом мы получим все некорректные узлы. Но остается другая проблема. Как узнать в какой строке XML-файла находится некорректный узел?

Для этого необходимо некорректному узлу добавить атрибут, в качестве значения подставить UID и затем сохранить ДокументDOM во временный файл. Список подставленных UIDов и описание причины некорректности узла сохраняются в ТЗ. Полученный файл можно прочитать построчно и в случае обнаружения в строке ранее сохраненного UIDа можно понять в какой строке содержится некорректный узел и в чем именно ошибка.Так же во время чтения можно удалить ранее созданный атрибут и его значение, после чего файл примет первоначальный вид.

Ниже приведен пример кода, который выполняет все эти функции.

&НаСервере
Процедура ПроверитьНаСервере(АдресПроверяемогоФайла)
	
	#Область ЧтениеДокументаДОМ
	//Читаем файл из временного хранилища
	Поток = ПолучитьИзВременногоХранилища(АдресПроверяемогоФайла).ОткрытьПотокДляЧтения();
	ЧтениеХМЛ = Новый ЧтениеXML;
	ЧтениеХМЛ.ОткрытьПоток(Поток);
	ПостроительДОМ = Новый ПостроительDOM;
	ДокументДОМ	= ПостроительДОМ.Прочитать(ЧтениеХМЛ);
	ЧтениеХМЛ.Закрыть();
	Поток.Закрыть();
	#КонецОбласти
	
	#Область ОбходДереваДОМ
	//Обходим дерево ДОМ
	ОбходДереваDOM = Новый ОбходДереваDOM(ДокументДОМ);
	//Получаем корневой узел
	ОбходДереваDOM.СледующийУзел();
	//Получаем тип корневого узла
	ТипОбъектаXDTO = ФабрикаXDTO.Тип("http://www.MyURL", "MyObject");
	//Получаем первый вложенный узел
	УзелDOM = ОбходДереваDOM.СледующийУзел();
	Пока УзелDOM <> Неопределено Цикл

		#Область ПоискСвойстваОбъектаXDTOПоЛокальномуИмениУзла
		СвойствоОбъектаXDTO = Неопределено;
		Для Каждого СвойствоXDTO Из ТипОбъектаXDTO.Свойства Цикл
			Если СвойствоXDTO.ЛокальноеИмя = УзелDOM.ИмяУзла Тогда
				//СвойствоТипОбъектаXDTO = ФабрикаXDTO.Тип(СвойствоXDTO.Тип.URIПространстваИмен, СвойствоXDTO.Тип.Имя);
				СвойствоОбъектаXDTO = СвойствоXDTO;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Если СвойствоОбъектаXDTO = Неопределено Тогда
			Сообщить("Объект " + УзелDOM.РодительскийУзел.ИмяУзла + " неивестное свойство " + УзелDOM.ИмяУзла);
			УзелDOM = ОбходДереваDOM.СледующийСоседний();
			Продолжить;
		КонецЕсли;
		#КонецОбласти
		
		ПроверитьУзел(УзелDOM, СвойствоОбъектаXDTO.Тип);
		
		//Получаем следующий узел на этом же уровне вложенности
		УзелDOM = ОбходДереваDOM.СледующийСоседний();
	КонецЦикла;
	#КонецОбласти
	
	#Область ЗаписьДокументаДОМ
	//Записываем документ ДОМ в поток
	Поток = Новый ПотокВПамяти ;
	ЗаписьХМЛ = Новый ЗаписьXML;
	ЗаписьХМЛ.Отступ = Истина;
	ЧетыреПробела = "    ";
	ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8", , Истина, Ложь, ЧетыреПробела);
	ЗаписьХМЛ.ОткрытьПоток(Поток, ПараметрыЗаписи);
	ЗаписьДОМ = Новый ЗаписьDOM;
	ЗаписьДОМ.Записать(ДокументДОМ, ЗаписьХМЛ);
	ЗаписьХМЛ.Закрыть();
	#КонецОбласти
	
	ПозицияКурсора = 0;
	Смещение	   = 0;
	
	//Закрываем Поток для записи и открываем для чтения
	Поток = Поток.ЗакрытьИПолучитьДвоичныеДанные().ОткрытьПотокДляЧтения();
	//Читаем текст документа ДОМ из потока
	ТекстовыйДокумент.Прочитать(Поток);
	Поток.Закрыть();
	Для НомерСтроки = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
		ТекстСтроки = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки);
		Для Каждого СтрокаТаблицыОшибок Из ТаблицаОшибок Цикл
			Если  СтрокаТаблицыОшибок.Обработана Или СтрНайти(ТекстСтроки, СтрокаТаблицыОшибок.ИД) = 0 Тогда
				Продолжить;
			КонецЕсли;
			СтрокаТаблицыОшибок.Номер	   = НомерСтроки;
			СтрокаТаблицыОшибок.Обработана = Истина;
			СтрокаТаблицыОшибок.Закладка   = ПозицияКурсора + 1 + СтрДлина(ТекстСтроки) - СтрДлина(СокрЛП(ТекстСтроки)) - Смещение;
			
			Смещение = Смещение + СтрДлина("Error=""""00000000-0000-0000-0000-000000000000""");
			
			ТекстовыйДокумент.ЗаменитьСтроку(НомерСтроки, СтрЗаменить(ТекстСтроки, " Error=""" + СтрокаТаблицыОшибок.ИД + """", "")); 
		КонецЦикла;
		ПозицияКурсора = ПозицияКурсора + СтрДлина(ТекстСтроки) + 1;
	КонецЦикла;	
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьУзел(УзелDOM, ТипXDTO)
	
	//Пытаемся прочитать УзелDOM ФабрикойXDTO
	УзелКорректный = Истина;
	
	#Область ЧтениеУзловДОМ
	ЧтениеУзловDOM = Новый ЧтениеУзловDOM;
	ЧтениеУзловDOM.Открыть(УзелDOM);
	Попытка
		Фабрика = ФабрикаXDTO.ПрочитатьXML(ЧтениеУзловDOM, ТипXDTO);
	Исключение
		УзелКорректный = Ложь;
	КонецПопытки;
	ЧтениеУзловDOM.Закрыть();
	#КонецОбласти
	
	//Если узел корректный, выходим из рекурсии
	Если УзелКорректный Тогда
		Возврат;
	КонецЕсли;
	//Если это свойство содержащее простое значение, значит оно некорректное
	Если ТипЗнч(УзелDOM.ПервыйДочерний) = Тип("ТекстDOM") Или ТипЗнч(ТипXDTO) = Тип("ТипЗначенияXDTO") Тогда
		ТекстСообщения = "Узел """ + УзелDOM.ИмяУзла + """ (тип """ +  ТипXDTO.Имя + """) содержит некорректное значение """ + УзелDOM.ТекстовоеСодержимое + """";
		ЗарегистрироватьОшибку(УзелDOM, ТекстСообщения); 
	//Есть вложенные, а их быть не должно	
	ИначеЕсли УзелDOM.ЕстьДочерниеУзлы() И ТипXDTO.Свойства.Количество() = 0 Тогда
		ТекстСообщения = "Узел """ + УзелDOM.ИмяУзла + """ не должен содержать вложенных секций.";
		ЗарегистрироватьОшибку(УзелDOM, ТекстСообщения);
	//Не вложенных, а они должны быть
	ИначеЕсли Не УзелDOM.ЕстьДочерниеУзлы() И ТипXDTO.Свойства.Количество() <> 0 Тогда
		ТекстСообщения = "Узел """ + УзелDOM.РодительскийУзел.ИмяУзла + """ содержит пустую секцию """ + УзелDOM.ИмяУзла + """";
		ЗарегистрироватьОшибку(УзелDOM, ТекстСообщения);
	Иначе
		//Получаем свойства соответствующего ТипаXDTO
		УзелDOMСвойстваXDTO = Новый ТаблицаЗначений;
		УзелDOMСвойстваXDTO.Колонки.Добавить("ТипXDTO");
		УзелDOMСвойстваXDTO.Колонки.Добавить("ЛокальноеИмя",   Новый ОписаниеТипов("Строка"));
		УзелDOMСвойстваXDTO.Колонки.Добавить("Существует",	   Новый ОписаниеТипов("Булево"));
		УзелDOMСвойстваXDTO.Колонки.Добавить("НеОбязательное", Новый ОписаниеТипов("Булево"));
		Для Каждого СвойствоТипаXDTO Из ТипXDTO.Свойства Цикл
			НоваяСтрока = УзелDOMСвойстваXDTO.Добавить();
			НоваяСтрока.ТипXDTO			= СвойствоТипаXDTO.Тип;
			НоваяСтрока.ЛокальноеИмя	= СвойствоТипаXDTO.ЛокальноеИмя;
			НоваяСтрока.Существует		= Ложь;
			НоваяСтрока.НеОбязательное	= СвойствоТипаXDTO.НижняяГраница = 0;
		КонецЦикла;
		//Проверяем наличие свойств
		Для Каждого Дочерний Из УзелDOM.ДочерниеУзлы Цикл
			СвойствоТипаXDTO = УзелDOMСвойстваXDTO.Найти(Дочерний.ИмяУзла, "ЛокальноеИмя"); 
			Если СвойствоТипаXDTO <> Неопределено Тогда
				СвойствоТипаXDTO.Существует = Истина;
				ПроверитьУзел(Дочерний, СвойствоТипаXDTO.ТипXDTO);
			Иначе
				ТекстСообщения = "Узел """ + УзелDOM.ИмяУзла + """ содержит недопустимую вложенную секцию """ + Дочерний.ИмяУзла + """";
				ЗарегистрироватьОшибку(Дочерний, ТекстСообщения); 
			КонецЕсли;	
		КонецЦикла;
		ОтсутствующиеСвойства = УзелDOMСвойстваXDTO.НайтиСтроки(Новый Структура("Существует, НеОбязательное", Ложь, Ложь));
		Для Каждого ОтсутствующееСвойство Из ОтсутствующиеСвойства Цикл
			ТекстСообщения = "Отсутствует обязательная вложенная секция";
			ЗарегистрироватьОшибку(УзелDOM, ТекстСообщения); 
		КонецЦикла;	
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ЗарегистрироватьОшибку(УзелДОМ, ОписаниеОшибки)
	
	ПолноеИмяУзла = УзелДОМ.ИмяУзла;
	РодительскийУзел = УзелДОМ.РодительскийУзел;
	Пока РодительскийУзел.ИмяУзла <> "#document" Цикл
		МассивСтрок = Новый Массив;
		МассивСтрок.Добавить(РодительскийУзел.ИмяУзла);
		МассивСтрок.Добавить("\");
		МассивСтрок.Добавить(ПолноеИмяУзла);
		ПолноеИмяУзла = СтрСоединить(МассивСтрок);
		РодительскийУзел = РодительскийУзел.РодительскийУзел;
	КонецЦикла;
	
	ГУИД = Строка(Новый УникальныйИдентификатор);
	
	Атрибут = УзелДОМ.ДокументВладелец.СоздатьАтрибут("Error");
	Атрибут.Значение = СокрЛП(ГУИД);
	УзелДОМ.Атрибуты.УстановитьИменованныйЭлемент(Атрибут);
	
	СтрокаТаблицы = ТаблицаОшибок.Добавить();
	СтрокаТаблицы.ИД = ГУИД;
	СтрокаТаблицы.Реквизит = ПолноеИмяУзла;
	СтрокаТаблицы.Значение = УзелДОМ.ИмяУзла;
	СтрокаТаблицы.Описание = ОписаниеОшибки;
	
КонецПроцедуры

Во вложении обработка визуально отображающая строки XML-файла содержащие некорректные секции. Переход к строке осуществляется по двойному клику на строку таблицы ошибок. Конфигурация должна содержать XDTO-пакет с пространством имен проверяемого XML-файла.

Платформа 8.3.14.

Скачать файлы

Наименование Файл Версия Размер
ПроверкаКорректностиXMLФайла.epf

.epf 10,09Kb
1
.epf 10,09Kb 1 Скачать

Специальные предложения

Оставьте свое сообщение

См. также

Загрузка прайс-листов в БП 3.0, УНФ 1.6, Розница 2.3, УТ 11.4, КА 2 и ERP Промо

Ценообразование, прайсы Загрузка и выгрузка в Excel v8 v8::ОУ Розница УНФ ERP2 БП3.0 УТ11 КА2 УУ Абонемент ($m)

Внешняя обработка для загрузки прайс-листов Excel (и не только) в конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление нашей фирмой, редакция 1.6; Розница, редакция 2.3; Управление торговлей, редакция 11; Комплексная автоматизация 2; ERP Управление предприятием 2 без использования COM-объектов (установленного Excel), для толстого, тонкого и веб-клиента.

5 стартмани

16.04.2020    8832    130    LamerSoft    15    

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    4595    19    huxuxuya    11    

[Расширение] Временное отключение онлайн-эквайринга в РМК (УТ 11.4, Розница 2.3)

Розничная торговля Рабочее место Эквайринг v8 v8::ОУ УТ11 Розничная и сетевая торговля (FMCG) УУ Абонемент ($m)

Расширение предназначено для исправления исключительных ситуаций, когда оплата по эквайринговому терминалу с подключением оборудования прошла успешно, но чек на ККТ не был фискализирован. Расширение позволит временно отключить онлайн-эквайринг непосредственно из формы РМК.

1 стартмани

14.12.2020    4408    25    RocKeR_13    10    

[Расширение] БП 3.0. Список счетов от поставщиков / Список поступлений + Связанные документы

Оптовая торговля Рабочее место v8 v8::БУ БП3.0 БУ УУ Абонемент ($m)

Список счетов от поставщиков и список поступлений товаров и услуг + Структура подчиненности в одном окне. Расширение для программы БП 3.0.

3 стартмани

20.05.2020    5530    4    Rustig    13    

Рабочее место менеджера по продажам. УТ 11.3, 11.4, ERP 2.4 Промо

Рабочее место Оптовая торговля Оптовая торговля v8 v8::ОУ ERP2 УТ11 УУ Абонемент ($m)

Рабочее место менеджера по продажам УТ, ЕРП. Удобный инструмент в 1С для менеджеров по продажам для повседневной работы с клиентами. Все самое необходимое под рукой для оперативного создания заказа или реализации!

10 стартмани

17.08.2018    16461    53    Ivan90    36    

[Расширение] УНФ. Список заказов + Структура подчиненности

Монитор заказов Рабочее место v8 УНФ УУ Абонемент ($m)

Список заказов покупателей + Структура подчиненности в одном окне. Расширение для программы Управление нашей фирмой, редакция 1.6.

2 стартмани

05.04.2020    13746    11    Rustig    1    

Аналоги номенклатуры для УТ 11.4, КА 2.4, ERP 2.4, Розница 2.2, Розница 8. Магазин автозапчастей. Расширение

Рабочее место Оптовая торговля Розничная торговля Управление торговлей Оптовая торговля Розничная торговля v8 Розница ERP2 УТ11 КА2 Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

Расширение для работы с аналогами номенклатуры. Отлично подходит для работы с кроссами запчастей и товаров с аналогичными свойствами. Поддерживаемые конфигурации: УТ 11.4, КА 2.4, ERP 2.4, Розница 2.2, Розница 8. Магазин автозапчастей. Лёгкое подключение, без изменения конфигурации.

1 стартмани

30.08.2019    24778    42    AleSSandre    26    

Выгрузка данных из УТ 11.3/11.4 в БП 3.0 (перенос документов и справочной информации из "Управление торговлей" ред. 11.3/11.4 в "Бухгалтерия предприятием" ред. 3.0). Обновлен до УТ 11.3.4.х/11.4.7х и БП 3.0.7х.х Промо

Обмен через XML Перенос данных из 1C8 в 1C8 v8 БП3.0 УТ11 Абонемент ($m)

Данная обработка предназначена для выгрузки в формате XML данных из программы «Управление торговлей» ред. 11.3/11.4 по основным группам документов (документы покупки/продажи товаров и услуг, складские документы, счета-фактуры, ценообразование), а также набор основных справочников. Загрузка данных в БП ред. 3.0 через обработку «Универсальный обмен данными XML». Основная цель обработки – оптимизация работы бухгалтеров во время обмена данными между программами, а также выборочная корректировка загруженных ранее документов.

04.03.2016    60726    5    SEOAngels    64    

Вам нравятся запросы в 1С?

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    24144    6    m-rv    90    

Редактор объектов информационной базы 8.3

Универсальные обработки Обмен через XML v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.53 от 22.02.2021

2 стартмани

23.01.2019    36082    412    ROL32    43    

Расширение "Курсы валют в формулах расчета динамических цен" для УНФ 1.6

Ценообразование, прайсы Ценообразование, анализ цен Ценообразование, анализ цен v8 УНФ УУ Абонемент ($m)

Расширение "Курсы валют в формулах расчета динамических цен" с автоматическим пересчетом цен при изменении курсов валют для конфигурации "Управление нашей фирмой, редакция 1.6"

3 стартмани

17.01.2019    19475    32    Palmer1976    10    

Список заказов покупателей (новый взгляд) Промо

Рабочее место Монитор заказов Оптовая торговля Монитор заказов Оптовая торговля v8 v8::ОУ КА1 УТ10 УУ Абонемент ($m)

Внешняя обработка "Список заказов покупателей". Фишка в том, что на одной форме отображается структура связанных документов с указанием контрагента. В этом окне также есть список товаров по заказу. Видны статусы заказов: исполнен, выполняется, черновик.

4 стартмани

16.08.2017    32142    70    Rustig    60    

Сравнение pdf-файлов актов сверки

Универсальные обработки Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность v8 v8::БУ БП2.0 Россия БУ Абонемент ($m)

Обработка сравнивает два pdf-файла, в которых находятся стандартные печатные формы актов сверки, и показывает на экране совпадающие и/или отличающиеся по суммам документы взаиморасчетов.

1 стартмани

19.12.2018    20342    14    Torin99    2    

Выгрузка изображений из справочника на диск

Учет ТМЦ Универсальные обработки Учет ТМЦ v8 УТ11 Оптовая торговля, дистрибуция, логистика Россия Абонемент ($m)

Обработка позволяет записать изображения из справочка Номенклатура на диск в указанное место.

1 стартмани

30.11.2018    21000    9    wrooom    8    

Обмен данными между УТ 10.3 и Розницей 2.2 (правила обмена данными между "Управлением торговлей" ред. 10.3. и "Розницей" ред. 2.2) Промо

Обмен через XML Перенос данных из 1C8 в 1C8 Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 УТ10 Розница УУ Абонемент ($m)

Данные правила предназначены для обмена в формате XML данных из программы «Управление торговлей» ред. 10.3. и "Розница" ред. 2.2 по основным группам документов и основных справочников. Загрузка данных осуществляется через встроенную обработку «Универсальный обмен данными XML». Основная цель обработки – корректировка типовых правил на выявленные ошибки и расширение выгрузки для корректной выгрузки данных по ЕГАИС и продажам в целом. Протестировано до УТ 10.3.47.х и Розница 2.2.11.х

3 стартмани

16.09.2016    50225    3    SEOAngels    65    

Обнуление остатков регистров бухгалтерии и накопления

Универсальные обработки Чистка базы v8 v8::БУ v8::ОУ v8::УФ КА1 БП2.0 ЗУП2.5 УТ10 УПП1 УНФ БГУ ERP2 БП3.0 УТ11 УХ КА2 ЗУП3.x Россия Абонемент ($m)

Обработка позволяет обнулить остатки по регистру накопления или бухгалтерии на определенную дату. Поддерживается большинство типовых конфигураций (БП 3, БП 2, УТ 11, УТ 10, ЗУП 3, ЗУП 2, БГУ 2, БГУ 1, ERP, УПП, КА 2, КА 1, УХ 3, УХ 1, УНФ). Гибкая настройка (отборы, заполнение реквизитов и любых полей корр. счета, возможность обнулять ресурсы выборочно). Несколько режимов работы. Два интерфейса: простой и с расширенным набором настроек.

2 стартмани

19.11.2018    28833    392    morozov.sv    54    

Навигатор по конфигурации базы 1С 8.3

Структура метаданных Универсальные обработки v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.81 от 09.04.2021

3 стартмани

28.10.2018    39260    354    ROL32    72    

Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо

Инструментарий разработчика Универсальные обработки v8 1cv8.cf Абонемент ($m)

Простая обработка для просмотра и установки значений предопределенных элементов. Позволяет заменить значение предопределенного элемента с одного элемента справочника на другой, удалить предопределенный элемент (снять пометку предопределенности), установить пометку переопределенного элемента. Проверяет предопределенные данные на наличие задвоений и отсутствующих. Работает со справочниками, планами счетов, планами видов характеристик, планами видов расчетов.

2 стартмани

06.10.2014    160280    2676    ekaruk    168    

Универсальный инструмент для переноса данных через табличный документ (УФ)

Обработка документов Универсальные обработки Обработка справочников v8 v8::УФ 1cv8.cf Абонемент ($m)

Для опытных пользователей, разработчиков, администраторов, консультантов

5 стартмани

15.10.2018    39691    143    json    44    

Расширение "Интерфейс Плюс"

Розничная торговля Рабочее место Розничная торговля v8 v8::ОУ Розница УТ11 Россия УУ Абонемент ($m)

Расширение для 1С:Розница 2.2/2.3 и 1С:Управление Торговлей 11, которое позволит повысить удобство работы!

1 стартмани

22.09.2018    31200    164    RocKeR_13    129    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    24886    13    RocKeR_13    16    

Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо

Перенос данных из 1C8 в 1C8 Универсальные обработки Распределенная БД (УРИБ, УРБД) v8 1cv8.cf Абонемент ($m)

Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.

1 стартмани

22.10.2014    215882    4298    ekaruk    184    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    31949    28    informa1555    26    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    57643    22    kalyaka    16    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар")

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    33364    88    m-rv    58    

Просмотр, изменение реквизитов объекта. Сравнение двух одинаковых объектов метаданных ИБ

Универсальные обработки v8 1cv8.cf Россия Абонемент ($m)

Показывает реквизиты объекта (ов) или сравнивает два одинаковых объекта конфигурации справочники, документы.

1 стартмани

26.04.2018    20637    26    Vin_Tik    0    

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1

Обмен через XML Зарплата Перенос данных из 1C8 в 1C8 Зарплата v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Абонемент ($m)

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1. Позволяют вести параллельную работу в базах ЗУП редакций 2,5 и 3.1.

10 стартмани

06.03.2018    43704    141    kostya_whiskas    24    

Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3

Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 1cv7.md Россия Абонемент ($m)

Воспользоваться современным средством переноса данных "Конвертация данных 3.0.5.3" можно только выгрузив из системы - источника данных XML в формате обмена данными EnterpriseData. В этой публикации можно скачать приемы выгрузки из 1С 7.7 универсального формата обмена для Конвертации данных 3. Выполняем перенос данных из «1С:Предприятие 7.7» в «1С:Предприятие 8.3». Используем Конвертацию данных КД 3.0 из 1c 7.7 --> 1С 8.3. На первой стадии еще не опубликовано иного способа подложить файл для Конвертации данных 3 кроме как сформировать его вручную, постараемся решить данную проблему.

1 стартмани

26.02.2018    43739    59    ksnik    3    

Построение маршрута доставки с расчётом расстояния для любой базы УФ

Универсальные обработки WEB Оптовая торговля Оптовая торговля v8 v8::УФ 1cv8.cf Абонемент ($m)

Графическое изображение маршрутного листа по картам гугл. Работает на любой конфигурации с управляемыми формами. Использует новую версию api google-карт от 13.02.2018 года под IE11.

10 стартмани

24.02.2018    39347    45    KorotkovRV    16    

Заполняем по шаблону (по умолчанию)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Простой в подключении, универсальный и достаточно удобный механизм заполнения реквизитов произвольных документов/справочников значениями по умолчанию. Реализован в расширении, но может быть и непосредственно включен практически в любую конфигурацию на управляемых формах простым копированием одной формы и двух команд. Весь код в статье.

1 стартмани

08.02.2018    31364    20    mvxyz    17    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    29837    56    kwazi    6    

Работа с картой. Кадастровый учет (Росреестр). Тематические карты

WEB Рабочее место v8 v8::УФ 1cv8.cf Абонемент ($m)

Внешняя обработка для работы с картами в 1С. Получения изображения с публичной кадастровой карты России, построения тематических карт

1 стартмани

31.08.2017    21666    10    vipchep    1    

Список заказов поставщикам (новая форма) + два ноу-хау для разработчиков

Рабочее место Дебиторская и кредиторская задолженность Оптовая торговля Дебиторская и кредиторская задолженность Оптовая торговля v8 v8::ОУ КА1 УТ10 УУ Абонемент ($m)

Представлена внешняя обработка - "Список заказов поставщикам (новая форма)". Удобство заключается в том, что в одном окне списка отображается структура всех связанных документов с указанием контрагента (заказ поставщику - поступление товаров - заказ покупателя - реализация товаров - оплата товара покупателем). В этом же окне отображается список товаров с заказанным количеством и ценами. Имеется возможность видеть статусы заказов по цветам (исполнен, выполняется, черновик). Форму легко встроить в типовую конфигурацию.

4 стартмани

31.08.2017    25190    15    Rustig    18    

Инструменты бухгалтера: Виджеты рабочего стола

Универсальные обработки Рабочее место v8 v8::БУ БП3.0 Абонемент ($m)

Настраиваемые виджеты на начальной странице, своеобразная панель для быстрого доступа к объектам. Виджеты это элементы интерфейса в виде цветных прямоугольников со ссылками на объекты конфигурации. Использование виджетов позволяет сконцентрировать на начальной странице часто используемые функции, например, варианты отчетов, списки документов, или используя виджет вводить новый документ прямо из начальной страницы.

2 стартмани

28.08.2017    41042    179    Bazil    28    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.

1 стартмани

30.05.2017    149659    13    signum2009    48    

Поиск и отключение зависших сеансов на сервере 1С: Предприятия

Универсальные обработки v8 1cv8.cf Россия Абонемент ($m)

Обработка предназначена для мониторинга и отключения спящих (зависших) сеансов на сервере 1С: Предприятия.

1 стартмани

14.09.2016    35905    63    wowchik_85    12    

Редактор движений документа. Сохранение в XML, обмен между базами, замена регистратора.

Обработка документов Универсальные обработки Обмен через XML v8 Абонемент ($m)

Редактор набора записей движений документа. Позволяет сохранить набор записей в XML, в настройки пользователя, прочитать сохраненный XML в другой идентичной базе, заменить регистратор. Можно изменять порядок записей, менять активность, как массово, так и по одной и др. Тонкий клиент, управляемые формы.

1 стартмани

07.09.2016    45968    160    Aphanas    4    

Универсальный поиск объектов по глобальному уникальному идентификатору (ГУИД, GUID)

Универсальные обработки Поиск данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Универсальная обработка поиска объектов информационной базы по глобальному уникальному идентификатору (ГУИД, GUID) или по его части.

1 стартмани

06.09.2016    36288    107    Dzenn    9    

Обработка "Распознавание штрихкода с помощью утилиты Zbar" для Документооборот ред. 2

Универсальные обработки Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Абонемент ($m)

В связи с тем, что стандартный функционал программы «Документооборот» ред. 2.1 дает возможность распознавания штрихкодов только форма EAN-13, данная обработка - альтернативный способ для распознавания штрихкода в программе 1С: Документооборот ред. 2 с помощью утилиты Zbar, которая распознает в том числе и в формате Code 128 (один из стандартных штрихкодов кодирования документов, например, «Управление торговлей» ред. 11), а также с возможностью поэтапно проследить все действия от распознавания до прикрепления к документу или простой загрузки в каталоги файлов в базе 1С.

5 стартмани

05.09.2016    23732    168    SEOAngels    11