1с получить объект по ссылке
Язык 1С сильно «завязан» на работу с данными. Действительно, основная задача — обработка данных, полученных из базы данных запросом или другими способами.
В других языках с данными, полученными из базы данных обычно работают «как с таблицей». В 1С такое тоже возможно – выполнить запрос, получить «в ответ» таблицу и работать с ней.
Однако более распространенный способ, одна из «фишек 1С» — это работа с данными как с объектами 1С. Например объект 1С Справочник.ИмяСправочника позволяет работать с конкретным справочником, при этом объект 1С имеет свойства (поля с данными) и стандартные методы.
Работа с объектом 1С ведется тогда, когда требуется создать объект 1С или изменить существующий. В остальных случаях (например поиск объекта 1С, использование его в другом объекте 1С) – используется ссылка 1С на объект 1С.
Создание объектов 1С
Объект 1С можно создать с помощью оператора Новый, при этом вызывается конструктор данного типа, если у типа несколько конструкторов – он выбирается по указанным параметрам:
Переменная1 = Новый СписокЗначений();
Менеджеры для получения объектов 1С из базы данных
Если требуется создать объект 1С, связанный с данными в базе данных (то есть фактически получить его из базы данных), вместо использования оператора Новый, используются менеджеры.
Почти для каждого вида метаданных (отображенного в дереве метаданных в окне конфигурации, см. выше) доступен одноименный менеджер, который позволяет получить значение из базы данных по признаку или создать новое для записи в базу данных.
Например:
Переменная1 = Справочники.ИмяСправочника.СоздатьЭлемент();
Переменная1 = Справочники.ИмяСправочника.НайтиПоНаименованию("Наименование");
Ссылки 1С и объекты 1С
Работа с объектами 1С, связанными с данными в базе данных может вестись двумя способами – с помощи «ссылки 1С на данные» и объекта 1С.
Ссылка 1С – это данные, доступные только для чтения. Объект 1С – это данные, доступные для чтения, изменения и записи. Работа со ссылкой 1С производится гораздо быстрее, чем с объектом 1С.
Ссылка 1С на данные получается с помощью функций вида:
СправочникСсылка = Справочники.ИмяСправочника.НайтиПоНаименованию()
Объект 1С можно получить из ссылки 1С или создать с нуля:
СправочникОбъект = СправочникСсылка.ПолучитьОбъект();
СправочникОбъект = Справочники.ИмяСправочника.СоздатьЭлемент();
Пустая ссылка 1С
Ссылка может быть пустой, это значит, что создан «пустой» экземпляр объекта 1С, который не связан с данными.
СправочникСсылкаПустая = Справочники.ИмяСправочника.ПустаяСсылка();
Также ссылку 1С можно проверить на заполненность:
Если СправочникСсылка.Пустая() Тогда
//…
КонецЕсли
Уникальный идентификатор (GUID)
Любой элемент справочника или документ хранится в базе данных. Для идентификации он имеет уникальный «номер» в рамках базы данных — GUID. В понятиях встроенного языка 1С, этот GUID – это ссылка 1С.
Узнать идентификатор можно с помощью универсального метода любого объекта 1С ссылочного типа:
СправочникСсылка = Справочники.ИмяСправочника.НайтиПоНаименованию("Наименование");
GUID = СправочникСсылка.УникальныйИдентификатор();
Возвращаемое значение данного метода имеет специальный тип. Если необходимо сравнивать значение со строкой, не забудьте преобразовать его к строке с помощью Строка(Параметр).
GUID назначается в момент первой записи объекта 1С. Уже до записи можно узнать GUID, который будет назначен объекту 1С при записи:
Также перед записью можно назначить свой GUID. Это бывает полезным, например, при обмене данными:
При работе со значениями, возможно столкнуться со следующими способами хранения и доступа к данным:
- Переменная – созданная в модуле программистом, нетипизированная
- Реквизит объекта 1С (справочника, документа), добавленный в конфигураторе – хранится в базе данных, строго типизирован
- Реквизит формы – поле на форме, строго типизирован.
Поле на форме показывает «какие-то данные». Данные могут быть напрямую связаны с реквизитом объекта 1С (указаны в свойстве поля формы ПутьКДанным).
Также форма может иметь свои реквизиты, они не записываются в базу данных, их устанавливает программист в процедурах и функциях модуля формы (обычно в процедуре обработчике ПриОткрытии формы).
Доступ к значениям именованных свойств объектов 1С
У многих объектов 1С есть свойства, которые имеют наименования.
Например:
- элемент справочника имеет реквизиты с наименованиями
- форма имеет реквизиты с наименованиями
- у таблицы есть колонки с наименованиями
- у строки таблицы есть поля с такими же наименованиями, как колонки у таблицы.
Если у объекта 1С есть свойства (реквизиты, колонки и т.п.), у которых есть наименования, то к ним можно обращаться двумя способами.
Если в наличии имеются два объекта 1С с именованными свойствами и нужно скопировать их значения, удобно использовать процедуру
ЗаполнитьЗначенияСвойств(КудаКопировать, ОткудаКопировать)
которая копирует значения всех свойств, имена которых совпадают, пример:
Приветствую, коллеги! В данной статье будет рассмотрена работа с объектами и ссылками в 1С 8.3, в том числе я расскажу о том, как получать объект по ссылке и наоборот – ссылку из объекта.
Ни для кого не секрет, что в системе 1С очень многое держится на привязке различных типов данных, так как главной задачей языка 1С является обработка данных, которые были получены при помощи запроса.
Чаще всего в 1С данные представляются в виде объектов, хотя бывают случаи, когда данные выступают в роли таблицы. Например, рассмотрим объект «Справочник.ИмяСправочника»: он регулирует работу с определённым справочником, но и у самого объекта есть в наличии свойства (в данном случае – это поля с данными), а также присутствуют методы.
Объект в системе 1С создаётся при помощи специального оператора «Новый», после чего используется соответствующий конструктор для создания объектов. Если у типа объекта может существовать несколько конструкторов, то конструктор для создания объекта будет избран при помощи параметров, как показано в строке программного кода ниже:
Рис. 1 Выбор конструктора объектов для создания объектов
2. Менеджеры получения объектов системы 1С
Если необходимо создать объект 1С, который будет иметь связь с базой данных, то используются особые менеджеры, а не оператор «Новый».
Для всех видов метаданных есть соответствующий менеджер объектов 1С, который осуществляет получение значения из базы с данными, опираясь на признак, либо создание новой базы. Пример кода с созданием объекта через менеджер указан ниже:
Рис. 2 Создание объекта менеджером в 1С
3. Ссылки и объекты в 1С 8.3
Работа с объектами системы 1С:Предприятие может производится при помощи ссылки на данные, либо при помощи самого объекта.
Ссылки в языке 1С – это особые данные, которые можно только считывать. А объект в языке 1С – это данные, которые можно и считывать, и менять, и записывать.
Работа с ссылками выполняется гораздо быстрее, нежели с объектами.
Чтобы получить ссылку на объект, в 1С можно воспользоваться функцией, которая имеет следующий вид:
Рис. 3 Функция, чтобы получить ссылку на объект в 1С
Чтобы получить объект по ссылке, нужно воспользоваться функцией следующего вида:
Рис. 4 Функция, чтобы получить объект по ссылке
Также его можно создать с нуля при помощи следующей функции:
Рис. 5 Вариант функции получения объекта по ссылке
4. Как получить объект по ссылке?
Пускай некоторая переменная «СсылкаНаОбъект» принадлежит какому-то типу ссылки. Это может быть справочник, документ, план по счетам и так далее. Опираясь на это, мы используем специальную функция для того, чтобы получить объект по ссылке в 1С. Выглядит она следующим образом:
Рис. 6 Использование переменной СсылкаНаОбъект
5. Получение ссылки по объекту в 1С 8.3
Рассмотрим обратную процедуру, а именно: получение ссылки из объекта. Пусть есть некоторая переменная «Объект», которая является каким-то из объектных типов, тогда функция для получения ссылки из объекта будет выглядеть так:
Рис. 7 Переменная СсылкаНаОбъект для получения ссылки по объекту
Следует отметить, что реквизит «Ссылка» в 1С может быть заполнен только во время записи самого объекта. В случае, если объект не был прописан, то и соответствующей ссылки существовать не будет.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Программирование в 1С [1] => 1С:Бухгалтерия [2] => 1С:Управление производственным предприятием [3] => 1С: Розница [4] => 1С: CRM [5] => 1С: Управление торговлей [6] => Бюджетирование [7] => СКД [8] => 1С: Конвертация данных [9] => Администрирование 1С [10] => Конвертация данных [11] => Лицензии 1С [12] => Оптимизация [13] => 1С: Документооборот [14] => 1С: ERP [15] => Транспортная логистика [16] => Техническое задание [17] => Продажи [18] => Ценообразование [19] => Планирование [20] => MS SQL Server [21] => Полезные обработки [22] => МСФО [23] => Отчеты в 1С [24] => XML [25] => Внедрение ERP [26] => Перенос данных [27] => Торговое оборудование [28] => РСБУ [29] => 1С:Управление корпоративными финансами [30] => 1С: Колледж [31] => 1С: Аренда и управление недвижимостью [32] => Финансовый учет ) -->
Приветствую, коллеги! В данной статье будет рассмотрена работа с объектами и ссылками в 1С 8.3, в том числе я расскажу о том, как получать объект по ссылке и наоборот – ссылку из объекта.
Ни для кого не секрет, что в системе 1С очень многое держится на привязке различных типов данных, так как главной задачей языка 1С является обработка данных, которые были получены при помощи запроса.
Чаще всего в 1С данные представляются в виде объектов, хотя бывают случаи, когда данные выступают в роли таблицы. Например, рассмотрим объект «Справочник.ИмяСправочника»: он регулирует работу с определённым справочником, но и у самого объекта есть в наличии свойства (в данном случае – это поля с данными), а также присутствуют методы.
Объект в системе 1С создаётся при помощи специального оператора «Новый», после чего используется соответствующий конструктор для создания объектов. Если у типа объекта может существовать несколько конструкторов, то конструктор для создания объекта будет избран при помощи параметров, как показано в строке программного кода ниже:
Рис. 1 Выбор конструктора объектов для создания объектов
2. Менеджеры получения объектов системы 1С
Если необходимо создать объект 1С, который будет иметь связь с базой данных, то используются особые менеджеры, а не оператор «Новый».
Для всех видов метаданных есть соответствующий менеджер объектов 1С, который осуществляет получение значения из базы с данными, опираясь на признак, либо создание новой базы. Пример кода с созданием объекта через менеджер указан ниже:
Рис. 2 Создание объекта менеджером в 1С
3. Ссылки и объекты в 1С 8.3
Работа с объектами системы 1С:Предприятие может производится при помощи ссылки на данные, либо при помощи самого объекта.
Ссылки в языке 1С – это особые данные, которые можно только считывать. А объект в языке 1С – это данные, которые можно и считывать, и менять, и записывать.
Работа с ссылками выполняется гораздо быстрее, нежели с объектами.
Чтобы получить ссылку на объект, в 1С можно воспользоваться функцией, которая имеет следующий вид:
Рис. 3 Функция, чтобы получить ссылку на объект в 1С
Чтобы получить объект по ссылке, нужно воспользоваться функцией следующего вида:
Рис. 4 Функция, чтобы получить объект по ссылке
Также его можно создать с нуля при помощи следующей функции:
Рис. 5 Вариант функции получения объекта по ссылке
4. Как получить объект по ссылке?
Пускай некоторая переменная «СсылкаНаОбъект» принадлежит какому-то типу ссылки. Это может быть справочник, документ, план по счетам и так далее. Опираясь на это, мы используем специальную функция для того, чтобы получить объект по ссылке в 1С. Выглядит она следующим образом:
Рис. 6 Использование переменной СсылкаНаОбъект
5. Получение ссылки по объекту в 1С 8.3
Рассмотрим обратную процедуру, а именно: получение ссылки из объекта. Пусть есть некоторая переменная «Объект», которая является каким-то из объектных типов, тогда функция для получения ссылки из объекта будет выглядеть так:
Рис. 7 Переменная СсылкаНаОбъект для получения ссылки по объекту
Следует отметить, что реквизит «Ссылка» в 1С может быть заполнен только во время записи самого объекта. В случае, если объект не был прописан, то и соответствующей ссылки существовать не будет.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Программирование в 1С [1] => 1С:Бухгалтерия [2] => 1С:Управление производственным предприятием [3] => 1С: Розница [4] => 1С: CRM [5] => 1С: Управление торговлей [6] => Бюджетирование [7] => СКД [8] => 1С: Конвертация данных [9] => Администрирование 1С [10] => Конвертация данных [11] => Лицензии 1С [12] => Оптимизация [13] => 1С: Документооборот [14] => 1С: ERP [15] => Транспортная логистика [16] => Техническое задание [17] => Продажи [18] => Ценообразование [19] => Планирование [20] => MS SQL Server [21] => Полезные обработки [22] => МСФО [23] => Отчеты в 1С [24] => XML [25] => Внедрение ERP [26] => Перенос данных [27] => Торговое оборудование [28] => РСБУ [29] => 1С:Управление корпоративными финансами [30] => 1С: Колледж [31] => 1С: Аренда и управление недвижимостью [32] => Финансовый учет ) -->
Приветствую, коллеги! В данной статье будет рассмотрена работа с объектами и ссылками в 1С 8.3, в том числе я расскажу о том, как получать объект по ссылке и наоборот – ссылку из объекта.
Ни для кого не секрет, что в системе 1С очень многое держится на привязке различных типов данных, так как главной задачей языка 1С является обработка данных, которые были получены при помощи запроса.
Чаще всего в 1С данные представляются в виде объектов, хотя бывают случаи, когда данные выступают в роли таблицы. Например, рассмотрим объект «Справочник.ИмяСправочника»: он регулирует работу с определённым справочником, но и у самого объекта есть в наличии свойства (в данном случае – это поля с данными), а также присутствуют методы.
Объект в системе 1С создаётся при помощи специального оператора «Новый», после чего используется соответствующий конструктор для создания объектов. Если у типа объекта может существовать несколько конструкторов, то конструктор для создания объекта будет избран при помощи параметров, как показано в строке программного кода ниже:
Рис. 1 Выбор конструктора объектов для создания объектов
2. Менеджеры получения объектов системы 1С
Если необходимо создать объект 1С, который будет иметь связь с базой данных, то используются особые менеджеры, а не оператор «Новый».
Для всех видов метаданных есть соответствующий менеджер объектов 1С, который осуществляет получение значения из базы с данными, опираясь на признак, либо создание новой базы. Пример кода с созданием объекта через менеджер указан ниже:
Рис. 2 Создание объекта менеджером в 1С
3. Ссылки и объекты в 1С 8.3
Работа с объектами системы 1С:Предприятие может производится при помощи ссылки на данные, либо при помощи самого объекта.
Ссылки в языке 1С – это особые данные, которые можно только считывать. А объект в языке 1С – это данные, которые можно и считывать, и менять, и записывать.
Работа с ссылками выполняется гораздо быстрее, нежели с объектами.
Чтобы получить ссылку на объект, в 1С можно воспользоваться функцией, которая имеет следующий вид:
Рис. 3 Функция, чтобы получить ссылку на объект в 1С
Чтобы получить объект по ссылке, нужно воспользоваться функцией следующего вида:
Рис. 4 Функция, чтобы получить объект по ссылке
Также его можно создать с нуля при помощи следующей функции:
Рис. 5 Вариант функции получения объекта по ссылке
4. Как получить объект по ссылке?
Пускай некоторая переменная «СсылкаНаОбъект» принадлежит какому-то типу ссылки. Это может быть справочник, документ, план по счетам и так далее. Опираясь на это, мы используем специальную функция для того, чтобы получить объект по ссылке в 1С. Выглядит она следующим образом:
Рис. 6 Использование переменной СсылкаНаОбъект
5. Получение ссылки по объекту в 1С 8.3
Рассмотрим обратную процедуру, а именно: получение ссылки из объекта. Пусть есть некоторая переменная «Объект», которая является каким-то из объектных типов, тогда функция для получения ссылки из объекта будет выглядеть так:
Рис. 7 Переменная СсылкаНаОбъект для получения ссылки по объекту
Следует отметить, что реквизит «Ссылка» в 1С может быть заполнен только во время записи самого объекта. В случае, если объект не был прописан, то и соответствующей ссылки существовать не будет.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Программирование в 1С [1] => 1С:Бухгалтерия [2] => 1С:Управление производственным предприятием [3] => 1С: Розница [4] => 1С: CRM [5] => 1С: Управление торговлей [6] => Бюджетирование [7] => СКД [8] => 1С: Конвертация данных [9] => Администрирование 1С [10] => Конвертация данных [11] => Лицензии 1С [12] => Оптимизация [13] => 1С: Документооборот [14] => 1С: ERP [15] => Транспортная логистика [16] => Техническое задание [17] => Продажи [18] => Ценообразование [19] => Планирование [20] => MS SQL Server [21] => Полезные обработки [22] => МСФО [23] => Отчеты в 1С [24] => XML [25] => Внедрение ERP [26] => Перенос данных [27] => Торговое оборудование [28] => РСБУ [29] => 1С:Управление корпоративными финансами [30] => 1С: Колледж [31] => 1С: Аренда и управление недвижимостью [32] => Финансовый учет ) -->
Столкнулся с проблемой,как получить документ по ссылке COMObject.
Есть две базы : Розница 2.2 и Альфа Авто.
Из Розницы по номеру Чека надо найти в Альфе Чек с таким же номером и сделать в нем некоторые изменения.
: Ошибка при вызове метода контекста (ПолучитьОбъект): Произошла исключительная ситуация: : Процедура или функция с указанным именем не определена (Предупреждение)
Буду очень благодарен за подсказку. Как можно сделать?
(17) в Рознице в Общем модуле Полные права создаешь функцию ОбработатьЧекИзАльфы(НомерДокумента)
номер тебе "приедет", а в самом коде ты работаешь не через КОМ-объект, а как будто сидишь в Рознице
а из Альфы вызываешь
Из Розницы по номеру Чека надо найти в Альфе Чек с таким же номером и сделать в нем некоторые изменения.
- может надо обработку запускать в Альфе, находить в Рознице данные и при необходимости в Альфе производить изменения.
(1) А зачем запрос по ком соединению, если вам нужен всего один документ?
Если Выборка не пустая, то это искомый документ. И проверяйте.
Если использовать команду Выбрать, то можно выбрать документы за период.
(9) Да Найти по номеру я делал,сути это не меняет. Ссылку из внешней базы я получаю и данные этого документа. А мне надо в нем сделать изменения. Как сам документ то получить из внешней базы?
(10)Выборка это и есть документ. Если и его не надо получать. Понимаю что задача стоит в подключенной базе по "кому" надо поменять данные в документе.
у самого есть подобная задача, пока не решал, но в ближайшее время буду решать.
Вариант запустить из Альфы и найти чек в рознице не рассматриваете?
(11) Что толку,что выборка ссылка на COMОбъект документ. Изменить в нем ничего нельзя.
Из Альфы (8.1) подключаюсь к Рознице 2.2 (8.3),
создаю в ней Чек, методы ПолучитьОбъект() и Удалить() с COMОбъектом работают,
А обратно из Розницы в Альфе не работает метод ПолучитьОбъект() по ссылке COMОбъекта.
Ребята,не знаю что придумать? Надо обязательно из Розницы изменить Чек в Альфе. Попробовать создать регистр сведений и через него фиксировать? Неожиданная преграда.
: Ошибка при вызове метода контекста (ПолучитьОбъект): Произошла исключительная ситуация: : Процедура или функция с указанным именем не определена (Предупреждение)ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(27)>
Все работает оказывается! Просто в старых конфах на 8.1 не предполагали работу в разных контекстах. Тогда был только толстый клиент и писали как могли. Для работы тебе либо придется менять модуль, чтобы он мог компилироваться во внешнем соединении. Тестируй модуль на него. Либо переносить все на сторону базы 8.1 тогда модуль можно не трогать! Если обработку запускать не в регламентном задании иначе опять переделывать модуль!
(16), какой модуль менять? Скорее всего это мне не по силам и придется искать другое решение. Всем ,спасибо за участие.
(17) в Рознице в Общем модуле Полные права создаешь функцию ОбработатьЧекИзАльфы(НомерДокумента)
номер тебе "приедет", а в самом коде ты работаешь не через КОМ-объект, а как будто сидишь в Рознице
а из Альфы вызываешь
А если попробовать преобразовывать com объекты?
ЗначениеВСтрокуВнутр
ЗначениеИзСтрокиВнутр?
Чек выписывается в Альфе-Авто (4.1) и пересылается в Розницу,где касса ККТ онлайн.
Эта часть отработана,то есть из Альфы 8.1 во внешнюю базу Розница 2.2 8.3.
А как только в Рознице кассир пробьет чек,который уходит в ФНС,надо в Альфе в исходном чеке сделать как бы отметку,что чек пробит и заблокировать его изменение.
К сожаление,пока ничего из предложенного не подошло.
Когда в отладке смотришь ВыборкаV8.Ссылка, то методы GetObject и другие обозначены ,как Метод не найден.
(7) ну как я писал, похоже получив запросом ссылку, ты получил не ссылку, вот и метод не работает. Получай номер документа, а затем ищи его через функцию. тогда и получить сможешь.
(1) Судя по ошибке - она банальна.
Модуль документа чека альфы не компилируется под внешним соединением.
Криворукие прогеры использовали в потенциально серверной части диалог предупреждения, которого на сервере (и во внешнем соединении) быть не может.
Если есть возможность доработки конфы, просто заверните стремные участки типа этого предупреждения в директивы компиляции только в толстом клиенте.
смотри что у тебя тут -
а так пиши функцию в рознице и туда передавай номер и делай что хочешь
(13), не понял
"а так пиши функцию в рознице и туда передавай номер и делай что хочешь".
Как я получу документ из внешней базы (COMОбъект)?
фактически у тебя получится, что запущен экземпляр Розницы, который через КОМ-соединение получил примитывный тип "Строка", а фактически это полноценно запущенная Розника, которая работает с этой строкой
в Результа можешь возвращать Истина/Ложь, но я у себя возвращаю ГУИД документа в Рознице, чтобы полностью "связать"
Петр Самчук,огромное Вам спасибо! Не только проблема решена,но и новые для меня знания.
В Альфе в общем модуле сделал Процедуру:
А в Рознице код:
Петр Самчук, ООООгромное Вам спасибо! проблема решена и МОЯ. не знал такого решения . Связал Бухию и Управленку по спрвочникам.
Читайте также: