|
v7: 1С++ запрос | ☑ | ||
---|---|---|---|---|
0
bananan
08.01.13
✎
12:47
|
Добрый день! Нужна помощь в переделке запроса.
Запрос Такой: ТекстЗапроса = " |SELECT | Клиент [Клиент $Справочник.Клиенты] |,Агент [Агент $Справочник.Агент] |,Заказ [Заказ $Документ] |,НачОст |,Приход |,Расход |,КонОст |,ПрошлоДней |,Долг |,Переплата |,Отсрочка |,CASE WHEN ПрошлоДней > Отсрочка THEN ROUND((ПрошлоДней-Отсрочка) * (:процент) * Долг / 100,2) ELSE 0 END as Пеня | |FROM |( |SELECT | | * |,CASE WHEN КонОст<0 THEN КонОст ELSE 0 END Долг |,CASE WHEN КонОст>0 THEN КонОст ELSE 0 END Переплата |,CASE WHEN $ПоследнееЗначение.Клиенты.СрокКредита(Клиент, :ТекДата) = 0 | THEN :Дней | ELSE $ПоследнееЗначение.Клиенты.СрокКредита(Клиент, :ТекДата) END Отсрочка | FROM |( |SELECT | Журнал.IDDOCDEF |, (DATEDIFF(day,LEFT(Журнал.DATE_TIME_IDDOC, 8),:Дата2)) AS ПрошлоДней |, CASE WHEN Журнал.IDDOCDEF = $ВидДокумента.РасходнаяНакладная"+?(ф2=1,"Н","")+" THEN $РН.Агент ELSE $Ост.Агент END Агент |, ВЗОст.Клиент Клиент |, ВЗОст.Заказ Заказ |, ВЗОст.СуммаОснНачальныйОстаток НачОст |, ВЗОст.СуммаОснПриход Приход |, ВЗОст.СуммаОснРасход Расход |, ВЗОст.СуммаОснКонечныйОстаток as КонОст | FROM $РегистрОстаткиОбороты.Взаиморасчеты"+?(ф2=1,"Нал","")+"(:Дата1,:Дата2~,,Движения,,,(Клиент, Заказ),СуммаОсн) AS ВЗОст | LEFT JOIN _1SJOURN AS Журнал ON Журнал.IDDOC = RIGHT(ВЗОст.Заказ,9) | LEFT JOIN $Документ.РасходнаяНакладная"+?(ф2=1,"Н","")+" AS РН ON Журнал.IDDOC = РН.IDDOC | LEFT JOIN $Документ.Остатки"+?(ф2=1,"Нал","Взаиморасчетов")+" AS Ост ON Ост.IDDOC = Журнал.IDDOC | WHERE Журнал.IDDOCDEF IN ($ВидДокумента.РасходнаяНакладная"+?(ф2=1,"Н","")+",$ВидДокумента.Остатки"+?(ф2=1,"Нал","Взаиморасчетов")+") |) T1 |) T2 | LEFT JOIN $Справочник.Клиенты AS Клиенты ON RIGHT(Клиент,9) = Клиенты.ID | Так вот в переработаном запросе надо добавить поле В том числе и в это поле скидать данные по таких документах: 1. ПерезачетБартер 2. ВозвратнаяНакладная 3. ПерезачетБартерНал 4. ВозвратнаяНакладнаяН Насколько я понимаю - тут ничего сложного вроде и нет, но, уже с час смотрю на эту задачу, как баран на новые ворота. Где и как вставить условие по данным документа? Честно, говоря, - ничего не понимаю. :( |
|||
1
Азат
08.01.13
✎
12:52
|
CASE WHEN Журнал.IDDOCDEF = $ВидДокумента.ТВОЙВИДДОКУМЕНТА"+?(ф2=1,"Н","")+" THEN $РН.ТВОЕПОЛЕ ELSE $Ост.ДРУГОЕПОЛЕ END Агент
добавляй такие строки и будет тебе щастье |
|||
2
Mikeware
08.01.13
✎
12:53
|
:-)
|
|||
3
bananan
08.01.13
✎
12:58
|
(1) Добвлять, насколько я понимаю, во второй SELECT?
|
|||
4
Азат
08.01.13
✎
12:59
|
(3) а потом ссылку еще и в первый... ты чо, симен сименыч
|
|||
5
bananan
08.01.13
✎
13:01
|
(4) Ссылк. А ссылку - это как?
Рябата, я с 1С++ третий день работаю. Да и в SQL познания - желают лучшего :( |
|||
6
Mikeware
08.01.13
✎
13:01
|
(4) это называется "это же несложно - сделайте за меня"©
|
|||
7
bananan
08.01.13
✎
13:03
|
(6) Не правда!
|
|||
8
Mikeware
08.01.13
✎
13:03
|
(5) ссылку на документацию тебе дали 24 декабря - 2 недели назад.
|
|||
9
bananan
08.01.13
✎
13:14
|
Да докуметацию я читаю..
(4) Я понрял что надо ссылку вставлять в первй оператор SELECT |
|||
10
Азат
08.01.13
✎
13:16
|
(9) идешь к любому терминалу киви, кидаешь 500 рублей на кошелек 9875811760 и я за тебя это поле добавлю
|
|||
11
bananan
08.01.13
✎
13:27
|
(10) В Украине - гривни, да и терминалов киви нет
|
|||
12
Азат
08.01.13
✎
13:33
|
(11) ну и мучайся
|
|||
13
bananan
08.01.13
✎
13:35
|
(12) Спасбо за понимание и поддержку :)
|
|||
14
КонецЦикла
08.01.13
✎
13:47
|
Добавлять во все селекты по аналогии
Что такое "скидать данные таких документах" не совсем понятно, скорее всего во внутреннем запросе нужно к вирт. таблице добавить соединение с документами (по типу тех которые уже есть) |
|||
15
bananan
08.01.13
✎
13:53
|
(14) Какае имеено данные нужны я и сам тоолком не понял - уточню после обеда.
А пробывал так: |SELECT | Клиент [Клиент $Справочник.Клиенты] |,Агент [Агент $Справочник.Агент] |,Заказ [Заказ $Документ] |,НачОст |,Приход |,Расход |,КонОст |,ПрошлоДней |,Долг |,Переплата |,Отсрочка |,CASE WHEN ПрошлоДней > Отсрочка THEN ROUND((ПрошлоДней-Отсрочка) * (:процент) * Долг / 100,2) ELSE 0 END as Пеня | |FROM |( |SELECT | | * |,CASE WHEN КонОст<0 THEN КонОст ELSE 0 END Долг |,CASE WHEN КонОст>0 THEN КонОст ELSE 0 END Переплата |,CASE WHEN $ПоследнееЗначение.Клиенты.СрокКредита(Клиент, :ТекДата) = 0 | THEN :Дней | ELSE $ПоследнееЗначение.Клиенты.СрокКредита(Клиент, :ТекДата) END Отсрочка | FROM |( |SELECT | Журнал.IDDOCDEF |, (DATEDIFF(day,LEFT(Журнал.DATE_TIME_IDDOC, 8),:Дата2)) AS ПрошлоДней |, CASE WHEN Журнал.IDDOCDEF = $ВидДокумента.РасходнаяНакладная"+?(ф2=1,"Н","")+" THEN $РН.Агент ELSE $Ост.Агент END Агент |, CASE WHEN Журнал.IDDOCDEF = $ВидДокумента.ПерезачетБартер"+?(ф2=1,"Н","")+" THEN $РН.Агент ELSE $Ост.Агент END Агент |, ВЗОст.Клиент Клиент |, ВЗОст.Заказ Заказ |, ВЗОст.СуммаОснНачальныйОстаток НачОст |, ВЗОст.СуммаОснПриход Приход |, ВЗОст.СуммаОснРасход Расход |, ВЗОст.СуммаОснКонечныйОстаток as КонОст | FROM $РегистрОстаткиОбороты.Взаиморасчеты"+?(ф2=1,"Нал","")+"(:Дата1,:Дата2~,,Движения,,,(Клиент, Заказ),СуммаОсн) AS ВЗОст | LEFT JOIN _1SJOURN AS Журнал ON Журнал.IDDOC = RIGHT(ВЗОст.Заказ,9) | LEFT JOIN $Документ.РасходнаяНакладная"+?(ф2=1,"Н","")+" AS РН ON Журнал.IDDOC = РН.IDDOC | LEFT JOIN $Документ.Остатки"+?(ф2=1,"Нал","Взаиморасчетов")+" AS Ост ON Ост.IDDOC = Журнал.IDDOC | WHERE Журнал.IDDOCDEF IN ($ВидДокумента.РасходнаяНакладная"+?(ф2=1,"Н","")+",$ВидДокумента.Остатки"+?(ф2=1,"Нал","Взаиморасчетов")+") |) T1 |) T2 | T3 | LEFT JOIN $Справочник.Клиенты AS Клиенты ON RIGHT(Клиент,9) = Клиенты.ID | Так ругается: Line 101: Incorrect syntax near 'T3'. |
|||
16
КонецЦикла
08.01.13
✎
13:54
|
(15) Пилять, ну так не берись за работу пока не знаешь что делать
И зачем создавать ветку? чтобы мистяне были на низком старте до обеда? |
|||
17
bananan
08.01.13
✎
13:55
|
+(15) Еще, честно говоря, я слабо понимаю как работает исходный запрос. Может кто поможет и расскажет: как он работает?
|
|||
18
bananan
08.01.13
✎
13:55
|
(16) Так вот и прошу подсказки...
|
|||
19
Mikeware
08.01.13
✎
13:56
|
(15) как бы логично
|
|||
20
Mikeware
08.01.13
✎
13:57
|
(17) ну и спроси у того, кто его писал....
|
|||
21
КонецЦикла
08.01.13
✎
13:57
|
Откуда взялось T3?
Делай соединения по типу LEFT JOIN _1SJOURN AS Журнал ON Журнал.IDDOC = RIGHT(ВЗОст.Заказ,9) И добавляй поля в селект по аналогии с |,CASE WHEN КонОст<0 THEN КонОст ELSE 0 END Долг |
|||
22
КонецЦикла
08.01.13
✎
13:58
|
Проще, наверное, позвать кого-то или тут оформить как заявку на удаленку
|
|||
23
bananan
08.01.13
✎
14:05
|
(20) Нет того, кто писал... Теперь он далеко от сюда.
(21) Сделать соединение по типу и добавлять поля по аналогии.. А можно подробнее и конкретно к данному запросу? |
|||
24
bananan
08.01.13
✎
14:10
|
Если я во второй селект вставляю:
|, CASE WHEN Журнал.IDDOCDEF = $ВидДокумента.ПерезачетБартер"+?(ф2=1,"Н","")+" THEN $РН.Агент ELSE $Ост.Агент END Агент То ругается: The column 'Агент' was specified multiple times for 'T1'. |
|||
25
Mikeware
08.01.13
✎
14:15
|
(24) она не ругается, а сообщает об ошибке. вполне нормально сообщает. остается две вещи:
1. прочитать 2. понять прочитанное |
|||
26
bananan
08.01.13
✎
14:21
|
(25) Колонка"Агент" была указана несколько раз....
А что мне делать, чтобы не было несколько раз? Мне надо эту колонку (поле) просмтреть в 5 разных видах документов! |
|||
27
Mikeware
08.01.13
✎
14:22
|
(26) я не возражаю...
а для начала советую почитать таки документацию. |
|||
28
КонецЦикла
08.01.13
✎
14:25
|
Можно тупо сделать соединения с шапками документов во вложенном запросе
В том запросе который повыше сделать через case обработку полей (типа вытащить в самый верхний запрос одно поле вместо четырех) |
|||
29
bananan
08.01.13
✎
14:48
|
(27) Документацию читаю по 1С, 1С++, SQL
(28) соединение с шапками документов - сделать через JOIN? case обработку полей (типа вытащить в самый верхний запрос одно поле вместо четырех) - а это совсем не понял как |
|||
30
Mikeware
08.01.13
✎
15:00
|
(29) выбор когда Журнал.иддокдеф=$ВидДокумента.ПервыйДокумент Тогда $ПервыйДокумент.Агент Когда Журнал.иддокдеф=$ВидДокумента.Второйокумент Тогда $ВторойДокумент.Агент
когда Журнал.иддокдеф=$ВидДокумента.ТретийДокумент Тогда $ТретийДокумент.Агент иначе $ЧетвертыйДокумент.агент конец |
|||
31
bananan
08.01.13
✎
15:02
|
(30) Это case?
|
|||
32
Азат
08.01.13
✎
15:06
|
(31) lingvo.yandex.ru, translate.google.com
|
|||
33
bananan
08.01.13
✎
15:08
|
(32) Еще раз ОГРОМНОЕ спасибо за полезные подсказки
|
|||
34
bananan
08.01.13
✎
15:25
|
Хорошо. с предыдущим запросом вроде как разобрался. Но, теперь, нужда созхдать запрос с нуля... Тут я уж точно без помощи не справлюсь.
Задача такая - по документах ВыплатаЗП и Справочнику.Сотрудники - "вынуть" всю инфу о сотруднике (из справочника) и его зарплате за какой-то месяц 1. В форме для этого нужно задать - выбор месяца. - как конкретную дату выбрать знаю; месяц - не знаю 2. В запросе пробывал так: |SELECT | Жур.iddoc as [Док $Документ] | ,Жур.iddocdef as [Док_вид $ВидДокумента] | Сотр [Сотрудник $Справочник.Сотрудники] | FROM $ДокументСтроки.ВыплатаЗП as ДокЗП (nolock)"; Выдает: : Incorrect syntax near 'Сотр'. Пожалйста, подскажите!! |
|||
35
Mikeware
08.01.13
✎
15:41
|
(34) неправильный синаксис возле "Сотр"
а когда исправишь синтаксис - выйдет ошибка "Неизвестное имя "Сотр" |
|||
36
bananan
08.01.13
✎
15:54
|
(35) Неправильный синтаксис - нестрашно - разберусь
А вот с "Неизвестное имя "Сотр" - что делать? |
|||
37
Mikeware
08.01.13
✎
16:05
|
(36) сделать известным.
|
|||
38
viktor_vv
08.01.13
✎
16:07
|
(36) Ну как бы нету такого поля в твоих таблицах.
В приведенном примере оно и на Жур должно ругаться, если это весь текст запроса. Из какой таблицы ты это поле выдернуть хочешь? Наверное надо $ДокЗП.Сотр |
|||
39
Mikeware
08.01.13
✎
16:10
|
(38) "Стоит негр на улице и пьет молоко. Мимо проходит белый, останавливается перед ним, смотрит так пристально и говорит:
- Не-е-е, не поможет..." © |
|||
40
bananan
08.01.13
✎
16:12
|
(38) Поле Сотр - это Элемент справочника Сотрудники ну и строка из Документа ВыплатаЗП
Сделал $ДокЗП.Сотр - ошибка: Incorrect syntax near '?????'. |
|||
41
viktor_vv
08.01.13
✎
16:13
|
(39) :)).
|
|||
42
viktor_vv
08.01.13
✎
16:14
|
(40) Поле Сотр в какой таблице ???
|
|||
43
viktor_vv
08.01.13
✎
16:15
|
(42)+ В табличной части какого-то документа, в шапке какого-то документа, реквизит какого-то справочника ?
|
|||
44
bananan
08.01.13
✎
16:16
|
(43) В табличной части доумента ВыплатаЗП, реквизит - справочника Сотрудники
|
|||
45
viktor_vv
08.01.13
✎
16:18
|
Если прваильно помню, ты укрбухию мучаешь. В табчасти "Выплата ЗП" там реквизит "Сотрудник". Тогда
|SELECT | $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники] | FROM $ДокументСтроки.ВыплатаЗП as ДокЗП (nolock)"; |
|||
46
bananan
08.01.13
✎
16:22
|
(45) Да, 1С Бухгалтерия для Украины
Попробывал код, что ты написал - ошибка: eta name parser error: поле таблицы не найдено "$ДокЗП.Сотрудник" |
|||
47
bananan
08.01.13
✎
16:23
|
+(46) А где можно узнать какие имена парсер дает документам?
|
|||
48
viktor_vv
08.01.13
✎
16:26
|
(47) Открыть конфигуратор, там русским по черному написаны идентификаторы реквизитов, а парсер уже подставляет реальные имена таблиц в базе.
(46) Какая-то у тебя неправильная бухия, в моей есть такой реквизит. |
|||
49
Patrio_
O_Muerte 08.01.13
✎
16:29
|
(8)Совсем с ума сошел, тут ведь праздники были! Когда б он занимался делом?
|
|||
50
viktor_vv
08.01.13
✎
16:29
|
(48)* подставляет реальные имена таблиц и полей.
|
|||
51
bananan
08.01.13
✎
16:29
|
(48) Документ называется ВыплатаЗП
Идентификатор: ВыплатаЗП Синоним: ВыплатаЗП Комментарий: Выплата заработной платы |
|||
52
viktor_vv
08.01.13
✎
16:30
|
(48)* праздники сказываются :), русским по белому.
|
|||
53
viktor_vv
08.01.13
✎
16:30
|
(51) Теперь раскрываем ветку ТабличнаяЧасть и что там ?
|
|||
54
bananan
08.01.13
✎
16:31
|
(53) Сотр
|
|||
55
viktor_vv
08.01.13
✎
16:33
|
(54) Это у тебя что-то очень древнее.
|SELECT | $ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники] | FROM $ДокументСтроки.ВыплатаЗП as ДокЗП (nolock)"; |
|||
56
bananan
08.01.13
✎
16:33
|
Ясно, теперь понял в чем фигоня. А по поводу парсера... Откуда мили как ... ну не знаю как точно сформулировать..
Откуда ты взял $ДокЗП? |
|||
57
viktor_vv
08.01.13
✎
16:35
|
(56) Строчка
FROM $ДокументСтроки.ВыплатаЗП as ДокЗП (nolock)"; ничего не навевает ? |
|||
58
bananan
08.01.13
✎
16:35
|
(57) Пардон; туплю
|
|||
59
viktor_vv
08.01.13
✎
16:36
|
И таки лучше, хотя бы по диагонали, документацию почитать.
|
|||
60
bananan
08.01.13
✎
16:37
|
А теперь нужно делать подзапрос - чтобы выбрать данные о Сотр из таблицной части документа - из справочника Сотрудники?
|
|||
61
bananan
08.01.13
✎
16:38
|
Через inner join?
|
|||
62
viktor_vv
08.01.13
✎
16:39
|
(60) Левое соединение со справочником Сотрудники по реквизиту Сотр и ID справочника.
|
|||
63
viktor_vv
08.01.13
✎
16:39
|
(62)+ Реквизиту Сотр табличной части дока.
|
|||
64
bananan
08.01.13
✎
16:39
|
(62) Спасибо, попробую
|
|||
65
Mikeware
08.01.13
✎
16:57
|
(62) Зачем левое, если у него сотрудник точно есть?
|
|||
66
bananan
08.01.13
✎
17:05
|
Я пока еще не очень в SQL-е, короче написла таой текст запроса:
ТекстЗапроса = " |SELECT | $ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники] | JOIN ( | SELECT | $ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники] | FROM $Справочник.Сотрудники | | FROM $ДокументСтроки.ВыплатаЗП as ДокЗП (nolock)"; Выдает ошибку:Server]Incorrect syntax near the keyword 'JOIN' |
|||
67
Mikeware
08.01.13
✎
17:07
|
(66) абсолютно верно выдает.
|
|||
68
Mikeware
08.01.13
✎
17:08
|
+(67) я б за такое еще б и в морду дал на его месте...
|
|||
69
viktor_vv
08.01.13
✎
17:10
|
(65) Ну это да.
Привык inner как фильтр использовать в основном. |
|||
70
bananan
08.01.13
✎
17:10
|
(67-69) А как написать?
|
|||
71
Mikeware
08.01.13
✎
17:14
|
(70) как написано в учебниках по языку
|
|||
72
viktor_vv
08.01.13
✎
17:16
|
ТекстЗапроса = "
|SELECT |$ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники], |СпрСотр.ИдентификаторНеПереодическогоРеквизитаСправочника [Алиас $Типизация] |FROM | |$ДокументСтроки.ВыплатаЗП as ДокЗП (nolock) | inner JOIN $Справочник.Сотрудники as СпрСотр (nolock) | on $ДокЗП.Сотр = СпрСотр.ID |"; Извини, но больше я пас. Ты ж не читаешь нихрена. |
|||
73
viktor_vv
08.01.13
✎
17:17
|
(72)*
|$СпрСотр.ИдентификаторНеПереодическогоРеквизитаСправочника [Алиас $Типизация] |
|||
74
bananan
08.01.13
✎
17:17
|
(72) Да читаю... Спасибо и за то
|
|||
75
viktor_vv
08.01.13
✎
17:17
|
* Периодического.
|
|||
76
bananan
08.01.13
✎
17:18
|
(73) А какого именно реквизита?
|
|||
77
КонецЦикла
08.01.13
✎
17:19
|
(66) Скачай конструктор запросов by Berezdetsky
|
|||
78
bananan
08.01.13
✎
17:20
|
В справочнике Сотрудники - 14 Периодических реквизитов
|
|||
79
Mikeware
08.01.13
✎
17:23
|
(77) ну, конструктор тоже иногда ляпы дает. Плюс с виртуальными таблицами у него косячок - параметры не ставит, да и лишние соединения пихает.
Лучше руками научиться... |
|||
80
bananan
08.01.13
✎
17:25
|
(77)(79) Так какой именно периодический реквизит справочника надо указать?
|
|||
81
viktor_vv
08.01.13
✎
17:26
|
(76) То есть ты у МЕНЯ спрашиваешь, какие данные ТЫ хочешь получить из справочника сотрудники ?
Пожалуй у меня не настолько развита telepat.dll . |
|||
82
bananan
08.01.13
✎
17:26
|
(81) Понял
|
|||
83
Mikeware
08.01.13
✎
17:27
|
(81) не обновлял давно? :-)))
|
|||
84
КонецЦикла
08.01.13
✎
17:28
|
(79) 90% забот автора уберет
|
|||
85
viktor_vv
08.01.13
✎
17:29
|
(83) Да че-то закрутился, пропустил пару релизов :)).
|
|||
86
bananan
08.01.13
✎
17:31
|
Мне нужны многие поля из справочника вот, например текст запроса:
|SELECT |$ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники], |СпрСотр.ИНН [Алиас $Типизация] |FROM | |$ДокументСтроки.ВыплатаЗП as ДокЗП (nolock) | inner JOIN $Справочник.Сотрудники as СпрСотр (nolock) | on $ДокЗП.Сотр = СпрСотр.ID |"; Выдает ошибку: Invalid column name 'ИНН'. А в Справочнике Сотрудники эсть реквизит ИНН! Что здесь не так? |
|||
87
bananan
08.01.13
✎
17:32
|
* И ято значит [Алиас $Типизация]?
|
|||
88
КонецЦикла
08.01.13
✎
17:32
|
$СпрСотр.ИНН
[Алиас $Типизация] - убрать нах |
|||
89
КонецЦикла
08.01.13
✎
17:33
|
До чего ты туп блин... извини конечно
|
|||
90
bananan
08.01.13
✎
17:34
|
(89) извинятся не надо - бывает и туплю
|
|||
91
viktor_vv
08.01.13
✎
17:35
|
(86) Я ж в (73) специально исправил.
|
|||
92
bananan
08.01.13
✎
17:35
|
(880 Написал такой текст запроса:
|SELECT |$ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники], |СпрСотр.ИНН |FROM | |$ДокументСтроки.ВыплатаЗП as ДокЗП (nolock) | inner JOIN $Справочник.Сотрудники as СпрСотр (nolock) | on $ДокЗП.Сотр = СпрСотр.ID |"; Выдает ошибку: nvalid column name 'ИНН'. Реквищзит ИНН ТОЧНО есть в справочнике сотрудники!! |
|||
93
viktor_vv
08.01.13
✎
17:36
|
Для примитивных типов не надо типизировать.
|
|||
94
Mikeware
08.01.13
✎
17:37
|
(90) не "бывает", а "постоянно"
|
|||
95
Mikeware
08.01.13
✎
17:38
|
(93) почему бы и нет? правила приличия....
|
|||
96
bananan
08.01.13
✎
17:38
|
*(92) И откуда парсер или там SQL знает что такое СпрСотр?
|
|||
97
Mikeware
08.01.13
✎
17:39
|
финиш
|
|||
98
viktor_vv
08.01.13
✎
17:40
|
(95) Ну может быть, только придется писать, что такое типизация :)). Боюсь не осилю доступно.
|
|||
99
bananan
08.01.13
✎
17:40
|
(97) Mikeware - ты даешь самые "полезные" подсказки и советы
|
|||
100
bananan
08.01.13
✎
17:42
|
Сменил СпрСотр.ИНН на СпрСотр.Налоговая - так он и такого поля не видит: Invalid column name 'Налоговая'
|
|||
101
viktor_vv
08.01.13
✎
17:43
|
|SELECT
|$ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники], |$СпрСотр.ИНН |FROM | |$ДокументСтроки.ВыплатаЗП as ДокЗП (nolock) | inner JOIN $Справочник.Сотрудники as СпрСотр (nolock) | on $ДокЗП.Сотр = СпрСотр.ID |"; Это чтобы было над чем пораскинуть. |
|||
102
КонецЦикла
08.01.13
✎
17:44
|
(92) Специально дразнишь?
Втыкай в (88) до просветления Это же вторая строка почти такая же как первая! Только строку или число необязательно типизировать, можно написать $СпрСотр.ИНН ИНН или $СпрСотр.ИНН МойИННДляОтчета |
|||
103
bananan
08.01.13
✎
17:55
|
(102) Так как в (101) - работает
|
|||
104
Mikeware
08.01.13
✎
17:56
|
(103) так там и написано без ошибок...
|
|||
105
bananan
08.01.13
✎
18:08
|
Вот такой текст запроса:
ТекстЗапроса = " |SELECT |$ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники], |$СпрСотр.ДатаРождения |FROM | |$ДокументСтроки.ВыплатаЗП as ДокЗП (nolock) | inner JOIN $Справочник.Сотрудники as СпрСотр (nolock) | on $ДокЗП.Сотр = СпрСотр.ID |"; В ТаблицуЗначений выводятся пустые строки, т.е. ничего в Таблице значений нет! Есть только две колонки: Сотрудник и sp2291 |
|||
106
bananan
08.01.13
✎
18:13
|
*(105) Почему запрос ничего не возвращает?
|
|||
107
viktor_vv
08.01.13
✎
18:14
|
(105) Документы такие в базе вообще есть ?
|
|||
108
ЧеловекДуши
08.01.13
✎
18:16
|
(106) inner JOIN - По гугли, что есть JOIN и с чем его едят ;)
|
|||
109
bananan
08.01.13
✎
18:16
|
(107) Я, кажется ошибся, окно таблицы значений появилось , а в нем нет никаких данных, но в строке сатуса 1С - "выполняется обработка"
|
|||
110
ЧеловекДуши
08.01.13
✎
18:18
|
(109)Беги... беги от туда :)
Или все же стоит быть трезвым ? ;) |
|||
111
viktor_vv
08.01.13
✎
18:19
|
(108) В данном слечае по барабану. Разве что удалили элементы справочника без контроля ссылочной целостности.
|
|||
112
bananan
08.01.13
✎
18:19
|
(110) В последний раз выпил немного вина - 15 ноября
|
|||
113
bananan
08.01.13
✎
18:23
|
(109) Да не ошибся я Сообщить(ТЗ.КоличествоСтрок()); выдает 0!
|
|||
114
bananan
08.01.13
✎
18:25
|
т.е. Такой код:
ТекстОшибки = ""; Если ФС.СуществуетФайл(ИмяФайлаXML) <> 1 Тогда ТекстОшибки = "Файл """ + ИмяФайлаXML + """ не найден!"; ИначеЕсли ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда ТекстОшибки = "Компонента v7plus.dll не найдена!"; КонецЕсли; Если ПустаяСтрока(ТекстОшибки) <> 1 Тогда Предупреждение(ТекстОшибки); Возврат; КонецЕсли; ТекстЗапроса = " |SELECT | $ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники], | $СпрСотр.ДатаРождения | ,$СпрСотр.РождГород |FROM |$ДокументСтроки.ВыплатаЗП as ДокЗП (nolock) | INNER JOIN $Справочник.Сотрудники as СпрСотр (nolock) | ON $ДокЗП.Сотр = СпрСотр.ID |"; Запр=СоздатьОбъект("ODBCRecordset"); Запр.УстановитьТекстовыйПараметр("НачДата", НачДата); Запр.УстановитьТекстовыйПараметр("КонДата", КонДата); ТЗ = Запр.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); Сообщить(ТЗ.КоличествоСтрок()); В таблицу значений ничего не попадает! |
|||
115
bananan
08.01.13
✎
18:27
|
а сообщить выдате 0
|
|||
116
viktor_vv
08.01.13
✎
18:34
|
Выполни
ДокЗП = СоздатьОбъект("Документ.ВыплатаЗП"); Если ДокЗП.ВыбратьДокументы() = 0 Тогда Сообщить("Н у нету в базе документов ""Выплата ЗП"""); Иначе Сообщить("Таки какая-то фигня в запросе."); КонецЕсли; |
|||
117
bananan
08.01.13
✎
18:38
|
(116) Блин, таки он выдал: Н у нету в базе документов "Выплата ЗП
|
|||
118
Mikeware
08.01.13
✎
18:59
|
:-)))
|
|||
119
sapphire
09.01.13
✎
04:14
|
(115) открой для себя UNIREPS & UNIPROC c ИТС...
|
|||
120
Mikeware
09.01.13
✎
05:46
|
(119) а смысл? еще 100500 веток учить его ими пользоваться?
зы. по-моем, бананан - это нечто типа wiki:Теорема_о_бесконечных_обезьянах |
|||
121
bananan
09.01.13
✎
12:27
|
(120) Дорогой, Mikeware вы тоже от обезьяны произошли, ибо каждый судит по себе.
А по поводу документа ВыплатаЗП... Тут я НЕ ПОНИМАЮ, потому что - когда запускаю программу и Открывааю журнал Зарплаты - там есть два типа документов: Начисление ЗП и... Выплата ЗП. Если текст запроса такой: |SELECT | $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники], | $СпрСотр.Имя AS Name | ,$СпрСотр.Отчество AS Отчество | ,$СпрСотр.Пол AS Пол | ,$СпрСотр.ДокСерия AS ДокСерия | ,$СпрСотр.ДокНомер AS ДокНомер | ,$СпрСотр.ДокКогдаВыдан AS ДоккогдаВыдан | ,$СпрСотр.ДокКемВыдан AS ДокКемВыдан | ,$СпрСотр.ДатаРождения AS ДатаРождения | ,$СпрСотр.РождГород AS РождГород | ,$СпрСотр.ФактАдрес AS ФактАдрес | ,$СпрСотр.ФактИндекс AS ФактИндекс | ,$СпрСотр.ДатаПриема AS ДатаПриема | ,$СпрСотр.ТелефонДом AS ТелефонДом | ,$СпрСотр.ТелефонРаб AS ТелефонРаб | ,$СпрСотр.КодПользователя AS КодПользователя |FROM |$ДокументСтроки.НачислениеЗП as ДокЗП (nolock) | INNER JOIN $Справочник.Сотрудники as СпрСотр (nolock) | ON $ДокЗП.Сотрудник = СпрСотр.ID Запрос работает нормально и выдает 10000 с лишним строк... Если текст запроса такой: |SELECT | $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники], | $СпрСотр.Имя AS Name | ,$СпрСотр.Отчество AS Отчество | ,$СпрСотр.Пол AS Пол | ,$СпрСотр.ДокСерия AS ДокСерия | ,$СпрСотр.ДокНомер AS ДокНомер | ,$СпрСотр.ДокКогдаВыдан AS ДоккогдаВыдан | ,$СпрСотр.ДокКемВыдан AS ДокКемВыдан | ,$СпрСотр.ДатаРождения AS ДатаРождения | ,$СпрСотр.РождГород AS РождГород | ,$СпрСотр.ФактАдрес AS ФактАдрес | ,$СпрСотр.ФактИндекс AS ФактИндекс | ,$СпрСотр.ДатаПриема AS ДатаПриема | ,$СпрСотр.ТелефонДом AS ТелефонДом | ,$СпрСотр.ТелефонРаб AS ТелефонРаб | ,$СпрСотр.КодПользователя AS КодПользователя |FROM |$ДокументСтроки.ВыплатаЗП as ДокЗП (nolock) | INNER JOIN $Справочник.Сотрудники as СпрСотр (nolock) | ON $ДокЗП.Сотрудник = СпрСотр.ID выдает ошибку: Meta name parser error: поле таблицы не найдено "$ДокЗП.Сотрудник" Где здесь обезьяна зарыта. увжаемый, Mikeware?? |
|||
122
Ёпрст
09.01.13
✎
12:32
|
(121) в табличной части документа ВыплатаЗП нет реквизита Сотрудник, и всего лишь
|
|||
123
sapphire
09.01.13
✎
12:36
|
(120) (122) Интересно, ТС вслепую запросы пишет?
т.е. глянуть дерево метаданных и посмотреть что и где лежит ему, видимо, религия не позволяет :) |
|||
124
Mikeware
09.01.13
✎
12:36
|
(122) Обезьяна зарыта в ДНК того, кто ищет поле Сотрудник в шапке документа ВыплатаЗП. Причем зарыта весьма неглубоко, ибо эта обезьяна упорно не читает документацию.
|
|||
125
bananan
09.01.13
✎
12:37
|
*(121) И еще вопрос, я формирую запрос - тот что приведен первым, выполняю: ТЗ = Запр.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ.ВыбратьСтроку(); И, я что-то не понимаю, но даю: Сообщить("ТЗ.Name= "+ТЗ.Name+"ТЗ.Отчество="+ТЗ.Отчество); В окне сообщений вижу: ТЗ.Name= ТЗ.Отчество= Я не так как нужно пытаюсь вызвать поле из таблицы значений? (122) Добрий день, Ёпрст4, да тут дело не в том, вчера ошибки не выдавал (после того, я видимо сделал правки в коде). Так вот, до этих правок в коде - ошибки не выдавал, но и... не выдавал никаких значений! К тому же, когда запустил такой код: ДокЗП = СоздатьОбъект("Документ.ВыплатаЗП"); Если ДокЗП.ВыбратьДокументы() = 0 Тогда Сообщить("Н у нету в базе документов ""Выплата ЗП"""); Иначе Сообщить("Таки какая-то фигня в запросе."); КонецЕсли; Он выдал.: Н у нету в базе документов ""Выплата ЗП"" Хотя если смотреть Журнал Зарплаты - Там документы ВыплатаЗП - есть и их там довольно много!!!! |
|||
126
Mikeware
09.01.13
✎
12:37
|
(123) контрол-цэ - контрол-вэ...
|
|||
127
Ёпрст
09.01.13
✎
12:40
|
(125) смотри ВыплатаЗПБ
|
|||
128
Ёпрст
09.01.13
✎
12:40
|
мот не тот вид документа смотришь в журнале своём
|
|||
129
sapphire
09.01.13
✎
12:40
|
(126) Надо кусок 1cpp сделать шароварным - т.е. ответил на ряд вопросов функционал доступен, нет - ПНХ.
|
|||
130
Ёпрст
09.01.13
✎
12:41
|
по-поводу (121)
у тебя есть Сотр, а не Сотрудник в ТЧ дока. |
|||
131
bananan
09.01.13
✎
12:42
|
Ну забыл я, что в ВыплатаЗП это поле назхывается Сотр.
Запрос: |SELECT | $ДокЗП.Сотр [Сотрудник $Справочник.Сотрудники], | $СпрСотр.Имя AS Name | ,$СпрСотр.Отчество AS Отчество | ,$СпрСотр.Пол AS Пол | ,$СпрСотр.ДокСерия AS ДокСерия | ,$СпрСотр.ДокНомер AS ДокНомер | ,$СпрСотр.ДокКогдаВыдан AS ДоккогдаВыдан | ,$СпрСотр.ДокКемВыдан AS ДокКемВыдан | ,$СпрСотр.ДатаРождения AS ДатаРождения | ,$СпрСотр.РождГород AS РождГород | ,$СпрСотр.ФактАдрес AS ФактАдрес | ,$СпрСотр.ФактИндекс AS ФактИндекс | ,$СпрСотр.ДатаПриема AS ДатаПриема | ,$СпрСотр.ТелефонДом AS ТелефонДом | ,$СпрСотр.ТелефонРаб AS ТелефонРаб | ,$СпрСотр.КодПользователя AS КодПользователя |FROM |$ДокументСтроки.ВыплатаЗП as ДокЗП (nolock) | INNER JOIN $Справочник.Сотрудники as СпрСотр (nolock) | ON $ДокЗП.Сотр = СпрСотр.ID Не выдает ничего!!! Почему:: (127) мне нужно в запросе ВыплатаЗП, а не ВыплатаЗПБ |
|||
132
Ёпрст
09.01.13
✎
12:44
|
(131) ну нет таких документов в базе и привет.
Смотри, какой еще документ имеет такой же синоним (это то, что ты в журнальчике своём видишь потом) |
|||
133
bananan
09.01.13
✎
12:47
|
(132) смотрю в конфигупаторе документ ВыплатаЗП:
Синоним: Выплата ЗП, что мне программа и показывает, а ЗАПРОС документов ВыплатаЗП НЕ ВИДИТ. Почему? |
|||
134
Mikeware
09.01.13
✎
12:48
|
(132) не, ну каково тебе (133)? :-)))
|
|||
135
Ёпрст
09.01.13
✎
12:49
|
(133) это же очевидно - Сотр в документе имеет тип НЕ
Справочник.Сотрудники. Вот при inner join у тебя и пусто |
|||
136
Ёпрст
09.01.13
✎
12:49
|
(134) :)
|
|||
137
Ёпрст
09.01.13
✎
12:50
|
у меня есть его md. мне проще
:) |
|||
138
bananan
09.01.13
✎
12:51
|
*(133) Ёпрст4 - как всегда прав. Документ ВыплатаЗПБ тоже имеет синоним Выплата ЗП!
еще один ну очень маленький вопрос. Как мне сообщить какую-то ячеку из таблицы значений? Такой код: Сообщить("ТЗ.Name= "+ТЗ.Name+"ТЗ.Отчество="+ТЗ.Отчество); Выдает: ТЗ.Name= ТЗ.Отчество= |
|||
139
Ёпрст
09.01.13
✎
12:57
|
ТЗ.ПолучитьСтрокуПоНомеру(1);//или какая там тебя строка интересует ?
|
|||
140
monsterZE
09.01.13
✎
12:58
|
выбратьСтроки
пока получитьСтроку()=1 цикл .. |
|||
141
Mikeware
09.01.13
✎
12:58
|
(138) или ВыбратьСтроку()
а вообще, вопрос уже за грань добра и зла... |
|||
142
sapphire
09.01.13
✎
12:59
|
(137) счастливый обладатель md-шника :D
|
|||
143
viktor_vv
09.01.13
✎
13:00
|
(137) Так ты читер :)).
|
|||
144
Mikeware
09.01.13
✎
13:02
|
(142) заветного эмдэшника :-)
|
|||
145
bananan
09.01.13
✎
13:03
|
Все большое спасибо! Отдельное спасибо Ёпрст4!
|
|||
146
КонецЦикла
09.01.13
✎
13:29
|
(137) :)
Подключись через МД и всоси в автора ЗНАНИЕ |
|||
147
Mikeware
09.01.13
✎
13:30
|
(146) автору надо не "всосать", а "вдуть"...
|
|||
148
sapphire
09.01.13
✎
13:33
|
(147) Он еще #ЗагрузитьИзФайла не освоил? :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |