|
v7: 1С++ | ☑ | ||
---|---|---|---|---|
0
bananan
24.01.13
✎
13:33
|
Все-таки читаю я документацию...
Вот сегодн запары по работе нет - решил хорошо ознакомится с документацией по 1С++. Так во написал я код такой: ТекстЗапроса = " |SELECT Сотрудник.Descr AS Наименование | ,Сотрудник.Code AS Код |FROM | $Справочник.Сотрудники AS Сотрудник | WHERE Сотрудник.Code = 1241;"; RS = СоздатьОбъект("ODBCRecordset"); RS.Отладка(1); ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); //ТЗ.ВыбратьСтроку(); Сообщить("ТЗ.Наименование-"+ТЗ.Наименование); В таблице значений показывает одного сотрудника (его фамилию в поле НАименование и код в поле Код. Все нормально.. но, почему код Сообщить("ТЗ.Наименование-"+ТЗ.Наименование); не выдает (сообщает) фамилию сотрудника? Данный вопрос - это потому что я изучаю документацию, он не относится ни к какому конкретному запросу.. |
|||
62
Ёпрст
24.01.13
✎
15:45
|
какие вы все мелочные
DROP DATABASE надоть |
|||
63
bananan
24.01.13
✎
15:59
|
Такой вопрос в справочнике поле - поле - перечисление, если там 0 - то женский пол иначе - мужской...
Как это для 1С++ написать? пробывал так: | CASE | WHEN $Сотрудник.Пол = 0 THEN Стать "Ж" | ELSE "Ч" Понятно ошибку выдает.. |
|||
64
Ёпрст
24.01.13
✎
16:01
|
(63) выкинуть case и типизировать к $Перечисление.Вид
|
|||
65
Mikeware
24.01.13
✎
16:01
|
(64)читай про $Перечисление
|
|||
66
bananan
24.01.13
✎
16:02
|
(64) Спасибо, попробую (о возвожности типизации - забыл)
|
|||
67
Mikeware
24.01.13
✎
16:02
|
(65) может, ему не перечисление надо, а именно строку в зависимости от пола?
|
|||
68
GLazNik
24.01.13
✎
16:03
|
(63) "Ч"? "женщина друг человека"?
|
|||
69
Ёпрст
24.01.13
✎
16:03
|
(67) раздвояищься ?..
:) пусть в начале с типизацией пробует. |
|||
70
Ёпрст
24.01.13
✎
16:04
|
(68) Червона дива..
|
|||
71
Mikeware
24.01.13
✎
16:08
|
(68) он хохол...
------ Девушка ночевала у парня. Утром выходит из ванной и спрашивает: - Дорогой, у тебя висит 2 полотенца с надписями «М» и «Ж». Я вытерлась полотенцем с надписью «Ж», потому что подумала, что М - это для мужчин? -Ну, вообще-то, «М» - это для морды… © |
|||
72
Delorn
24.01.13
✎
16:13
|
(63) еще раз перечитай ссылку
ТекстЗапроса = " |SELECT | Спр.ID as [Элемент $Справочник.Номенклатура] |FROM | $Справочник.Номенклатура as Спр |WHERE | $Спр.ТипНоменклатуры = :Товар"; RS.УстановитьТекстовыйПараметр("Товар", Перечисление.ТипыНоменклатуры.Товар); ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); Это от туда |
|||
73
Delorn
24.01.13
✎
16:15
|
+(72) Но тебя наверное интересует 6 пример по ссылке
| $Спр.ТипНоменклатуры as [ТипНоменклатуры $Перечисление.ТипНоменклатуры] |
|||
74
bananan
24.01.13
✎
16:24
|
Ж - жинка (женщина), Ч - чоловик (мужчина)
(72)(73) За ссылки спасибо, но у меня так работает: | ,$Сотрудник.Пол as [Стать $Перечисление.Пол] (кстати) "стать" - это пол на украинском языке... :) |
|||
75
monsterZE
24.01.13
✎
16:28
|
пиши запросы на украинском =) на родном..
|
|||
76
Wobland
24.01.13
✎
16:28
|
(74) гы. а я принял за бейсиковский атавизм LET
|
|||
77
bananan
24.01.13
✎
16:35
|
(75) При всем желании 1С украинскую букву "i" в упор не видит..
А русский я знаю где-то с 3-х лет... :) |
|||
78
Ёпрст
24.01.13
✎
16:46
|
ntnc @Ёпрст
|
|||
79
sapphire
24.01.13
✎
16:48
|
Блeaть, ну неужели непонятно как это работает? :(
Короче, весь сакральный смысл работы прямых запросов в 1С++ сводится к следующему: 1С++ транслирует "мета-SQL" в SQL/t-SQL. Даже объект есть такой в 1С++ МетаСКЛ.... Значит, нужно понимать следующее: 1. Как правильно использовать метаСКЛ в 1С++ 2. Как правильно писать запросы в SQL/t-SQL по п.1 ${Имя типа}.{Идентификатор} вернет имя таблицы $Справочник.Товары - SC11 к примеру, можно посмотреть как указано в файле 1cv7.dd/1cv7.dds ${Имя типа}.{Идентификатор}.{Поле} - вернет идентификатор поля таблицы. Что-то типа SP1321 в итоге, можно получить конструкцию [Имя таблицы].[Имя поля] Ликбез по 77: все "Периодический" & Константы храняться в _1SCONST, общие реквизиты и флаги проведения по регистрам - в _1SJOURN. по п.2: ищи на просторах интернета: Microsoft SQL Server 2008. Основы T-SQL. Ицик Бен-Ган |
|||
80
Ёпрст
24.01.13
✎
16:50
|
||||
81
bananan
24.01.13
✎
16:50
|
(79) Ицика нашел - при возможности - читаю
|
|||
82
bananan
24.01.13
✎
16:57
|
Процедуру ПриОткрытии надо после всех своих процедур определять или после?
Такой кусок кода //============================ Процедура ПриОткрытии() ДатаАктуальности = РабочаяДата(); Фирма = Константа.БазФирма.Получить(ДатаАктуальности); фОсновные = 1; фСовместители = 1; фУволенные = 0; КонецПроцедуры //******************************************* Процедура Сформировать() Сообщить("ДатаАктуальности = "+ДатаАктуальности); выдает ошибку: Переменная не определена (ДатаАктуальности) Что здесь не так?? |
|||
83
Wobland
24.01.13
✎
16:59
|
(82) даты актуальности нет, ты её спрятал
|
|||
84
Ёпрст
24.01.13
✎
17:00
|
(82) без разницы
|
|||
85
bananan
24.01.13
✎
17:01
|
(83) Не понял, - я ДАтуАктуальности назначаю ПриОткрытии()...
Где я ее спраятал и как? |
|||
86
Wobland
24.01.13
✎
17:02
|
(85) вот в при открытии и спрятал. видна только там. кури Перем
|
|||
87
Ёпрст
24.01.13
✎
17:02
|
+84
ДатаАктуальности должна быть или глобальной переменной модуля формы или глобальной (экспортной )переменной глобальника или реквизитом формы (или риквизитом объекта , если этот код не в обработке/отчете) |
|||
88
bananan
24.01.13
✎
17:05
|
С переменной разобрался с вашей помощью...
А вот такой код: ТекстЗапроса = " |SELECT Сотрудник.Descr AS Наименование | ,Сотрудник.Code AS Код | ,$Сотрудник.Фирма AS [Фирма $Справочник.Фирмы] | ,$Сотрудник.ДатаУвольнения AS ДатаУвольнения | ,$Сотрудник.ДатаПриема AS ДатаПриема | ,$Сотрудник.ДатаРождения AS ДатаРождения | ,$Сотрудник.ПропискаАдрес AS ПропискаАдрес | ,$Сотрудник.ФактАдрес AS ФактАдрес | ,$Сотрудник.Пол as [Стать $Перечисление.Пол] | ,$Сотрудник.Образование AS [Образование $Перечисление.Образование] | ,$Сотрудник.СемейноеПоложение AS [СемейноеПоложение $Перечисление.СемейноеПоложение] | ,$Сотрудник.ИНН AS ИНН | ,$Сотрудник.ДокВид AS [ДокВид $Перечисление.ВидыДокументов] | ,$Сотрудник.ДокСерия AS ДокСерия | ,$Сотрудник.ДокНомер AS ДокНомер | ,$Сотрудник.ДокКемВыдан AS ДокКемВыдан | ,$Сотрудник.ДокКогдаВыдан AS ДокКогдаВыдан | ,SUM(Внутренний.Став) as Ставка |FROM |( | SELECT | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Val FROM #tmpSotr) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний"; RS = СоздатьОбъект("ODBCRecordset"); RS.УстановитьТекстовыйПараметр("Дат1", Дата("01.01.1989")); RS.УстановитьТекстовыйПараметр("ДатаАктуальности", ДатаАктуальности+1); ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); Выдает ошибку: Meta name parser error: неизвестное метаимя или алиас "$Сотрудник" Что он здесь хочет?? Подзапрос вставил... Может в подзапросе что не так? |
|||
89
Wobland
24.01.13
✎
17:07
|
(88) перестань запятые где попало ставить. поубивать надо
на пальцах: выбрать сотрудник.что-то из (неважно что) как внутренний какой такой сотрудник? |
|||
90
bananan
24.01.13
✎
17:07
|
+(88) уже нашел... не надо с эотим разобрался
|
|||
91
Ёпрст
24.01.13
✎
17:08
|
(88) всё же книжку то почитай, про скулю..
щас тебе он в вежливой форме пока ошибки выдает, не помню уже, но с 10 или 13 раза уже будет чистый мат на русском! |
|||
92
bananan
24.01.13
✎
17:10
|
Сори, запрос с подзапросом по сотрудниках обсуждали вчера и вчера подобный код работал,
в этот код я просто добавил в селекте несколько полей а он выдает ошибку: Invalid object name '#tmpSotr'. |
|||
93
bananan
24.01.13
✎
17:11
|
(91) Книжку я почитываю периодически, а (88) - невнимательность
|
|||
94
Wobland
24.01.13
✎
17:11
|
(92) ну не знает оно тмпСотр. ты по-английски понимаешь вообще?
|
|||
95
Ёпрст
24.01.13
✎
17:12
|
(92) дык а сама временная табличка то есть ?
ты её параметром запроса установил ? |
|||
96
bananan
24.01.13
✎
17:13
|
(95) Понял, спасибо!
|
|||
97
sapphire
24.01.13
✎
17:16
|
Жуть. Прям обострение какое-то.
|
|||
98
bananan
24.01.13
✎
17:28
|
по поводу tmpSotr...
так вот это писалось под готовый код (и оно, в конце концов заработало) RS.УложитьСписокОбъектов(Запрос.Сотр.ТекущийЭлемент(), "#tmpSotr","Сотрудники"); Как видите здесь используется еще один запрос, а моя задача сейчас все сделать в одном запросе. Как быть?? |
|||
99
Ёпрст
24.01.13
✎
17:29
|
(98)
нам отсюда не видно твой код |
|||
100
Wobland
24.01.13
✎
17:30
|
(98) соединить
|
|||
101
bananan
24.01.13
✎
17:31
|
(99) показываю предыдущий код:
//============================ Процедура ПриОткрытии() ДатаАктуальности = РабочаяДата(); Фирма = Константа.БазФирма.Получить(ДатаАктуальности); фОсновные = 1; фСовместители = 1; фУволенные = 0; КонецПроцедуры //============================ Процедура ИзмРазрез() Если (фОсновные=0) и (фСовместители=0) Тогда фОсновные = 1; фСовместители = 1; КонецЕсли; КонецПроцедуры //============================ Функция ФорматПок(Чсл) Экспорт Возврат Формат(Чсл,"Ч012.2.,"); КонецФункции Процедура Сформировать(Пар) ТекстЗапроса = "//{{ЗАПРОС(СписокСотрудников) |Период с {ДатаАктуальности} по {ДатаАктуальности}; |Сотр = Справочник.Сотрудники.ТекущийЭлемент; |Фир = Справочник.Сотрудники.Фирма; |Оклад = Справочник.Сотрудники.Оклад; |КвоЛьгот = Справочник.Сотрудники.КвоЛьгот; |Тариф = Справочник.Сотрудники.Тариф; |Пенсионер = Справочник.Сотрудники.Пенсионер; |Инвалид = Справочник.Сотрудники.Инвалид; |Должность = Справочник.Сотрудники.МестоРаботы; |Ставка = Справочник.Сотрудники.Ставка; |Совместитель = Справочник.Сотрудники.ТипСотрудника; |ДатаПриема = Справочник.Сотрудники.ДатаПриема; |ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения; |//основные |ДатаРождения = Справочник.Сотрудники.ДатаРождения; |//координаты |ПропискаАдрес = Справочник.Сотрудники.ПропискаАдрес; |ФактАдрес = Справочник.Сотрудники.ФактАдрес; |//кадровые |Стать = Справочник.Сотрудники.Пол; |Образование = Справочник.Сотрудники.Образование; |СемейноеПоложение = Справочник.Сотрудники.СемейноеПоложение; |//идентификация |ИНН = Справочник.Сотрудники.ИНН; |ДокВид = Справочник.Сотрудники.ДокВид; |ДокСерия = Справочник.Сотрудники.ДокСерия; |ДокНомер = Справочник.Сотрудники.ДокНомер; |ДокКемВыдан = Справочник.Сотрудники.ДокКемВыдан; |ДокКогдаВыдан = Справочник.Сотрудники.ДокКогдаВыдан; |//условия запроса и т.д. |Условие(Фир=Фирма); |Условие (Число(Сотр.Родитель.Код) <> 0); |Условие(Сотр в ВыбСотрудник); |Условие(ДатаПриема<>Дата(0)); |Условие(ДатаПриема<=ДатаАктуальности);"; Если фОсновные=0 Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(Совместитель=1);"; КонецЕсли; Если фСовместители=0 Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(Совместитель=0);"; КонецЕсли; Если Пар=1 Тогда ТекстЗапроса=ТекстЗапроса+" |Группировка Сотр Упорядочить По Сотр.Наименование;"; Иначе ТекстЗапроса=ТекстЗапроса+" |Группировка Сотр Упорядочить По Сотр.Код;"; КонецЕсли; ТекстЗапроса=ТекстЗапроса+" |Функция Окл = Сумма(Оклад); |Функция Тар = Сумма(Тариф);"; Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Шапка|Основная"); Если фУволенные=1 Тогда Таб.ПрисоединитьСекцию("Шапка|Увольнение"); КонецЕсли; Если (фОсновные=1) и (фСовместители=1) Тогда Таб.ПрисоединитьСекцию("Шапка|Совместитель"); КонецЕсли; Если Основные = 1 Тогда Таб.ПрисоединитьСекцию("Шапка|Основные"); КонецЕсли; Если Кадровые = 1 Тогда Таб.ПрисоединитьСекцию("Шапка|Кадровые"); КонецЕсли; Если Идентификация = 1 Тогда Таб.ПрисоединитьСекцию("Шапка|Идентификация"); КонецЕсли; Если Координаты = 1 Тогда Таб.ПрисоединитьСекцию("Шапка|Координаты"); КонецЕсли; Кво = 0; тЗанято = 0; Пока Запрос.Группировка("Сотр")=1 Цикл тЗанято = тЗанято + 1; Состояние( "Обработка " + Запрос.Сотр); Если Запрос.Сотр.ЭтоГруппа() = 1 Тогда Запрос_=СоздатьОбъект("ODBCRecordset"); ТекстЗапроса = " |SELECT | SUM(Внутренний.Став) as Ставка |From |( | SELECT | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Val FROM #tmpSotr) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний |"; Запрос_.УстановитьТекстовыйПараметр("Дат1", Дата("01.01.1989")); Запрос_.УстановитьТекстовыйПараметр("ДатаАктуальности", ДатаАктуальности+1); Запрос_.УложитьСписокОбъектов(Запрос.Сотр.ТекущийЭлемент(), "#tmpSotr","Сотрудники"); тЗанято = Запрос_.ВыполнитьСкалярный(ТекстЗапроса); ПоШтату = Запрос.Сотр.ПоШтату; тВакантно = Запрос.Сотр.ПоШтату-тЗанято; ФиксДан = Шаблон("Занято: [тЗанято] \ По штату: [Запрос.Сотр.ПоШтату] \ Вакантно: [тВакантно]"); Таб.ВывестиСекцию("Группа|Основная"); Если фУволенные=1 Тогда Таб.ПрисоединитьСекцию("Группа|Увольнение"); Конецесли; Если (фОсновные=1) и (фСовместители=1) Тогда Таб.ПрисоединитьСекцию("Группа|Совместитель"); КонецЕсли; Иначе Если (фУволенные=0) и (ДатаЧисло(Запрос.ДатаУвольнения)<>0) и (Запрос.ДатаУвольнения<=ДатаАктуальности) Тогда Продолжить; КонецЕсли; Кво = Кво + 1; ОснПенс = ?(Запрос.Пенсионер=1,"+",""); ОснИнв = ?(Запрос.Инвалид=1,"+",""); Таб.ВывестиСекцию("Сотрудник|Основная"); Если фУволенные=1 Тогда Если (ДатаЧисло(Запрос.ДатаУвольнения)<>0) и (Запрос.ДатаУвольнения<=ДатаАктуальности) Тогда ДатаУвольнения = Формат(Запрос.ДатаУвольнения,"ДДММГГ"); Иначе ДатаУвольнения = ""; КонецЕсли; Таб.ПрисоединитьСекцию("Сотрудник|Увольнение"); КонецЕсли; Если (фОсновные=1) и (фСовместители=1) Тогда ОснСовм = ?(Запрос.Совместитель=1,"+",""); Таб.ПрисоединитьСекцию("Сотрудник|Совместитель"); КонецЕсли; КонецЕсли; Если Основные = 1 Тогда Таб.ПрисоединитьСекцию("Сотрудник|Основные"); КонецЕсли; Если Кадровые = 1 Тогда Таб.ПрисоединитьСекцию("Сотрудник|Кадровые"); КонецЕсли; Если Идентификация = 1 Тогда Таб.ПрисоединитьСекцию("Сотрудник|Идентификация"); КонецЕсли; Если Координаты = 1 Тогда Таб.ПрисоединитьСекцию("Сотрудник|Координаты"); КонецЕсли; КонецЦикла; Таб.ВывестиСекцию("Дно|Основная"); Если фУволенные=1 Тогда Таб.ПрисоединитьСекцию("Дно|Увольнение"); КонецЕсли; Если (фОсновные=1) и (фСовместители=1) Тогда Таб.ПрисоединитьСекцию("Дно|Совместитель"); КонецЕсли; Таб.Опции(0,0,0,0); Таб.ТолькоПросмотр(0); Таб.Показать("Список сотрудников"); КонецПроцедуры Здесь нонсенс: запрос на 1С++ выполняется в цикле обработки запроса по 1С... (Код писал не я) |
|||
102
bananan
24.01.13
✎
17:31
|
(100) Что соеденить и как?
|
|||
103
Ёпрст
24.01.13
✎
17:34
|
(101) Дык он работает ?
Тогда забить. Если не устраивает скорость - переписать |
|||
104
Wobland
24.01.13
✎
17:34
|
(101) нене, чур меня
|
|||
105
bananan
24.01.13
✎
17:35
|
(103) Да он - работает; скорость - не устраивает, вот и пытаюсь переписать...
|
|||
106
bananan
24.01.13
✎
17:38
|
+(105) Т.е. я не понимаю чего мне делать вместо Запроса на 1С...
отсюда затык с: RS.УложитьСписокОбъектов(Запрос<<?>>.Сотр.ТекущийЭлемент(), "#tmpSotr","Сотрудники"); Что мне взять вместо того запроса? |
|||
107
bananan
24.01.13
✎
17:40
|
В принципе, если юзер выбирет Какого-то конкретного работика или какое -то подразделение фирмы, тогда, кажется что-то можно придумать.. А если надо по всей фирме - тогда как?
|
|||
108
bananan
24.01.13
✎
17:44
|
+(106) А вот текст первого запроса:
ТекстЗапроса = "//{{ЗАПРОС(СписокСотрудников) |Период с {ДатаАктуальности} по {ДатаАктуальности}; |Сотр = Справочник.Сотрудники.ТекущийЭлемент; |Фир = Справочник.Сотрудники.Фирма; |Оклад = Справочник.Сотрудники.Оклад; |КвоЛьгот = Справочник.Сотрудники.КвоЛьгот; |Тариф = Справочник.Сотрудники.Тариф; |Пенсионер = Справочник.Сотрудники.Пенсионер; |Инвалид = Справочник.Сотрудники.Инвалид; |Должность = Справочник.Сотрудники.МестоРаботы; |Ставка = Справочник.Сотрудники.Ставка; |Совместитель = Справочник.Сотрудники.ТипСотрудника; |ДатаПриема = Справочник.Сотрудники.ДатаПриема; |ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения; |//основные |ДатаРождения = Справочник.Сотрудники.ДатаРождения; |//координаты |ПропискаАдрес = Справочник.Сотрудники.ПропискаАдрес; |ФактАдрес = Справочник.Сотрудники.ФактАдрес; |//кадровые |Стать = Справочник.Сотрудники.Пол; |Образование = Справочник.Сотрудники.Образование; |СемейноеПоложение = Справочник.Сотрудники.СемейноеПоложение; |//идентификация |ИНН = Справочник.Сотрудники.ИНН; |ДокВид = Справочник.Сотрудники.ДокВид; |ДокСерия = Справочник.Сотрудники.ДокСерия; |ДокНомер = Справочник.Сотрудники.ДокНомер; |ДокКемВыдан = Справочник.Сотрудники.ДокКемВыдан; |ДокКогдаВыдан = Справочник.Сотрудники.ДокКогдаВыдан; |//условия запроса и т.д. |Условие(Фир=Фирма); |Условие (Число(Сотр.Родитель.Код) <> 0); |Условие(Сотр в ВыбСотрудник); |Условие(ДатаПриема<>Дата(0)); |Условие(ДатаПриема<=ДатаАктуальности);"; Если фОсновные=0 Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(Совместитель=1);"; КонецЕсли; Если фСовместители=0 Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(Совместитель=0);"; КонецЕсли; ну и при различных уловиях текст запроса дополняется... |
|||
109
Ёпрст
24.01.13
✎
17:45
|
сделать один запрос, далее сгруппировать с иерархией в индексированной табличке, или.. получить иерархию в самом запросе.
+ наложить фильтр на вычисление суммы по "уволенным" и "основным" сотрудникам в группе. |
|||
110
sapphire
24.01.13
✎
17:45
|
(103) Автора забить. Код переписать.
|
|||
111
bananan
24.01.13
✎
17:47
|
(109) Дык я и пытаюсь все сделать в одном запрое.. а по поводу иерархии - нифига не понял :(
|
|||
112
sapphire
24.01.13
✎
17:48
|
(106) Это уже совсем плохо, если такой простой код не понимаешь.
|
|||
113
Ёпрст
24.01.13
✎
17:49
|
(111) чтоб получить иерархию справочника, тебе нужно, либо делать это в самом запросе (прямом) или на выходе через индексированную таблицу.
|
|||
114
sapphire
24.01.13
✎
17:50
|
А кто тут у нас, кроме ТС, обладатель md этой чудо-конфы?
|
|||
115
sapphire
24.01.13
✎
17:51
|
(113) В самом он врядли сможет.
|
|||
116
sapphire
24.01.13
✎
17:53
|
(113) Какая у него там версия скуля?
|
|||
117
Ёпрст
24.01.13
✎
17:53
|
(114) у меня еть :)
|
|||
118
Ёпрст
24.01.13
✎
17:53
|
(116) скорее всего 2000
|
|||
119
sapphire
24.01.13
✎
17:54
|
(118) Мысль написать изврат с кучей параметров :)
|
|||
120
Ёпрст
24.01.13
✎
17:55
|
чорт, я прибил его мд-ник..
:( |
|||
121
sapphire
24.01.13
✎
17:56
|
(118) Можно получить данные сначала прямым запросом, а потом посчитать для групп.
|
|||
122
sapphire
24.01.13
✎
17:57
|
(118) просто в 2000 курсором только можно :(
|
|||
123
bananan
24.01.13
✎
17:59
|
кажется 2005 версия у нас
|
|||
124
bananan
24.01.13
✎
18:00
|
А где и как можно посмотреть версию?
|
|||
125
sapphire
24.01.13
✎
18:13
|
select @@VERSION Версия
|
|||
126
bananan
24.01.13
✎
18:26
|
Ла и здесь нужно выбрать ставку для конкретного сотрудника,
а вот как сделать иерархию, и вот что в данном случае означает слово иерархия - не понимаю, иерархия, ну скажем Фирма в фирме подразделения несколько подразделений имеют еще свои подразделения ну и практически в каждом подразделении есть один и больше сотрудников. Это подразумевается под иерархией? т.е. в корнре - фирма - от нее ветви подразделениия и т.д. а уже на ветках сотрудники. Так? |
|||
127
viktor_vv
24.01.13
✎
18:40
|
(126) А где ты Ицика нашел ?
А то че-то в столице как-то глухо с ним. |
|||
128
viktor_vv
24.01.13
✎
18:41
|
(127) Я имел ввиду в бумажном варианте. Или ты скачал ?
|
|||
129
bananan
24.01.13
✎
18:44
|
(128) Скачал
|
|||
130
bananan
24.01.13
✎
18:45
|
а в бумажном варианте- не искал
|
|||
131
bananan
24.01.13
✎
19:09
|
Опять же - не понимаю. В главном (внешнем) запросе я выбираю какого-то сотрудника в подзапросе по ИД искать ставку для этого суотрудника и т.д?
ТАк? Или, может кто что-то лучшее подскажет... |
|||
132
bananan
24.01.13
✎
19:12
|
То ли что с форумомо то ли что... я уже несколько сообщений написал. А они все "пропали"..
|
|||
133
bananan
24.01.13
✎
19:14
|
конструкцию Сотр.ID IN (SELECT Val FROM #tmpSotr) Чем можно заменить? Т.е. как создать временную таблицу или что еще??
|
|||
134
Wobland
24.01.13
✎
19:16
|
навскидку. Сотр.ID IN (SELECT нужные тебе сотрудники)
|
|||
135
bananan
24.01.13
✎
19:17
|
SELECT (*) Сойдет?
|
|||
136
Wobland
24.01.13
✎
19:18
|
(135) select "*" тогда уж ;)
|
|||
137
bananan
24.01.13
✎
19:21
|
Написал такой код:
|SELECT Сотрудник.Descr AS Наименование | ,Сотр.Code AS Код | ,$Сотр.Фирма AS [Фирма $Справочник.Фирмы] | ,$Сотр.ДатаУвольнения AS ДатаУвольнения | ,$Сотр.ДатаПриема AS ДатаПриема | ,$Сотр.ДатаРождения AS ДатаРождения | ,$Сотр.ПропискаАдрес AS ПропискаАдрес | ,$Сотр.ФактАдрес AS ФактАдрес | ,$Сотр.Пол as [Стать $Перечисление.Пол] | ,$Сотр.Образование AS [Образование $Перечисление.Образование] | ,$Сотр.СемейноеПоложение AS [СемейноеПоложение $Перечисление.СемейноеПоложение] | ,$Сотр.ИНН AS ИНН | ,$Сотр.ДокВид AS [ДокВид $Перечисление.ВидыДокументов] | ,$Сотр.ДокСерия AS ДокСерия | ,$Сотр.ДокНомер AS ДокНомер | ,$Сотр.ДокКемВыдан AS ДокКемВыдан | ,$Сотр.ДокКогдаВыдан AS ДокКогдаВыдан | ,SUM(Внутренний.Став) as Ставка |FROM |( | SELECT | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Сотрв.Code AS КодВ FROM $Справочник.Сотрудники Сотрв)) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний"; Выдает ошибку: Сформировать(<<?>>1) Слишком много фактических параметров... |
|||
138
Wobland
24.01.13
✎
19:22
|
(137) о чём тебе говорит сообщение об ошибке? ты же подумал прежде, чем спрашивать, правда?
|
|||
139
bananan
24.01.13
✎
19:22
|
И по ошибке кликаеш - никакой реакции... Что это может быть?
|
|||
140
Mikeware
24.01.13
✎
19:22
|
(137) естественно...
читай документацию |
|||
141
bananan
24.01.13
✎
19:23
|
(138) Где в Сформировать () у меня паремтры?
|
|||
142
Wobland
24.01.13
✎
19:23
|
(141) Сформировать(<<?>>1)
|
|||
143
bananan
24.01.13
✎
19:24
|
Вот код процедуры Сформировать() полностю:
//******************************************* Процедура Сформировать() Сообщить("ДатаАктуальности = "+ДатаАктуальности); ТекстЗапроса = " |SELECT Сотрудник.Descr AS Наименование | ,Сотр.Code AS Код | ,$Сотр.Фирма AS [Фирма $Справочник.Фирмы] | ,$Сотр.ДатаУвольнения AS ДатаУвольнения | ,$Сотр.ДатаПриема AS ДатаПриема | ,$Сотр.ДатаРождения AS ДатаРождения | ,$Сотр.ПропискаАдрес AS ПропискаАдрес | ,$Сотр.ФактАдрес AS ФактАдрес | ,$Сотр.Пол as [Стать $Перечисление.Пол] | ,$Сотр.Образование AS [Образование $Перечисление.Образование] | ,$Сотр.СемейноеПоложение AS [СемейноеПоложение $Перечисление.СемейноеПоложение] | ,$Сотр.ИНН AS ИНН | ,$Сотр.ДокВид AS [ДокВид $Перечисление.ВидыДокументов] | ,$Сотр.ДокСерия AS ДокСерия | ,$Сотр.ДокНомер AS ДокНомер | ,$Сотр.ДокКемВыдан AS ДокКемВыдан | ,$Сотр.ДокКогдаВыдан AS ДокКогдаВыдан | ,SUM(Внутренний.Став) as Ставка |FROM |( | SELECT | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Сотрв.Code AS КодВ FROM $Справочник.Сотрудники Сотрв)) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний"; RS = СоздатьОбъект("ODBCRecordset"); RS.УстановитьТекстовыйПараметр("Дат1", Дата("01.01.1989")); RS.УстановитьТекстовыйПараметр("ДатаАктуальности", ДатаАктуальности+1); ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); Пока ТЗ.ПолучитьСтроку()=1 цикл Чис = Чис + 1; Если Чис > 3 тогда Возврат; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
144
Wobland
24.01.13
✎
19:24
|
(143) сколько параметров в заголовке?
|
|||
145
bananan
24.01.13
✎
19:26
|
(142) В моем коде покажи такой вызов процедуры Сформировать..
В заголовке нет параметров ... Упс. Нашел я параметры они на кнопках формы... |
|||
146
bananan
24.01.13
✎
19:26
|
Сча с параметрамы - раздберусь
|
|||
147
Wobland
24.01.13
✎
19:28
|
(145) ты начни думать. и только после того, как не сможешь самостоятельно найти ответ, спрашивай сюда. это практический совет из личного опыта - лучший имхо способ роста в профессиональном плане
|
|||
148
Wobland
24.01.13
✎
19:33
|
Сотр.ID IN (SELECT Сотрв.Code
поправьте меня, всегда будет пусто |
|||
149
bananan
24.01.13
✎
19:35
|
Параметры убрал ошибка:
Incorrect syntax near the keyword 'AND'. Это уже легче (если запрос правильно работает) :) |
|||
150
Mikeware
24.01.13
✎
19:35
|
(148) случайные совпадения возможны, но маловероятны...
зы. он таки напоминает мне обезъяну за пишущей машинкой, пытающуюся напечатать даже не "войну и мир", а просто связное предложение... |
|||
151
Wobland
24.01.13
✎
19:36
|
и скоро ты придёшь к (89)...
|
|||
152
Wobland
24.01.13
✎
19:36
|
(149) какие мысли есть?
|
|||
153
Wobland
24.01.13
✎
19:38
|
(152) мда.. он долго будет лишнюю скобку искать
|
|||
154
Wobland
24.01.13
✎
19:39
|
(153) плин, ну я всё же верю, что человек ищет, а не сидит и ждёт доброго дядю
|
|||
155
Mikeware
24.01.13
✎
19:39
|
(153) если б только скобка. он вообще не понимает, и не пытается понять - что пишет...
|
|||
156
Wobland
24.01.13
✎
19:40
|
(155) ну, синтаксически же только скобка. а, ну и (89)
|
|||
157
Mikeware
24.01.13
✎
19:43
|
(156) а Сотр откуда возьмется?
|
|||
158
Wobland
24.01.13
✎
19:45
|
(157) вот и я о том же
|
|||
159
sapphire
25.01.13
✎
10:15
|
(127) В сети, в формате pdf есть
|
|||
160
Ёпрст
25.01.13
✎
10:15
|
да и так купить можно, в бумажном виде.
На полянке какой-нить или во всяких либру и озонах. |
|||
161
sapphire
25.01.13
✎
10:17
|
Кажись там есть еще и периодика, не?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |