|
Запрос. Связанные документы | ☑ | ||
---|---|---|---|---|
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
|
Интервью «Бум в доходах: какие 1Сники стоят 500к+?» состоялся: смотрим запись! Вот запишись к нему.
|
|||
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) ну наконец-то ты включил мозг
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |