Реквизиты документа в 1с не могут ссылаться на другие документы

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

Я
   Roland2013

03.06.13 — 14:02

В модуле формы документа «А», использую реквизиты документа «А», а как сослаться на реквизит из документа «Б» ?

  

Партнерская программа EFSOL Oblako

   1Сергей

1 — 03.06.13 — 14:02

никак. не нужно это

   ДенисЧ

2 — 03.06.13 — 14:02

ДокументБ.ИмяРеквизита…

   zak555

3 — 03.06.13 — 14:03

ССлыкаДокА.Реквизит

   Roland2013

4 — 03.06.13 — 14:03

(2) Документы.Б.Реквизит  

???

   ICWiner

5 — 03.06.13 — 14:05

реквизитБ.А.Документ.Реквизит?

   1Сергей

6 — 03.06.13 — 14:05

(4) каким образом связаны эти документы? Один прописан в реквизите другого?

   ICWiner

7 — 03.06.13 — 14:05

а документ Б — это один из реквизитов документа А?

   Roland2013

8 — 03.06.13 — 14:07

(6) ДА

   Roland2013

9 — 03.06.13 — 14:08

(7) именно

   NWsFF

10 — 03.06.13 — 14:10

ЭтотОбъект.Б.ПолучитьОбъект().РевизитБ = «ой вэй»;

   Roland2013

11 — 03.06.13 — 14:10

Давайте рассмотрим два варианта

1. Документ Б — реквизит документа А

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

2-й вариант невозможен, правильно?

   1Сергей

12 — 03.06.13 — 14:10

(9) в таком случае, документ Б может быть указан в нескольких Документах А. К реквизитам какого из них тебе обратиться надо? Запросом ищи в общем…

   Рэйв

13 — 03.06.13 — 14:11

(0)  Возможна и такая конструкция :

//———-

ЧтоТо=ДокКакойТо.РеквизитСсылкаНаДокДругой.РеквизитДркгогоДокументаТипСправочник.РеквизитЭтогоСправочникаДругойСпр.ЕгоРеквизит;

//——————

Познай дзен:-)

   Roland2013

14 — 03.06.13 — 14:15

(12) Из документа А к реквизиту документа Б

   Roland2013

15 — 03.06.13 — 14:17

(12) Все до меня дошел смысл сообщения) спс, запросом так запросом)

   Mitriy

16 — 03.06.13 — 14:17

РеквизитСсылкаДокументБ.НужныйРеквизит

   1Сергей

17 — 03.06.13 — 14:17

(14) хорошо. Значит у тебя в документе А есть реквизит с типом ДокументСсылка.ДокументБ, который называется, например, РеквизитДокументБ.

Тогда, чтобы обратиться к реквизитам Документа Б из Документа А нужно писать так:

Сообщить(Объект.РеквизитДокументБ.НужныйРеквизитДокументаБ);

   Roland2013

18 — 03.06.13 — 14:24

Объект.РеквизитДокументБ.НужныйРеквизитДокументаБ.

И тут выдается два варианта либо Пустая() либо УникальныйИдентификатор()

   Рэйв

19 — 03.06.13 — 14:25

(18)Не может там быть УИД.  Там ссылка.или пустая или нет.

   Roland2013

20 — 03.06.13 — 14:32

(19) Если оставляю

Сообщить(«А =»Объект.РеквизитДокументБ.Пустая());

В программе

А=ДА  

А как же сослаться на конкретный реквизит из документаБ?

   1Сергей

21 — 03.06.13 — 14:33

мде… клинический случай

   ДенисЧ

22 — 03.06.13 — 14:34

Внимание!

Сегодня на форуме обнаружены небывало огромные запасы бисера!…

   Рэйв

23 — 03.06.13 — 14:37

(20)Блин…Ну нельзя же быть таким тормозом!:-))

   Рэйв

24 — 03.06.13 — 14:39

пора сделать на странице каждой темы кнопку «Отправить учиться» с баном на месяц для правильной медитации…

   Roland2013

25 — 03.06.13 — 14:40

(22) :) где же его метают?)

   Рэйв

26 — 03.06.13 — 14:40

с баном на месяц топик стартера естессно:-)

  

Roland2013

27 — 03.06.13 — 14:40

(24) Ладно не буду оставлять посты в темах на мисте) пока не подучу матчасть)

Получить реквизит документа в другом документе

Автор JOG, 24 апр 2015, 09:45

0 Пользователей и 1 гость просматривают эту тему.

Уважаемые формучане, прошу помощи.
Никак не могу получить реквизит документа в другом документе.
Мне надо вытащить реквизиты табличной части из Док2 и использовать их в Док1. Выдаётся ощибка «Индекс находится за границами массива». Ок. Решил попробовать без табличной части — таже ошибка.
Привожу код в форме Док1:


&НаСервере
Функция ПолучитьСуммуДолгаНаСервере(СписокДолжников)
ДолгЗапрос = Новый Запрос;
ДолгЗапрос.Текст =
"ВЫБРАТЬ
| СписокДолжников.СуммаДолга
|ИЗ
| Документ.СписокДолжников КАК СписокДолжников
|ГДЕ
| СписокДолжников.Ссылка = &Ссылка";
ДолгЗапрос.УстановитьПараметр("Ссылка", СписокДолжников);
РезультатТабЗначений = ДолгЗапрос.Выполнить().Выгрузить();
Возврат РезультатТабЗначений[0].СуммаДолга;
КонецФункции

&НаКлиенте
Процедура ДолжникПриИзменении(Элемент)
Объект.СуммаДолга = ПолучитьСуммуДолгаНаСервере(Объект.ДолжникФамилия);
КонецПроцедуры

или подскажите как правильно получить реквизиты ТЧ Док2 при изменении фамилии должника в Док1?
P.S.: Тип у ФамилииДолжника ссылка на справочник Должники.


Отладчик! первый товарищ и брат. В списке должников такой фамилии нет.


1.

Цитата: JOG от 24 апр 2015, 09:45РезультатТабЗначений = ДолгЗапрос.Выполнить().Выгрузить(); Возврат РезультатТабЗначений[0].СуммаДолга;

в этом месте надо как минимум проверить если результат запроса — пустой.

2. что-то у вас непонятно: в функцию отправляете значение типа

Цитата: JOG от 24 апр 2015, 09:45Тип у ФамилииДолжника ссылка на справочник Должники.

а в запросе его потом сравниваете со ссылкой НА ДОКУМЕНТ…

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Цитата: cska-fanat-kz от 24 апр 2015, 11:16
1.

Цитата: JOG от 24 апр 2015, 09:45РезультатТабЗначений = ДолгЗапрос.Выполнить().Выгрузить(); Возврат РезультатТабЗначений[0].СуммаДолга;

в этом месте надо как минимум проверить если результат запроса — пустой.

2. что-то у вас непонятно: в функцию отправляете значение типа

Цитата: JOG от 24 апр 2015, 09:45Тип у ФамилииДолжника ссылка на справочник Должники.

а в запросе его потом сравниваете со ссылкой НА ДОКУМЕНТ…

Никак не получается у меня решить задачу.
В общем поясню еще раз.
Есть справочник Должники, где реквизиты Фамилия, Имя, Отчество, паспортные данные.
Есть документ СписокДолжников с табличной частью, где реквизиты ТабЧасти ФамилияДолжника (Тип:СправочникСсылка.Должники) и СуммаДолга (Тип: Число)
Есть документ Претензия, которая формируется для одного должника из СпискаДолжников, где реквизиты: СписокДолжников(Тип:ДокументСсылка.СписокДолжников), Фамилия, Имя, Отчество, СуммаДолга.
Вопрос: 1) как получить в Документе Претензия, в реквизите СуммаДолга, значение прописанное в ТЧ Документа СписокДолдников.
Или
2) Как получить список фамилий из ТЧ Список Должников, но, чтобы они были в виде списка в поле Фамилия Претензия, при измененнии Реквизита СписокДолжников.

Форма документа Претензия

Документ СписокДолжников

Без табличной части всё супер, обычным запросом делаю и всё ок. А вот чтобы вытащить значение из ТЧ никак не разберусь:(


Заводим оборотный (хотя не обязательно) регистр накопления Долги с измерением Должник и ресурсом Сумма
и складываем в него значения документом СписокДолжников…

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Цитата: cska-fanat-kz от 28 апр 2015, 03:25
Заводим оборотный (хотя не обязательно) регистр накопления Долги с измерением Должник и ресурсом Сумма
и складываем в него значения документом СписокДолжников…

Но проблема в том, что мне необходимо значение СуммыДолга для определенного Должника исользовать в Претензии при фомировании макета. Поэтому мне нужно получить из ТЧ определнную СуммуДолга, для опрделенного Должника.
То есть я в Претензии выбираю как бы из списка ТЧ фамилии, а в другом поле СуммаДолга в Претензии, я должен получить соответствующее значение суммы и затем использовать её в макете. Это реально? То есть на клиенте при изменении фамилии, нужно получить сумму долга. Без ТЧ, всё прекрасно, но для одного должника, а вот получить список всех.. может выборкой как то? никак не сформирую правильно запрос


а если у вас 2 документа СписокДолжников?
1 док: Иванов 1000
2ой док: Иванов 1000

в претензию должно попасть Иванов 2000?
или каждому Списку соответствует своя Претензия?

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Раз в неделю будет забиваться новый список и ,соответственно, новая претензия

Добавлено: 28 апр 2015, 09:01


Цитата: cska-fanat-kz от 28 апр 2015, 08:46
а если у вас 2 документа СписокДолжников?
1 док: Иванов 1000
2ой док: Иванов 1000

в претензию должно попасть Иванов 2000?
или каждому Списку соответствует своя Претензия?

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


Тогда запрос к ТЧ делаете и все
«ВЫБРАТЬ
    |    СписокДолжниковТЧ.СуммаДолга
    |ИЗ
    |    Документ.СписокДолжников.ИМЯТЧ КАК СписокДолжниковТЧ
    |ГДЕ
    |    СписокДолжниковТЧ.Должник = &Ссылка»;

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Цитата: cska-fanat-kz от 28 апр 2015, 09:08
Тогда запрос к ТЧ делаете и все
«ВЫБРАТЬ
    |    СписокДолжниковТЧ.СуммаДолга
    |ИЗ
    |    Документ.СписокДолжников.ИМЯТЧ КАК СписокДолжниковТЧ
    |ГДЕ
    |    СписокДолжниковТЧ.Должник = &Ссылка»;

а в этом случае у меня опять-таки получается первое значение фамилии из первой строки ТЧ, а возможно ли в поле получить список фамилий из ТЧ?


&НаСервере
Функция ПолучитьДолжникаНаСервере(СписокДолжников)
ДолгЗапрос = Новый Запрос;
ДолгЗапрос.Текст =
"ВЫБРАТЬ
| СписокДолжниковДолжники.ДолжникФамилия
|ИЗ
| Документ.СписокДолжников.Должники КАК СписокДолжниковДолжники
|ГДЕ
| СписокДолжниковДолжники.Ссылка = &Ссылка";
ДолгЗапрос.УстановитьПараметр("Ссылка", СписокДолжников);
РезультатТабЗначений = ДолгЗапрос.Выполнить().Выгрузить();
Возврат РезультатТабЗначений[0].ДолжникФамилия;
КонецФункции


&НаКлиенте
Процедура СписокДолжниковПриИзменении(Элемент)
Объект.ФамилияДолжника= ПолучитьДолжникаНаСервере(Объект.СписокДолжников);
КонецПроцедуры


0 / 0 / 0

Регистрация: 09.02.2018

Сообщений: 8

1

1C 8.x (тонкий)

Как сделать ссылку на реквизит справочника

18.03.2018, 21:27. Показов 25254. Ответов 3


Приветствую!
Я не так давно начал знакомиться со средой 1С и столкнулся с проблемой.
У меня имеется Документ в нем есть Табличная часть «Отчет» со следующими реквизитами: «Наименование»(Ссылка), «Фамилия», «Имя», «Отчество» и т.д.
Так же у меня есть справочник «Сотрудники» с реквизитами: «Наименование», «Фамилия», «Имя», «Отчество», «Оклад».
Мне необходимо чтобы при составлении документа у реквизита документа «Фамилия» я мог выбрать нужную мне фамилию , однако я не знаю как именно сделать ссылку на реквизит справочника «Сотрудники».
Буду благодарен за помощь или совет как решить эту проблему.
Для разработки используется (управляемое приложение).



0



1808 / 1228 / 442

Регистрация: 16.01.2015

Сообщений: 5,394

18.03.2018, 22:47

2

AgrailDark,

Миниатюры

Как сделать ссылку на реквизит справочника
 



0



GreenkA

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

18.03.2018, 22:59

3

polax, ТС видимо хочет не просто ссылочный тип… В самом справочнике Сотрудники реквизиты: Фамилия, Имя, Отчество, Оклад.
Мой «клиенто-хотелко-локатор» подсказывает, что ТС хочет выбирать в документе в поле Фамилия — те фамилии, которые существуют в справочнике Сотрудники
А для этого надо описать событие НачалоВыбора() для поля Фамилия табличной части:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&НаКлиенте
Процедура ОтчетФамилияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ДанныеВыбора = ПолучитьСписокФамилийНаСервере();
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьСписокФамилийНаСервере()
    СписокФамилий = Новый СписокЗначений;
    ВсеСотрудники = Справочники.Сотрудники.Выбрать();
    Пока ВсеСотрудники.Следующий() Цикл
        СписокФамилий.Добавить(ВсеСотрудники.Ссылка.Фамилия);
    КонецЦикла;
    Возврат СписокФамилий;
КонецФункции

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

Подозреваю, что у вас везде типы — Строка. Что конечно же с точки зрения структурирования конфигурации — не верно…



0



0 / 0 / 0

Регистрация: 09.02.2018

Сообщений: 8

19.03.2018, 15:53

 [ТС]

4

GreenkA, polax спасибо вам огромное, вы мне очень помогли!



0



Про реквизит Ссылка

Оглавление

  • Введение
  • Пример
  • Примеры использования в запросах
    • Пример 1
    • Пример 2
    • Пример 3

Введение

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

Давайте зайдём в базу Гастроном и откроем данные справочника Цвета:

Здесь нажмём на кнопку «Стандартные реквизиты»:

Вот она наша Ссылка. Это стандартный реквизит и он есть у многих прикладных типов данных.

Вот примеры его значений:
0xA9BA005056C0000811EAA968D227F09E
0xA9BA005056C0000811EAA968D8B6ACBD
0xA9BA005056C0000811EAA968D8B6ACBE
0xA9BA005056C0000811EAA96D0BC160C1

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

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

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

Пример

Представим, что мы создали новый элемент справочника Цвета со следующими значениями реквизитов:

Реквизит Значение Пояснение
Наименование Красный значение этого реквизита указали мы сами при создании элемента
Ссылка 0xA9BA005056C0000811EAA968D227F09C значение этого реквизита платформа сформировала сама при записи нового элемента в базу данных

А далее мы создали новый элемент справочника Клиенты со следующими реквизитами:

Реквизит Значение Пояснение
Наименование Андрей значение этого реквизита указали мы сами при создании элемента
Пол Мужской значение этого реквизита указали мы сами при создании элемента
Ссылка 0xA9BA005056C0000811EAA96D0BC160C0 значение этого реквизита платформа сформировала сама при записи нового элемента в базу данных

А теперь самое интересное. У элемента справочника Клиенты есть реквизит ЛюбимыйЦвет, который указывает (ссылается) на элемент справочника Цвета.

Как вы думаете, какое именно значение мы должны записать в реквизит ЛюбимыйЦвет, чтобы он указывал на созданный нами ранее элемент справочника Цвета с наименованием «Красный»?

Верно, в этот реквизит мы должны записать значение реквизита Ссылка этого самого элемента (с наименованием «Красный»).

То есть будет вот так:

Реквизит Значение Пояснение
ЛюбимыйЦвет 0xA9BA005056C0000811EAA968D227F09C

Примеры использования в запросах

Пример 1

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

А значит мы можем использовать эту особенность, например, для подсчёта количества элементов в справочнике:

ВЫБРАТЬ
    Количество(Ссылка)
ИЗ
    Справочник.Цвета

Пример 2

Давайте напишем очень глупый запрос, который тем не менее продемонстрирует нам, что в реквизит ЛюбимыйЦвет записывается именно значение реквизита Ссылка элемента, на который он ссылается:

ВЫБРАТЬ
    Клиенты.Наименование,
    Клиенты.ЛюбимыйЦвет,
    Цвета.Ссылка
ИЗ
    Справочник.Клиенты КАК Клиенты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    Справочник.Цвета КАК Цвета
ПО
    Клиенты.ЛюбимыйЦвет = Цвета.Ссылка

Обратите внимание, как выглядит строковое значение реквизита ЛюбимыйЦвет и Ссылка.

Платформа 1С не вывела нам его настоящее значение (например, 0xA9BA005056C0000811EAA968D227F09C).

Вместо этого она определила, что это значение указывает на элемент справочника «Цвета» с наименованием «Красный» и вывела нам слово «Красный» в качестве представления этого элемента.

Это стандартное поведение платформы, просто так мы никогда и нигде не увидим «сырое» представление реквизита Ссылка.

Пример 3

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

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

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

ВЫБРАТЬ
    Клиенты.Наименование,
    Клиенты.ЛюбимыйЦвет,
    Клиенты.ЛюбимыйЦвет.Код
ИЗ
    Справочник.Клиенты КАК Клиенты

Обновлено: 21.03.2023

Мы уже познакомились с таким понятием, как объект в 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


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

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

Про реквизит Ссылка

Введение

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

Давайте зайдём в базу Гастроном и откроем данные справочника Цвета:

Здесь нажмём на кнопку «Стандартные реквизиты»:

Вот она наша Ссылка. Это стандартный реквизит и он есть у многих прикладных типов данных.

Вот примеры его значений:
0xA9BA005056C0000811EAA968D227F09E
0xA9BA005056C0000811EAA968D8B6ACBD
0xA9BA005056C0000811EAA968D8B6ACBE
0xA9BA005056C0000811EAA96D0BC160C1

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

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

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

Пример

Представим, что мы создали новый элемент справочника Цвета со следующими значениями реквизитов:

Реквизит Значение Пояснение
Наименование Красный значение этого реквизита указали мы сами при создании элемента
Ссылка 0xA9BA005056C0000811EAA968D227F09C значение этого реквизита платформа сформировала сама при записи нового элемента в базу данных

А далее мы создали новый элемент справочника Клиенты со следующими реквизитами:

Реквизит Значение Пояснение
Наименование Андрей значение этого реквизита указали мы сами при создании элемента
Пол Мужской значение этого реквизита указали мы сами при создании элемента
Ссылка 0xA9BA005056C0000811EAA96D0BC160C0 значение этого реквизита платформа сформировала сама при записи нового элемента в базу данных

А теперь самое интересное. У элемента справочника Клиенты есть реквизит ЛюбимыйЦвет, который указывает (ссылается) на элемент справочника Цвета.

Как вы думаете, какое именно значение мы должны записать в реквизит ЛюбимыйЦвет, чтобы он указывал на созданный нами ранее элемент справочника Цвета с наименованием «Красный»?

Верно, в этот реквизит мы должны записать значение реквизита Ссылка этого самого элемента (с наименованием «Красный»).

То есть будет вот так:

Реквизит Значение Пояснение
ЛюбимыйЦвет 0xA9BA005056C0000811EAA968D227F09C

Примеры использования в запросах

Пример 1

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

А значит мы можем использовать эту особенность, например, для подсчёта количества элементов в справочнике:

Пример 2

Давайте напишем очень глупый запрос, который тем не менее продемонстрирует нам, что в реквизит ЛюбимыйЦвет записывается именно значение реквизита Ссылка элемента, на который он ссылается:

Обратите внимание, как выглядит строковое значение реквизита ЛюбимыйЦвет и Ссылка.

Платформа 1С не вывела нам его настоящее значение (например, 0xA9BA005056C0000811EAA968D227F09C).

Вместо этого она определила, что это значение указывает на элемент справочника «Цвета» с наименованием «Красный» и вывела нам слово «Красный» в качестве представления этого элемента.

Это стандартное поведение платформы, просто так мы никогда и нигде не увидим «сырое» представление реквизита Ссылка.

Пример 3

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

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

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

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

      

  • Как сделать полосатую заливку в powerpoint
  •   

  • 1с не открывается консоль заданий
  •   

  • Как в 1с добавить единицу измерения в
  •   

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

  • Как сделать эффект фотопленки в фотошопе на телефоне

Главная /
Основы разработки прикладных решений для 1С:Предприятие 8.1 /
Может ли документ иметь реквизит, который ссылается на другой документ?

Может ли документ иметь реквизит, который ссылается на другой документ?

вопрос

Правильный ответ:

нет, не может

может, это реализуется обычными средствами

может только в том случае, если документ, на который имеется в нем ссылка, тоже ссылается на него

может только в том случае, если документ, на который имеется в нем ссылка, не имеет реквизитов

Очень сложно

Сложно

Средне

Легко

Очень легко

Спасибо за оценку!

  • #

    Для чего предназначен объект конфигурации Справочник?

  • #

    Как в режиме 1С:Предприятие можно открыть Журналы документов?

  • #

    Какие виды соединения таблиц могут применяться при создании запросов?

  • #

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

  • #

    Если текст запроса задают в теле модуля, какой знак предшествует каждой из строк текста запроса?

Вы уже научили выводить реквизит иного справочника и документа в форме документа. И даже редактировать.

Тут: 

http://novichok1c.ru/comment/1451#comment-1451

Отлично работает, за что еще раз ОГРОМНОЕ Спасибо!

Так же Вы научили редактировать «дистанционно» реквизит другого справочника или документа.

Однако у данного метода есть существенный недостаток:

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

В связи с чем 2 вопроса: 

Вопрос 1.

1С возможно объединить реквизит?

Т.е. создать один реквизит для нескольких документов?

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

Вопрос 2.

Как вывести данные реквизита документа(справочника) из формы списка другого документа?

(когда документы находятся в подчинении друг друга или связаны, как ЗаказПокупателя и РеализацияТоваровУслуг, Контрагенты и ЗаказПокупателя и т.д.)

Понравилась статья? Поделить с друзьями:
  • Реквизиты документа предоставляющего право подписи договора это
  • Реквизиты документа удостоверяющего личность образец заполнения
  • Реквизиты документа удостоверяющего право собственности что это
  • Реквизиты документов бывают выберите один или несколько ответов
  • Реквизиты документов подтверждающих ввод в эксплуатацию объекта