|
проверка наличия документа, введенного на основании другого документа
| ☑ |
0
ench_es2014
04.08.14
✎
08:35
|
Здравствуйте!
Подскажите, пожалуйста, как можно проверить, есть ли документ введенный на основании другого документа?
Т.е. задача следующая. Выбрать за определенный период документы А и на их основании создать документы Б (м.б. создан только один документ Б на основании А), но перед созданием необходимо проверить, не был ли ранее создан документ Б на основании А? Запросом получаем все документы А за определенный период:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|А.Ссылка КАК Ссылка
|ИЗ Документ.А
|ГДЕ
|А.Дата >= &НачДата
|А.Дата <= &КонДата";
Запрос.УстановитьПараметр("НачДата",НачДата);
Запрос.УстановитьПараметр("КонДата",КонДата);
Если Выборка.Следующий() Тогда
//создаем новый документ
НовДок.ДокументОснование = Выборка.Ссылка;
КонецЕсли;
Как проверить, не был ли создан документ Б на основании документа А?
|
|
1
lxndr
04.08.14
✎
08:38
|
лучше в запросе соединить таблицы обоих документов и отобрать по условию:
ГДЕ Б.Ссылка ЕСТЬ NULL
|
|
2
PuhUfa
04.08.14
✎
08:43
|
(0) в Б есть ссылка на А?
|
|
3
ench_es2014
04.08.14
✎
09:10
|
(2) Да, в Б есть реквизит ДокументОснование
|
|
4
DrShust
04.08.14
✎
09:20
|
(3) lxndr - правильно пишет. Левым соединением. К А присоединяй Б по А.Ссылка, а Б.ДокументОснование. Если Б.Ссылка ЕстьNull, то на основании А не создавался документ Б.
|
|
5
ench_es2014
04.08.14
✎
09:20
|
(1) Если соединяю так:
|ИЗ Документ.А КАК А |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Б КАК Б
|ПО А.Ссылка <> Б.ДокументОснование
|ГДЕ
|А.Дата >= &НачДата
|И А.Дата <= &КонДата
|И Б.ДокументОснование.Ссылка ЕСТЬ НЕ NULL
Тогда даже если за выбранный период нет документов Б, новый документ не создается..
|
|
6
mikecool
04.08.14
✎
09:23
|
выбрать первые 1 1
из Док.А
где докоснование = &Основание
если результат не пустой, значит на основании &Основание есть введенный док
|
|
7
DrShust
04.08.14
✎
09:23
|
(5) Левачить нужно!
|
|
8
Kurbash
04.08.14
✎
09:24
|
(7)+1
|
|
9
ench_es2014
05.08.14
✎
12:29
|
Всем большое спасибо! Кроме запроса можно использовать метод НайтиПоРеквизиту(): Документы.Б.НайтиПоРеквизиту("ДокументОснование", Выборка.Ссылка), если ссылка пустая, то не был введен документ Б на основании А
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой