Имя: Пароль:
1C
1С v8
работа с периодический регистр сведений
0 Эльчин
 
11.03.17
10:10
привет. есть периодический регистр сведений. колонки ЗОНА(СОТРУДНИК) и ФИЗЛИЦО. сохраняет в себя имена физических лиц зоны по периодам приема на работу. картина 1:
http://www.ximage.ru/index.php?id=1489215300
нужно выбрать только последние записи зоны. Например как на картине 1 отметил одну зону "Yaqubov Elnur". у него 2 физический лиц. нужно что в отчете выводилась не все 2 записи.  нужно только последний по периоду.
в СКД запрос написал так:
http://www.ximage.ru/index.php?id=1489215315
думал что так получится, но не получилось:
http://www.ximage.ru/index.php?id=1489215323
как сделать?
буду очень благодарен если поможете(извините из за ошибок в тексте)
1 vicof
 
11.03.17
10:15
Берешь максимум по периоду и соединяешься с основой таблицей по нему же
2 Эльчин
 
11.03.17
10:18
(1) как будет запрос?
3 Эльчин
 
11.03.17
10:20
(1) логика мне понятно, я сам написал об этом. но не знаю как написать запрос
4 Эльчин
 
11.03.17
10:22
(1) как вбрать максимум попериоду?
5 Эльчин
 
11.03.17
10:24
(1) если нужно было выбрат толко по одной зоне, тогда сортировал по периоду и выбрал толко первый. но не знаю как выбрать максимум по периоду всех зоны в запросе
6 Мимохожий Однако
 
11.03.17
10:50
(5) смотри (1)
7 Эльчин
 
11.03.17
10:51
ребята, срезпоследных не должен ли сам выбрать только послендых записей по периоду? отвечайте пожалуйста
8 Эльчин
 
11.03.17
10:59
(6) до этово мы всегда этого сделали так как я на запросе написал. срез последных сам должен выбрать только последние, но не получантся. не так ли?
9 Tapeworm
 
11.03.17
11:03
(8) видимо до этого вы это делали с регистрами сведений с нормальной структурой, а в данном случае уверен, что и зона и физлицо в измерениях регистра
10 trooba
 
11.03.17
11:04
(8) Убери физлицо в запрое, сгруппируй по зона, помести во временную таблицу, потом к этой временной присоедини слева еще раз таблицу, но уже с физлицом и в параметре таблицы укажи дату
11 Мимохожий Однако
 
11.03.17
11:04
(8) Покажи структуру регистра из конфигуратора
12 trooba
 
11.03.17
11:06
(10) + В 1 таблице еще период убери
13 Эльчин
 
11.03.17
11:12
14 Мимохожий Однако
 
11.03.17
11:14
(12) +1
15 Эльчин
 
11.03.17
11:16
(10) если бы так получилось, токда в моем варианте тоже получилось бы. потому что почти нет разницы. на всякой случае попробовал твой вариант. одно и то же
16 Эльчин
 
11.03.17
11:17
(12) убрал, не получается
17 Мимохожий Однако
 
11.03.17
11:17
(15) Покажи последний текст запроса
18 Эльчин
 
11.03.17
11:19
19 Эльчин
 
11.03.17
11:19
15? подожди сейчас опят напишу
20 Эльчин
 
11.03.17
11:20
(17) но я делаю не с помошю временных таблиц. я всегда работаю с вложенными запросами. сейчас сделаю с ними
21 Мимохожий Однако
 
11.03.17
11:21
(18) весь ТЕКСТ ЗАПРОСА. сюда, буквами. Не надо картинок
22 Эльчин
 
11.03.17
11:23
(21) ВЫБРАТЬ
    Зоны.Зона,
    ФизлицаСрезПоследных.Физлицо
ИЗ
    (ВЫБРАТЬ
        ФизЛицаЗоныПоПериоду.Зона КАК Зона
    ИЗ
        РегистрСведений.ФизЛицаЗоныПоПериоду КАК ФизЛицаЗоныПоПериоду
    
    СГРУППИРОВАТЬ ПО
        ФизЛицаЗоныПоПериоду.Зона) КАК Зоны
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ФизЛицаЗоныПоПериодуСрезПоследних.Зона КАК Зона,
            ФизЛицаЗоныПоПериодуСрезПоследних.Физлицо КАК Физлицо
        ИЗ
            РегистрСведений.ФизЛицаЗоныПоПериоду.СрезПоследних КАК ФизЛицаЗоныПоПериодуСрезПоследних) КАК ФизлицаСрезПоследных
        ПО Зоны.Зона = ФизлицаСрезПоследных.Зона
23 Tapeworm
 
11.03.17
11:24
(20)
ВЫБРАТЬ
    ФизЛицаЗоныПоПериоду.Зона КАК Сотрудник,
    ФизЛицаЗоныПоПериоду.Физлицо,
    ФизЛицаЗоныПоПериоду.Период
ИЗ
    (ВЫБРАТЬ
        МАКСИМУМ(ФизЛицаЗоныПоПериодуСрезПоследних.Период) КАК Период,
        ФизЛицаЗоныПоПериодуСрезПоследних.Зона КАК Зона
    ИЗ
        РегистрСведений.ФизЛицаЗоныПоПериоду.СрезПоследних КАК ФизЛицаЗоныПоПериодуСрезПоследних
    
    СГРУППИРОВАТЬ ПО
        ФизЛицаЗоныПоПериодуСрезПоследних.Зона) КАК ВложенныйЗапрос
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ФизЛицаЗоныПоПериоду КАК ФизЛицаЗоныПоПериоду
        ПО ВложенныйЗапрос.Период = ФизЛицаЗоныПоПериоду.Период
            И ВложенныйЗапрос.Зона = ФизЛицаЗоныПоПериоду.Зона"
24 Tapeworm
 
11.03.17
11:25
Поторопился, соединение не то, вот:
ВЫБРАТЬ
    ЦеныАТТ.Склад,
    ЦеныАТТ.Номенклатура,
    ЦеныАТТ.Период
ИЗ
    РегистрСведений.ЦеныАТТ КАК ЦеныАТТ
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МАКСИМУМ(ЦеныАТТСрезПоследних.Период) КАК Период,
            ЦеныАТТСрезПоследних.Склад КАК Склад
        ИЗ
            РегистрСведений.ЦеныАТТ.СрезПоследних КАК ЦеныАТТСрезПоследних
        
        СГРУППИРОВАТЬ ПО
            ЦеныАТТСрезПоследних.Склад) КАК ВложенныйЗапрос
        ПО (ВложенныйЗапрос.Период = ЦеныАТТ.Период)
            И (ВложенныйЗапрос.Склад = ЦеныАТТ.Склад)
25 Tapeworm
 
11.03.17
11:26
пля(
26 Эльчин
 
11.03.17
11:27
(23) понял. спасибо
27 Tapeworm
 
11.03.17
11:27
вот:
ВЫБРАТЬ
    ФизЛицаЗоныПоПериоду.Зона КАК Сотрудник,
    ФизЛицаЗоныПоПериоду.Физлицо,
    ФизЛицаЗоныПоПериоду.Период
ИЗ
    РегистрСведений.ФизЛицаЗоныПоПериоду КАК ФизЛицаЗоныПоПериоду
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МАКСИМУМ(ФизЛицаЗоныПоПериодуСрезПоследних.Период) КАК Период,
            ФизЛицаЗоныПоПериодуСрезПоследних.Зона КАК Зона
        ИЗ
            РегистрСведений.ФизЛицаЗоныПоПериоду.СрезПоследних КАК ФизЛицаЗоныПоПериодуСрезПоследних
        
        СГРУППИРОВАТЬ ПО
            ФизЛицаЗоныПоПериодуСрезПоследних.Зона) КАК ВложенныйЗапрос
        ПО (ВложенныйЗапрос.Период = ФизЛицаЗоныПоПериоду.Период)
            И (ВложенныйЗапрос.Зона = ФизЛицаЗоныПоПериоду.Зона)
28 Мимохожий Однако
 
11.03.17
11:29
(0)Неплохо бы перед СКД отрабатывать запрос в консоли запросов
29 Эльчин
 
11.03.17
11:30
спасибо всем. сейчас поня как выбрать максимум по периоду. но мне интересно, почему срез последных сам не выбирает последную?
30 Tapeworm
 
11.03.17
11:32
(29) Надо в структре регистра Физлицо из "Измерения" в "Ресурсы" утащить
31 Мимохожий Однако
 
11.03.17
11:36
(29) Выбираются не последние записи таблицы регистра, а последние значения на определенную дату. Тебе надо было другое.
32 Эльчин
 
11.03.17
11:37
подождите
33 Эльчин
 
11.03.17
11:38
такой связ:
http://www.ximage.ru/index.php?id=1489221453
а такой результат:
http://www.ximage.ru/index.php?id=1489221485
не понимаю
34 Эльчин
 
11.03.17
11:38
(30)если это будет решать проблему могу этого делать
35 Мимохожий Однако
 
11.03.17
11:39
РегистрСведенийМенеджер.<Имя регистра сведений>.СрезПоследних (InformationRegisterManager.<Имя регистра сведений>.SliceLast)
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>)
СрезПоследних (SliceLast)
Синтаксис:

СрезПоследних(<КонецПериода>, <Отбор>)
Параметры:

<КонецПериода> (необязательный)

Тип: Дата; МоментВремени; Граница.
Определяет момент времени, заканчивая которым необходимо выбрать записи.
Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра.
<Отбор> (необязательный)

Тип: Структура.
Структура, содержащая отбор по измерениям и реквизитам регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение.
Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение.
Если параметр не указан, то отбор не используется.
Возвращаемое значение:

Тип: ТаблицаЗначений.
Таблица значений, заполненная данными найденных записей регистра сведений.
Описание:

Получает наиболее поздние записи регистра, соответствующие установленным в параметрах метода значениям ключевых полей. Записи подбираются для каждого сочетания из всех имеющихся значений измерений регистра.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Применим только для периодических регистров сведений.
Пример:

МаркетингЦен = РегистрыСведений.МаркетингЦен;
ТекущиеЦеныКонкурентов = МаркетингЦен.СрезПоследних(ТекущаяДата());


--------------------------------------------------------------------------------

     Методическая информация
36 Эльчин
 
11.03.17
11:41
(35) что с этим хотели мне обьяснить? я думаю что мне это понятно было. и поэтому я говорю что срез последних сам должен выбтарь последний запись. не так ли?
37 Эльчин
 
11.03.17
11:42
(30) почему?
38 Tapeworm
 
11.03.17
11:43
(33) пробуй мой запрос из (23) только замени ВНУТРЕННЕЕ СОЕДИНЕНИЕ на ЛЕВОЕ СОЕДИНЕНИЕ
39 Мимохожий Однако
 
11.03.17
11:43
(36) Нет. Поэтому и привел выдержку из СП
40 Эльчин
 
11.03.17
11:43
41 Мимохожий Однако
 
11.03.17
11:44
Ты консоль запросов почему игнорируешь?
42 Эльчин
 
11.03.17
11:44
(39) http://www.ximage.ru/index.php?id=1489221815
что это? обьясните пожалюста если есть время
43 trooba
 
11.03.17
11:44
(37) Потому что у тебя период в выборке. Его не должно быть.

ТвойРегистр.ТвойРегистрСрезПоследних(,&Дата)
44 Эльчин
 
11.03.17
11:44
(41) откуда его скачать?
45 Мимохожий Однако
 
11.03.17
11:44
(40) Значения ресурсов - это не запись регистра. Сам же подчеркнул
46 trooba
 
11.03.17
11:45
(44) На любом диске ИТС
47 Мимохожий Однако
 
11.03.17
11:45
(44) в некоторых типовых конфигурациях есть
48 Tapeworm
 
11.03.17
11:46
(42) важнее этот кусок: "Получает наиболее поздние записи регистра, соответствующие установленным в параметрах метода значениям ключевых полей. Записи подбираются для каждого сочетания из всех имеющихся значений измерений регистра. "

ВСЕХ ИМЕЮЩИХСЯ ЗНАЧЕНИЙ ИЗМЕРЕНИЙ РЕГИСТРА
49 Tapeworm
 
11.03.17
11:47
(48) + поэтому и предложил убрать физлицо из Измерений в Ресурсы, потому что вроде бы по логике так должно и было быть
50 Эльчин
 
11.03.17
11:48
хорошо. спасибо всем. сейчас понятно. перемешу их в ресурс. спасибо всем за терпение
51 Мимохожий Однако
 
11.03.17
11:49
(49) Именно так. Если бы ТС начал с описания структуры регистра вместо картинок и  нарезок, то ответ бы получил еще раньше.
52 Эльчин
 
11.03.17
11:50
(51) что такое ТС?
53 trooba
 
11.03.17
11:52
(52) Топик Стартер-ты то есть
54 Tapeworm
 
11.03.17
11:54
(52) Топикстартер (ТС) (англ. topic starter — начинающий тему) — автор темы на форуме.
55 Эльчин
 
11.03.17
12:06
ок. я думал что все уже знаю об этом))