Имя: Пароль:
1C
 
Детальные записи
0 ShpakovMaxim
 
24.12.25
13:28
Проблема значиться такая:
Создал отчет, который выводит акб и посещения в формате 1 и 0. Если есть посещение, значит 1, если его нет, тогда 0. С остальными полями так же. И вроде все хорошо, но когда начал проверять обнаружил проблему: Если убрать детальные записи и сделать иерархию по менеджеру или торговой сети - подсчеты ломаются и выводятся чуть ли не в 2 раза больше.
1 maxab72
 
24.12.25
13:29
код в студию!
2 ShpakovMaxim
 
24.12.25
13:33
https://ibb.co/JWHbftfv
https://ibb.co/nNLDs8bS
https://ibb.co/N2kwxChd

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ЗаказыТорговогоПредставителяСрезПоследних.ТорговыйОбъект КАК ТорговыйОбъект,
    ЗаказыТорговогоПредставителяСрезПоследних.Посещение КАК Посещение
ПОМЕСТИТЬ ВТ_Посещения
ИЗ
    РегистрСведений.ЗаказыТорговогоПредставителя.СрезПоследних КАК ЗаказыТорговогоПредставителяСрезПоследних
ГДЕ
    ЗаказыТорговогоПредставителяСрезПоследних.Период МЕЖДУ &ДатаНач И &ДатаКон
    И ЗаказыТорговогоПредставителяСрезПоследних.ТорговыйОбъект.Активный = &Истина
    И ЗаказыТорговогоПредставителяСрезПоследних.Посещение = &Истина
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ТорговыеОбъекты.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_ТорговыеОбъекты
ИЗ
    Справочник.ТорговыеОбъекты КАК ТорговыеОбъекты
ГДЕ
    ТорговыеОбъекты.ПометкаУдаления = &Ложь
    И ТорговыеОбъекты.Активный = &Истина
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТ_ТорговыеОбъекты.Ссылка КАК Ссылка,
    ВТ_ТорговыеОбъекты.Ссылка.Контрагент КАК СсылкаКонтрагент,
    ВТ_ТорговыеОбъекты.Ссылка.Контрагент.ТорговаяСеть КАК СсылкаКонтрагентТорговаяСеть,
    ВТ_ТорговыеОбъекты.Ссылка.ТипТорговойТочки КАК СсылкаТипТорговойТочки,
    ВТ_ТорговыеОбъекты.Ссылка.Менеджер.Супервайзер КАК СсылкаМенеджерСупервайзер,
    ВТ_ТорговыеОбъекты.Ссылка.Менеджер КАК СсылкаМенеджер,
    ВТ_ТорговыеОбъекты.Ссылка.МенеджерИнтервалМеждуПосещениями КАК СсылкаМенеджерИнтервалМеждуПосещениями
ПОМЕСТИТЬ ВТ_Данные
ИЗ
    ВТ_ТорговыеОбъекты КАК ВТ_ТорговыеОбъекты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПланПоАКБСрезПоследних.ТорговыйОбъект КАК ТорговыйОбъект,
    ПланПоАКБСрезПоследних.Менеджер КАК Менеджер,
    ПланПоАКБСрезПоследних.Контрагент КАК Контрагент,
    ПланПоАКБСрезПоследних.ПланПоАКБ КАК ПланПоАКБ
ПОМЕСТИТЬ ВТ_ПланАКБ
ИЗ
    РегистрСведений.ПланПоАКБ.СрезПоследних КАК ПланПоАКБСрезПоследних
ГДЕ
    ПланПоАКБСрезПоследних.Период МЕЖДУ &ДатаНач И &ДатаКон
;

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

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

C радостью услышу критику и советы по самому запросу. (Понимаю, что первых 3 запроса можно в 1 сделать).
3 Волшебник
 
24.12.25
13:35
что такое АКБ?
4 ShpakovMaxim
 
24.12.25
13:41
Активная клиентская база
5 maxab72
 
24.12.25
13:43
здесь ошибка, в формировании ВТ_ФактАКБ. надо сразу в ней считать количество фактов посещения, а не переносить этот подсчет в последний запрос.
И второе, ты объединяешь таблицы с разным количеством полей сравнения, ВТ_Посещения и ВТ_ФактАКБ с ВТ_ПланАКБ , соответственно у тебя в результирующей таблице данные из ВТ_Посещения задвоятся. Приведи структуру объединяемых таблиц к единому виду по полям.
6 Мультук
 
гуру
24.12.25
13:50
(0)
Сформулируйте АКБ в постановке задачи. По каким группировка он считается.
Сформулируйте какие поля нужны пользователю.

P.S.

(3) В моём понимании
  
АКБ это

Количество(Различные Контрагент)


Ну или от постановки задачи

Количество(Различные Контрагент, Измерение2, ИзмерениеN)


Я всегда рассчитывал для СКД такие вещи в ресурсах.


    ТорговыеОбъекты.ПометкаУдаления = &Ложь
    И ТорговыеОбъекты.Активный = &Истина


Почему-то вспоминается вечное

#define TRUE FALSE // удачной отладки!
7 ShpakovMaxim
 
24.12.25
13:58
Есть клиентская база. Ее посещают люди с какой-то периодичностью(7,14,28 и т.д. дней). Есть такой график мол в какой день когда какое посещение должно быть.
и вот план по АКБ показывает есть ли посещение у человека данного клиента в этом месяце.
8 ShpakovMaxim
 
24.12.25
14:19
(5) Спасибо тебе огромное.
9 ShpakovMaxim
 
24.12.25
14:20
Если есть возможность, подскажите, какую книгу, сайт или что-то еще можно прочитать, чтобы писать хорошие запросы?
10 Волшебник
 
24.12.25
14:23
(9) Конфигуратор / Справка / Содержание справки / Встроенный язык / Работа с запросами

11 maxab72
 
24.12.25
14:23
(7) Так и используй эти данные. Сперва построй плоскую таблицу со всеми значащими измерениями, по которым ты потом будешь сворачивать разные отчеты. Например плоская таблица должна иметь поля: Тип торговой точки, Менеджер, Контрагент, План АКБ, Факт АКБ, Посещение, Отклонения. Потом думаешь, как ее заполнить. Причем учитываешь, что если плоская таблица имеет 3 колонки для свертки, а прикрепляемая таблица имеет только 2 поля для сравнения - она прикрепится к нескольким строкам плоской результирующей таблицы.