Имя: Пароль:
1C
 
Запрос. Связанные документы
0 dlogius
 
14.08.24
07:08
Необходимо получить табличку с 2 полями:
1. Документ Заявка.
2. Документ, который создан на основании Заявки (РеализацияТоваровУслуг).

Вот такой запрос:
ВЫБРАТЬ
    СвязанныеДокументы.Ссылка,
    СвязанныеДокументы.Ссылка.Номер,
ИЗ
    КритерийОтбора.СвязанныеДокументы(&Док) КАК СвязанныеДокументы

Выдает подчиненные документы ОДНОЙ конкретной заявки, указанной в параметре.

Как сформировать запрос, чтобы получить табличку за период где будут
Заявка1 - Реализация1
Заявка2 - Реализация2
--     -  ---
??
1 steep1
 
14.08.24
07:41
(0) запрос в цикле
2 Pprog151713
 
14.08.24
07:42
"ВЫБРАТЬ
     |    РеализацияТоваровУслуг.ДокументОснование КАК Заявка,
     |    РеализацияТоваровУслуг.Ссылка КАК Ссылка
     |ИЗ
     |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг"
3 Stepashkin
 
14.08.24
07:58
(1) Запрос в цикле - неимоверное зло!
4 dlogius
 
14.08.24
08:03
(2) Пытался я ходить таким способом, но, почему-то, моя конфа не принимает поле "ДокументОснование"

Выскакивает ошибка.
{(2, 10)}: Поле не найдено "РеализацияТоваровУслуг.ДокументОснование"
<<?>>РеализацияТоваровУслуг.ДокументОснование КАК Заявка,
5 dlogius
 
14.08.24
08:04
(1) (3)
6 Ненавижу 1С
 
14.08.24
08:09
(4) отсюда не видно как поле называется правильно, а из критерия отбора можно посмотреть и поправить в запросе
7 dlogius
 
14.08.24
08:21
(6) Все названия полей не набраны руками, взяты из конструктора запросов. Что можно посмотреть в КритерииОтбора?
8 Ненавижу 1С
 
14.08.24
08:24
(7) да-да, в конструкторе запросов и "Поле не найдено"
в критерии отбора нужно смотреть по какому полю связаны реализация и заявка
9 toypaul
 
14.08.24
08:27
(3) ну типовой отчет структура подчиненности так и работает.
поэтому в своем (подобном) отчете делал не через критерий отбора
10 d4rkmesa
 
14.08.24
08:36
(0) Никак, критерий отбора так не работает, сделайте тупо запрос по заказам с соединением.
11 dlogius
 
14.08.24
08:37
(8) Именно конструктор запросов выдает эту ошибку.
Вызываю КЗ Выбираю док РеализацияТоваровУслуг и одно поле ссылка, ручками в окне запроса добавляю строку:
РеализацияТоваровУслуг.ДокументОснование КАК Заявка

Получается такой запрос:
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.ДокументОснование КАК Заявка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    
Нажимаю сохранить и получаю вышеуказанную ошибку.
Я просмотрел все реквизиты документа и не только этого. Ничего хотябы созвучного или похожего на "ДокументОснование" не обнаружил.

Я не знаю как сюда можно поместить снимок с экрана ,а то бы показал.
12 dlogius
 
14.08.24
08:40
(10) А можно поподробнее, как их соединить?

Вот сюда: КритерийОтбора.СвязанныеДокументы(&Док) кроме параметра ничего не вставляется.
Как сюда вставить ссылку на заявку?
13 Chameleon1980
 
14.08.24
08:40
(11) ну посмотрите уже структуру данных в конфигураторе
14 Мультук
 
14.08.24
08:43
(11)

1) Наименование и версия вашей конфы ? (чтобы было)

2) Вы называете заявкой документ "РеализацияТоваровУслуг" ?
15 dlogius
 
14.08.24
08:44
(13) Что посмотреть? Вы считаете эту фразу помощью?
16 Pprog151713
 
14.08.24
08:47
(15) Так мы не можем помочь человеку, который не знает, что такое структура данных в конфигураторе.)))
17 dlogius
 
14.08.24
08:48
(14) " Вы называете заявкой документ "РеализацияТоваровУслуг" ?"
Нет.
Есть заявка. Конкретная ссылка на конкретную заявку подставляется в параметр &Док.
И есть документ "РеализацияТоваровУслуг" ,который создается на основании Заявки.

Если это что-то даст:
Комплексная автоматизация, редакция 1.0 (1.0.16.1) ( http://v8.1c.ru/ka/ )
Copyright (С) ООО "1C", 2009-2011. Все права защищены
( http://www.1c.ru/ )
18 Pprog151713
 
14.08.24
08:48
Тебе на курсы надо к Фабриканту.
19 Pprog151713
 
14.08.24
08:50
20 dlogius
 
14.08.24
08:51
(16) Я прекрасно знаю что такое структура данных в конфигураторе. Просто подскажите в какое место этой структуры посмотреть. А то ваши ответы похожи на: "Ну, так глянь в энциклопедию".
21 dlogius
 
14.08.24
08:53
Уважаемый, Pprog151713, если Вы не знаете ничего по этому вопросу или не хотите помочь, зачем пишете банальности?
22 Pprog151713
 
14.08.24
08:54
В реализацию. ) В какое место)) Вы шутник. Ха.
23 Ненавижу 1С
 
14.08.24
08:56
(17) Как документ "заявка" в конфигураторе называется? хватит "оленить".
То что в запросе ручками написали ересь, это не значит, что использовали конструктор
24 Мимохожий Однако
 
14.08.24
08:58
(0) В типовой конфигурации есть одноименная обработка по связанным документам. Самое очевидное - взять код из неё. Всё уже давно придумано. © "Доступно и всерьез" - 1С
25 dlogius
 
14.08.24
08:59
Так и назывется. "ЗАЯВКА". Синоним "Заявка покупателя", по всей видимости введен ручками.
26 dlogius
 
14.08.24
09:01
(24) Есть. Хотелось бы запросом. Было бы красивее.
27 Ненавижу 1С
 
14.08.24
09:02
(25) это самописный велосипед что-ли?
28 dlogius
 
14.08.24
09:04
(24) Да, и в той обработке тоже выдается список документов привязанных к одному, конкретному документу.
Можно сделать цикл и получить желаемую табличку, но как уже сказано: "цикл - это зло" )).
Запросом было бы интереснее и красивее.
29 dlogius
 
14.08.24
09:05
(27) Нет. Но это для производства, написано на заказ.
30 Stepashkin
 
14.08.24
09:12
(28) Не искажайте сказанное "Запросы в цикле - зло". Делаете запрос, потом выгружаете результат в ТабЗнач, а потом обходите ТабЗнач в цикле, получая для каждого документа основания все подчиненнные документы. А проще реализовать посредством объектной техники: МассивПодчиненныхДокументов = КритерииОтбора.СвязанныеДокументы.Найти(ДокументОбъект.Ссылка); И обходите массив в цикле и получаете, что хотите.
31 dlogius
 
14.08.24
09:23
(30)  "Делаете запрос, потом выгружаете результат в ТабЗнач,"
Я именно этого и хочу, но не знаю как сформулировать запрос.

Запрос:
ВЫБРАТЬ
    СвязанныеДокументы.Ссылка,
    СвязанныеДокументы.Ссылка.Номер,
ИЗ
    КритерийОтбора.СвязанныеДокументы(&Док) КАК СвязанныеДокументы

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

Можно выбрать другим запросом, например, все документы &Док  за период и потом пройтись циклом и для каждого выполнить запрос подставляя параметр. Но так и получится "Запросы в цикле - зло".

PS Кстати документ "РеализацияТоваровУслуг" обозвал заявкой не я, а ув. Pprog151713 в посте №2 "РеализацияТоваровУслуг.ДокументОснование КАК Заявка,"
32 dlogius
 
14.08.24
09:31
Я копал в инете и много раз сталкивался с рекомендацией использовать поле "ДокументОснование" у документа.
Но в моей конфигурации у документов не подобных полей. Поэтому я нашел способ через КритерииОтбора.
33 Тихий омут
 
14.08.24
09:33
(0) Можно два оффтопик вопроса, не по теме?
34 dlogius
 
14.08.24
09:42
Пожалуйста.
35 Мультук
 
14.08.24
09:45
(31)

Ура. к 31 посту мы выяснили, что есть два документа:
"Заявка"
"РеализацияТоваровУслуг"

Нужно узнать по какому реквизиту они связаны
Это можно посмотреть в конфигураторе в КритерийОтбора.СвязанныеДокументы

ИЛИ

Ищем в конфигураторе документ "Заявка"
Нажимаем правой кнопкой, выбраем "Поиск ссылок на объект"
1С думает и выдаёт что-то вроде этого

== Пример из ЕРП. Связь "ЗаказКлиента" и "РеализацияТоваровУслуг"

Документ.РеализацияТоваровУслуг.Реквизит.ЗаказКлиента.Тип
Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.Товары.Реквизит.ЗаказКлиента.Тип
Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.ВидыЗапасов.Реквизит.ЗаказКлиента.Тип
Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.ЭтапыГрафикаОплаты.Реквизит.Заказ.Тип

==
Смотрим думаем.
36 dlogius
 
14.08.24
09:54
(35) Искал.
Я, конечно, не супер-пупер гуру программирования, но опыт 15 летний в работе с БД имею. 3+ года с 1С.
Простейшие вещи я понимаю.
Нет в этих документах связывающих реквизитов. Вообще в данной мне конфигурации нет много чего привычного.
Кривой способ решить мою задачу я знаю. Думал кто-то предложит более изящное решение. 😒
37 АгентБезопасной Нацио
 
14.08.24
09:58
(36) >Искал
И что нашел?
38 maxab72
 
14.08.24
10:01
"Нет в этих документах связывающих реквизитов" А как тогда они связаны в критерии отбора? По какому полю?
39 Мультук
 
14.08.24
10:05
(36)

>>но опыт 15 летний в работе с БД имею. 3+ года с 1С.
Да хоть член партии с 1905 года


>> Нет в этих документах связывающих реквизитов
Тогда как работает КритерийОтбора.СвязанныеДокументы(&Док) ?
Имхо он по другому никак работать не умеет.


Иногда {нехорошие люди} создают РТУ и засовывают ссылку на созданные РТУ в "Заявка".
В реквизит документа "Заявка" или в какую-нибудь его таб.часть.
40 АгентБезопасной Нацио
 
14.08.24
10:19
(39) Рабинович, вы член партии? - нееет, я ее мозг!©
(36) вот описание приннципов рабоы критерия отбора: https://infostart.ru/1c/articles/401743/
так что вы или не видите, или не понимаете, или врете...
позовите программиста!©.
41 GANR
 
14.08.24
10:32
(3) Как правило - зло, но это - исключение. В 1С, к сожалению, не сделали рекурсивные запросы, насколько мне известно.

Иногда лучше запрос в цикле, чем в огромную таблицу значений или выборку выгружать все данные какие только есть, а это порой миллионы строк и в ней всё перебирать. Из двух зол выбираем меньшее.
42 maxab72
 
14.08.24
10:43
(39) "В реквизит документа "Заявка" или в какую-нибудь его таб.часть." Но это ведь и есть связь между документами через реквизит. Мало ли что связь типа один-один, а не один-много.  А в (36) утверждается, что вообще нет связывающих реквизитов.
43 Stepashkin
 
14.08.24
11:15
(41) Ну это когда нужно быстро сделать неэффективно с точки зрения производительности. Я вас понимаю. Переделывал я однажды процедуру в которой в цикле был запрос. Замерял производительность. Вынос запроса из цикла оказался быстрее, даже несмотря на 4000 строк, из которых делалась выборка.
44 Stepashkin
 
14.08.24
11:16
(40) "Рабинович, вы член партии? - нееет, я ее мозг!©" 👍
45 dlogius
 
14.08.24
11:51
(40) "вот описание приннципов рабоы критерия отбора: https://infostart.ru/1c/articles/401743/"
Спасибо.
46 dlogius
 
14.08.24
11:57
"Особенностью (преимуществом) критерия отбора является то, что он может строиться в том числе по реквизирам табличных частей. Таким образом мы можем очень просто настроить отбор так, чтобы в его результат попадали лишь те документы, в табличной части которых есть интересующий нас элемент."

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

Значит для моей задачи критерииОтбора не нужны.
47 Мимохожий Однако
 
14.08.24
12:17
(28) Подозреваю, что ты не заглядывал в эту обработку
48 АгентБезопасной Нацио
 
14.08.24
13:09
(46) ч.т.д.©
49 Ненавижу 1С
 
15.08.24
06:50
(46) ну наконец-то ты включил мозг