|
Универсальный запрос | ☑ | ||
---|---|---|---|---|
0
rodrigez
28.05.13
✎
17:00
|
Здравсвуйте! Не выполняется универсальный запрос к выбраным регистрам. Хочется узнать есть ли грамматические ошибки? Спасибо.
&НаСервереБезКонтекста Функция ПроверитьСущесвуютЛиДвиженияПоРегистрамНакопления(ОбъектМетаданныхРегистр, СсылкаДокумент); Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | "+ОбъектМетаданныхРегистр.Имя+".Регистратор.Ссылка |ИЗ | РегистрНакопления."+ОбъектМетаданныхРегистр.Имя+" Как ТекущийРегистр |ГДЕ |ТекущийРегистр.Регистратор.Ссылка = &РегистраторРегистраНакопления"; Запрос.УстановитьПараметр("РегистраторРегистраНакопления", СсылкаДокумент); РезульатЗапроса = Запрос.Выполнить(); Если Не РезульатЗапроса.Пустой() Тогда ЕстьЛиДвижения = Истина Иначе ЕстьЛиДвижения = Ложь; КонецЕсли; Сообщить(ЕстьЛиДвижения); Возврат ЕстьЛиДвижения; КонецФункции |
|||
1
salvator
28.05.13
✎
17:02
|
Есть. "ВыбранНым".
|
|||
2
ДенисЧ
28.05.13
✎
17:02
|
Если есть ошибки, то 1с тебе про них скажет...
|
|||
3
asady
28.05.13
✎
17:03
|
(0) .Регистратор.Ссылка - побежал за линейкой
|
|||
4
Maxus43
28.05.13
✎
17:04
|
точку останова тут: РезульатЗапроса = Запрос.Выполнить();
и смотри что в Запрос.Текст и думай потом... |
|||
5
ДенисЧ
28.05.13
✎
17:04
|
(3) думаешь, у него длинней и испугался?
|
|||
6
Лефмихалыч
28.05.13
✎
17:05
|
Во-первых, есть опечатки.
Во-вторых, скорее всего документ двигает не только регистры накопления, но и какие-то еще регистры, а код, который вызывает функцию ПроверитьВотЖтуВсюХунью() этого не учитывает и вызывает ее для всех прочих регистров тоже, а она в состоянии только накопления проверять |
|||
7
rodrigez
28.05.13
✎
17:09
|
(6) Двигать не должен
Функция ПолучитьМакетНаСервере(ВыбДокумент) Макет = Обработки.ОтслеживаниеПроведенияДокументов.ПолучитьМакет("Макет"); ТабДок = Новый ТабличныйДокумент; ОбластьЗаголовка = Макет.ПолучитьОбласть("Заголовок"); ШапкаСвойствРегистров = Макет.ПолучитьОбласть("ШапкаСвойствРегистров"); СвойстваРегистровНакопления = Макет.ПолучитьОбласть("СвойстваРегистровНакопления"); СвойстваРегистровСведений = Макет.ПолучитьОбласть("СвойстваРегистровСведений"); СвойстваРегистровРасчета = Макет.ПолучитьОбласть("СвойстваРегистровРасчета"); СвойстваРегистровБухгалтерии = Макет.ПолучитьОбласть("СвойстваРегистровБухгалтерии"); ОбъектОбработки = Объект.МетаДокумент.Ссылка.ПолучитьОбъект(); МетаданныеДокумента = ОбъектОбработки.Метаданные(); ОбластьЗаголовка.Параметры.СсылкаДокумент = ВыбДокумент; ТабДок.Вывести(ОбластьЗаголовка); ТабДок.Вывести(ШапкаСвойствРегистров); Номер = 0; Для Каждого РегистрОъектМетаданных Из МетаданныеДокумента.Движения Цикл ПолноеИмяОбъектаМетаданных = РегистрОъектМетаданных.ПолноеИмя(); СтрукутраВидовРегистров = (ОпеределитьВидРегистра(РегистрОъектМетаданных)); ПредставлениеРегистра = СтрукутраВидовРегистров.ВидРегистра+"."+СтрукутраВидовРегистров.НазваниеРегистра; ВидРегистра = СтрукутраВидовРегистров.ВидРегистра; НазваниеРегистра = СтрукутраВидовРегистров.НазваниеРегистра; ПредставлениеВОтчете = ВидРегистра+"."+РегистрОъектМетаданных.Имя ; Номер = Номер+1; Если ВидРегистра = "РегистрыНакопления" Тогда ВидРегистраНакопления = РегистрОъектМетаданных.ВидРегистра; СвойстваРегистровНакопления.Параметры.ВидИНазваниеРегистра = ПредставлениеВОтчете; СвойстваРегистровНакопления.Параметры.Номер = Номер; СвойстваРегистровНакопления.Параметры.СвойствоВидРегистра = ВидРегистраНакопления; ТабДок.Вывести(СвойстваРегистровНакопления); ДвиженияРН = ПроверитьСущесвуютЛиДвиженияПоРегистрамНакопления(РегистрОъектМетаданных, ВыбДокумент); ИначеЕсли ВидРегистра = "РегистрыСведений" Тогда ПериодичностьРегистраСведений = РегистрОъектМетаданных.ПериодичностьРегистраСведений; РежимЗаписи = РегистрОъектМетаданных.РежимЗаписи; СвойстваРегистровСведений.Параметры.ВидИНазваниеРегистра = ПредставлениеВОтчете; СвойстваРегистровСведений.Параметры.Номер = Номер; СвойстваРегистровСведений.Параметры.Периодичность = ПериодичностьРегистраСведений; СвойстваРегистровСведений.Параметры.РежимЗаписи = РежимЗаписи; ТабДок.Вывести(СвойстваРегистровСведений); ИначеЕсли ВидРегистра = "РегистрыБухгалтерии" Тогда СвойстваРегистровБухгалтерии.Параметры.ВидИНазваниеРегистра = ПредставлениеВОтчете; СвойстваРегистровБухгалтерии.Параметры.Номер = Номер; ТабДок.Вывести(СвойстваРегистровБухгалтерии); Иначе СвойстваРегистровРасчета.Параметры.ВидИНазваниеРегистра = ПредставлениеВОтчете; СвойстваРегистровРасчета.Параметры.Номер = Номер; ТабДок.Вывести(СвойстваРегистровРасчета); КонецЕсли; Сообщить(""+Номер +"."+ ПредставлениеРегистра); КонецЦикла; Возврат ТабДок; КонецФункции |
|||
8
rodrigez
28.05.13
✎
17:09
|
(6) а опечатки какие?
|
|||
9
Лефмихалыч
28.05.13
✎
17:11
|
(7) юзай отладчик, не телепи мозг
(8) посчитай буквы "РезульатЗапроса" |
|||
10
zladenuw
28.05.13
✎
17:12
|
если проверяешь на регистратор. то можно и через объект получить регистры в которые пишутся движения
Ссылка.ПолучитьОбъект().Движения - а тут коллекция регистров |
|||
11
Bober
28.05.13
✎
17:13
|
(0)
- заменить во всех местах Регистратор.Ссылка на Регистратор - |"+ОбъектМетаданныхРегистр.Имя+".Регистратор.Ссылка заменить на | ТекущийРегистр.Регистратор |
|||
12
Bober
28.05.13
✎
17:15
|
(0) потом переделать запрос на
ВЫБРАТЬ ПЕРВЫЙ 1 1 КАК ЕстьЗаписи ИЗ " + ОбъектМетаданныхРегистр.ПолноеИмя() + " КАК РН ГДЕ РН.Регистратор = &Регистратор"; |
|||
13
Bober
28.05.13
✎
17:16
|
(10) очень сомнительное предложение в плане производительности.
|
|||
14
Лефмихалыч
28.05.13
✎
17:17
|
(13) да там и так запрос в цикле, какая в зад производительность?..
|
|||
15
Bober
28.05.13
✎
17:19
|
(14) получить объект - уже затраты, прочитать все движения из базы - еще затраты. А требуется всего лишь по ссылке понять по каких регистрам есть движения.
PS запросом будет эффективнее |
|||
16
rodrigez
28.05.13
✎
17:21
|
Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |