1с создать объект по пустой ссылке

Обновлено: 07.07.2024

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

О простом открытии формы, и об открытии формы с передачей параметров, читайте в моей статье:

Открыть форму имеющегося объекта с использованием параметра формы Ключ достаточно просто: создаем структуру, у которой будет связка КлючИЗначение с названием ключа «Ключ», а со значением – ссылкой на открываемый объект. И эту структуру в качестве параметра указываем в методе ОткрытьФорму.
Пример кода с открытием формы документа:

Открытие формы элемента справочника аналогично:

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

Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.


  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

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

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

Мы помним, что в платформе 1С 8.3. существуют три вида объектов. Это объекты метаданных, общие объекты и универсальные коллекции значений.

Так вот, ссылка может быть только у объектов метаданных.

Замечу что, ссылка указывает не на сам объект, а на экземпляр объекта. Хотя, очень часто употребляют выражения «ссылка объекта», «ссылка на объект» и т.п.

Все ссылки объектов имеют тип СправочникСсылка.<НазваниеОбъекта>, ДокументСсылка.<НазваниеОбъекта> и т.д.

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

Например, в моей конфигурации есть справочник Контрагенты.

Справочник в конфигурации 1С

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

Это значит, теперь в документе Оплата можно хранить информацию о контрагенте, который сделал оплату.

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

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

Поясню на примере. Я выше создал документ Оплата и реквизит Оплативший для этого документа с типом СправочникСсылка.Контрагенты.

Если я переименую элемент справочника Контрагенты.

Элемент справочника 1С

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

Документ 1С

Что это значит? Это не значит, что реквизит Оплативший элемента и сам элемент справочника Номенклатура поменялся автоматически. Нет, это значит, что данный реквизит хранит указатель на экземпляр объекта, который отображается посредством наименования. Поменяли наименование, поменялось только отображение, если бы поменяли какой-нибудь другой реквизит справочника Контрагенты, то пользователь бы ничего не заметил.

Получить ссылку 1С

Каким образом программно получить ссылку на экземпляр объекта, который уже есть в базе?

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

Для демонстрации этих методов, на основной форме документа Оплата я создам команду «Установить контрагента», которую размещу в командной панели формы.

Команда основной формы 1С

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

Обработчики команды 1С

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

Функция НайтиПоКоду вернёт ссылку на экземпляр объекта справочник Контрагенты, которому соответствует код 000000002. Почему мы задали код в виде строки, а не в виде цифры, например? Чтобы понять это, нужно открыть непосредственно редактор справочника Контрагенты в конфигураторе, перейти на закладку «Данные» и посмотреть, какой тип кода у этого справочника.

Тип кода справочника 1С

Таким образом, данный код:

Рассмотрим синтаксис этой функции для менеджера справочника:

НайтиПоКоду(<Код>,<ПоискПоПолномуКоду>,<Родитель>,<Владелец>)

Код – непосредственно тот код, по которому мы ищем наш элемент;

Данное поле необязательно, по умолчанию – Ложь;

Родитель – для иерархических справочников можно указать группу, тогда поиск будет вестись внутри группы. Данное поле необязательно;

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

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

Этот способ можно применить только для тех объектов, у которых имеется стандартный реквизит Наименование.

Например, у справочников этот реквизит имеется.

Стандартный реквизит Наименование справочника 1С

А у документов его нет.

Отсутствие стандартного реквизита Наименование документа 1С

В случае этой функции, поиск ведется по тому значению, которое в поле Наименование объекта

Синтаксис функции для менеджера справочника следующий:

НайтиПоНаименованию(<Наименование>,<ТочноеСоответствие>,<Родитель>,<Владелец>)

«Наименование» – непосредственно то наименование, по которому мы ищем наш элемент;

Данное поле необязательно, по умолчанию – Ложь.

Помните это, что по умолчанию поиск ведется не точно;

Параметры «Родитель» и «Владелец» точно такие же, как для процедуры НайтиПоКоду.

Пустая ссылка 1С

Выглядит он так:

ПустаяНоменклатура= Справочники.Номенклатура.ПустаяСсылка();

ПустаяОплата = Документы.Оплата.ПустаяСсылка();

Переменные ПустаяНоменклатура и ПустаяОплата содержат в себе пустые ссылки на каждый объект.

Обращаю Ваше внимание, что для каждого вида справочника и каждого документа будет своя собственная пустая ссылка.

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

Метод Пустая() удобно использовать работая в клиентском контексте (в том числе на тонком клиенте), потому что менеджер объекта это «тяжелый» объекта и с ним можно работать только в серверном контексте. Т.е. установку контрагента можно сделать таким способом:

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

Пустая ссылка в 1С

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

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

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Возьмем ДокументОбъект и ДокументСсылка. Будем, например, смотреть на флаг ОтражатьВБухгалтерскомУчете. Событие - ПередЗаписью.
Я завел две переменные ОбъектОтражатьВБухгалтерскомУчете и СсылкаОтражатьВБухгалтерскомУчете. И вычислил их значения, остановившись на точке останова в обработчике события.

Нарисовал себе табличку:

1. Документ уже проведен. В нем взведен флаг отразить в БУ.
ОбъектОтражатьВБухгалтерскомУчете - Истина.
СсылкаОтражатьВБухгалтерскомУчете - Истина.

2. Документ был проведен, в нем БЫЛ взведены флаг отразить в БУ. Сняли флаг БУ.
ОбъектОтражатьВБухгалтерскомУчете - Ложь.
СсылкаОтражатьВБухгалтерскомУчете - Истина.

3. Документ был проведен, в нем не был взведен флаг отразить в БУ.
ОбъектОтражатьВБухгалтерскомУчете - Ложь.
СсылкаОтражатьВБухгалтерскомУчете - Ложь.

4. Новый документ. Накинута галка отразить в БУ.
ОбъектОтражатьВБухгалтерскомУчете - Истина.
СсылкаОтражатьВБухгалтерскомУчете - Ложь.

5. Новый документ. Нет галки отразить в БУ.
ОбъектОтражатьВБухгалтерскомУчете - Ложь.
СсылкаОтражатьВБухгалтерскомУчете - Ложь.

Вот сижу и смотрю на эту табличку. И не могу понять 2 и 4-й случаи. Был бы очень признателен за комментарий.

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

Очень интересное исследование, знать бы только смысл.

"Итак дети, все прочитали произведение великого пейсателя и готовы ответить мне, что же хотел сказать автор."

ЭтоНовый()
Возвращаемое значение:

Тип: Булево.
Истина - изменяется еще ни разу не записанный документ; Ложь - документ уже записан.
Описание:

Определяет, записан ли документ в базу данных.

Сервер, толстый клиент, внешнее соединение.

А мое исследование - оно совсем не имеет смысла?
Но почему-то же поведение таково.

(4) Я сомневаюсь, что кто-то захочет вникать в твою таблицу.

(0) Чувак, реально не понимаешь что такое ссылка на объект и сам объект.
Что такое объектные блокировки? Ой, о чем это я.

Смотри, есть квартира (объект) и адрес в каталоге, который модно по телефону продиктовать (ссылка), есть разница?

То есть обращаясь к обьекту при вычислении ты каждый раз заставляешь считывать актуальное значение из базы

А ссылка на то она и ссылка тире в ней же нигде не уакзпно что должно соответствовать состоянию объекта в базе

Поэтому ссылку следует использовать для ССЫЛКИ на объект

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

Жесть. Че реально много одинэсников, котрые даже Си не изучали?
(0) Молодец. Не обращай внимание на жесткую критику. Системный подход к изучению 1С. Пытливый ум даст свои плоды. Так держать!.

(9) Обращаясь к Объекту, ты считываешь поля объекта, такие, какие они там есть, такие, какие ты мог в него раньше присвоить.

Обращаясь к ссылке, ты всегда получишь то, что в базе, даже если реквизиты ссылки кешированы (обращался чуть раньше, менее 20 секунд назад) - 1С все равно запросит в базе поле _version и сравнит его со значением в кеше.

(8) Ладно, пусть квартира.
Второй случай:
Ссылка в каталоге: в квартире есть душ.
Объект: в квартире ванна. Т.е. после публикации объявления успели переделалать.

Это более-менее понятно.

Четвертый случай (новый объект):
Объект: в квартире душ. Вот он - можно потрогать.
Ссылка в каталоге: . Почему должна ложь-то стоять?

В четвертом случае по ссылке ложь.

(14) Я изучал си. Если будет разъясняющий пример на си, буду рад посмотреть.
(18) тогда считывая реквизит через ссылку и через обект -получим одинаковые значения?
(20) не помню, в Си уже были объекты?
докОбъект - это классический экземпляр класса. докСсылка -грубо говоря идентификатор в БД.
ПолучитьОбъект() -конструктор по идентификатору, при котором в переменные считываются данные с базы. Потом идет работа с уже считанными значениями. С докСсылка все не так "привычно". Фактически при обращении докСсылка.реквизит каждый раз идет считывание с БД.

Спасибо всем. Разобрался. У меня в четвертом случае некорректно было все.

У нового ссылка пустая. А от пустой ссылки я получил значение свойства. Ну, и получил ложь.

(24) щас кэширование развито. обычно уже не идёт считывание. имхо
такая длинная полоска под ником и такие детские вопросы по 1с. ты чем на досуге занимался

(18) прошу сделать поправку на мою неснеговитость-клюшечност и пояснить азы
Объект тире это копия записи базы в оперативной памяти слэш кеше вопрос

Потому как для меня-клюшечника объект это актуальный экземпляр записи.

(24) причем гуру говорят что при обращении к реквизиту ссылки тащатся все реквизиты, что некошерно. v8: обращение к реквизиту vs запрос
(0) Ссылка.Реквизит - обращение к ЗАПИСАННЫМ данных из ИБ
Объект.Реквизит - обращение к текущим данным и не факт записанны
Даже в семерке неявно существуют объекты и ссылки. СоздатьОбъект("Справочник.XXX") - гибрид объекта с менеджером. А вот .ТекущийЭлемент() - ссылка в чистом виде.
(32) Считывается весь объект из памяти, что естественно может повлиять на производительность. Работайте с запросами
(35) Выразился не правильно.
Считывается весь объект в память из базы данных, что естественно Может повлиять на производительность, если получать данные всего объекта не требует алгоритм. Работайте с запросами.
(0) у вас не Ссылка или Объект конфликт - а проведен/не проведен.
Пока док не был проведен - объект давал картину "я снял /поставил флаг", а ссылка - давала данные БД, которые еще не изменились.
После проведения - объект записался в БД, по ссылке снова стали актуальные данные.
(32)>>что при обращении к реквизиту ссылки тащатся все реквизиты,
- да, все ссылочные.
(20) ссылки 1С к ссылкам остальных языков отношения не имеют - там ссылка на область памяти (сам объект), тут - ссылка это уникальный индекс, по которому 1С ищет у себя что-то в таблицах.
(18) вот вроде все правильно написал, но из-за незнания ООП - путаешь объекты и Объекты.
С большой буквы - это, конечно же, в 1С ))
(21) если "объект" обновил свое альтер-эго в базе, то ссылка и объект возвратят одно и то же.
Если нет - то ссылка возвратит то, что в БД, а обращение к объекту (это "объект" 1С, не забываем! он вообще ничего общего не имеет с объектами ООП!) даст некое содержимое некоего кэша в 1С, куда она временно спихнула содержимое блока памяти (отвечающего за отображение на экране - если угодно, "скриншот" экрана в виде "объектов") и держит свой "объект".
понакрутили
раньше помню на фоксе работаешь с курсором в форме и знаешь
- дважды неправильно. Считывается весь объект и ссылочные "продолжения" его реквизитов.
Отсюда и ранее распространенная ошибка SQL "превышено 256 таблиц".
Когда такое неявное "разъименование" тащило за собой чуть не всю базу.
И плюс один раз неправильно - в запросах 1С тоже такое возможно: неявное разъменование и дополнительные "явно не указанные" соединения "ссылочных" таблиц между собой.
(41) тем, кто программит не только на 1С, это давно понятно ))
(37)>>теперь пойди книгу почитай или к (8) на курсы
- они там сами не знают, как у них эта вся "система ниппель" работает ))
(8)>>реально не понимаешь что такое ссылка на объект и сам объект.
+ 42
SQL-ю указывают ссылку на другие таблицы ("дай мне весь объект вместе со значением реквизита "СправочникСсылка"!"), он и возвращает все ссылочные таблицы. А уже 1С отбирает из этого то, что "нужно" для 1С-запроса (значения полей, интерпретацию ссылок и т.д.), и отбрасывает "лишнее".
(22)>>Нет. Объект может:
1) Устареть.
- как "объет" может "устареть", не модифицируясь при этом в своих остальных "реинкарнациях"? Разве что только испортится в БД ))
(24)>>не помню, в Си уже были объекты?
- напоминаю: в С++ появились объекты. Но еще не ООП.
>>докОбъект - это классический экземпляр класса. докСсылка -грубо говоря идентификатор в БД.
- нет.
докОбъект "в Си" - это не класс, а сам объект. С "ручками"-методами, и "ножками"-свойствами.
А класс - это описание поведения объекта. Его "ручек" и "ножек". А еще и событий.
докСсылка "в Си" - это ссылка (почти указатель, но менее "опасный") на область памяти, где содержится в данный момент считанный из БД нужный объект.
Т.е. ссылка в Си сродни ярлыку на папку (объект), которая физически находится на диске по такому-то указателю. Это "безопасное" звено между вызовом из интерфейса и физическим содержимым памяти.
К 1С все выше перечисленное не имеет ровным счетом никакого отношения.
(0)Про то, что у нового объекта у .Ссылка все поля пустые и все булево = ложь говорили уже?
А у Объекта могло и при создании сделать Истина
(24)>>ПолучитьОбъект() -конструктор по идентификатору, при котором в переменные считываются данные с базы.
- вы путаете получение объекта (из базы), и работу с этим объектом.
При обращении/изменении к реквизиту/та (до записи в БД) уже полученого объекта - никакого "нового" считывания объекта из БД нет, поэтому и получается расхождение между "объектом", и тем, что по ссылке в БД.
>>Фактически при обращении докСсылка.реквизит каждый раз идет считывание с БД.
- да, Ссылке и неоткуда больше брать данные - только считывать их снова и снова из БД (она же в 1С прсото "ссылка", и больше ничего не умеет, как только указать на данные в ТАБЛИЦЕ БД, чтобы их оттуда могли забрать).
(50)>>Про то, что у нового объекта у .Ссылка все поля пустые
- ссылка на <Новый> формируется на оснвое скрипта-"класса в 1С". Если разработчик заложит в платформе какое-то поле "Истина" - то ссылка тоже будет с полем Истина сразу.
>>А у Объекта могло и при создании сделать Истина
- потому что "объект" - уже не детерменирован "классом-скриптом", жесткая, как у <новой> ссылки, связь с "классом" разрушена-оторвана, т.е. сам объект уже может успеть поменяться после того, как 1С его сгенерировала из своих "скриптов-классов".
+ . как 1С его сгенерировала из своих "скриптов-классов", и запустила в "свободное" плавание по таблицам БД ))
(51)
Че это я путаю?
ПолучитьОбъект() - обычный конструктор. При котором как раз данные и считываются по ссылке.
Никто не мешает получить два объекта по одной ссылке :)
(54)>>Че это я путаю?
- путаете понятия объекта в ООП (Си), и "объекта" в 1С.
"ПолучитьОбъект()" - это в 1С не "конструктор", а "отделение "самостоятельного" объекта, если новый/получение существующего по ссылке".
(54)>>Никто не мешает получить два объекта по одной ссылке :)
- в 1С это невозможно ))
Ссылка - это не "класс", а "выхлоп" скрипта-класса. И не ссылка формирует объект 1С, а этот скрипт-класс, а ссылка идет как "бесплатное приложение", однозначно уникально идентифицирующее объект внутри отдельно взятой БД ))
(56)
Невозможно два Объекта по одной Ссылке получить?
Т.е. два экземпляра класса по одному идентификатору в базе? (это если нормальным языком).
Да легко.
Ссылка не формирует Объект, я этого не писал. Конструктор формирует новый экземпляр класса(Объект), получая в качестве параметра идентификатор в базе(Ссылку).
Когда начинают объектную модель 1с натягивать на ООП - ни к чему хорошему это привести не может.
(58)>>Невозможно два Объекта по одной Ссылке получить?
- невозможно
>>Т.е. два экземпляра класса по одному идентификатору в базе? (это если нормальным языком).
- конструктор в 1С - это команда, которая и запускает скрипт-класс. На выходе - не "экзепляр класса", а "объект 1С", т.е. "собранный" из кусочков "объект 1С". assembling руками "робота"-скрипта.
>>получая в качестве параметра идентификатор в базе(Ссылку).
- ссылка не параметр, а скорей свойство. Параметр можно менять в широких пределах, чтобы получить разные реакции "объекта", а ссылку - только сгенерировать на точно такую же ссылку, т.е. ни для объекта, ни, тем более, для программиста - ничего в этом случае не меняется ))
(61)
"выхлоп", "скрипт класса", "отделение объекта" - вот это нормальный язык :)
(59)>>Когда начинают объектную модель 1с натягивать на ООП
- гораздо чаще путают их между собой. А 1С делает вид, что ничего не происходит, называя каждый раз заново собираемый платформой монолитный кусок (объекты Документ и Справочник - не потомки "одного класса", как может показаться, а совершенно разные по происхождению) - "объектом" ))
(62)>>"выхлоп", "скрипт класса", "отделение объекта" - вот это нормальный язык :)
- у 1С нет своей терминологии, а где есть - она крайне нечеткая.
Поэтому это наиболее близкие, в моем понимании, термины, описывающие взаимодействие сущностей внутри 1С.
Но это взаимодействие - точно не ООП ))
Поэтому и термины ООП к 1С не должны применяться, либо - с гигансткими оговорками, о чем, собственно (об этих оговорках), и вся текущая тема.
(63) Ну, формально они "потомки" одного абстрактного базового класса "ссылочный объект" )
(64) Слово "класс" в применении к прикладным объектом 1с следует признать нецензурным

Что такое "ссылка" - это некоторый специальный объект в системе, в котором хранится информация о том, как найти объект в базе данных и какой объект найти.
Если мы у ссылки запрашиваем какие-то данные объекта, то система считывает данные из базы или из кеша и отдаёт их нам, но реально в самой ссылке они не хранятся.

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

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

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

Кроме них имеется еще ряд свойств смысл которых постараемся раскрыть.

Искать объект приемника по внутреннему идентификатору объекта источника - флаг определяющий поиск объектов в приемнике для версии платформы V8. Если этот флажок взведен, то поиск объекта для модификации в базе приемнике осуществляется по внутреннему (уникальному) идентификатору объекта. Этот идентификатор не виден пользователю а средствами программы поддерживается уникальность идентификаторов в информационной базе, так что никакие два объекта информационной базы не имеют одинаковых идентификаторов.

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

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

Не создавать новый объект в приемнике, если он НЕ найден * - флаг определяет нужно ли создавать новый объект в информационной базе - приемнике, если он не был найден по уникальному идентификатору или по полям поиска.

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

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

Не запоминать выгруженные объекты - флаг определяет нужно ли системе при выгрузке КЭШировать последние выгруженные объекты. КЭШирование позволяет ускорить процесс выгрузки и загрузки данных.

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

Автоматически генерировать номер или код, если он не задан - флаг определяет нужно ли системе автоматически генерировать новый код или номер объекта, если перед записью он не заполнен.

On-line обмен

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

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

Например, если нужно переносить не всю номенклатуру из одной ИБ в другую, а только ту, на которую есть ссылки, то флажок подойдет.

Не замещать объект созданный в информационной базе приемнике при загрузке - настройка определяет нужно ли (обратно) переносить объект, который был создан в информационной базе, с которой организован обмен. То есть, если документ создан в информационной базе 1, при помощи обмена поступил в информационную базу 2, то стоит ли его при изменении в базе 2 переносить в базу 1. Настройка позволяет указать приоритет объекта при обмене по месту его создания. То есть изменения в информационной базе, где был создан объект распространяются везде, а изменения в других базах не влияют на этот объект в базе 1.

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

Варианты настроек полей поиска - таблица с возможными вариантами настроек полей поиска для пользователя. Разработчик правил определяет возможные комбинации полей поиска, которые пользователь может выбирать при настройке обмена. Все настройки указанные разработчиком правил должны быть отработаны в коде обработчика "Поля поиска". Переменная НастройкаПоиска в обработчике определяет выбранный пользователем вариант сопоставления (ИмяНастройкиДляАлгоритма из соответствующей строки таблицы). Если пользователь не выбрал ни один вариант сопоставления, или ему ни один вариант не был предложен, то НастройкаПоиска - пустая строка.

На закладке "Дополнительно" можно редактировать наименование правила, вхождение его в определенную группу а так же описание правила.

Примечания:

* Не рекомендуется для использования при настройке on-line обмена

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Читайте также: