Пророк в своем отечестве или Читаем XML с помощью XDTO

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

Разработка - Математика и алгоритмы

XML XSD конструктор XSD работа с XML ФабрикаXDTO чтение XML

Проходи, садись поудобнее и приготовься внимать мне. Сейчас я предскажу твое будущее… В этом пакете я описываю схему XML… Вы можете видеть, что код очень прост, и никакого преобразования элементов прочитанного XML не требуется…

Здесь, знаешь ли, приходится бежать со всех ног, чтобы только остаться на том же месте! Если же хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! (Королева «Алиса в зазеркалье»)

Доброго тебе дня, мой Дорогой Читатель! Проходи, садись поудобнее и приготовься внимать мне. Сейчас я предскажу твое будущее (свет меркнет, громы-молнии, звучит тревожная музыка)! Слушай же мой Читатель, что тебя ждет. Тебе рано или поздно придется столкнуться с XML (яркая молния, оглушительный грохот грома, запах озона).
Если ты разработчик 1С или пишешь на PHP, или С++, неважно, но рано или поздно тебе придется столкнуться с XML. Почему? Потому что это универсально, удобно, повсеместно, модно, круто, кросс-платформенно. XML правильно понимает и Android и Windows и Linux и все. Его используют для обмена информацией (например: электронные отчеты в налоговую, между конфигурациями 1С, для синхронизации с интернет-магазином). Его используют для хранения информации.
Итак, без долгих прелюдий приступим сразу к телу делу. Здесь не будет долгих описаний и определений. Просто несколько примеров. Но если вы собираетесь плотно работать с XML, то настоятельно рекомендую не полениться и почитать про XML и схемы XML (открывайте в Google Chrome, Firefox не совсем корректно работает с этим сайтом). Времени потратите не так много, а жизнь себе облегчите неимоверно.

Проблемой чтения/записи XML я столкнулся в связи с интеграцией с 1С корпоративных сайтов различных фирм, а именно, заказчики хотели чтобы кое-какая информация из 1С попадала на сайт и наоборот, и делалось это с некоторой периодичностью. Обычно это были продажи (информация для менеджеров), заказы (для дилеров) и различные примочки вроде журнала заявок, задач, отчетов и т.д.

СЛУЧАЙ I

Давайте предположим такую задачу, пусть на сайте некоего учебного заведения регистрируются студенты (не важно для чего, может чтобы пройти тестирование, а может чтобы талоны для столовой получить) и захотело руководство, чтобы эти данные попали в 1С в справочник «Студенты» (конфигурация «Учебное заведение 5.5 :-)  ). Программист PHP сказал «Бу сделано!» и выдал такой XML файл:

 

Здесь корневым элементов является элемент «students». Вложенным элементом является «student», где указана основная информация про студента учебного заведения. Элементы «name», «last_name», «sex» имеют тип «Строка», «birth» — «Дата», «level» (курс обучения) — «Число», «this_leader» (это староста группы) — «Булево». Нужно эти данные прочитать и разместить в справочнике «Студенты».

Как прочитать? Можно с помощью объекта «ЧтениеXML», но тогда нужно будет построчно обрабатывать документ. И хорошо если уровней вложенности всего лишь 2-3. А если их 10, и строк 10 тысяч? Тогда можно обработать с помощью «ДокументDOM», который создаст нам некое древовидное представление документа XML. Но тогда нам нужно будет каждый элемент обрабатывать отдельно, нужно будет программно прописывать, какой элемент преобразовывать в какой тип. Это не наш метод. Мой дорогой Читатель конечно же ознакомился с ссылками вверху и имеет представление об XML и его схемах. Давайте же создадим пакет XTDO и прочитаем с его помощью наш XML файл. Для этого я создал новую конфигурацию со следующими объектами:


Создал пакет XDTO «Чтение»:

 

Определил пространство имен «http://localhost/xdto». Если вы читали про XML и его схемы (ссылка выше) вы должны иметь представление, что такое пространство имен. А если не читали, то это некая уникальная интернет-ссылка (а интернет-ссылки все должны быть уникальными), где я определяю свои типы данных. Т. е. в пространстве имен (URI) »http://localhost/xdto» я определил тип students, который состоит из свойства student, который в свою очередь является сложным объектом и имеет свои свойства. А наф… зачем URI? Да затем, вдруг какой-нибудь чудак тоже определит тип students, что тогда? Конфликт? Разборки? Нет, у него будет другое пространство имен, например »http://tchudakov.net/blablabla». По хорошему, по адресу »http://localhost/xdto» у меня должно быть документация, информация, намек на то, что за схему я описал. Какие типы данных у меня, какие свойства. Мануал, одним словом. Но у меня там ничего нет. И у многих тоже ничего нет. Но Вы, мой дорогой Читатель, не берите пример с меня и таких как я. Если проект серьезный, сделайте документацию и потомки будут вам благодарны.

В этом пакете я описываю схему XML, т. е. это редактор, инструмент для создания схем. Вы даже можете нажать правой кнопкой мыши на пакет и экспортировать схему (файл с расширением .xsd). Для свойств я также указал типы: name, last_name, sex имеют тип string (http://www.w3.org/2001/XMLSchema). Как видите, тип string тоже определен в некоем пространстве имен, а именно его определяли сообща, на конференции w3 создавали стандарт. Свойство birth имеет тип date (http://www.w3.org/2001/XMLSchema), level - integer (http://www.w3.org/2001/XMLSchema),  this_leader - boolean (http://www.w3.org/2001/XMLSchema). Как это сделано вы можете посмотреть развернув у себя выгрузку данной конфигурации (ссылка в конце статьи).

Эту же схему можно описать вот так:

А теперь найди 7 отличий. Шучу, отличие только одно, я создал тип type_student и для свойства student определил тип (см. рисунок выше, если слишком мелко, жмакните на него). Это называется явным определением типа. А до этого мы занимались неявным определением типа. Во как! А теперь давайте прочитаем XML и создадим элементы справочника. Для этого я создал обработку «ЧитаемXML», который также можете посмотреть в выгрузке, здесь же приведу только код:

&НаКлиенте Процедура ОдинСтудент(Команда)
	
	ОдинСтудентСервер(XML);
	
КонецПроцедуры 
&НаСервереБезКонтекста Процедура ОдинСтудентСервер(XML)

	// Получаем тип XDTO и читаем XML 	лТип = ФабрикаXDTO.Тип("http://localhost/xdto", "students");
	лЧтение = Новый ЧтениеXML;
	лЧтение.УстановитьСтроку(XML);
	лОбъект = ФабрикаXDTO.ПрочитатьXML(лЧтение, лТип);
	лДанные = лОбъект.student;
	
	// Проверяю, нет ли этого студента в базе 	лЗапрос = Новый Запрос("ВЫБРАТЬ | Студенты.Ссылка |ИЗ | Справочник.Студенты КАК Студенты |ГДЕ | Студенты.Имя ПОДОБНО ""%"" + &Имя + ""%"" | И Студенты.Фамилия ПОДОБНО ""%"" + &Фамилия + ""%"" | И Студенты.ДатаРождения = &ДатаРождения");
						  
	лЗапрос.УстановитьПараметр("Имя", лДанные.name);
	лЗапрос.УстановитьПараметр("Фамилия", лДанные.last_name);
	лЗапрос.УстановитьПараметр("ДатаРождения", лДанные.birth);
	
	лРезультат = лЗапрос.Выполнить();
	
	// Если нет, создаю новый элемент 	Если лРезультат.Пустой() Тогда 		
		лСпр = Справочники.Студенты.СоздатьЭлемент();
		
	// Иначе редактирую имеющийся 	Иначе 		
		лВыборка = лРезультат.Выбрать();
		Пока лВыборка.Следующий() Цикл 			
			лСпр = лВыборка.Ссылка.ПолучитьОбъект();
			Прервать;
			
		КонецЦикла;
		
	КонецЕсли;
	
	// Заполняю данными, заметьте, никакого преобразования не требуется 	лСпр.Имя = лДанные.name;
	лСпр.Фамилия = лДанные.last_name;
	лСпр.ДатаРождения = лДанные.birth;
	лСпр.Пол = лДанные.sex;
	лСпр.Курс = лДанные.level;
	лСпр.ЭтоСтароста = лДанные.this_leader;
	
	лСпр.Записать();
	
КонецПроцедуры // ПрочитатьИЗаписатьСервер()  

Вы можете видеть, что код очень прост, и никакого преобразования элементов прочитанного XML не требуется, это делает уже ФабрикаXDTO. Ну что же, запустим нашу обработку и проверим, появится ли новый элемент в справочнике «Студенты». Ошибка!

 

Дело здесь вот в чем, в XML мы не указали name spaces (пространство имен), давайте возьмем XML, который я привел выше и добавим:

xmlns=»http://localhost/xdto» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» — вот что мы добавили и все заработало.  Скачайте выгрузку базы данных (ссылка ниже), распакуйте у себя и попробуйте прочитать XML. Попробуйте изменить данные в XML, поэкспериментируйте.

СЛУЧАЙ II

Предположим что в XML у нас не один студент, а несколько (скорее всего так и будет):

Обратите внимание на комментарий , очень удобный редактор XML, а главное бесплатный. Если попробуете его прочитать с помощью схемы, которую мы сделали, вы получите ошибку, и это правильно, в схеме мы не указывали, что элементов student может быть много. Давайте исправим эту ситуацию, я создал новый пакет «ЧтениеСтуденты» и новое пространство имен «http://localhost/xdto/students» и изменил свойство «student»:


Обратите внимание, свойство «Максимальное количество» я изменил на «-1″, это означает, что элементов student может быть неограниченное количество. Если мы установим это свойство равным «3″, то элементов student не может быть больше 3 и т.д.  Для обработки этого XML я создал новую процедуру, привожу скрин обработки:


Кнопка «Один студент» эта старая процедура, когда в XML была информация только по одному студенту, кнопка «Много студентов» для обработки информации по неограниченному числу студентов. Не забудьте изменить пространство имен в XML (второй красный кружок на рисунке). Запускаю обработку и все получается! Меняю данные (кроме имени, фамилии и даты рождения, при их изменении создается новый элемент справочника) и созданные элементы редактируются! Ну просто великолепно!


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

&НаКлиенте Процедура МногоСтудентов(Команда)
	
	МногоСтудентовСервер(XML);
	
КонецПроцедуры 
&НаСервереБезКонтекста Процедура МногоСтудентовСервер(XML)

	// Получаем тип XDTO и читаем XML 	лТип = ФабрикаXDTO.Тип("http://localhost/xdto/many_students", "students");
	лЧтение = Новый ЧтениеXML;
	лЧтение.УстановитьСтроку(XML);
	лОбъект = ФабрикаXDTO.ПрочитатьXML(лЧтение, лТип);
	
	Для Каждого лДанные Из лОбъект.student Цикл 	
		
		// Проверяю, нет ли этого студента в базе 		лЗапрос = Новый Запрос("ВЫБРАТЬ | Студенты.Ссылка |ИЗ | Справочник.Студенты КАК Студенты |ГДЕ | Студенты.Имя ПОДОБНО ""%"" + &Имя + ""%"" | И Студенты.Фамилия ПОДОБНО ""%"" + &Фамилия + ""%"" | И Студенты.ДатаРождения = &ДатаРождения");
							  
		лЗапрос.УстановитьПараметр("Имя", лДанные.name);
		лЗапрос.УстановитьПараметр("Фамилия", лДанные.last_name);
		лЗапрос.УстановитьПараметр("ДатаРождения", лДанные.birth);
		
		лРезультат = лЗапрос.Выполнить();
		
		// Если нет, создаю новый элемент 		Если лРезультат.Пустой() Тогда 			
			лСпр = Справочники.Студенты.СоздатьЭлемент();
			
		// Иначе редактирую имеющийся 		Иначе 			
			лВыборка = лРезультат.Выбрать();
			Пока лВыборка.Следующий() Цикл 				
				лСпр = лВыборка.Ссылка.ПолучитьОбъект();
				Прервать;
				
			КонецЦикла;
			
		КонецЕсли;
		
		// Заполняю данными, заметьте, никакого преобразования не требуется 		лСпр.Имя = лДанные.name;
		лСпр.Фамилия = лДанные.last_name;
		лСпр.ДатаРождения = лДанные.birth;
		лСпр.Пол = лДанные.sex;
		лСпр.Курс = лДанные.level;
		лСпр.ЭтоСтароста = лДанные.this_leader;
		
		лСпр.Записать(); 	
	КонецЦикла;

КонецПроцедуры // МногоСтудентовСервер() 

Если вы заметили, ну конечно вы заметили, никакого преобразования типов делать не пришлось.

СЛУЧАЙ III

Предположим, у нас есть XML, где нет информации по студентам (такой случай тоже нужно предусмотреть, в выгрузках бывает 1 элемент, бывает много, бывает что и ничего). Текст ниже:

 

Попробуем его прочитать нашей обработкой. Что получили? Фигу!


И правильно! Мы же в фабрике указали что элентов students может быть от одного до бесконечности. А здесь у нас ноль, поэтому и ругается. Давайте исправим этот момент:


Обратили внимание? Ну конечно обратили, я же, блин, красным овалом выделял (жмакайте на скрин, чтобы сделать больше). Минимальное значение я сделал равным нулю, а максимальное значение оставил -1, т. е. неограниченным. Теперь все чики пуки ( не знаю с какого языка это выражение). Можете сами проверить, нажмите на кнопку «Много студентов» в обработке.

СЛУЧАЙ IV

Все! Мы вроде предусмотрели все случаи! Можно идти пить… чай ;) . Но тут нам присылают еще один XML:

Вставляем XML в текстовое поле, жмем «Много студентов». Что получаем? Ошибку! А почему, посмотрите на XML. Появился новый элемент comment (комментарий), который не учтен в нашей фабрике. Что же делать? Можно его включить в нашу схему, но что если опять придет файл уже с другим элементом XML? Этот случай можно обработать следующим образом, открываем в фабрике свойства type_student и свойство «Открытый» устанавливаем «Истина»:

 

Ну вот и все. Теперь XML у вас прочитается без проблем. Теперь тэг student может содержать кроме заданных любые другие тэги и они буду прочитаны как строковый тип. Т.е.  я могу использовать переданный мне элемент comment. Он определился как строковый. Свойство открытый означает, что тип может содержать кроме прописанных любые другие элементы, которые он прочитает как строковый. Все, выдохся. Удачи, везения и чтобы наглости вам не надо было занимать! dt-шка ниже.

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

Наименование Файл Версия Размер
xdto.zip

.zip 24,19Kb
29.01.14
88
.zip 24,19Kb 88 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. davdykin 24 29.01.14 20:36 Сейчас в теме
Спасибо за статью. Действительно удобный механизм, и пару моментов для себя узнал новых.
user887351; jif; Мах; VzhenyaV; veiuper; check2; vz1987; MikeI; Chif13; rosinfo1; Makushimo; slavap; cleaner_it; rayastar; shalimski; +15 Ответить
2. Angeros 30.01.14 07:18 Сейчас в теме
Если механизм чтения xml через xdto позволяет читать его без схемы, возможна ли автоматическая генерация xsd схемы, хотя-бы в той части где стандартный механизм справился с чтением данных.?
3. Angeros 30.01.14 07:26 Сейчас в теме
Как будет читаться вот такой хмл?

...
<students>
<student>
<Name>Alex</student>
<sex>male</sex>
<date>2000-01-01</date>
<weighting unitOfMeasure="kg">70</weighting>
<Age>23</Age>
</student>
...
<students>
...
Показать


особенно строка <weighting unitOfMeasure="kg">70</weighting> в xdto уменя с такой строкой были трудности.
Она читалась, но число 70 не читалось.
7. kasper076 71 30.01.14 10:17 Сейчас в теме
(3) Angeros, есть такая беда. Если в узле присутствует атрибут и значение, то значение не читается.
10. John_d 2455 30.01.14 11:03 Сейчас в теме
(3) Angeros,
в ней ошибка:
<weighting unitOfMeasure=\"kg\">70</weighting>

правильно
<weighting unitOfMeasure="\kg\">70</weighting>
11. Angeros 30.01.14 12:04 Сейчас в теме
(10) John_d, Редактор инфостарта нерасчитан на публикацию текста xml у меня в редакторе все правильно написано, отображается чехорда. По этой причине автор выложил примеры хмл в виде изображений.
4. mrmasson 53 30.01.14 08:50 Сейчас в теме
Спасибо за статью! Удобно для начинающих рассматривать xdto. Самое главное все последовательно - от простого к сложному!
5. StaticUnsafe 30.01.14 09:10 Сейчас в теме
Яростно плюсую. Спасибо за ликбез!
6. Поручик 4411 30.01.14 10:14 Сейчас в теме
Очередная неплохая статья по XDTO.
8. fishca 1179 30.01.14 10:23 Сейчас в теме
Статья годная!!! Спасибо!!!
9. John_d 2455 30.01.14 11:01 Сейчас в теме
Отличная статья, Спасибо!
12. Swetlana 13 30.01.14 15:19 Сейчас в теме
Хорошая статья, надо будет изучить.
13. SinglCOOLer 213 30.01.14 15:27 Сейчас в теме
сначала было не хотел читать, но начал читать и втянулся, все круто описано, очень познавательно, спасибо
14. vasko88 8 30.01.14 19:02 Сейчас в теме
Спасибо, действительно грамотно и просто описано как работать с пакетам xdto
15. Evil Beaver 6756 31.01.14 00:36 Сейчас в теме
Пардон, не смог дочитать из-за вычурного стиля повествования. Выпендреж. Готов поверить коллегам, что статья годная.
16. EarlyBird 6 31.01.14 05:02 Сейчас в теме
17. JusteRU 31.01.14 05:10 Сейчас в теме
Спасибо! Очень интересная статья про ещё неизведанную часть 1С. А программно нельзя эти схемы формировать можно?
19. Alex1Cnic 125 31.01.14 08:48 Сейчас в теме
(17) JusteRU,
Присоединяюсь :А программно нельзя эти схемы формировать можно?
20. headMade 143 31.01.14 10:14 Сейчас в теме
21. Evil Beaver 6756 31.01.14 11:40 Сейчас в теме
(20) headMade, (19) Alex1Cnic, ну тогда и я отрекламируюсь, читайте тут:
http://infostart.ru/public/167459/
18. srv80 9 31.01.14 06:17 Сейчас в теме
Прочитать XML действительно не проблема с помощью XDTO, но сформировать XML по XDTO, который можно передать в качестве SOAP запроса на веб-сервер ... вот тут борода, которую пришлось решать через DCOM объект и таким кривым образом, что даже публиковать смешно )
53. blackschool 19 03.06.16 17:25 Сейчас в теме
(18) srv80, такую задачу можно решить, собирая текст soap-запроса конкатенацией шапки, подвала и текста XML, полученного из XDTO. Криво, но достаточно устойчиво работает, поскольку шапка и подвал универсальны.
22. rozer 268 31.01.14 12:52 Сейчас в теме
Молодца... и не сухо а с юмором :)
23. kiruha 384 31.01.14 12:56 Сейчас в теме
Нифига не понял, зачем, чтобы прочитать простой XML файл нужно менять конфигурацию и вводить новые объекты.
Без программного создания интересно только в познавательных целях

32. Alex_1066 04.02.14 17:19 Сейчас в теме
(23) А можно и поделиться с товарищами, и рассказать про ещё один вариант чтения (без изменения конфигурации). Я думаю всем будет интересно.
24. Makushimo 155 31.01.14 13:05 Сейчас в теме
Просто, легко и доступно.
Стиль изложения поднял настроение -))
25. glek 112 31.01.14 17:10 Сейчас в теме
Хорошая статья, спасибо. Ставлю в закладки.
26. rosinfo1 31.01.14 17:59 Сейчас в теме
Спасибо за статью, пол года назад потратил огромную кучу времени, пока понял что такое XDTO, и как его к веб-сервису прикрутить. Т.к документация в желтой книжке написана для людей которые понимают, что это такое, а не для таких как я ))
27. KliMich 31.01.14 18:19 Сейчас в теме
Сбасибо! Надо обязательно попробовать .
28. so-quest 132 02.02.14 16:56 Сейчас в теме
вот еще бы автор показал как namespace вставлять автоматом в те xml что присылают (руками то да, можно... но если файлов штук 500? если namespace'ов тоже больше 1? )...

Не качал конечно конфигу - но мои пять копеек чисто по статье
1. Пол может принимать любое строковое значение. Не всегда корректно. Потравив в статье пару абзацев можно было показать такой механизм как ограничения (ввести тип который принимает 2 значения "мужской" и "женский")
2. Нет примера записи
3. Нет примера создания схемы на лету (не всегда можно в конфигурацию встроить объект)
4. Нет примера на использование базового типа.
5. О типе число сказано вскользь, а ведь их несколько - на каждом свое ограничение.
Lacoste4life; check2; gingerale; SirYozha; kasper076; via; kiruha; Evil Beaver; kostas; +9 Ответить
30. headMade 143 03.02.14 15:04 Сейчас в теме
(28) so-quest,
ну так может у вас есть желание дать ответ на ваши вопросы в виде коментария или в виде статьи ????
29. qwed557 30 03.02.14 05:26 Сейчас в теме
отличная статья, надо подробно все изучить, и жизнь наладиться ))), еще бы для 7.7 такие фишки были бы, или они есть?
Прикрепленные файлы:
31. so-quest 132 03.02.14 17:12 Сейчас в теме
по 2,3,4 - напишу как нибудь, там ничего сложного, просто тупо пересказать СП
по 1 - лениво делать скриншоты
по 5 - читать http://www.ozon.ru/context/detail/id/7410082/ Слишком большая тема, в 1 статье ну никак не осветить
33. Alex_1066 04.02.14 17:20 Сейчас в теме
Статья хоршая, для начала.... Продолжение не помешало бы с учетом оговорок, данных читателями статьи в комментариях... Спасибо.
34. so-quest 132 04.02.14 21:14 Сейчас в теме
Анонс :)
Следите за новыми публикациями :)
Сейчас пройдет модерацию и сразу -

Построение XSD схемы на лету или любите СП источник знаний

В статье показаны 2 простых варианта создания схемы «на лету».
Приведенный код не следует рассматривать как законченное решение, скорее как расширеннее для синтаксис-помощника.
Код приводиться «как есть», я не несу никакой ответственности если что-то у вас поломается или пойдет не так.

Вариант №1
Используется СоздатьФабрикуXDTO. В архиве файл Вариант-1.epf

Вариант 2
Используется конструктор для ФабрикаXDTO В архиве файл Вариант-2.epf

Есть еще вариант №3 – основан на построении схемы – но мне этот вариант никогда был не интересен, поэтому оставим его добровольцам.
35. МимохожийОднако 130 05.02.14 07:48 Сейчас в теме
36. so-quest 132 05.02.14 11:15 Сейчас в теме
ответ на вопрос - как создавать фабрику на лету. Теперь не нужно насиловать конфигурацию, встраивая пакеты.

http://infostart.ru/public/256028/
37. kiruha 384 05.02.14 11:34 Сейчас в теме
(36)
Скооперировались бы с автором ))
Чтобы в одной статье все
38. help1Ckr 05.02.14 11:40 Сейчас в теме
Спасибо огромное за статью! Как раз мучаюсь с xml. Для мну это темный лес(
39. Yashazz 3268 09.02.14 13:48 Сейчас в теме
Ну, баянненько и попсовенько, трёпа много и толка маловато, но для совсем начинающих сгодится. Особенно для тех, кому встроенную справку 1С читать лень.

Если хотите действительно серьёзный подход - читайте статьи от Evil Beaver, рекомендую.

Автор, можешь подробно рассказать о создании xsd "с нуля" на основе объектов платформы? Хочу, понимаешь, все типы и фасеты описать, да чтоб программно. И ещё нужна статья о разнице в понимании схем для 1С и нормальных xsd-схем, или "почему 1С не читает валидные схемы".
И, до кучи, расскажи о работе с XPath :)

А то, понимаешь, "пророка" тут изображает, азы пересказывая...
Infactum; +1 Ответить
40. Peka 12.02.14 15:52 Сейчас в теме
Как прочитать? Можно с помощью объекта «ЧтениеXML», но тогда нужно будет построчно обрабатывать документ. И хорошо если уровней вложенности всего лишь 2-3. А если их 10.


Сделал загрузку и выгрузку документа через ЧтениеXML и ЗаписьXML в результате появился XML файл:
<DocumentObject.ЗаказКлиента>
	<Ref>db7359f0-065d-11e3-bb9e-f0def1177243</Ref>
	<DeletionMark>false</DeletionMark>
	<Date>2013-08-16T17:23:55</Date>
	<Number>000000001</Number>
	<Posted>false</Posted>
	<Клиент>70038ad4-0613-11e3-8b3a-f0def1177243</Клиент>
	<Склад>d1464cbc-0612-11e3-8b3a-f0def1177243</Склад>
	<Товары>
		<Row>
			<Товар>6ca1f6db-0615-11e3-8b3a-f0def1177243</Товар>
			<Количество>2</Количество>
			<Цена>5000</Цена>
			<Сумма>10000</Сумма>
		</Row>
	</Товары>
</DocumentObject.ЗаказКлиента>
Показать

и как результат вопрос: А есть механизм, который позволит проставить соответствие тегов при загрузке XML файла ?
42. so-quest 132 13.02.14 11:44 Сейчас в теме
(40) http://infostart.ru/public/256836/
(41) "ресурсы кушает меньше" - это такая шутка? DOM вообще-то в памяти разворачивается. И с точки зрения потребления памяти ЧтениеXML - выгодней. Или у вас какой-то специфический DOM?
В заголовке статьи говориться про XDTO, поэтому к вашему "очень удобен" - пример когда DOM контролирует тип и отвечает на вопрос - соответствует xml схеме или нет - можете привести? Думаю с вашим опытом это не составит труда.
43. Yashazz 3268 13.02.14 14:58 Сейчас в теме
(42) Я не про ЧтениеXML. Я про СписокXDTO и прочая, взятые через сериализатор, каковые более жадны, чем построитель и его вторичные выборки.
А что касается проверки, то это вы про ЧтениеХМЛ.ОткрытьФайл, который проверяет согласно набору схем? Вообще хороший вопрос, навскидку не отвечу, надо ещё поискать. Но, думаю, есть ходы.
41. Yashazz 3268 12.02.14 16:47 Сейчас в теме
Кстати, маленькая подсказка тем, кто не желает мучиться с обходами по ЧтениеXML - есть такая хорошая штука "ПостроительDOM". Работает быстро, ресурсы кушает меньше, чем любые коллекции XDTO, и вообще очень удобен.
47. Evil Beaver 6756 17.02.14 10:26 Сейчас в теме
(41) Yashazz, какие это ресурсы DOM кушает меньше?
44. so-quest 132 13.02.14 16:46 Сейчас в теме
Это плата за типизацию и верификацию. Если не нужны такие навороты - не используй схемы. там уже всякие xpath или xslt
45. so-quest 132 13.02.14 16:50 Сейчас в теме
там уже всякие xpath или xslt начинают рулить.
46. Zero_nv 126 17.02.14 08:15 Сейчас в теме
Обновите в статье картинки плиз.
48. CheBurator 3422 18.02.14 23:27 Сейчас в теме
ну да.. понятно, что вопросамы о потребляемых ресурсах - это не наш путь...
49. malikov_pro 20.02.14 19:05 Сейчас в теме
автору спс, мои 5 коп по теме

Имеем файл XML в 200 МБайт с не регламентированной структурой, платформа 8.3 (в БП 3.0 гружу),
при загрузке чз XDTO +1,5 ГБ ОЗУ, работает стабильно, при DOM за +2ГБ, 1 раз с ошибкой вылетел.
При этом в XDTO не самый удобный интерфейс при работе с 0-1 (может значение быть а может и не быть).

Решил задачу загрузкой отдельных элементов в структуру + ТЗ и её обработку (памяти на порядок меньше расходуется).

&НаСервере
Функция ЗначенияXMLВСтруктуру(ЧитатьXML, ИмяРодителя, НеЧитать=Ложь) 
// НеЧитать - это если уже в элемент структуры провалился
	Структура = Новый Структура;
	Ключ = "";
	Значение = "";
	Пока ЕстьЧтоЧитать(НеЧитать) Цикл
		///
		Если ЧитатьXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
			Ключ = ЧитатьXML.Имя;
			ЧитатьXML.Прочитать();
			Если ЧитатьXML.ТипУзла = ТипУзлаXML.Текст Тогда
				Структура.Вставить(Ключ,ЧитатьXML.Значение);
			ИначеЕсли ЧитатьXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
				
				СтруктураВременная = ЗначенияXMLВСтруктуру(ЧитатьXML, Ключ, Истина);
				Если Структура.Свойство(Ключ,Значение) Тогда
					Если ТипЗнч(Значение) = Тип("Структура") Тогда
						ТЗ = ТаблицаЗначенийИзСтруктуры(Значение);
						ТЗ = ДобавитьСтруктуруКакСтрокуТЗ(ТЗ, СтруктураВременная);
					ИначеЕсли ТипЗнч(Значение) = Тип("ТаблицаЗначений") Тогда
						ТЗ = ДобавитьСтруктуруКакСтрокуТЗ(Значение, СтруктураВременная);					
					КонецЕсли;
					Структура.Вставить(Ключ, ТЗ);
				Иначе
					Структура.Вставить(Ключ, СтруктураВременная);
				КонецЕсли;
			КонецЕсли;
		ИначеЕсли (ЧитатьXML.Имя = ИмяРодителя) и (ЧитатьXML.ТипУзла = ТипУзлаXML.КонецЭлемента) Тогда
			Возврат Структура;
		КонецЕсли;
		////
		НеЧитать = Ложь;
	КонецЦикла;
Возврат Структура;
КонецФункции

&НаСервере
Функция ТаблицаЗначенийИзСтруктуры(Структура)
	ТЗ = Новый ТаблицаЗначений;
	Для каждого Строка Из Структура Цикл
		ТЗ.Колонки.Добавить(Строка.Ключ);
	КонецЦикла;
	
	ТЗ = ДобавитьСтруктуруКакСтрокуТЗ(ТЗ, Структура);
	
	Возврат ТЗ;
	
КонецФункции

&НаСервере
Функция ДобавитьСтруктуруКакСтрокуТЗ(ТЗ, Структура)
	
	СтрТЗ = ТЗ.Добавить();
	Для каждого Строка Из Структура Цикл
		Попытка
			СтрТЗ[Строка.Ключ] = Строка.Значение;	
		Исключение
			ТЗ.Колонки.Добавить(Строка.Ключ);
			СтрТЗ[Строка.Ключ] = Строка.Значение;
		КонецПопытки;
		
	КонецЦикла;
	
	Возврат ТЗ;
КонецФункции

&НаСервере
Функция ЕстьЧтоЧитать(Флаг)
	
	Если Флаг Тогда
		Возврат(Истина);
	КонецЕсли; 
	
	Если ЧитатьXML.Прочитать() Тогда
		Возврат(Истина);
	Иначе
		//Предупреждение("Файл прочитан полностью!");
	    Возврат(Ложь);
	КонецЕсли;
КонецФункции


Показать


проверку на значение 0-1 организовал
Если Структура.Свойство("type",Значение) И Значение = "у" Тогда
52. d0dger 81 28.02.14 12:52 Сейчас в теме
(49) угу, тоже делал подобное в дерево структур
51. so-quest 132 20.02.14 21:39 Сейчас в теме
для проверки на 0-1 проще добавить в схему предопределеное значение. или развести на 2 разных типа.
54. Lacoste4life 11.08.19 20:27 Сейчас в теме
Огромное спасибо автору данной статьи! Единственная статья, по которой у меня получилось с нуля создать пакет и считать XML файл! Браво!
Оставьте свое сообщение

См. также

Нечеткое сравнение строк. Метод Джаро-Винклера на 1С Промо

Математика и алгоритмы v8::УФ 1cv8.cf Абонемент ($m)

Схожесть строк. Метод Джаро-Винклера. В обработке реализован алгоритм нечеткого сравнения строк.

3 стартмани

20.04.2018    18415    76    Serg1701    19    

Treemapping. Демонстрационная обработка

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Пример реализации диаграммы вида Treemap на 1С

1 стартмани

27.02.2020    2342    8    randomus    4    

Рекомендательный сервис на основе коллаборативной фильтрации на 1С. Расширение формы подбора для УТ 11.4

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

В данной разработке реализован механизм рекомендаций товаров по принципу схожести товаров в корзине на основе алгоритма Item-to-Item от Amazon. Разобран алгоритм с демо базой и сделано расширение для УТ11.4 которое добавляет в форму подбора таблицу рекомендаций. Протестировано на 8.3.13.1865 на Управление торговлей, редакция 11 (11.4.8.63)

3 стартмани

25.09.2019    8306    12    informa1555    24    

Конвейер проверки качества кода

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

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    21023    21    Stepa86    44    

Определение кратчайших путей, критических путей одним запросом Промо

Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Еще два примера применения алгоритма каскадного матричного умножения, впервые описанного в статье «Транзитивное замыкание запросом» http://infostart.ru/public/158512/

1 стартмани

07.04.2014    36573    22    ildarovich    31    

Еще раз о рабочих днях. Быстрый способ расчета в запросах

Практика программирования Математика и алгоритмы Разработка v8 Абонемент ($m)

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

1 стартмани

20.06.2019    6068    1    Alxby    11    

Искусственный интеллект для змейки. Часть 1: Кратчайший/длиннейший путь, Гамильтонов цикл

Математика и алгоритмы Игры v8 Россия Абонемент ($m)

Различные варианты алгоритмов для игры "Змейка".

1 стартмани

07.06.2019    5979    3    Alex_YAM    2    

Функциональное программирование в 1С

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

Статья о функциональном программировании в 1С. Добавляем новые возможности. Пример передачи функций в качестве аргумента.

1 стартмани

28.03.2019    7988    0    alexey.kutya    26    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо

Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Абонемент ($m)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    47460    15    DarkAn    86    

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

Практика программирования Математика и алгоритмы Разработка v8 Абонемент ($m)

В статье рассмотрен один из вариантов библиотечного подхода к разработке, позволяющий организовать иерархический вызов библиотечных процедур и упростить автоматическую сборку готового продукта из нескольких библиотек. Предлагаемый подход может служить одним из элементов CI/CD при разработке ПО на платформе 1С.

1 стартмани

04.03.2019    5453    1    Alxby    4    

Жизненный цикл управляемой формы. Шпаргалка разработчика

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

Прочитав когда-то давно книжку "Разработка управляемых форм", составил для себя такую схемку-напоминалку для обращения в процессе разработки. С тех пор не раз выручала и избавляла от необходимости лезть в гуглы.

1 стартмани

29.06.2018    29107    52    stas_ganiev    26    

Принципы ООП в 1С на примере реализации pattern Decorator

Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

В данной статье будет рассмотрен пример реализации GoF паттерна проектирования decorator в среде разработки 1С. Основная цель данного шаблона, это возможность динамического расширения функциональности базового класса. Сразу оговорюсь, т.к. в 1С нет ООП, это будет не чистый пример реализации данного шаблона, однако свою задачу данный пример будет решать.

1 стартмани

21.06.2018    10971    4    lazarenko    6    

Агрегатное суммирование строк в запросе – сложно, но не невозможно Промо

Математика и алгоритмы v8 Абонемент ($m)

Описывается метод соединения строк из одной колонки таблицы в единую результирующую строку в запросе на языке 1С. Метод сложный и по сравнению с внезапросной техникой представляет больше спортивный, чем практический интерес.

1 стартмани

09.09.2013    76247    32    ildarovich    53    

Алгоритмы и регламентные задания (расширение)

Математика и алгоритмы Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Универсальный механизм для создания алгоритмов и регламентных задач.

5 стартмани

28.05.2018    10291    7    pm74    39    

Строим "фасады" в 1С

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

Как реализовать функционал, чтобы не было “мучительно больно” при расширении требований.

1 стартмани

04.05.2018    17044    3    ktb    41    

Случайность, совпадение, закономерность. Генератор случайных чисел

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

Объект ГенераторСлучайныхЧисел удобно выдает случайные числа в заданном интервале значений. Исследование особенностей, рассуждения на тему случайных чисел, практика применения. Увлекательно в игровой форме можно исследовать работу генератора случайных чисел.

1 стартмани

20.01.2018    22826    2    Ликреонский    58    

Полная методичка к курсу "Программирование 8.2" Промо

Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

580 страниц знаний! Публикую методичку, а точнее стенограмму курса по подготовке программистов 8.2.

10 стартмани

09.01.2014    51041    109    GROOVY    100    

Github и 1С. Пошаговая инструкция на конкретном примере

Математика и алгоритмы v8 Абонемент ($m)

Статья для тех, у кого есть неудержимое желание программировать и хочется доработать какую-то конфигурацию (или проект на 1С), выложенный на Github, но останавливают незнакомые слова Git, Github, Fork, Commit, Pull request, Merge, Issue.

1 стартмани

26.10.2017    42425    4    BlizD    51    

Планы обмена 1С: решение проблемы блокировок при помощи средств SQL Server

Практика программирования Математика и алгоритмы v8 Абонемент ($m)

Небольшое исследование возможности улучшить работу планов обмена 1С средствами SQL Server: view + triggers (представление + триггеры). В статье описывается один из приёмов SQL программирования для решения проблем блокировок, когда основные структуры данных изменить нельзя.

1 стартмани

10.01.2017    12776    3    zhichkin    4    

Многопоточная выгрузка одного сообщения обмена

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 Абонемент ($m)

Публикация описывает, как можно распараллелить выгрузку одного сообщения обмена.

1 стартмани

05.12.2016    14709    1    zhichkin    24    

Разработка синтаксического анализатора языка запросов на языке 1С Промо

Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Пример разработки генератора для PEG парсера

1 стартмани

03.12.2014    23998    1    so-quest    70    

1С+Классы. Версия-0

Разработка внешних компонент Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Разработано ООП-расширение языка 1С, включающее (но не ограничивающееся): Классы как абстрактные типы данных с элементами «переменная», «свойство», «функция», «процедура»; Интерфейсы как абстрактные классы без элементов состояния («переменная») и без привязки к реализации методов (свойств, процедур, функций) при определении; Имплементация (реализация) интерфейсов классами; - одиночное открытое наследование; Области видимости «внутренняя» (private), «экспорт» (public), «защищенная» (protected); Статические элементы классов (общие для всех экземпляров класса); Замещение (переопределение реализации) методов при наследовании – «виртуальные методы, свойства»; Сокрытие (затенение) обычных (не замещаемых) элементов при наследовании; Перегрузка процедур и функций по количеству и типам данных аргументов; Конструкторы класса; Деструктор класса; Слабые ссылки; Делегаты.

1 стартмани

28.10.2016    19410    1    IntelInside    68    

Генетический алгоритм для решения простой задачки

Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Генетический алгоритм в решении задачи: Необходимо расставить правильно (по другому) скобки, чтобы получилось 850 (1 + 2) (3 + 4) (5 + 6) (7 + 8) (9 + 10) (11 + 12) (13 + 14) + 15

1 стартмани

26.09.2016    9305    5    eugeniezheludkov    4    

Объектные блокировки

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

При работе с объектными данными (справочники, документы, планы счетов и т.д.) система «1С:Предприятие» обеспечивает два вида объектных блокировок: пессимистическую и оптимистическую. Они позволяют выполнять целостные изменения объектов при одновременной работе нескольких пользователей.

1 стартмани

17.08.2016    28827    9    Ranis1286    5    

Еще один взгляд на проблему «жизнь без последовательностей». Часть вторая (практическая) Промо

Математика и алгоритмы v8 КА1 БП2.0 УТ10 Розница УПП1 УНФ Россия Абонемент ($m)

В [1 - http://infostart.ru/public/62938/] был предложен метод корректировки списаний по партиям при изменении документов задним числом. Использование данного метода позволяет контролировать остатки при неоперативном проведении и поддерживать учет по партиям всегда в актуальном состоянии, то есть обходиться без механизма последовательности документов. Собственно метод заключался в решении задачи правильного списания по партиям как задачи линейного программирования. В доказательство работоспособности метода приводится следующая «каркасная» конфигурация «Полигон», в которой этот метод реализован.

1 стартмани

19.08.2010    29030    18    ildarovich    35    

Использование методов глобального контекста в системе компоновки данных или недокументированные возможности СКД

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

Прочитал на форуме, что СтрРазделить() и ТекущаяДата() работают в языке выражений системы компоновки данных. Почитал справку, там ничего не нашёл, поэтому не поверил. Посмотрел на практике – и правда работает… В данной статье попытался привести весь перечень методов, работающих в СКД, но не описанных в документации.

1 стартмани

05.08.2016    35325    26    klinval    40    

Еще один способ расчета остатков на каждый день в запросе

Математика и алгоритмы Практика программирования v8 Абонемент ($m)

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

1 стартмани

24.04.2016    32437    48    ildarovich    23    

Пример рекурсивной выгрузки иерархической структуры в XDTO

Математика и алгоритмы Внешние источники данных WEB v8 1cv8.cf Абонемент ($m)

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

1 стартмани

26.02.2016    32721    15    starik-2005    3    

Включаем звук в 1С. Доступно и всерьез. Промо

Математика и алгоритмы Универсальные функции v8 1cv8.cf Абонемент ($m)

Как сделать воспроизведение звука в 1С без внешних компонентов? Решаем средствами интернета. Для тонкого, толстого и web-клиента.

1 стартмани

30.12.2013    79361    150    sikuda    37    

Нелинейная многомерная оптимизация - это просто. Часть 3. Имитация отжига

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

Метод имитации отжига для поиска оптимального решения. И, как обычно, универсальная функция поиска этого самого решения.

1 стартмани

13.10.2015    17776    23    dusha0020    5    

Нелинейная многомерная оптимизация - это просто. Часть 1. Градиентный спуск

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

Рассказ с демонстрацией возможностей градиентного метода поиска оптимального решения.

1 стартмани

07.07.2015    17574    7    dusha0020    19    

Пример сериализации объектов в 1С 8.3 и их восстановления из сериализованных данных

Математика и алгоритмы Обмен через XML Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Абонемент ($m)

Простейшая обработка, демонстрирующая принципы сериализации выбранного Объекта 1С (Справочника, Документа и еще некоторых), с возможностью восстановления Объекта из сериализованного значения.

1 стартмани

05.07.2015    26692    74    katkov_a    29    

Демо связи веб сервисов 1С и php Промо

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

Демонстрация обращения к веб сервису 1С из php. Пример простейший, уровня hello world. Дана одна страница и информационная база 1С с одним справочником и одним веб сервисом. Веб сервис выдаёт содержимое справочника по запросу странички.

1 стартмани

19.07.2013    31852    47    Трактор    20    

Степень сходства двух наименований справочника

Математика и алгоритмы v7.7 v8 Абонемент ($m)

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

1 стартмани

25.02.2015    20292    2    etmarket    43    

Написание простой обработки через тестирование

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

Раньше я считал, что в 1С невозможно юнит-тестирование (ведь тут нет вездесущих объектов, привычных классов и и. т.). Иногда на Инфостарте появлялись специализированные обработки, но часто они скорее отпугивали от темы тестирования, чем привлекали к ней. Потом я узнал про xUnitFor1C. Оказалось, что тестирование в 1С в общем не так уж и сложно, даже в сравнении с другими языками. В данной статье я расскажу о своем первом опыте.

1 стартмани

24.02.2015    26462    11    Alien_job    40    

Парсинг сайта без использования встроенного браузера для начинающих

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

Данная статья показывает пример парсинга одного конкретного сайта со своей структурой, на основе которого можно понять суть, методы и без особых проблем парсить другие сайты. Здесь описано: подключение к серверу, сохранение html-страницы на диск, загрузка и цикличный обход ее структуры, рекурсивный парсинг, загрузка картинок по ссылке на диск.

1 стартмани

20.11.2014    38881    114    angernaughts    36    

Конспект лекций по курсу «Автоматизированные информационные системы» Промо

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

Конспект лекций по курсу «Автоматизированные информационные системы» составлен на основании требования Государственного образовательного стандарта среднего профессионального образовании к содержанию и уровню подготовки выпускника по специальности 230103 «Автоматизированные системы обработки информации и управления». В конспекте есть общие сведения о методике 1С:Профкейс. Конспект лекций разработал: канд. техн. наук, доцент Космачев С.Н.

1 стартмани

07.06.2012    24120    9    ksnik    19    

Куайн (Программа, выводящая свой исходный код на экран)

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

Обработка позволяет насладится реализацией этой интересной, и совершенно бесполезной с практической точки зрения задачей.

1 стартмани

25.08.2014    9283    0    atridis    7    

БСП, использование типового механизма 1с для запуска регламентных заданий с заранее подготовленными настройками.

Математика и алгоритмы БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Описание варианта запуска регламентного задания на БСП, без изменения типовой конфигурации.

1 стартмани

03.01.2014    35153    113    almas    7    

Методический материал. Работа с запросами

Практика программирования Математика и алгоритмы v8 Абонемент ($m)

Краткое методическое пособие для изучения запросов в 1С

1 стартмани

23.12.2013    17621    12    rayastar    27    

Автоформатирование кода Промо

Сервисные утилиты Обработки Чистка базы Справки Производительность и оптимизация (HighLoad) Инструментарий разработчика Практика программирования Универсальные обработки Решение задач на 1С:Специалист Математика и алгоритмы Администрирование данных 1С Разработка Тестирование и исправление Стартеры 1С v8 1cv8.cf Абонемент ($m)

Как часто приходится работать в режиме аврала, когда на оформление кода не хватает времени? И как лениво порой бывает, возвращаться к уже рабочему коду, что бы отформатировать его и привести в порядок. Данная обработка позволяет автоматически форматировать текст кода, в соответствии с настройками пользователя. Это позволит привести ваш код, как уже написанный так и будущий к единому оформлению.

1 стартмани

19.12.2012    38903    46    Sibars    57    

Определитель матрицы

Практика программирования Математика и алгоритмы v8 Абонемент ($m)

Представлена программная реализация вычисления определителя матрицы посредством языка запросов 1С. Даны два метода: 1) прямой, на основе определения 2) метод Гаусса, приведение к диагональному виду с вычислением произведения диагональных элементов. В обновленной версии в случае целочисленных элементов для метода Гаусса проводится полная факторизация всех чисел, участвующих в вычислениях.

1 стартмани

28.11.2013    12171    8    zaxarovsky    8    

Квадратный корень в запросе 1С

Практика программирования Математика и алгоритмы v8 Абонемент ($m)

Язык запросов 1С не позволяет вычислить квадратный корень 1С. Квадратный корень может пригодиться при вычислении среднеквадратического отклонения или геометрических вычислениях.

1 стартмани

24.10.2013    26339    4    Elisy    53    

Задачи о 5 и 9 ферзях

Математика и алгоритмы v8 Абонемент ($m)

Задача о ферзях-часовых. На шахматной доске надо расставить 5 ферзей, чтобы они держали под боем все клетки доски. Задача В. Франгена, расставить на шахматной доске 10 “белых” и 9 “чёрных” ферзей так, чтобы ни один из них не находился под ударом противника

1 стартмани

31.08.2013    20079    0    scientes    4    

115 полезностей от Буравова Андрея по курсу СКД Евгения Гилёва Промо

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

Посмотрел 5,5 часовой курс по системе компоновки данных. Нашел невероятное количество не только необходимого, но и примеры не очевидного поведения СКД. У многих не хватает времени и терпения досмотреть курс до конца. Прочитав 115 полезностей, вы сможете понять в каком уроке освещен интересующий вас вопрос и быстро открыть его, чтобы посмотреть видео.

1 стартмани

08.04.2012    37086    4    Flashill    69    

Технология создания коммерческих разработок на базе Базовой конфигурации "Управление Торговлей, ред.10.3" Промо

Математика и алгоритмы Рабочее место v8 v8::ОУ УТ10 УУ Абонемент ($m)

Создав однажды небольшую надстройку на базе конфигурации "УТ Базовая, ред.10.3", впоследствии разработка расширилась до неузнаваемости и приросла функционалом. Что удивительно, так это то, что разработка представляет собой внешнюю обработку вкупе со стандартными механизмами базовой версии, а значит не требует дополнительного конфигурирования БД. О том, как и что я реализовал, пойдет речь в данной статье.

1 стартмани

11.03.2012    25075    0    Rustig    93