Ошибка установки значения свойства корпус

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Сергей Интяшев

Дата регистрации: 29.01.2019
Сообщений: 1

Добрый день всем. При создании электронного документа выдает такую ошибку.

1С:Предприятие 8.3 (8.3.12.1685)
Бухгалтерия предприятия, редакция 3.0 (3.0.67.43)
Режим : Серверный, PostgreSQL

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

Сообщения из журнала регистрации:

Выполнение операции: Заполнение XDTO.
Ошибка установки значения свойства «НалСт».
{ОбщийМодуль.ОбменСКонтрагентамиВнутренний.Модуль(10673)}: Ошибка при вызове метода контекста (Установить)
            ОбъектXDTO.Установить(ИмяСвойства, Значение);
по причине:
Несоответствие типов XDTO
по причине:
Ошибка проверки данных XDTO:
Значение: ‘20%’ не соответствует простому типу:
Значение не соответствует значениям фасета перечисления

————————————————————————————-

Выполнение операции: Формирование ЭД.
{ОбщийМодуль.ОбменСКонтрагентамиВнутренний.Модуль(8390)}: Выполнение операции: Заполнение XDTO.
Ошибка установки значения свойства «НалСт».
                  ВызватьИсключение ЭлектронноеВзаимодействиеСлужебный.СоединитьОшибки(Ошибки);

Помогите пожалуйста, может кто сталкивался с данной проблемой

Ленар Ленарович

Дата регистрации: 15.03.2019
Сообщений: 1

Нужно обновить 1С до определенного релиза. Для «Бухгалтерия предприятия», редакция 3.0 необходимо обновиться до релиза 3.0.67.67

Показывать по
10
20
40
сообщений

Возможно ли получить два ид обмена по табаку если организация ИП?

Собственно вопрос.

Не можем получить второй идентификатор обмена для второго подразделения у ИП

пишет следующие ошибки в журнале регистрации

Выполнение операции: Заполнение XDTO.

Ошибка установки значения свойства «ИННЮЛ»!

{ОбщийМодуль.ЭлектронныеДокументыВнутренний.Модуль(15696)}: Ошибка при вызове метода контекста (Установить)

    ОбъектXDTO.Установить(ИмяСвойства, Значение);

по причине:

Несоответствие типов XDTO

по причине:

Ошибка проверки данных XDTO:

Значение: ‘270402106984’ не соответствует простому типу: {http://www.1c.ru/edo/registration}ИННЮЛТип [^]

Значение не соответствует образцу

Выполнение операции: Формирование данных для оператора ЭДО

{ОбщийМодуль.ЭлектронныеДокументыВнутренний.Модуль(4054)}: Ошибка при вызове метода контекста (Проверить)

    Файл.Проверить();

по причине:

Ошибка проверки данных XDTO:

Структура объекта ‘/Документ/УчастЭДО/ЮЛ’ не соответствует типу:

Проверка свойства ‘ИННЮЛ’:

  форма: Атрибут

  имя: ИННЮЛ

  тип: {http://www.1c.ru/edo/registration}ИННЮЛТип [^]

Отсутствует обязательное свойство

Вариант только через единый центральный склад?

Содержание:

1.       Ошибка при установке значения атрибута контекста

2.       Ошибка при получении значения атрибута контекста

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

1.    Ошибка при установке значения атрибута контекста

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

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

2.    Ошибка при получении значения атрибута контекста

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

При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

Специалист компании «Кодерлайн»

Александр Суворов

При входе в базу 1с вы можете увидеть “Ошибка преобразования данных XDTO:

Начало Свойства: errorProcessingSettings

Форма: Элемент

Тип: {http://v8.1c.ru/8.2/managed-application/core}ErrorProcessingSettings по причине

Чаще всего ошибка возникает при определенном типе запуска: это либо через тонкий клиент, либо через линк42, случаи бывают разные. Через браузер такие базы запускаются без ошибок.

Есть простое решение данной проблемы.

Достаточно запустить базу доступным нам способом (где нет ошибки) включить Функции тех. специалиста (Меню — Настройки — Параметры — Режим технического специалиста)

В Функциях для технического специалиста ищем Управление настройками обработки ошибок (Стандартные)

Запускаем

Готово!

Уже более 10 000 компаний работают
в облачной 1С от 42Clouds

— Консультация по 1С Бесплатно!

— Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте

— Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web

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

Содержание

Аббревиатура  XDTO расшифровывается как XML Data Transfer Objects – и переводится как Объекты переноса данных XML. Это детище компании 1С, и нигде кроме экосистемы 1С данный механизм не используется. Предназначение XDTO – интеграция и обмен данными между 1С и другими системами в формате XML. Собственно, XDTO позволяет работать с xml в объектном стиле, “через точку”, не задумываясь об атрибутах, тегах, узлах и т.п.

Механизм XDTO включает в себя несколько объектов встроенного языка и объект конфигурации “XDTO-пакет” 

XSD схемы и пакеты XDTO. Пространства имен

Объект метаданных XDTO-пакет предназначен для описания системы типов и значений для взаимодействия с внешними системами или обработки xml-данных. Для гарантированного обеспечения уникальности типов между различными пакетами, в свойствах XDTO-пакета задается пространство имен. Исторически сложилось, что пространство имен выглядит как url-адрес, но на деле это всего лишь строка, которая может быть абсолютно любой. Важно, чтобы в пределах конфигурации пространства имен в пакетах XDTO были уникальны.

XML схемы описывают структуру XML-документа на языке XSD – XML Schema Definition Language.
Схемы XSD предназначены для решения следующих задач:

  • Перечисление элементов в документе XML и проверка наличия в документе только объявленных элементов.
  • Объявление и определение атрибутов, модифицирующих элементы документа.
  • Определение иерархических отношений между элементами – какой является родительским, а какой – дочерним.
  • Определение состояний и моделей содержания для элементов и атрибутов.
  • Задание типов данных.
  • Установка значений по умолчанию.
  • Поддержка использования пространств имен.

В свою очередь, XDTO пакеты помимо свойств, аналогичных свойствам XSD-схем, содержат еще ряд свойств, предназначенных для трансляции данных в объекты 1С и обратно. К этим свойствам относится, в частности свойство “Локальное имя”.

Стандартные пакеты XDTO

Даже если ни одного пакета XDTO в конфигураторе не создано, платформа будет предоставлять обширный список стандартных пакетов, описывающих все данные, предоставляемые платформой. Так, например, среди стандартных пакетов есть пакет для описания управляемого приложения, системы компоновки данных, двухфакторной аутентификации, и множество других. “Познакомиться” с ними можно, используя коллекцию глобальной фабрики XDTO “Пакеты”.

&НаСервере
Процедура ВывестиВсеПакетыНаСервере()
	Для Каждого Пакет Из ФабрикаXDTO.Пакеты Цикл
		Сообщить(Пакет.URIПространстваИмен);
	КонецЦикла;
КонецПроцедуры

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

Создание, импорт и экспорт схем XSD

Пакеты XDTO можно экспортировать в XML-схемы в формате xsd, и наоборот – из xsd-файла можно импортировать пакет XDTO. Важно – не все схемы xsd успешно импортируются в пакеты XDTO, при том что сами схемы будут полностью валидны. Распространенная ошибка связана с отсутствием определения целевого пространства имен targetNamespace.
Кроме того, существует возможность выгрузить XML-схему данных конфигурации – в этом случае будет выгружена схема xml, соответствующая всем объектам конфигурации (кроме пакетов XDTO, созданных в дереве метаданных).
Также пакеты можно создавать средствами конфигуратора 1С, в специальном редакторе.

Редактор XDTO-пакета

На первом уровне иерархии могут располагаться следующие элементы пакета:

  • Директивы импорта – перечень директив импорта – в них указываются внешние пространства имен, которые используются в данном пакете. При работе с данным пакетом XDTO средствами встроенного языка данный перечень директив импорта будет доступен в виде объекта КоллекцияПакетовXDTO, содержащегося в свойстве Зависимости пакета XDTO. Важно! Если указать пространство имен, не определенное в данной конфигурации (т.е. отсутствующее как среди стандартных пакетов, так и среди пакетов, созданных в конфигураторе), сохранить конфигурацию будет нельзя, т.к. платформа выдаст сообщение об ошибке: “Ошибка проверки модели XDTO: xdto-package-3.3 пакет: test

    Импортируемый пакет типов ‘<тут имя пространства имен>’ не определен

  • Типы значений – перечень типов значений XDTO, которые содержит пакет XDTO.

  • Типы объектов – перечень типов объектов XDTO, которые содержит пакет XDTO

  • Свойства – перечень свойств пакета XDTO. Представляет собой объявления объектов/значений, которые могут являться корневыми элементами документов XML, принадлежащих URI пространству имен пакета XDTO.

Типы значений XDTO

Объект ТипЗначенияXDTO используется для описания типов простых значений, в которых не могут быть выделены отдельные составляющие. Примерами простых значений являются разнообразные строки, числа, даты и т. п. Ссылки на объекты также относятся к простым значениям. Для указания ссылки в качестве типа значения XDTO следует указать базовый тип AnyRef (http://v8.1c.ru/8.1/data/enterprise), а также задать свойство “Вариант” – “Атомарный”.

Теперь разберем поподробнее  свойства типа значений XDTO. Тип Значений XDTO соответствует типу symple type из схемы xml. Следовательно, и поля в редакторе пакета XDTO для типа значений во многом повторяют свойства symple type.

  • Имя – имя типа значения XDTO;

  • Базовый тип – базовый тип для данного типа значения XDTO. Базовые типы могут наследоваться от других типов значений XDTO, а самым верхним типом в иерархии наследования является тип anySimpleType

  • Вариант – вариант простого типа (атомарный тип, список, объединение).

  • Тип элемента – тип элемента списка в случае, когда тип значения XDTO определяется списком. При этом все фасеты и свойство Типы объединения должны быть пустыми;

  • Типы объединения – список типов, образующих объединение в случае, когда тип значения XDTO определяется объединением. Объединяться могут только типы значений XDTO. При этом все фасеты и свойство Тип Элемента должны быть пустыми;

  • Длина – фасет длины. Длина задается в единицах длины, которые зависят от типа значения. Для типа string и anyURI это будет количество символов в строке, а для двоичных данных (hexBinary и base64Binary) длина содержит количество байт.

  • Минимальная длина – фасет минимальной длины;

  • Максимальная длина – фасет максимальной длины;

  • Пробельные символы – фасет пробельных символов; позволяет описать ограничение – допустимы ли в строке любые пробельные символы, такие как неразрывный пробел, перенос строки, или табуляция;

  • Минимум, включающий границу – фасет минимума, включающего границу; Любое значение данного типа должно быть больше указанному значению;

  • Минимум, не включающий границу – фасет минимума, не включающего границу. Любое значение данного типа должно быть больше указанного значения;

  • Максимум, включающий границу – фасет максимума, включающего границу;

  • Максимум, не включающий границу – фасет максимума, не включающего границу;

  • Общее количество цифр – фасет общего количества цифр;

  • Количество цифр дробной части – фасет количества цифр дробной части.s

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

Типы объектов XDTO

В пакете XDTO тип объекта XDTO используется для описания типов сложных объектов, имеющих в составе набор свойств. Типы свойств таких объектов могут быть как типами значения XDTO, так и типами объектов XDTO. В частности, все прикладные объекты конфигурации, например, справочник “Номенклатура”, могут быть описаны как типы объектов XDTO.
Ввиду того, что типы объектов XDTO предназначены для описания самых различных структур данных, особое внимание следует уделить свойствам, а именно:

  • Открытый – признак, является ли тип объекта XDTO открытым. Данное свойство показывает, может ли экземпляр объекта XDTO содержать свойства, не определенные в его типе. Это соответствует реализации модели open content;

  • Абстрактный – признак, является ли тип объекта XDTO абстрактным; Абстрактные типы используются для реализации наследования и расширения дочерними типами;

  • Смешанный – показывает, имеет ли соответствующий объект XDTO смешанное содержание (mixed content в схеме XML). Если значение свойства Истина, то значение Последовательный обязательно равно Истина, так как смешанное содержание невозможно смоделировать без применения последовательности XDTO;

  • Упорядоченный – признак, является ли порядок следования элементов, представляющих значения свойств, строго соответствующим порядку следования свойств в типе объекта XDTO. Если Ложь, то на входе порядок следования элементов XML не контролируется, а на выходе определяется порядком следования свойств, если только свойство Последовательный не имеет значение Истина;

  • Последовательный – показывает, содержит ли экземпляр соответствующего объекта XDTO последовательность XDTO. Истина в тех случаях, когда порядок следования вложенных элементов XML не может однозначно определяться порядком следования свойств в типе или соответствующий объект XDTO имеет смешанное содержание. Последовательность XDTO позволяет задать в явном виде порядок следования элементов, как они будут представлены в документе XML. Для объектов типов, у которых свойство Ложь, порядок вложенных элементов соответствует порядку следования свойств.

Свойства XDTO

В редакторе пакета XDTO можно также настраивать свойства – как для всего пакета (т.н. корневые свойства), так и при описании типов объектов XDTO. Отдельно взятое свойство имеет следующие реквизиты:

  • Имя – имя свойства. Следует обеспечить уникальность имени свойства в пределах описания одного типа объекта XDTO.

  • Ссылка – ссылка на корневое определения свойств пакета

  • Тип – тип свойства. Может быть как типом значения XDTO, так и типом объекта XDTO;

  • Минимальное количество – минимальное количество значений свойства. Минимальное количество значений свойства может принимать значения <= 0;

  • Максимальное количество – свойство типа объекта XDTO может быть определено как содержащее одно или множество значений. Свойство считается содержащим одно значение, если Максимальное количество = 1. Для значений свойства > 1 считается, что свойство может принимать множество значений. Такое свойство в структуре объекта моделируется списком. Свойство Максимальное количество показывает максимальное количество значений свойства. Максимальное количество > 1 может быть задано только для свойств, представленных в виде элемента XML. Значение -1 соответствует unbounded в схеме XML, т.е. количество значений этого свойства может быть не ограниченным. Например, мы создаем свойство, описывающее табличную часть Товары. В этом случае мы можем указать максимальное количество -1, т.к. заранее не знаем, сколько строк будет в табличной части. Можно указать тип значения, соответствующий описанию содержимого одной строки ТЧ, либо создать описание типов (см. ниже)

  • Возможно пустое – показывает, может ли свойство принимать неопределенное значение. Истина может быть определено только для свойств с формой представления Элемент. Если Максимальное количество > 1, неопределенное значение является допустимым для элемента списка значений свойства;

  • Фиксированное – указывает, является ли значение свойства фиксированным. Истина – само фиксированное значение можно получить через свойство По умолчанию;

  • По умолчанию –  значение свойства по умолчанию. Тип значения по умолчанию может быть только типом значения XDTO. При этом, данное значение должно быть совместимо с типом свойства (быть того же типа, что и тип свойства или же унаследованного типа). При создании объекта XDTO свойство, если оно допускает единственное значение, принимает значение по умолчанию. Для свойств с множеством значений список значения пуст, независимо от того, определено или нет значение по умолчанию;

  • Форма – форма представления свойства в XML. Это может быть Атрибут, Элемент или Текст. Если формой представления является Атрибут или Текст, то значение свойства Максимальное количество не может быть больше 1. Если свойство принимает значение Текст, то значение свойства Минимальное количество также должно быть равным 1. У одного типа только одно свойство может иметь форму представления Текст, при этом все остальные свойства должны иметь форму представления Атрибут;

  • Локальное имя – локальное имя, используемое для представления свойства. Для свойств с формой представления Текст – пустая строка.

Определения типов XDTO

Рассмотрим пример создания типа объекта XDTO, описывающего справочник Номенклатуры с реквизитами Наименование, Единица измерения (Справочник “Единицы измерения”)и Статья затрат (справочник “Статьи затрат”). В случае, если нам было бы достаточно ссылки на соответствующие справочники, мы могли бы создать два типа значения XDTO, например  CatalogRef.ЕдиницыИзмерения и CatalogRef.СтатьиЗатрат.

Но предположим, мы хотим при выгрузке в XML получить не только ссылку, но и все содержимое, т.е. весь объект целиком. Сделать это можно двумя способами – создать отдельный тип объекта и указать его в качестве типа для свойства ЕдиницаИзмерения в объекте Номенклатура, либо создать описание типа непосредственно в свойстве. Описание типа может быть двух видов – для описания простых типов, и для описания комплексных типов. Отличить их можно по картинке-пиктограмме слева от текста “Определение типа”. Редактируются они таким же образом как самостоятельные типы объектов и типы значений. Выбор при этом может ввести в заблуждение (см. картинку)

Выбор типа для определения типа XDTO

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

Директивы импорта XDTO

В рамках создаваемого пакета XDTO (без использования директивы импорта) можно использовать:

  • типы, определенные только в данном пакете (использующие текущее пространство имен)
  • типы, стандартные для XML (пространство имен http://www.w3.org/2001/XMLSchema)

В случае, если нужно указать тип из другого пакета XDTO (из другого пространства имен) – необходимо его импортировать при помощи директивы импорта. Импортировать можно только существующие пакеты типов; кроме того, недопустимо делать циклические импорты – когда в импортируемом пакете есть директива импорта текущего пакета.

Фабрика XDTO и модель данных

Фабрика XDTO – это объект встроенного языка 1С, который позволяет создавать объекты XDTO нужного типа. Фабрика XDTO может создавать объекты только тех типов, которые входят в ее модель данных. Модель данных – это совокупность всех типов, которые можно записать в один XML документ. По сути, модель данных – это набор схем XML.

Существует единственная глобальная фабрика XDTO, доступная через свойство глобального контекста ФабрикаXDTO. Эта фабрика содержит в себе все встроенные пакеты XDTO, предоставляемые платформой; пакет “http://v8.1c.ru/8.1/data/enterprise/current-config”, описывающий метаданные текущей конфигурации; пакеты, созданные разработчиком в ветке Общие / XDTO-пакеты.

Кроме того, разработчик может средствами языка 1С создавать новые фабрики, включая в них только типы из нужных пакетов.

Простой пример создания документа XML

За основу возьмем пакет XDTO, рассмотренный выше, в разделе “Определения типов XDTO”. Для создания документа XML нам понадобится – создать нужные типы XDTO, далее на основе этих типов создать нужные объекты, и в завершение – сформировать XML средствами фабрики.

// Получим нужные типы данных XDTO
ТипТестНоменклатура = ФабрикаXDTO.Тип("http://www.sample-package.org", "Номенклатура");
ТипТестЕдИзм = ФабрикаXDTO.Тип("http://www.sample-package.org", "ЕдиницаИзмерения");
// Обратите внимание, здесь мы получаем тип из определения типа для свойства СтатьяЗатрат
ТипТестСтатья = ТипТестНоменклатура.Свойства.Получить("СтатьяЗатрат").Тип;

//Сперва создаем объекты, которые затем поместим в свойства номенклатуры
ЕдИзм = ФабрикаXDTO.Создать(ТипТестЕдИзм);
ЕдИзм.Коэффициент = 1;
ЕдИзм.Код = 123;
ЕдИзм.Наименование = "Кг";

СтатьяЗатрат = ФабрикаXDTO.Создать(ТипТестСтатья);
СтатьяЗатрат.Наименование = "Основная деятельность";
СтатьяЗатрат.СчетЗатрат = 26;

Ном = ФабрикаXDTO.Создать(ТипТестНоменклатура);
Ном.Наименование = "тестовая номенклатура";
//Помещаем в свойства соответствующие объекты XDTO
Ном.ЕдиницаИзмерения = ЕдИзм;
Ном.СтатьяЗатрат = СтатьяЗатрат;

//Сформируем XML документ
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(Запись, Ном);
ДанныеXML = Запись.Закрыть();

Сообщить(ДанныеXML);

Пример создания фабрики XDTO c нужной моделью данных

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

Модель = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/xdto","Model"));
СвояФабрика = Новый ФабрикаXDTO(Модель);

Полученная фабрика будет представлять собой объект XDTO, с которым можно работать так же как с любым аналогичным объектов. Но на деле такой подход используется редко. Гораздо чаще применяется формирование готовой модели, содержащей в себе нужные пакеты. Для этого используется метод фабрики ЭкспортМоделиXDTO.

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

МассивПространствИмен = Новый Массив;
МассивПространствИмен.Добавить("http://www.sample-package.org");
ВтораяМодель = ФабрикаXDTO.ЭкспортМоделиXDTO(МассивПространствИмен);
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(Запись,ВтораяМодель,"Model","http://v8.1c.ru/8.1/xdto",,НазначениеТипаXML.Явное);
МодельXML = Запись.Закрыть();

В базе-приемнике прочитаем модель из XML документа, и создадим фабрику:

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(МодельXML);
ОбъектModel = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
ВтораяФабрика = Новый ФабрикаXDTO(ОбъектModel);

В ней будет содержаться только один пакет, который мы указали при экспорте, и стандартный пакет “http://www.w3.org/2001/XMLSchema”. При этом не обязательно, чтобы в конфигурации-приемнике существовал данный пакет в дереве метаданных – все необходимое содержится в исходном XML документе, который мы прочитали.

Создание фабрики XDTO

Создание фабрики XDTO из схем XML

Схемы XML могут быть представлены в двух видах – в виде файлов XSD, либо в виде объекта НаборСхемXML. Сперва рассмотрим простой способ создания фабрики XDTO из набора схем.

МассивПространствИмен = Новый Массив;
МассивПространствИмен.Добавить("http://www.sample-package.org");
НаборСхем = ФабрикаXDTO.ЭкспортСхемыXML(МассивПространствИмен);
ТретьяФабрика = Новый ФабрикаXDTO(НаборСхем);

Часто при работе с XDTO разработчик получает от передающей стороны (например, веб-сервиса, внешнего приложения и др) готовый файл или несколько файлов с расширением .xsd. Но кроме того, можно написать выгрузку набора схем в набор xsd-файлов. За основу можно взять следующий код:

Для Счетчик = 0 по НаборСхем.Количество() - 1 Цикл
            Схема = НаборСхем.Получить(Счетчик);
            Схема.ОбновитьЭлементDOM();
            ЗаписьDOM = Новый ЗаписьDOM;
            ЗаписьXMLСтрока = Новый ЗаписьXML;
            ЗаписьXMLСтрока.УстановитьСтроку();
            ЗаписьXMLФайл = Новый ЗаписьXML;
            ЗаписьDOM.Записать(Схема.ДокументDOM, ЗаписьXMLСтрока);
            ЗаписьXMLФайл.ОткрытьФайл(ИмяФайла + "[" + Формат(Счетчик,"ЧЦ=10;ЧГ=0;ЧН=") + "].xsd");
            ЗаписьXMLФайл.ЗаписатьБезОбработки(ЗаписьXMLСтрока.Закрыть());
            ЗаписьXMLФайл.Закрыть();
КонецЦикла;

Вне зависимости от того, как были получены XSD схемы, для их чтения следует использовать метод СоздатьФабрикуXDTO.

Схемы = Новый Массив;
Схемы.Добавить("d:testtest1.xsd");
Схемы.Добавить("d:testtest2.xsd");
ЧетвертаяФабрика = СоздатьФабрикуXDTO(Схемы);

XDTO сериализация

На основе механизмов XDTO платформа предоставляет средства для быстрой сериализации прикладных объектов (например, справочник ссылка или справочник объект) и объектов языка (например, структура или таблица значений). Рассмотрим несколько примеров:

//Простая сериализация в XML. Подходит только для загрузки в идентичную конфигурацию
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.УстановитьСтроку();
	ЗаписатьXML(ЗаписьXML, Номенклатура.ПолучитьОбъект());
	ИтоговаяСтрока = ЗаписьXML.Закрыть();
	Сообщить(ИтоговаяСтрока);
	
	//Сериализация через глобальный сериализатор. В этом случае мы получаем пространства имен
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.УстановитьСтроку();
	СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Номенклатура.ПолучитьОбъект(), НазначениеТипаXML.Явное);
	ИтоговаяСтрока = ЗаписьXML.Закрыть();
	Сообщить(ИтоговаяСтрока);
	
	//Десериализация через СериализаторXDTO
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(ИтоговаяСтрока);
	ОбъектНоменклатура = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

SOAP сервисы и XDTO

Разработка своего веб-сервиса

Данная статья не претендует на полный обзор технологии веб-сервисов, их разработки и публикации. SOAP-сервисы будут рассмотрены в контексте использования механизма XDTO.

При разработке web-сервиса типы параметров и возвращаемых значений Web-сервисов описываются с помощью типов объектов и типов значений XDTO. Подготовим пакет типов специально для нашего примера. У нас будет один тип значения для указания кода статьи затрат, один тип для описания списка строк, и один тип для описания строки.

Пример XDTO для web-сервиса

Далее создадим Web-сервис. Укажем пространство имен (напомню, это вовсе не обязательно должно быть URL, строка может быть любой). Также укажем состав пакетов XDTO, типы из которых мы хотим использовать.

Создадим операцию с одним параметром – CostItem. Этот параметр отмечаем как входной, указываем тип значения. Также укажем тип возвращаемого значения. Обратите внимание – нам доступны только типы из тех пакетов XDTO, которые мы отметили, а также стандартные типы для XML:

Теперь осталось написать код для операции. Наш веб сервис будет получать остатки товаров запросом и формировать таблицу из трех колонок – Код, Наименование и Остаток. Т.к. мы делаем сервис, ориентированный на внешние системы, которые могут не поддерживать кириллицу, колонки назовем Code, Name и Quantity.

Функция goods(CostItem)
	
	ТипGoods = ФабрикаXDTO.Пакеты.Получить("http://www.sample-package.org").Получить("goods");
	ТипgoodsRow = ФабрикаXDTO.Пакеты.Получить("http://www.sample-package.org").Получить("goodsRow");
	Goods = ФабрикаXDTO.Создать(ТипGoods);
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	|	ОстаткиТоваровОстатки.Товар.Код КАК Code,
	|	ОстаткиТоваровОстатки.Товар.Наименование КАК Name,
	|	ОстаткиТоваровОстатки.КоличествоОстаток КАК Quantity
	|ИЗ
	|	РегистрНакопления.ОстаткиТоваров.Остатки(
	|			,
	|			ВЫБОР
	|				КОГДА &СтатьяЗатрат = НЕОПРЕДЕЛЕНО
	|					ТОГДА ИСТИНА
	|				ИНАЧЕ Товар.СтатьяЗатрат = &СтатьяЗатрат
	|			КОНЕЦ) КАК ОстаткиТоваровОстатки");
	
	НайденнаяСтатья = Справочники.СтатьиЗатрат.НайтиПоКоду("CostItem");
	Если НайденнаяСтатья = Справочники.СтатьиЗатрат.ПустаяСсылка() Тогда
		НайденнаяСтатья = Неопределено;
	КонецЕсли;
	Запрос.УстановитьПараметр("СтатьяЗатрат", НайденнаяСтатья);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		goodsRow = ФабрикаXDTO.Создать(ТипgoodsRow);
		ЗаполнитьЗначенияСвойств(goodsRow, Выборка);
		Goods.goodsRow.Добавить(goodsRow);
	КонецЦикла;
	
	Возврат Goods;
	
КонецФункции

Легко заметить, что код возвращает объект XDTO, а не готовый XML документ. В XML его преобразует сама платформа при возврате ответа web-сервиса. Т.е. по сути разработка операции для web-сервиса сводится к созданию и наполнению нужного объекта XDTO.

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

// Получим WSОпределение
WSОпределение			= Новый WSОпределения("http://localhost/xdto/ws/ws1.1cws?wsdl");
// Создадим WSПрокси - специальный объект для вызова веб-сервиса
// параметры конструктора можно посмотреть непосредственно в WSОпределение
// там будут и списки сервисов с пространствами имен и названием самого сервиса, а также
// имена точек подключения
WSПроксиGoods			= Новый WSПрокси(WSОпределение, "test", "ВыгрузкаНоменклатуры", "ВыгрузкаНоменклатурыSoap");

// вызовем операцию goods с параметром CostItem = "123" (это код элемента справочника Статьи затрат)
ТаблицаОстатков = WSПроксиGoods.goods("123");

// Обойдем коллекцию строк, которую мы получили от сервиса, и выведем остатки
Для Каждого СтрокаОстатка Из ТаблицаОстатков.goodsRow Цикл
	Сообщить(СтрШаблон("Код %1, Наименование %2, Остаток %3", СтрокаОстатка.Code, СтрокаОстатка.Name, СтрокаОстатка.Quantity));
КонецЦикла;

Использование внешних веб-сервисов через WS-ссылки

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

Начнем с простого примера получения ответа от веб-сервиса. Сервис принимает на вход число, и конвертирует его в текст. Адрес WSDL схемы для создания WS-ссылки: https://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL

Использование WS-ссылки

Прокси = WSСсылки.Converter.СоздатьWSПрокси("http://www.dataaccess.com/webservicesserver/", "NumberConversion", "NumberConversionSoap");
Результат = Прокси.NumberToWords(12345);
Сообщить(Результат);

Теперь рассмотрим более сложный пример – получим курсы валют на дату, используя сервис ЦБР. Создадим WS-ссылку с адресом http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL
Как легко увидеть, и модель данных, и состав доступных операций у этого сервиса значительно больше:

Web-сервис ЦБР WS-ссылка

В качестве примера используем операцию GetCursOnDate. У этой операции всего один параметр “parameters”, с типом значения GetCursOnDate (http://web.cbr.ru/). В составе модели данных есть корневое свойство GetCursOnDate, а в составе типов значений XDTO есть тип GetCursOnDate, с единственным свойством On_date. Зная все вышеперечисленное, напишем код получения ответа от веб-сервиса

//Создаем прокси для обращения к внешнему веб-сервису,
// передаем в функцию URI пространства имен, имя сервиса, имя порта.
Прокси = WSСсылки.WSСсылкаЦБР.СоздатьWSПрокси("http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");

//Получаем тип параметра, который передается в метод GetCursOnDate.
// Для этого получаем сперва пакет по имени URI, а затем тип по имени этого типа
ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://web.cbr.ru/").Получить("GetCursOnDate");

//Создаем параметр на основе типа и заполняем значение параметра On_Date.
WSПараметр  = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
WSПараметр.On_Date= ТекущаяДата();

//Вызываем метод веб-сервиса, записываем результат в переменную КурсыВалют.
КурсыВалют = Прокси.GetCursOnDate(WSПараметр);

Мы получили XDTO-объект КурсыВалют. Чтобы дальше знать, как нам его обработать, обратимся к отладчику. Сама таблица с курсами валют “закопана” достаточно глубоко:
КурсыВалют.GetCursOnDateResult.diffgram.ValuteData.ValuteCursOnDate. Пройдемся циклом по этому списку и выведем информацию о курсах валют:

Для Каждого Элемент Из КурсыВалют.GetCursOnDateResult.diffgram.ValuteData.ValuteCursOnDate Цикл 
    Сообщить(СтрШаблон("Валюта %1; номинал %2; код %3; симв. код %4; курс %5",
		СокрЛП(Элемент.Vname) ,Элемент.Vnom, Элемент.Vcode, Элемент.VChCode, Элемент.Vcurs));
КонецЦикла;

Другие примеры использования XDTO

Помимо обменов данными в формате XML, а также использования в SOAP-сервисах, механизм XDTO имеет еще несколько интересных способов применения. Можно использовать сериализацию XDTO для изменения графических схем – тех самых, которые используются в бизнес-процессах. Графическая схема сериализуется в XDTO-объект со своим набором свойств, а дальше все в руках разработчика – можно добавлять элементы, менять описания, задавать связи, и т.д.

Аналогично можно программно управлять и многими другими объектами 1С, которые сериализуются в/из XDTO (об этом можно узнать из документации либо встроенной справки), например:

  • Диаграммы
  • Схемы компоновки данных
  • Хранилища значений

и другие

  • Оператор «Тензор» прекратил работу в 1С-ЭДО

    Такое сообщение об ошибке получат абоненты, кто будет использовать идентификатор участника ЭДО, ранее полученный в 1С-ЭДО у оператора ООО «Компания «Тензор».

    Поддержка технологии 1С-ЭДО оператором «Тензор» прекратилась с 1 июня 2023 года.

    В сообщении дается рекомендация, как возобн…

  • Массовая проверка подписей

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

  • Ошибка интерфейса модуля криптографии. Требуемое действие не поддерживается.

    Если при работе с сертификатом возникает ошибка «Ошибка интерфейса модуля криптографии. Требуемое действие не поддерживается», необходимо выполнить переустановку КриптоПро CSP.

    Для работы с носителями электронно-цифровой подписи Рутокен требуется установить версию КриптоПро CSP…

  • Сертификат не действует с 01.01.2023 года

    Принят и опубликован Федеральный закон от 19.12.2022 № 536-ФЗ «О внесении изменений в отдельные законодательные акты Российской Федерации», который переносит срок возможности использования электронных подписей, выданных коммерческими аккредитованными …

  • Код региона значение не заполнено?

       время прочтения: менее 1 мин.

    При формировании регистрационного пакета возникли следующие ошибки: Код региона в адресе в карточке организации: значение не заполнено.

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

  • Настройка КриптоПРО для работы с 1С-ЭДО в Linux

    Для работы на Linux рекомендуется использовать последнюю сертифицированную версию КриптоПро CSP.

    Также для работы через браузер потребуется установка расширения для работы с файлами, а также крипторасширение  – подробнее см. п. 3 данной статьи.

    Для работы с системой маркировки…

  • Абоненту запрещен доступ к 1С:Хаб API

    Если при обмене электронными документами у пользователя возникает сообщение «Абоненту запрещён доступ к 1С:Хаб API», это означает, что Учётная запись абонента заблокирована оператором ЭДО. Для просмотра причины блокировки следует перейти по гиперссылке «Журнал регистрации».

    В откры…

  • Настройка КриптоПРО для работы с 1С-ЭДО в macOS

    Для работы на macOS рекомендуется использовать последнюю сертифицированную версию КриптоПро CSP.

    Для работы в тонком клиенте необходимо использовать версию платформы 8.3.15.2107, 8.3.16.1791, 8.3.17.1823, 8.3.18.1128 или выше.

    Также для работы через браузер потребуется установка ра…

  • Переформирование отправленного электронного документа

    Видеоинструкция

    Текстовая инструкция

    В процессе обмена пользователи сталкиваются с необходимостью исправления ошибок в электронных документах. Варианты внесения таких исправлений зависят от состояния обмена и вида допущенной ошибки.

    Если документооборот завершен, след…

  • Переформирование созданного электронного документа

    Видеоинструкция

    Текстовая инструкция

    В процессе обмена пользователи сталкиваются с необходимостью исправления ошибок в электронных документах. Варианты внесения таких исправлений зависят от состояния обмена и вида допущенной ошибки.

    Если документооборот з…

  • Порядок подключения внутреннего электронного документооборота

    Видеоинструкция

    Текстовая инструкция

    Электронный документооборот позволяет оформить внутренние документы организации в электронном виде с использованием простой или усиленной квалифицированной подписи. 

    Функционал внутреннего ЭДО включен в следующие релизы:

  • Ошибка при формировании данных подписи (0x8010006C)

    Ошибка при формировании данных подписи (0x8010006C) означает, что после многократного ввода неправильного PIN-кода Пользователя (пароля от сертификата), устройство Рутокен заблокировано. Для разблокировки требуется перейти в Панель управление Рутокен (Пуск — Настройка — Панель управления — Пан…

  • Настройка роуминга в 1С-ЭДО по заявке с сайта 1c-edo.ru

    Внимание! Данная инструкция предназначена:

    для пользователей устаревших конфигураций 1С, в которых не поддерживается возможность формирования и отправки заявки на роуминг (конфигурации с модулем ЭДО ниже 1.6.2), 

    если пользователь при настройке роуминга из программ…

  • Заполнение дополнительных полей, которые запрашивает контрагент

    Видеоинструкция

    Текстовая инструкция

    В ЭДО часто используются дополнительные данные, которые не предусмотрены форматами ФНС, такие как номера и даты заказов, номера партий, спецификаций, доверенностей, т.е. любая дополнительная информация, которую может затребовать поставщик или п…

  • Отправка УПД по 155 приказу с 01.01.2020 ошибка с кодом 20017

    Согласно дополнения к Приказу по работе с электронными документами через операторов ДО с 01.01.2020 г. Универсальный передаточный электронный документ, который соответствует 155 приказу, отменен. Отправка таких ЭД из программы 1С невозможна, система при передаче будет выдавать пользователю …

  • Код ошибки 103. Не удалось выполнить операции шифрования/расшифровки на компьютере. Требуемый персональный сертификат не найден

    Решение.

    Для устранения ошибки необходимо установить сертификат электронной подписи, который Вы используете для ЭДО, в хранилище «Личные» операционной системы.

    Установка производится из криптопровайдера.

    Для КриптоПро CSP.

    Запустить КриптоПро.

  • Внутренняя ошибка сервиса: {«type»: «USER_AUTHORISATION_EXCEPTION», «message»:»User 64824f04-beb5-4c4e-9006-c3bc1d3bead3 doesn’t own edoId 2AE-…»}

    Пример возникновения ошибки:

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

    Причины возникновения и способ устранения в локальных информационных…

  • Ошибка работы с Интернет: Не могу установить соединение

    Если в ходе подключения или использования сервиса 1C-ЭДО возникает сообщение «Возникли проблемы с интернет — соединением», то пользователю необходимо обратиться к своему системному администратору.

    В данных автоматической диагностики представлена полная информация о ресурсах, к кото…

  • Не удалось найти владельца для служебного электронного документа

    Данная ошибка возникает при попытке распаковать входящий пакет электронного документа.

    В проблемном пакете содержится документ, предусмотренный регламентом ЭДО, для которого основной (первичный) электронный документ отсутствует в базе 1С.

    Возможные причины:

    1. Первичны…

  • Не удалось распаковать пакет электронных документов. Не настроена связь с контрагентом

    Данная ошибка возникает в Текущих делах ЭДО при нажатии «Отправить и получить» и свидетельствует о том, что в папке «Распаковать» имеются пакеты электронных документов, автоматическая распаковка которых не была произведена из-за того, что настройка получения электронных документов находится не…

  • Настройка криптопровайдера КриптоПРО для работы с 1С-ЭДО

    Средства криптографической защиты информации

    1. Требования к средствам криптографической защиты информации

    Для шифрования отправляемых и получаемых документов Вы должны определиться с выбором средства криптографической защиты информации (СКЗИ).

    Подробную …

  • Ошибка при получении свойства сертификата (0x00000000)

    Ошибка при получении свойства сертификата (0x00000000) — это проявление ошибки отсутствия связи сертификата в Личном списке сертификатов пользователя ОС с контейнером закрытого ключа.

    Чтобы определить под каким пользователем ОС (на каком компьютере), необходимо наличие…

  • Сертификат связан с модулем криптографии «Infotecs Cryptographic Service Provider» с типом 2

    У данной ошибки имеется два сценария воспроизведения:

    1. При подписании электронных документов.

    При возникновении ошибки «Сертификат, связанный с закрытым ключом, указывает на модуль криптографии, отличный от текущего. Сертификат связан с модулем криптографии «Infotecs Cryptographi…

  • Сертификат связан с модулем криптографии «Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider» с типом 75

    У данной ошибки имеется два сценария воспроизведения:

    1. При подписании электронных документов.

    При возникновении ошибки «Сертификат, связанный с закрытым ключом, указывает на модуль криптографии, отличный от текущего. Сертификат связан с модулем криптографии «Crypto-Pro GOST R 34.1…

  • Код ошибки 3203. Ошибка при обработке транзакции: Контейнер не может быть отправлен в связи с ограничениями тарификации

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

    Начиная с версии БЭД 1.6.3, для подобных документов выделена отдельная папка «Ошибки».

    Причины возник…

  • Сертификат не найден на компьютере

    При возникновении ошибки «Сертификат не имеет связи с закрытым ключом» необходимо выполнить проверку сертификата электронной подписи.

    Алгоритм проверки электронной подписи:

    В программном продукте 1С необходимо 

    1. перейти в раздел «Администрировани…

  • Не удалось проверить сертификат по причине: В браузере требуется установить расширение для работы с электронной подписью и шифрованием

    При возникновении ошибки «Не удалось проверить сертификат по причине: В браузере требуется установить расширение для работы с электронной подписью и шифрованием.»

    Алгоритм проверки электронной подписи:

    В программном продукте 1С необходимо 

    1. перей…

  • Цепочка сертификатов не может быть построена до доверенного корневого сертификата

    При возникновении ошибки «Цепочка сертификатов не может быть построена до доверенного корневого сертификата.» необходимо выполнить проверку сертификата электронной подписи.

    Алгоритм проверки электронной подписи:

    В программном продукте 1С необходимо 

  • Сертификат не имеет связи с закрытым ключом

    При возникновении ошибки «Сертификат не имеет связи с закрытым ключом» необходимо выполнить проверку сертификата электронной подписи.

    Алгоритм проверки электронной подписи:

    В программном продукте 1С необходимо 

    1. перейти в раздел «Администрировани…

  • Нет доступных сертификатов. Тест не выполнен.

    В случае, если при тесте профиля настроек выходит сообщение «Нет доступных сертификатов. Тест не выполнен.» и при этом сертификат актуален по сроку действия и корректно проставлен пользователь, то необходимо выполнить проверку сертификата электронной подписи.

    Алгоритм проверки электронно…

  • Содержание:

    1.       Ошибка при установке значения атрибута контекста

    2.       Ошибка при получении значения атрибута контекста

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

    1.    Ошибка при установке значения атрибута контекста

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

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

    2.    Ошибка при получении значения атрибута контекста

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

    При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

    Специалист компании «Кодерлайн»

    Александр Суворов

    Я
       sergyhmao

    10.01.13 — 12:49

    Кто сталкивался с такой бедой?

    {ОбщийМодуль.ЭлектронныеДокументыВнутренний.Модуль(4516)}: Ошибка

    Ошибка установки значения свойства «ОКЕИ_Тов»!

    В октябре еще нормально все формировалось, выскакивали конечно ошибки по адресам и инн грузополучателей, но вот в этом году сунулся и на тебе, а ОКЕИ какой был, такой и пользуется на сей момент.

       sergyhmao

    1 — 10.01.13 — 12:51

    Да, речь про последний релиз упп и платформы 8.2

       iomoe

    2 — 10.01.13 — 12:57

    (0) Беда для всех единиц измерений или для одной? Если для одной, то выглядит проблемный ОКЕИ_Тов?

       sergyhmao

    3 — 10.01.13 — 14:16

    пробовал менять без разницы, в моем случае ед.хранения остатков лист, базовая дм3, для отчетов м2, ед. мест м3

    менял лист на м2,без разницы

    да и раньше то оно все так же было

       sergyhmao

    4 — 10.01.13 — 14:19

    проблемный ОКЕИ_Тов

    код 625 наименование — лист, полное наименование — лист, меж.сокращение — LEF

    все подбиралось изначально из ОКЕИ

      

    iomoe

    5 — 10.01.13 — 14:43

    (4) У меня такое было в УПП 1.3.32, но с нашим левым кодом «—«. Еще можно заглянуть в пакет ХДТО для ТОРГ12(?), и посмотреть, какие там требования к ОКЕИТип, у меня на 1.3.32 это 3-х символьная строка с маской [0-9]{3}.

    Если это не прояснит ситуацию, остается лезть отладчиком.

    Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn

    Ошибка установки значения свойства в части шаблона пользовательского элемента управления

    У меня есть пользовательский шаблон элемента управления, который содержит элемент управления Slider.
    Я называю это как часть в классе, который реализует пользовательский элемент управления:

    [TemplatePart(Name = MapZoomSliderName, Type = typeof(Slider))]
    

    В переопределении OnApplyTemplate() я получаю Slider:

            MapZoomSlider = (Slider) GetTemplateChild("MapZoomSlider");
            if (null != MapZoomSlider)
            {
    
                MapZoomSlider.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(MapZoomSlider_ValueChanged);
                MapZoomSlider.Value = InitSliderValue;  // crash
                _lastSliderValue = MapZoomSlider.Value;
            }
    

    Когда я пытаюсь установить свойство «Значение ползунка», приложение вылетает с «Ссылка на объект не установлена ​​на экземпляр объекта».
    Получение значения слайдера работает, как и ожидалось.
    Что мне нужно сделать, чтобы установить значение ползунка во время выполнения?
    Спасибо за любые советы…

    2009-09-30 12:53

    2
    ответа

    Что такое «InitSliderValue»? Может быть, это неправильный тип значения? (Должно быть двойным). Кроме того, ноль или минус могут быть недопустимыми.


    user40125

    01 окт ’09 в 07:18
    2009-10-01 07:18

    2009-10-01 07:18

    Похоже, проблема была в установке обработчика ValueChanged перед изменением свойства Value. Обработчик ValueChanged пытается манипулировать другими частями приложения, которые могут быть еще не готовы.
    Если я установлю значение, а затем добавлю обработчик, он будет работать как нужно.

    MapZoomSlider.Value = InitSliderValue;  // all good
    MapZoomSlider.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(MapZoomSlider_ValueChanged);
    

    2009-10-02 12:23

    Содержание:

    1.       Ошибка при установке значения атрибута контекста

    2.       Ошибка при получении значения атрибута контекста

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

    1.    Ошибка при установке значения атрибута контекста

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

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

    2.    Ошибка при получении значения атрибута контекста

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

    При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

    Специалист компании «Кодерлайн»

    Александр Суворов

  • Ошибка установки майкрософт визуал
  • Ошибка установки значения boolean blender
  • Ошибка установки драйвера амд 1603
  • Ошибка установки лаунчера epic games
  • Ошибка установки зн host umka365 ru not found