Код из программы , стр.381 обработки ОбновлениеКладр
л_ФайлыКлассификаторовДомов = НайтиФайлы(м_КаталогЗагрузки, «HOUSE**.DBF»);
Если л_ФайлыКлассификаторовДомов.Количество() = 0 Тогда
// КЛАДР
ИндексацияКЛАДР(Разделитель);
Иначе
// ФИАС
л_ФайлОбъектов = НайтиФайлы(м_КаталогЗагрузки, «ADDROBJ.DBF»);
Я не пойму, почему программа ищет файл DBF, давно все классификаторы или в XML или FI .
Как нужно обновлять классификатор?
Тема закрыта.
|
|||
irkinkas
07.09.17 — 08:33 |
Имеем 1С:Предприятие 8.3 (8.3.8.2054) конфигурация Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.51.20.002) Помогите пожалуйста решить проблему. |
||
1c-kind
1 — 07.09.17 — 08:35 |
Попробуйте скачать с сайта и загрузить вручную. http://helpme1c.ru/gde-mozhno-skachat-fias-po-regionam-dlya-1s-8-3-redakciya-3-0-i-kak-ego-zagruzit-v-programmu#__1 |
||
irkinkas
2 — 07.09.17 — 08:41 |
К сожалению после нажатия Загрузить классификатор появляется сразу сообщение об ошибке (см.выше) и более ни куда попасть не возможно. В этом и проблема |
||
Альбатрос
3 — 07.09.17 — 08:42 |
Чо с правами и местом на диске? |
||
irkinkas
4 — 07.09.17 — 08:45 |
Права на Temp выдал полный доступ на «Все», и на возможных пользователей ещё раньше. 35 гб свободно. |
||
irkinkas
5 — 07.09.17 — 08:48 |
Удалить всё из папки не удалось т.к. пишет что файлы заняты процессом и имя в сообщении каждый раз другое после D841 |
||
Альбатрос
6 — 07.09.17 — 08:55 |
Традиционно почистил кэш? |
||
rphosts
7 — 07.09.17 — 08:55 |
(0)он давно не классификатор(кладр), а система (фиас). Может вы не то пытаетесь загрузить? |
||
irkinkas
8 — 07.09.17 — 08:59 |
Как традиционно? Простите но я не знаю. Как это делать? И там написано «Загрузить классификатор». Ссылка такая в разделе «Поддержка и обслуживание-Адресный классификатор». |
||
1dvd
9 — 07.09.17 — 09:02 |
обновиться до последнего релиза не предлагали ещё? |
||
irkinkas
10 — 07.09.17 — 09:04 |
релиз нельзя москва не велит |
||
1dvd
11 — 07.09.17 — 09:10 |
(10) ну вот пусть москва и грузит фиас |
||
irkinkas
12 — 07.09.17 — 09:13 |
Кэш почистил Чекистом |
||
irkinkas
13 — 07.09.17 — 09:13 |
Не помогло |
||
irkinkas
14 — 07.09.17 — 09:16 |
Я так понимаю что сообщение выдаёт сама 1С и файл *.tmp создаёт она же. Не понятно чем он ей не нравится. Знать бы хотя бы куда копать. |
||
irkinkas 15 — 07.09.17 — 09:43 |
Bсем спасибо! Проблема была в доступе с сети Интернет. Так как доступ был не везде разрешён то и выскакивала эта сообщение. Дали полный доступ и 1С тут же заработала. |
Одним из самых популярных форматов данных, используемых практически в любой компании, является XML (расширяемый язык разметки). Разработчики 1С создали специальный объект XDTO для удобства своих клиентов и простого взаимодействия с файлами XML, поэтому программисту 1С важно работать с этими объектами платформы, так как обмен данными через XML встречается постоянно.
Этот функционал создавался как удобный инструмент обмена данными между конфигурациями и другими приложениями. Также этот механизм используют для работы с web-сервисами и для обработки произвольных данных. Большое преимущество XDTO перед другими способами – в нем есть возможность обращаться к файлу XML, как к объекту 1С. То есть все реквизиты можно будет получить, описывая структуру через точку, не задумываясь о скобках, тегах и атрибутах.
Взаимодействие с файлами XML происходит по заранее установленным правилам, описанным в объекте структуры конфигурации – XDTO – пакеты в 1С 8.3. Суть этих элементов структуры в том, что они представляют собой схемы, по которым будут распознаваться данные из XML-файлов. В типовых конфигурациях уже присутствуют подобные объекты, но при работе с конкретными файлами понадобятся другие схемы.
Существует два способа добавить XDTO-пакет в конфигурацию:
- Собственноручно создать. Этот вариант подойдет при самостоятельной работе с XML определенного формата. Зная, какие данные будут подаваться на вход для импорта с использованием XDTO, можно заранее создать в конфигурации нужный объект. Этот вариант хорош, если обмен данными налажен и никаких изменений не планируется;
Рис.1 XDTO пакеты - Импорт присланной схемы. Когда нам присылают данные, их схема может оказаться какой угодно, особенно, если раньше мы не работали с источником. Сильно упростит ситуацию, если вместе с XML нам пришлют и файл формата xsd. В нем содержится выгрузка XDTO-пакета, который может разобрать конкретные XML. Нам останется лишь импортировать его.
Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.
Но на самом деле в последнем случае нам необязательно создавать XDTO-пакеты в конфигурации 1С 8.3. Существует возможность только использовать XSD-схему, присланную нам из отдельного файла, не внося изменения в структуру базы 1С. Для этого нужно воспользоваться кодом, объясняющим платформе 1С, какой тип объекта с какими параметрами будет загружаться.
Это происходит следующими командами:
ФайлXSD = Новый Массив();
ФайлXSD.Добавить("D:1strust.xsd");
ФабрикаXDTOИзФайла = СоздатьФабрикуXDTO(ФайлXSD);
Номенклатура = ФабрикаXDTOИзФайла.Тип("http://www.1c.ru/products", "Номенклатура");
Экспорт и импорт файла
После того как мы разобрались с принципами использования пакетов XDTO, нужно посмотреть на механику работы с файлами XML. Лучше всего это будет видно на простом примере, чтобы понять основы. Добавим новый элемент в раздел XDTO-пакетов и настроим его следующим образом:
- Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
- Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.
Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:
- Определение схемы будущей XML;
ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
- Заполнение свойств номенклатуры;
Номенклатура = ФабрикаXDTO.Создать(ТипФабрики); Номенклатура.Наименование = "Тест XML"; Номенклатура.Артикул = "2";
- Создание нового XML файла.
ИмяФайла = "D:1struct1.xml"; МойXML = Новый ЗаписьXML; ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь); МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML); МойXML.ЗаписатьОбъявлениеXML(); ФабрикаXDTO.ЗаписатьXML(МойXML, номенклатура); МойXML.Закрыть();
Чтение XML-файлов с помощью конкретной фабрики XDTO по уже созданному в конфигурации пакету ничуть не сложнее. Алгоритм похож по структуре и отличается только операциями взаимодействия с XML-файлами. В данном случае нам нужно воспользоваться объектом платформы «ЧтениеXML» и прочитать содержимое в переменную. На выходе у нее будет тип «ОбъектXDTO», и вы сможете обращаться ко всем ее свойствам через точку.
ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
ИмяФайла = "D:1struct1.xml";
МойXML = Новый ЧтениеXML;
МойXML.ОткрытьФайл(ИмяФайла);
номенклатура = ФабрикаXDTO.ПрочитатьXML(МойXML, ТипФабрики);
МойXML.Закрыть();
Теперь попробуем прочитать файл, схемы которого нет в нашей конфигурации. Для этого экспортируем XDTO-пакет в файл формата xsd и удалим схему из конфигурации. После этого нам придется объяснить платформе, откуда ей брать схему читаемой XML-кодом, продемонстрированным ранее. Однако в простейших случаях 1С самостоятельно может распознать все свойства.
Лучше все-таки не рассчитывать на понятливость платформы 1С, а использовать точную схему XML. Многие специалисты используют сторонний софт для их создания, но для этого необходим достаточно большой опыт и уровень подготовки. Работа с пакетами XDTO требует внимания и соблюдения точного соответствия файлов заданной схеме, чтобы минимизировать возможные ошибки.
Исправление ошибок
Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.
Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:
- Ошибки в обновлении платформы или конфигурации;
- Обмен между базами разных версий;
- Недочеты в алгоритме приема данных;
- Проблемы с временной памятью конкретного компьютера.
Чтобы исправить эту ошибку, сначала почистите кэш или удалите, а также заново добавьте информационную базу в список баз. Затем внимательно проверьте файл XML – вдруг случайно сделали ошибку в его тексте, проверьте соответствие структуры пакету XDTO. Если ошибка появилась после обновления, сделайте тестирование и исправление ИБ, сохранив перед этим резервную копию базы. Если проблема не уйдет, вернитесь на предыдущую версию и подождите, пока разработчики 1С не разберутся с этой проблемой.
Еще одна проблема, часто мучающая программистов 1С, работающих с XDTO, – ошибка проверки данных. Если при импорте вы видите подобный текст, то с высокой долей вероятности источник проблемы в несоответствии файла нужной схеме. Но проблема может быть не на вашей стороне, а в базе, из которой выгружали XML. Чтобы исправить эту оплошность, придется внимательно изучить всю последовательность действий и найти, после чего файл перестал соответствовать ожиданиям.
Более сложная для анализа проблема, если при обмене информацией 1С выдает ошибку о несоответствии типов XDTO. В этом случае придется проверять все данные, находить ошибки и их причины. В некоторых случаях ошибки могут быть в коде, иногда – в данных информационной базы. Чтобы это понять, необходимо иметь доступ к базам причастным к обмену и четко понимать всю суть происходящего экспорта и импорта.
На первый взгляд работа с XDTO достаточно сложна, поэтому на первое время рекомендуется добавлять XDTO-пакеты в 1С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.
Структура объекта не соответствует типу |
Я |
PsyTech
14.09.17 — 11:12
Всем привет!
При вызове метода сервиса получаю сообщение «Структура объекта не соответствует типу».
Структура объекта XDTO соответствует типу входного параметра, а 1с сравнивает структуру этого объекта с типом выходного параметра, естественно они не соответствуют. От чего так может быть?
PsyTech
1 — 14.09.17 — 11:17
*с типом возвращаемого значения
PsyTech
2 — 14.09.17 — 11:51
Т.е. На вход методу сервиса подаю параметр в соответствии с типом входного по WSСсылке, а туда как будто ожидается параметр с типом возвращаемого значения.
catena
3 — 14.09.17 — 12:00
(2)Где размещен сервис, откуда запрашивается, чем подкреплены такие выводы?
PsyTech
4 — 14.09.17 — 12:03
Через SOAP UI сервис нормальные ответы возвращает. Может я не понимаю смысыл этого сообщения? О чем оно? О том, что я на вход что-то не то передаю, или возврат не соответствует схеме?
PsyTech
5 — 14.09.17 — 12:06
хотя, ответ соответствует схеме…
catena
6 — 14.09.17 — 12:09
(4)У порядочного веб-сервиса возврат не может не соответствовать схеме. Чем запрос формируется? Через wsОпределения или вручную сбор хмл?
PsyTech
7 — 14.09.17 — 12:16
(6) Через wsОпределения, т.е. четко по схеме.
Почему 1с сравнивает входной параметр с типом возвращаемого значения?
PsyTech
8 — 14.09.17 — 12:20
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2}OneC_Respose — [1,330]
Проверка дополнительного свойства:
форма: Элемент
имя: OPERATIONID
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2}OneC_Respose
OPERATIONID — это поле из возвращаемого значения. Причем тут оно?
PsyTech
9 — 14.09.17 — 13:25
не оставляйте меня тут одного!))
catena
10 — 14.09.17 — 13:27
(9)Мало информации. Структуры вс нет, кода нет, обсуждать пока нечего.
PsyTech
11 — 14.09.17 — 13:29
почему-то подумал, что этого достаточно
PsyTech
12 — 14.09.17 — 13:33
Вот кодик:
Прокси = WSСсылки.SAP_Product.СоздатьWSПрокси(URI, ИмяСервиса, ИмяПорта);
Прокси.Пользователь = login;
Прокси.Пароль = password;
ТипWSПараметра = Прокси.ФабрикаXDTO.Тип(URIПространстваИмен, Имя);
WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
Меркурий.ИнициализироватьОбъектXDTO(WSПараметр, Прокси.ФабрикаXDTO);
WSПараметр.localTransactionId = localTransactionId;
WSПараметр.initiator.login = login;
WSПараметр.enterprise.guid = guidПлощадки;
WSПараметр.productionOperation.operationId = operationId;
Ответ = Прокси.RegisterProductionOperation(WSПараметр);
PsyTech
13 — 14.09.17 — 14:27
А так получаю ошибку 500
xmlHttp = Новый COMОбъект(«Microsoft.XMLHTTP»);
xmlHttp.OPEN(«POST», URI, 0, login, password);
xmlHttp.setRequestHeader(«User-Agent», «1C Soap toolkit»);
xmlHttp.setRequestHeader(«Content-type»,»content-type text/xml; charset=utf-8″);
xmlHttp.setRequestHeader(«Content-Length», СтрДлина(MessageExchange));
xmlHttp.setRequestHeader(«SOAPAction», «http://sap.com/xi/WebService/soap1.1»;);
xmlHttp.SEND(MessageExchange);
PsyTech
14 — 14.09.17 — 14:54
Было у кого такое, чтоб сторонний сервис через SOAP IU работал, а через 1с нет?
PsyTech
15 — 14.09.17 — 16:04
Может кто хотя бы может логику сообщения о ошибке пояснить?
Структура какого объекта не соответствует типу? Который передаю на вход? Почему тогда в тексте ошибки поле из возвращаемого значения?