|
v7: внешние ключи | ☑ | ||
---|---|---|---|---|
0
vmgvmg
24.10.14
✎
16:30
|
Есть документ новый1 с реквизитами новый1 и новый2.
Введено два документа новый1 (без табл частей) № док |новый1 | новый2 -------------------------------- 1 |два | 2 2 |один | 1 Есть документ новый2 с реквизитами новый1 и новый2. Введено два документа новый2 (без табл частей) № док |новый1 | новый2 -------------------------------- 1 |1 | one 2 |2 | two Запрос "//{{ЗАПРОС(Сформировать) |Период с (НачМесяца(ТекущаяДата())); |Без итогов; |новый11 = Документ.Новый1.новый1; |новый12 = Документ.Новый1.новый2; |новый21 = Документ.Новый2.новый1; |новый22 = Документ.Новый2.новый2; |Группировка новый11; |Группировка новый12; |Группировка новый21; |Группировка новый22; |"//}}ЗАПРОС Даёт новый11 |новый11|новый21|новый22 ------------------------------------------------ | |1 |one | |2 |two два |2 | | один |1 | | Я хочу получить выводить два документа параллельно чтобы, наложив условие новый11 = новый21, получить новый11 |новый11|новый21|новый22 ------------------------------------------------ два |2 |2 |two один |1 |1 |one То есть как сымитировать внешние ключи в sql-базах. select Новый1.новый1 as новый11, Новый1.новый2 as новый12, Новый2.новый1 as новый21, Новый2.новый2 as новый22 from новый1, новый2 where Новый1.новый2=Новый2.новый1 Сергей Астров |
|||
1
akaBrr
24.10.14
✎
16:45
|
Вы специально всех запутать хотели или у вас это само получилось?
|
|||
2
vmgvmg
24.10.14
✎
17:26
|
вопрос сформулирован предельно чётко
|
|||
3
vmgvmg
24.10.14
✎
17:32
|
это можно сделать только с помощью обычного запроса без дополнительного программирования и без привлечения прямых запросов?
|
|||
4
Herby
24.10.14
✎
17:46
|
(3) без дополнительного кода не получится
|
|||
5
akaBrr
24.10.14
✎
17:50
|
МойДокумент = Документ.Новый1,Документ.Новый2;
СовпРеквизит = Документ.Новый1.Реквизит1,Документ.Новый2.Реквизит2; Док1Рек2 = Документ.Новый1.Реквизит2; Док2Рек1 = Документ.Новый2.Реквизит1; Группировка МойДокумент; Группировка СовпРеквизит; а вот так? |
|||
6
vmgvmg
24.10.14
✎
18:08
|
ошибки в запросе!
|
|||
7
vmgvmg
24.10.14
✎
18:14
|
МойДокумент = Документ.Новый1,Документ.Новый2
разные типы |
|||
8
Chameleon1980
24.10.14
✎
18:15
|
пишем может что за ошибки или в битву экстрасенсов записываем народ?
|
|||
9
vmgvmg
24.10.14
✎
18:18
|
вот я и пишу
МойДокумент = Документ.Новый1,Документ.Новый2 разные типы |
|||
10
vmgvmg
24.10.14
✎
18:20
|
и реквизитов Реквизит1 Реквизит2 у документов нет
|
|||
11
silent person
24.10.14
✎
18:20
|
а если будет 3 документа в которых реквизиты новый11 и новый21 будут иметь одинаковое значение то какой вид должна принять таблица ?
|
|||
12
silent person
24.10.14
✎
18:21
|
(10) ты думаешь тебе тут готовый код по твоей каше из (0) напишут ? только попытаются дать правильное направление.
|
|||
13
vmgvmg
24.10.14
✎
18:26
|
3 документа новый1
№ док |новый1 | новый2 -------------------------------- 1 |два | 2 2 |один | 1 3 |три | 2 хочу получить новый11 |новый11|новый21|новый22 ------------------------------------------------ два |2 |2 |two один |1 |1 |one три |2 |2 |two |
|||
14
Chai Nic
24.10.14
✎
18:29
|
(3) Вполне конкретный ответ - "обычные запросы" в семерке юзают исключительно извращенцы, коих по определению меньшинство. Если же ты еще только выбираешь ориентацию - обрати внимание на "прямые запросы" внешней компоненты 1с++.
|
|||
15
vmgvmg
24.10.14
✎
18:32
|
вопрос концептуальный!
Конструкция типа select .. from новый1, новый2 where Новый1.новый2=Новый2.новый1 это работа с внешними ключами а в 1с 7.7 как? без программирования и прямых запросов |
|||
16
vmgvmg
24.10.14
✎
18:33
|
лихо
99% программеров в 1с 7 записаны в извращенцы |
|||
17
Chai Nic
24.10.14
✎
18:34
|
"Обычные запросы" в семерке использовать НЕ ПРИНЯТО, неужели не понятно.. никто вам тут не ответит.. в семерке или юзают выборки, или же прямые запросы..
|
|||
18
vmgvmg
24.10.14
✎
18:35
|
извращенцы те, кто использует прямые запросы там, где без них можно обойьтись и быстродействие некритично
|
|||
19
Chai Nic
24.10.14
✎
18:35
|
+(17) Никому не интересно разбираться с этим экспериментальным творением 1с под названием "встроенный запрос", когда нужного результата можно достичь более прямыми средствами..
|
|||
20
vmgvmg
24.10.14
✎
18:36
|
99% обоаботок на Инфостарте написаны без прямых запросов
|
|||
21
Chai Nic
24.10.14
✎
18:36
|
(18) Угу, ага.. Видел я как эти ваши стандартные запросы работают.. перекачивают таблицы с сервера в каталог временных файлов и потом их соединяют..
|
|||
22
Chai Nic
24.10.14
✎
18:37
|
(21) Причем, работа с каталогов временных файлов ведется в синхронном режиме - с отключенным кэшированием записи.. специально для тех, кто любит слушать хруст диска.. Разные извращенцы бывают. Да.
|
|||
23
vmgvmg
24.10.14
✎
18:39
|
хруст диска из серверной не слышно
|
|||
24
Chai Nic
24.10.14
✎
18:40
|
(23) Ну да, ну да.. зато иопсы с отключенным кэшированием на порядок тормознее, чем со включенным.. и самое главное - зачем?
|
|||
25
vmgvmg
24.10.14
✎
18:41
|
а если у меня железо и сетка - супер, то зачем мне усложнять программу?
|
|||
26
Chai Nic
24.10.14
✎
18:41
|
(24) Ну на самом деле... обработка молча работает, считает что-то.. а тут - деловито хрустит диском, любой заказчик поймет - "дело то серьезное"..
|
|||
27
Chai Nic
24.10.14
✎
18:42
|
(25) Нет ничего проще прямых запросов.
|
|||
28
vmgvmg
24.10.14
✎
18:44
|
согдасен, чо они удобны при исползоании конструктора и sqlite
|
|||
29
Chai Nic
24.10.14
✎
18:51
|
(28) Главное что они реализованы максимально прямо, в отличие от.
|
|||
30
akaBrr
24.10.14
✎
21:50
|
МойДокумент = Документ.Новый1.ТекущийДокумент,Документ.Новый2.ТекущийДокумент;
|
|||
31
vmgvmg
24.10.14
✎
23:55
|
пустой результат
|
|||
32
vmgvmg
25.10.14
✎
00:11
|
|МойДокумент = Документ.Новый1.ТекущийДокумент, Документ.Новый2.ТекущийДокумент;
|совпРекв = Документ.Новый1.новый2, Документ.Новый2.новый1; |Группировка МойДокумент; |Группировка совпРекв; |
|||
33
vmgvmg
25.10.14
✎
17:38
|
ЗагрузитьВнешнююКомпоненту("1sqlite.dll");
базаДанных = СоздатьОбъект("SQLiteBase"); базаДанных.Открыть(":memory:"); |
|||
34
vmgvmg
25.10.14
✎
17:38
|
запрос = базаДанных.НовыйЗапрос();
запрос.ВыполнитьЗапрос("create virtual table Новый1 using dbeng(Документ.Новый1)"); запрос.ВыполнитьЗапрос("create virtual table Новый2 using dbeng(Документ.Новый2)"); текст="SELECT |Новый1.Новый1, Новый2.Новый2 |FROM Новый1,Новый2 |WHERE Новый1.Новый2 = Новый2.Новый1 |"; тз=запрос.ВыполнитьЗапрос(текст); тз.ВыбратьСтроку(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |