Имя: Пароль:
1C
 
Как получить последнее в регистре сведений?
, ,
0 reznik911
 
31.01.18
12:35
Добрый день товарищи! Конфигурация нетиповая, платформа 8.3. Существуют единые бюджетные классификаторы (ЕБК) срок которых рассчитан на год. Есть документы на расходные классификаторы и на поступление. Создал Регистр сведений (периодичность - по позиции регистратора) для каждого вида (расход/поступ), сделал движение документов по нему. Создал обработку. Можно выбрать интервал времени и вид ЕБК (расх/пост). Для примера есть ЕКБ расход за 2017 и 2018гг.
Когда выбираешь 01,01,17 по 31,12,18г обработка должна показать документы за 2018, отбрасывая за 2017.

код:
ВЫБРАТЬ
    ЕБКРс.ФГ КАК ФГ,
    ЕБКРс.ФПГ КАК ФПГ,
    ЕБКРс.АБП КАК АБП,
    ЕБКРс.ПГ КАК ПГ,
    ЕБКРс.ППГ КАК ППГ,
    ЕБКРс.НаименованиеЭлементаРус КАК НаименованиеЭлементаРус,
    ЕБКРс.НаименованиеЭлементаКаз КАК НаименованиеЭлементаКаз,
    ЕБКРс.ДатаНачала КАК ДатаНачала,
    ЕБКРс.ДатаКонец КАК ДатаКонец
ПОМЕСТИТЬ ТабН
ИЗ
    РегистрСведений.ЕБКРс КАК ЕБКРс
ГДЕ
    ЕБКРс.ДатаНачала >= &ДатаНач
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЕБКРс.ФГ КАК ФГ,
    ЕБКРс.ФПГ КАК ФПГ,
    ЕБКРс.АБП КАК АБП,
    ЕБКРс.ПГ КАК ПГ,
    ЕБКРс.ППГ КАК ППГ,
    ЕБКРс.НаименованиеЭлементаРус КАК НаименованиеЭлементаРус,
    ЕБКРс.НаименованиеЭлементаКаз КАК НаименованиеЭлементаКаз,
    ЕБКРс.ДатаНачала КАК ДатаНачала,
    МАКСИМУМ(ЕБКРс.ДатаКонец) КАК ДатаКонец
ИЗ
    РегистрСведений.ЕБКРс КАК ЕБКРс
        ЛЕВОЕ СОЕДИНЕНИЕ ТабН КАК ТабН
        ПО ЕБКРс.ФГ = ТабН.ФГ
            И ЕБКРс.ФПГ = ТабН.ФПГ
            И ЕБКРс.АБП = ТабН.АБП
            И ЕБКРс.ПГ = ТабН.ПГ
            И ЕБКРс.ППГ = ТабН.ППГ
            И ЕБКРс.НаименованиеЭлементаРус = ТабН.НаименованиеЭлементаРус
            И ЕБКРс.НаименованиеЭлементаКаз = ТабН.НаименованиеЭлементаКаз
ГДЕ
    ЕБКРс.ДатаКонец <= &ДатаКон

СГРУППИРОВАТЬ ПО
    ЕБКРс.ФГ,
    ЕБКРс.ФПГ,
    ЕБКРс.АБП,
    ЕБКРс.ПГ,
    ЕБКРс.ППГ,
    ЕБКРс.НаименованиеЭлементаРус,
    ЕБКРс.НаименованиеЭлементаКаз,
    ЕБКРс.ДатаНачала
1 breezee
 
31.01.18
12:42
(0) ААААА
ВЫБРАТЬ
    ЕБКРс.ФГ КАК ФГ,
+ Code
    ЕБКРс.ФПГ КАК ФПГ,
    ЕБКРс.АБП КАК АБП,
    ЕБКРс.ПГ КАК ПГ,
    ЕБКРс.ППГ КАК ППГ,

А в чем проблема-то?
2 reznik911
 
31.01.18
12:44
(1) не отбрасывает данные за 2017, всех выводит, даже если максимум стоит
3 Быдло замкадное
 
31.01.18
12:46
ептвмть....
4 FIXXXL
 
31.01.18
12:47
(0) >Когда выбираешь 01,01,17 по 31,12,18г

сам же пишешь "01,01,17"
5 ЦиркУехал
 
31.01.18
12:47
срез последних же есть....

зачем изобретать велик...
6 Волшебник
 
модератор
31.01.18
12:48
ВЫБРАТЬ * ИЗ РегистрСведений.ЁПТВМТ.СрезПоследних(&Дата)
7 reznik911
 
31.01.18
12:48
(4) так я об этом и сказал постановщику задач, программисту. Я говорю в чем олгике видеть данные за 2018 указывая начало 2017
8 reznik911
 
31.01.18
12:49
(5) юзал. Но там если Дата конец точно не указать, то вообще ниче не выводит
9 GGDots
 
31.01.18
12:49
этот велосипед даже не поедет:)
10 GGDots
 
31.01.18
12:54
Если запрос все таки оставить как есть, то:

- то проблема (по мимо самого запроса) в группировке - по такой группировке скорее всего будет показывать всегда все документы (уж больно много группируемых параметров)
11 hhhh
 
31.01.18
12:55
(8) вот у тебя

  ЕБКРс.ДатаНачала КАК ДатаНачала,
    МАКСИМУМ(ЕБКРс.ДатаКонец) КАК ДатаКонец

зачем по дате начала группируешь? То есть ты принципиально включаешь все даты начала и не даешь программе шанса.
12 Antony8x
 
31.01.18
12:55
(9) :)
13 reznik911
 
31.01.18
13:03
(10) -датаначала
14 reznik911
 
31.01.18
13:05
(10) ну и дублирующих строк много было поэтому, я хоть и убираю дату начала, все равно группирует
15 ЦиркУехал
 
31.01.18
13:11
(8) в чем проблема указать конечную дату?
16 reznik911
 
31.01.18
13:15
(15) если указатьл дату 01,01,18 то за 2018 находит, .т.кт ищет более позднюю дату от точки.
Вот почему то с 2017 не пашет. указываю 010117 не находит
17 VS-1976
 
31.01.18
13:17
Тебе нужны последние документа прихода / расхода по каждому коду ЕБК?
18 reznik911
 
31.01.18
13:23
(17) да. Программист дал задание. Я всё сделал кроме даты. Он говорит не юзай виртуальную таблицу. Из регистра закинь во вложенные с условием ДатаНач>=&ДатаНач. После говорит прицепи к основной с условием ДатаКонец<=&ДатаКонец и Максимум(ДатаКонец). Я вместо вложенного использовал ВТ, дальше ерунда какая то получается по его методу
19 один я дАртаньян
 
31.01.18
13:30
ВЫБРАТЬ
    ЦеныНоменклатурыКонтрагентовСрезПоследних.Регистратор.МоментВремени,
    ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен,
    ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура,
    ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры,
    ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена
ПОМЕСТИТЬ втДанные
ИЗ
    РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&НаДату, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взПоследнийРегистратормаксимальнаяЦенаОодинКонтрагент.РегистраторМоментВремени,
    взПоследнийРегистратормаксимальнаяЦенаОодинКонтрагент.ТипЦен,
    взПоследнийРегистратормаксимальнаяЦенаОодинКонтрагент.Номенклатура,
    взПоследнийРегистратормаксимальнаяЦенаОодинКонтрагент.ХарактеристикаНоменклатуры,
    взПоследнийРегистратормаксимальнаяЦенаОодинКонтрагент.Цена,
    взПоследнийРегистратормаксимальнаяЦенаОодинКонтрагент.ТипЦен.Владелец КАК Контра
ИЗ
    (ВЫБРАТЬ
        втДанные.РегистраторМоментВремени КАК РегистраторМоментВремени,
        МАКСИМУМ(втДанные.ТипЦен) КАК ТипЦен,
        втДанные.Номенклатура КАК Номенклатура,
        втДанные.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        втДанные.Цена КАК Цена
    ИЗ
        (ВЫБРАТЬ
            втДанные.РегистраторМоментВремени КАК РегистраторМоментВремени,
            втДанные.Номенклатура КАК Номенклатура,
            втДанные.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
            МАКСИМУМ(втДанные.Цена) КАК Цена
        ИЗ
            (ВЫБРАТЬ
                втДанные.Номенклатура КАК Номенклатура,
                втДанные.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                МАКСИМУМ(втДанные.РегистраторМоментВремени) КАК РегистраторМоментВремени
            ИЗ
                втДанные КАК втДанные
            
            СГРУППИРОВАТЬ ПО
                втДанные.Номенклатура,
                втДанные.ХарактеристикаНоменклатуры) КАК взПоследнийРегистратор
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ втДанные КАК втДанные
                ПО взПоследнийРегистратор.Номенклатура = втДанные.Номенклатура
                    И взПоследнийРегистратор.ХарактеристикаНоменклатуры = втДанные.ХарактеристикаНоменклатуры
                    И взПоследнийРегистратор.РегистраторМоментВремени = втДанные.РегистраторМоментВремени
        
        СГРУППИРОВАТЬ ПО
            втДанные.РегистраторМоментВремени,
            втДанные.Номенклатура,
            втДанные.ХарактеристикаНоменклатуры) КАК МаксимальнаяЦенаПоследнегоРегистратора
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ втДанные КАК втДанные
            ПО МаксимальнаяЦенаПоследнегоРегистратора.РегистраторМоментВремени = втДанные.РегистраторМоментВремени
                И МаксимальнаяЦенаПоследнегоРегистратора.Номенклатура = втДанные.ХарактеристикаНоменклатуры
                И МаксимальнаяЦенаПоследнегоРегистратора.ХарактеристикаНоменклатуры = втДанные.ХарактеристикаНоменклатуры
                И МаксимальнаяЦенаПоследнегоРегистратора.Цена = втДанные.Цена
    
    СГРУППИРОВАТЬ ПО
        втДанные.РегистраторМоментВремени,
        втДанные.Номенклатура,
        втДанные.ХарактеристикаНоменклатуры,
        втДанные.Цена) КАК взПоследнийРегистратормаксимальнаяЦенаОодинКонтрагент
20 GGDots
 
31.01.18
13:35
"Программист дал задание" - получается ты программист который получил задание от программиста?

Он точно адекватно поставил задачу?
21 reznik911
 
31.01.18
13:40
(20) я тот кто пришел учиться)). Другие языки ООП дались без проблем. Все видеоуроки смотрел гилева чистова, так по мелочи в базах исправлял. Отчеты и тд. Пришел в эту фирму. Он типа типа старшего программиста работает. Думал научат. Каждый день дают задание. Пока выполнял. Эта меня в ступор загнала
22 reznik911
 
31.01.18
13:43
(19) ??
23 GGDots
 
31.01.18
14:11
Может быть эта задача из серии: не мешай я занят, вот тебе какой то бред - сделай:)))

Ну как у него узнаешь как бы он сделал, поделись с остальными.