Имя: Пароль:
1C
1С v8
v8: Как улучшить Запрос к периодическому РС?
0 cons74
 
28.01.14
15:58
Добрый день о знатоки. Вот мой кхм код (запрос).

Оно работает. Но некрасиво это. Хочется по-уму сделать.
Для понятности (самому себе) сделал много раз пакеты. Потом можно и сжать текст.
Главная проблема: требуется получить из периодического регистра сведений строку с пользователем, перед строкой где "Иванов" поставил решение "отклонено".

Сделал через

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СтрокиПередИванов.Объект1,
    МАКСИМУМ(СтрокиПередИванов.Период1) КАК Период1
ПОМЕСТИТЬ СрезДат
ИЗ
    СтрокиПередИванов КАК СтрокиПередИванов

СГРУППИРОВАТЬ ПО
    СтрокиПередИванов.Объект1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    бит_ИсторияИзмененияВиз.Объект,
    бит_ИсторияИзмененияВиз.Пользователь,
    бит_ИсторияИзмененияВиз.Решение
ПОМЕСТИТЬ ПользовательПередИванов
ИЗ
    СрезДат КАК СрезДат
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.бит_ИсторияИзмененияВиз КАК бит_ИсторияИзмененияВиз
        ПО СрезДат.Объект1 = бит_ИсторияИзмененияВиз.Объект
            И СрезДат.Период1 = бит_ИсторияИзмененияВиз.Период
;

////////////////////////////////////////////////////////////////////////////////

Но самому не нравится(

Полный текст (много букав):

ВЫБРАТЬ
    Пользователи.Ссылка КАК Админ,
    бит_Визы.Ссылка КАК ВизаРуков
ПОМЕСТИТЬ подзапрос
ИЗ
    Справочник.Пользователи КАК Пользователи,
    Справочник.бит_Визы КАК бит_Визы
ГДЕ
    Пользователи.Наименование = "Администратор"
    И бит_Визы.Наименование = "Виза Руководителя на местах"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    бит_ИсторияИзмененияВиз.Решение КАК Решение,
    ВЫБОР
        КОГДА бит_ИсторияИзмененияВиз.Пользователь <> подзапрос.Админ
            ТОГДА ВЫБОР
                    КОГДА бит_ИсторияИзмененияВиз.Пользователь.ФизЛицо <> ЗНАЧЕНИЕ(справочник.ФизическиеЛица.пустаяссылка)
                        ТОГДА бит_ИсторияИзмененияВиз.Пользователь.ФизЛицо
                    ИНАЧЕ бит_ИсторияИзмененияВиз.Пользователь
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА бит_ИсторияИзмененияВиз.Виза = подзапрос.ВизаРуков
                    ТОГДА бит_ИсторияИзмененияВиз.Виза
                ИНАЧЕ бит_ИсторияИзмененияВиз.Виза.ОбъектСвязи.Ссылка
            КОНЕЦ
    КОНЕЦ КАК ФизЛицо,
    1 КАК Счетчик,
    бит_ИсторияИзмененияВиз.ДатаКрайняя,
    бит_ИсторияИзмененияВиз.Период,
    бит_ИсторияИзмененияВиз.Объект,
    бит_ИсторияИзмененияВиз.Виза
ПОМЕСТИТЬ ОбщаяТаблицаАвторешений
ИЗ
    РегистрСведений.бит_ИсторияИзмененияВиз КАК бит_ИсторияИзмененияВиз,
    подзапрос КАК подзапрос
ГДЕ
    бит_ИсторияИзмененияВиз.Комментарий = "сработало автоматическое визирование"
    И бит_ИсторияИзмененияВиз.Решение <> ЗНАЧЕНИЕ(справочник.бит_ВидыРешенийСогласования.пустаяссылка)
    И бит_ИсторияИзмененияВиз.Период МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОбщаяТаблицаАвторешений.Период,
    ОбщаяТаблицаАвторешений.Объект,
    ОбщаяТаблицаАвторешений.Виза,
    ОбщаяТаблицаАвторешений.ФизЛицо,
    ОбщаяТаблицаАвторешений.Решение
ПОМЕСТИТЬ ОтклоненоИвановСтроки
ИЗ
    ОбщаяТаблицаАвторешений КАК ОбщаяТаблицаАвторешений
ГДЕ
    ОбщаяТаблицаАвторешений.Решение = ЗНАЧЕНИЕ(справочник.Бит_видыРешенийСогласования.отклонено)
    И ОбщаяТаблицаАвторешений.Виза.Наименование ПОДОБНО "%Иванов%"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    бит_ИсторияИзмененияВиз.Период КАК Период1,
    бит_ИсторияИзмененияВиз.Объект КАК Объект1,
    бит_ИсторияИзмененияВиз.Виза КАК Виза1,
    бит_ИсторияИзмененияВиз.Пользователь,
    бит_ИсторияИзмененияВиз.Решение КАК Решение1
ПОМЕСТИТЬ СтрокиПередИванов
ИЗ
    ОтклоненоИвановСтроки КАК ОтклоненоИвановСтроки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.бит_ИсторияИзмененияВиз КАК бит_ИсторияИзмененияВиз
        ПО ОтклоненоИвановСтроки.Объект = бит_ИсторияИзмененияВиз.Объект
            И ОтклоненоИвановСтроки.Виза <> бит_ИсторияИзмененияВиз.Виза
            И ОтклоненоИвановСтроки.Период > бит_ИсторияИзмененияВиз.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СтрокиПередИванов.Объект1,
    МАКСИМУМ(СтрокиПередИванов.Период1) КАК Период1
ПОМЕСТИТЬ СрезДат
ИЗ
    СтрокиПередИванов КАК СтрокиПередИванов

СГРУППИРОВАТЬ ПО
    СтрокиПередИванов.Объект1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    бит_ИсторияИзмененияВиз.Объект,
    бит_ИсторияИзмененияВиз.Пользователь,
    бит_ИсторияИзмененияВиз.Решение
ПОМЕСТИТЬ ПользовательПередИванов
ИЗ
    СрезДат КАК СрезДат
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.бит_ИсторияИзмененияВиз КАК бит_ИсторияИзмененияВиз
        ПО СрезДат.Объект1 = бит_ИсторияИзмененияВиз.Объект
            И СрезДат.Период1 = бит_ИсторияИзмененияВиз.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОбщаяТаблицаАвторешений.Решение,
    ОбщаяТаблицаАвторешений.ФизЛицо,
    ОбщаяТаблицаАвторешений.Счетчик,
    ОбщаяТаблицаАвторешений.ДатаКрайняя,
    ОбщаяТаблицаАвторешений.Период,
    ОбщаяТаблицаАвторешений.Объект,
    ОбщаяТаблицаАвторешений.Виза,
    ВЫБОР
        КОГДА ОбщаяТаблицаАвторешений.ФизЛицо ССЫЛКА Справочник.ФизическиеЛица
            ТОГДА ВЫБОР
                    КОГДА ОбщаяТаблицаАвторешений.ФизЛицо.Код = "0000001077"
                        ТОГДА ПользовательПередИванов.Пользователь
                    ИНАЧЕ NULL
                КОНЕЦ
        ИНАЧЕ NULL
    КОНЕЦ КАК Поле1
ИЗ
    ОбщаяТаблицаАвторешений КАК ОбщаяТаблицаАвторешений,
    ПользовательПередИванов КАК ПользовательПередИванов
1 Beduin
 
28.01.14
16:00
(0) Вот скажи зачем нам в этом полотне разбираться?
2 zak555
 
28.01.14
16:00
а забыл =)
3 cons74
 
28.01.14
16:00
off: ну почему, ну почему когда я писал кусочек кода он форумом распознался тест, а тут нет???
4 cons74
 
28.01.14
16:01
(1) извиняюсь
5 cons74
 
28.01.14
16:01
Главная проблема: требуется получить из периодического регистра сведений строку с пользователем, перед строкой где "Иванов" поставил решение "отклонено".
6 Apokalipsec
 
28.01.14
16:01
СтрокиПередИванов  - ржал.
Увидел дальше "бит" - ещё больше ржал.)
7 Ёпрст
 
28.01.14
16:02
(0) ни разу не комильфо привязываться к коду и наименованию в тексте запроса
8 vicof
 
28.01.14
16:03
(6) ага
ГДЕ
    Пользователи.Наименование = "Администратор"
    И бит_Визы.Наименование = "Виза Руководителя на местах"
9 Klesk666
 
28.01.14
16:06
(7) +100
для этого и придумали в 8 предопределенные значения
10 Klesk666
 
28.01.14
16:07
(0) проще переписать , чем разбираться
11 cons74
 
28.01.14
16:07
Рад что повеселил. А по существу?
12 Ёпрст
 
28.01.14
16:09
(11) Забить болт. Работает ? Бабло освоено ? - Следующий..
13 cons74
 
28.01.14
16:14
Ну раз по существу особо нечего... может хотя-бы на счет (7) и (9) поясните?
14 vicof
 
28.01.14
16:17
(13) ну поменялось имя у пользователя, что делать будешь? Запрос переписывать?
15 Кир Пластелинин
 
28.01.14
16:18
(14) тсс. не пали контору
16 13_Mult
 
28.01.14
16:21
Ух ты ж ёпрст и здесь "Бит" нарисовался ))
17 Fish
 
28.01.14
16:21
(14) Если имя поменялось, то клиент вызывает автора и тот переписывает обработку на новое имя за немерянное бабло.
18 vicof
 
28.01.14
16:23
(17) Хороший ход) Но если это будет повторяться с завидной периодичностью, думаю, автор будет изгнан с позором))
19 vicof
 
28.01.14
16:24
(18) Хотя...может быть и не будет)
20 13_Mult
 
28.01.14
16:25
А Кир Пластелинин в БИТе на работал случаем? ))
21 cons74
 
28.01.14
16:27
(14) Администратора кто-то будет переименовывать???
"Виза Руководителя на местах" - то же никак не планируется переименовывать.
Привязаться к коду элемента (справочника)? Так префиксы совсем недавно меняли.
22 Chum
 
28.01.14
16:28
Я увидел в коде "бит_" и меня, извините, сдурнило.
23 Ненавижу 1С
 
гуру
28.01.14
16:31
(21) когда говорят "постоянно" или "только так" - не верь им
24 cons74
 
28.01.14
16:32
(23) ну хорошо, а КАК надо было?
25 новичекВ1С
 
28.01.14
16:33
ПЯТНИЦА 0_О? )))
26 vicof
 
28.01.14
16:34
(24) И это говорит человек с двумя специалистами по бухгалтерии и зарплате.
Открой для себя параметры
27 Кир Пластелинин
 
28.01.14
16:37
(20) упаси хоспади меня от такой судьбинушки))
28 cons74
 
28.01.14
16:38
(26) уважаемый, желтые бумажки-подтирашки "спец-конс" и "спец" - это разные вещи. Консультант он по функционалу, "Пользовательские режимы" знаете ли.
В Программировании я только в самом начале пути.
29 H A D G E H O G s
 
28.01.14
16:38
Хорошая попытка Бит, но я все равно не пойду в тебя работать.
30 cons74
 
28.01.14
16:40
(29) БИТа тут нет. Дали эту конфу, сказали "кури".
Чего только закомментированные куски кода на полэкрана (в модуле проведения документа) "разработчиков" БИТа стоят...
31 cons74
 
28.01.14
16:40
mista как всегда в своем репертуаре. Типично российский форум.
Хочешь толковых ответов - жди на infostart`e. Э-эх.
32 H A D G E H O G s
 
модератор
28.01.14
16:42
(31) Могу выписать больничный.
33 MaxisUssr
 
28.01.14
16:42
(31)
"Этот форум"
34 vicof
 
28.01.14
16:42
(32) Три дня за счет государства :)
35 13_Mult
 
28.01.14
16:51
(32) +
36 neckto
 
28.01.14
16:54
(31) В (0) вопрос не задан.
37 Apokalipsec
 
28.01.14
16:54
(27) Ты же в другом франче - у охотницы? Разница минимальна.
38 Кир Пластелинин
 
28.01.14
16:56
(37)господа) откуда у Вас такая информация то?) я узнаю много нового о себе)
39 13_Mult
 
28.01.14
16:57
(38) никому не скрыться от бабушки голодным ))
40 Apokalipsec
 
28.01.14
16:58
(38) Ты в её ветке мелькал.) либо кто-то с похожим ником.
41 Кир Пластелинин
 
28.01.14
16:58
(39) тогда спешу Вас разочаровать) не во фране работаю
42 13_Mult
 
28.01.14
16:59
Хорошая тема, много зрителей собрала )
43 vitanimka
 
28.01.14
17:00
"ГДЕ
    Пользователи.Наименование = "Администратор"
    И бит_Визы.Наименование = "Виза Руководителя на местах"" - бить ЖКК того кто это придумал и написал. Еще можно Радченко заставить съесть. Повеселил.
44 Кир Пластелинин
 
28.01.14
17:04
(43) да там таких перлов во всем запросе уйма
45 Necessitudo
 
29.01.14
07:26
ой, Бит Финанс?
2 + 2 = 3.9999999999999999999999999999999...