Имя: Пароль:
1C
1С v8
БП 3. Динамический список, основная таблица.
0 Puzoter
 
14.09.15
16:25
В запросе динамического списка требуется сделать объединение. При этом если указать основную таблицу, то мастер ругается на то, что объединение в динамическом списке использовать невозможно, а если основную таблицу не указывать - не работает отбор (в обработчике выбора значения параметр "значение" вместо ссылки содержит число). Вопрос  - как сделать выбор значения, если не указана основная таблица?
1 Nuobu
 
14.09.15
16:26
(0) Указать, но обернуть в один запрос и убедиться, что дублей строк нету.
2 aleks_default
 
14.09.15
16:27
(0)Не число, а идентификатор строки. А по нему можно получить значение, смекаешь?
3 Puzoter
 
14.09.15
16:28
(1) Без объединения не получается избавиться от дублей
(2) Ага, буду пилить дальше
4 Nuobu
 
14.09.15
16:29
(3) Без объединения не получается избавиться от дублей
Так сверни после объединения.
5 Cyberhawk
 
14.09.15
16:31
(3) Даю тебе два пути: выбрать из внутренней таблицы, которая является объединением, либо поместить объединение таблиц в ВТ и во втором запросе пакета уже линейно все выбрать
6 Puzoter
 
14.09.15
16:32
(5) А разве ВТ работают в динамических списках?
7 Stim
 
14.09.15
16:33
(6) никогда
8 Fragster
 
гуру
14.09.15
16:34
чтобы отбор заработал _правильно_, еще может пригодиться закладка "компоновка данных" у конструктора в случае вложенных запросов.
9 Puzoter
 
14.09.15
16:38
(4) Как свернуть? Если выбирать из объединения двух запросов как (5) советует, то основную таблицу вообще выбрать не возможно - там пусто и результат соответствующий.
10 Nuobu
 
14.09.15
16:40
(9) Соедини внутренним соединением с нужной тебе таблицей - получится выбрать.
11 aleks_default
 
14.09.15
16:42
Проще запрос в студию
12 Puzoter
 
14.09.15
16:46
ВЫБРАТЬ
    СправочникФизическиеЛица.Ссылка,
    СправочникФизическиеЛица.ПометкаУдаления,
    СправочникФизическиеЛица.Предопределенный,
    СправочникФизическиеЛица.Родитель,
    СправочникФизическиеЛица.ЭтоГруппа,
    СправочникФизическиеЛица.Код,
    СправочникФизическиеЛица.Наименование,
    СправочникФизическиеЛица.ДатаРождения,
    СправочникФизическиеЛица.ИНН,
    СправочникФизическиеЛица.СтраховойНомерПФР,
    ТекущиеКадровыеДанныеСотрудников.Сотрудник.Код КАК ТабельныйНомер,
    ТекущиеКадровыеДанныеСотрудников.ТекущаяОрганизация КАК Организация,
    ТекущиеКадровыеДанныеСотрудников.Сотрудник.ВАрхиве КАК ВАрхиве,
    ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение КАК Подразделение,
    ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
    ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения,
    ТекущиеКадровыеДанныеСотрудников.ГоловнаяОрганизация,
    ВЫБОР
        КОГДА СправочникФизическиеЛица.Ссылка В (&СписокПодобранных)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК Подобран,
    ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости
ИЗ
    РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК СправочникФизическиеЛица
        ПО ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо = СправочникФизическиеЛица.Ссылка
            И (ТекущиеКадровыеДанныеСотрудников.ОсновноеРабочееМестоВОрганизации)
            И (ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
            И (ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы))
            
        

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    СправочникФизическиеЛица.Ссылка,
    СправочникФизическиеЛица.ПометкаУдаления,
    СправочникФизическиеЛица.Предопределенный,
    СправочникФизическиеЛица.Родитель,
    СправочникФизическиеЛица.ЭтоГруппа,
    СправочникФизическиеЛица.Код,
    СправочникФизическиеЛица.Наименование,
    СправочникФизическиеЛица.ДатаРождения,
    СправочникФизическиеЛица.ИНН,
    СправочникФизическиеЛица.СтраховойНомерПФР,
    ТекущиеКадровыеДанныеСотрудников.Сотрудник.Код,
    ТекущиеКадровыеДанныеСотрудников.ТекущаяОрганизация,
    ТекущиеКадровыеДанныеСотрудников.Сотрудник.ВАрхиве,
    ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение,
    ТекущиеКадровыеДанныеСотрудников.ДатаПриема,
    ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения,
    ТекущиеКадровыеДанныеСотрудников.ГоловнаяОрганизация,
    ВЫБОР
        КОГДА СправочникФизическиеЛица.Ссылка В (&СписокПодобранных)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ,
    ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости
ИЗ
    РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК СправочникФизическиеЛица
        ПО ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо = СправочникФизическиеЛица.Ссылка
            И (ТекущиеКадровыеДанныеСотрудников.ОсновноеРабочееМестоВОрганизации)
            И (ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
            И (НЕ ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы))
            И (НЕ СправочникФизическиеЛица.Ссылка В
                    (ВЫБРАТЬ
                        СправочникФизическиеЛица.Ссылка
                    ИЗ
                        РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК СправочникФизическиеЛица
                            ПО
                                ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо = СправочникФизическиеЛица.Ссылка
                                    И ТекущиеКадровыеДанныеСотрудников.ОсновноеРабочееМестоВОрганизации
                                    И ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                                    И ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)))
13 Puzoter
 
14.09.15
16:51
(10) Да получилось, но все равно ругается на дубли ссылок (
14 Cyberhawk
 
14.09.15
16:52
Раз ругается на дубли, значит, дубли есть. Сгруппируй по ссылкам.
15 Nuobu
 
14.09.15
16:53
(13) Так сверни.
У тебя ведь некоторые физ лица два раза попадаются в регистре сотрудников.
Попробуй взять срез последних, а не саму таблицу.
16 Puzoter
 
14.09.15
16:55
(15) РС не периодический, попробую сгруппировать по ссылкам
17 Nuobu
 
14.09.15
16:56
(16) А чего РС не периодический? Как так?
18 Puzoter
 
14.09.15
16:56
(17) Не знаю - регистр типовой
19 Nuobu
 
14.09.15
16:58
(18) Я БП3 в глаза не видел, если честно, но буду знать))). Спасибо.
Ну, тогда попробуй сам сделать срез последних, а то группировка не получится.
20 aleks_default
 
14.09.15
17:04
Переделывай запрос, однозначно
21 Puzoter
 
14.09.15
17:27
Выбрать
    СправочникФизическиеЛица.Ссылка,
    СправочникФизическиеЛица.ПометкаУдаления,
    СправочникФизическиеЛица.Предопределенный,
    СправочникФизическиеЛица.Родитель,
    СправочникФизическиеЛица.ЭтоГруппа,
    СправочникФизическиеЛица.Код,
    СправочникФизическиеЛица.Наименование,
    СправочникФизическиеЛица.ДатаРождения,
    СправочникФизическиеЛица.ИНН,
    СправочникФизическиеЛица.СтраховойНомерПФР,
    ТекущиеКадровыеДанныеСотрудников.ТабельныйНомер,
    ТекущиеКадровыеДанныеСотрудников.Организация,
    ТекущиеКадровыеДанныеСотрудников.ВАрхиве,
    ТекущиеКадровыеДанныеСотрудников.Подразделение,
    ТекущиеКадровыеДанныеСотрудников.ДатаПриема,
    ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения,
    ТекущиеКадровыеДанныеСотрудников.ГоловнаяОрганизация,
    ТекущиеКадровыеДанныеСотрудников.Подобран,
    ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости
ИЗ Справочник.ФизическиеЛица КАК СправочникФизическиеЛица
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ (


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

СГРУППИРОВАТЬ ПО
    СправочникФизическиеЛица.ПометкаУдаления,
    СправочникФизическиеЛица.Предопределенный,
    СправочникФизическиеЛица.Родитель,
    СправочникФизическиеЛица.ЭтоГруппа,
    СправочникФизическиеЛица.Код,
    СправочникФизическиеЛица.Наименование,
    СправочникФизическиеЛица.ДатаРождения,
    СправочникФизическиеЛица.ИНН,
    СправочникФизическиеЛица.СтраховойНомерПФР,
    ТекущиеКадровыеДанныеСотрудников.Сотрудник.Код,
    ТекущиеКадровыеДанныеСотрудников.ТекущаяОрганизация,
    ТекущиеКадровыеДанныеСотрудников.Сотрудник.ВАрхиве,
    ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение,
    ТекущиеКадровыеДанныеСотрудников.ДатаПриема,
    ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения,
    ТекущиеКадровыеДанныеСотрудников.ГоловнаяОрганизация,
    ВЫБОР
        КОГДА СправочникФизическиеЛица.Ссылка В (&СписокПодобранных)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ,
    ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости
) КАК ТекущиеКадровыеДанныеСотрудников
ПО ТекущиеКадровыеДанныеСотрудников.Ссылка = СправочникФизическиеЛица.Ссылка
22 Puzoter
 
14.09.15
17:29
Переделал вот так, но на дубли все равно ругается. Не соображу, как от них избавиться (
23 Nuobu
 
14.09.15
17:59
(22) Прочитай внимательно (19)
24 Puzoter
 
15.09.15
10:46
(23) Приведите пример пожалуйста - не могу сообразить как это сделать. Логично сделать срез по дате приема, но как построить запрос - не знаю.
25 Puzoter
 
15.09.15
12:06
Ни фуя не получается - в РС мусор из-за обмена данными
26 Nuobu
 
15.09.15
12:14
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn