Всем, привет! 1С 8.3 Управление торговым предприятием, ред. 1.2.43.1 (обычное приложение) Как программно проверить наличие подчинённого документа ? На основании документа Заказ покупателя создается документ Реализация товаров и услуг, если в данном заказе уже есть Реализация тогда сообщить пользователю, в Заказе покупателя уже есть созданный документ Реализация товаров и услуг.
---
Благодаря подсказки Михаилу сделал так! Мож кому пригодиться :-)

```1c
    Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)

    МассивСсылок = Новый Массив;
    СоответствиеСтрок = Новый Соответствие;
    Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    Ссылка = ОформлениеСтроки.ДанныеСтроки.Ссылка;
    МассивСсылок.Добавить(Ссылка);
    СоответствиеСтрок.Вставить(Ссылка, ОформлениеСтроки);
    КонецЦикла;

    Запрос = Новый Запрос("ВЫБРАТЬ
    | ЗаказПокупателя.Ссылка,
    | РеализацияТоваровУслуг.Сделка
    |ИЗ
    | Документ.ЗаказПокупателя КАК ЗаказПокупателя
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    | ПО (РеализацияТоваровУслуг.Сделка = ЗаказПокупателя.Ссылка)
    |ГДЕ
    | ЗаказПокупателя.Ссылка
    | В (&МассивСсылок)");

    Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
    Если Выборка.Сделка = Null Тогда
    СоответствиеСтрок[Выборка.Ссылка].ЦветФона = WebЦвета.Голубой;
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры
```
---
КритерийОтбораМенеджер.<Имя критерия> (FilterCriterionManager.<Имя критерия>)
Найти (Find)
Синтаксис:

Найти(<ЗначениеПоиска>)
Параметры:

<ЗначениеПоиска> (обязательный)

Значение, по которому будет выполняться поиск. Тип значения должен соответствовать типу критерия отбора.
Возвращаемое значение:

Тип: Массив.
Массив ссылок на объекты, в которых используется указанное значение отбора.
Описание:

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

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Состав объектов метаданных, входящих в состав отбора, задается при конфигурировании.
Пример:

МассивСсылок = КритерииОтбора.Контрагенты.Найти(ВыбКонтрагент);
Для Каждого Ссылка Из МассивСсылок Цикл
    Сообщить(Ссылка);
КонецЦикла;
---
мс=КритерииОтбора.ПодчиненныеДокументы.Найти(док);
---
А где это прописывать?
---
Странный вопрос. В программе.
---
Я имел ввиду в какой процедуре... ОбработкаЗаполнения(Основание) ?
---
Да где хотите, там и используйте. Можно и в обработке заполнения.
---
```1c
    ДокументОснование = КритерииОтбора.СвязанныеДокументы.Найти("РеализацияТоваровУслуг");
```

Не, так не отрабатывает ((((
---
1. мс - это массив ссылок.
2. в параметр передается ссылка на документ
---
КритерийОтбораМенеджер.<Имя критерия> (FilterCriterionManager.<Имя критерия>)
Найти (Find)
Синтаксис:

Найти(<ЗначениеПоиска>)
Параметры:

<ЗначениеПоиска> (обязательный)

Значение, по которому будет выполняться поиск. Тип значения должен соответствовать типу критерия отбора.
Возвращаемое значение:

Тип: Массив.
Массив ссылок на объекты, в которых используется указанное значение отбора.
Описание:

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

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Состав объектов метаданных, входящих в состав отбора, задается при конфигурировании.
Пример:

МассивСсылок = КритерииОтбора.Контрагенты.Найти(ВыбКонтрагент);
Для Каждого Ссылка Из МассивСсылок Цикл
    Сообщить(Ссылка);
КонецЦикла;
---
Теперь понял! Спасибо :-)
---
Благодаря подсказки Михаилу сделал так! Мож кому пригодиться :-)

```1c
    Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)

    МассивСсылок = Новый Массив;
    СоответствиеСтрок = Новый Соответствие;
    Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    Ссылка = ОформлениеСтроки.ДанныеСтроки.Ссылка;
    МассивСсылок.Добавить(Ссылка);
    СоответствиеСтрок.Вставить(Ссылка, ОформлениеСтроки);
    КонецЦикла;

    Запрос = Новый Запрос("ВЫБРАТЬ
    | ЗаказПокупателя.Ссылка,
    | РеализацияТоваровУслуг.Сделка
    |ИЗ
    | Документ.ЗаказПокупателя КАК ЗаказПокупателя
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    | ПО (РеализацияТоваровУслуг.Сделка = ЗаказПокупателя.Ссылка)
    |ГДЕ
    | ЗаказПокупателя.Ссылка
    | В (&МассивСсылок)");

    Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
    Если Выборка.Сделка = Null Тогда
    СоответствиеСтрок[Выборка.Ссылка].ЦветФона = WebЦвета.Голубой;
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры
```
---
не проверили, помечен на удаление, проведен и т д. Реализаций может быть и куча, но вдруг их учитывать не нужно.
---
да, действительно, помечен на удаление упустил этот момент. ) Спасибо за подсказку.
А что Вы имеете ввиду под "Реализаций может быть и куча" ?
---
В основном про пометку удаления. Просто пояснил, зачем смотреть на состояние документа. Возможно вам нужно было искать помеченные на удаление и перезаполнять существующие.
---
Спасибо. Пригодилось.
---
по моему так лучше

  Запрос = Новый Запрос;
  Запрос.Текст =
  "ВЫБРАТЬ ПЕРВЫЕ 1
  | Документы.Ссылка
  |ИЗ
  | Документ.РеализацияТоваровУслуг КАК
  | Документы
  |ГДЕ
  | Документы.Сделка =
  | &ВыбСделка И Документы.Проведен = ИСТИНА";

  Запрос.УстановитьПараметр("ВыбСделка", ЭтотОбъект.Ссылка);
  Выборка = Запрос.Выполнить().Выбрать();

  Пока Выборка.Следующий() Цикл
   ЕстьРеализация = Выборка.Ссылка;
   Сообщить(Выборка.Ссылка);
  КонецЦикла;