Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Иерархия с владельцем справочника          
SV71 Подменю пользователя
сообщение 08.07.15, 11:19
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Всем здравия!

Самописная конфигурация.
Версия 1С 8.2, режим "Управляемое приложение".

1. Есть справочники: "Проекты" - иерархия групп и элементов, "ЧастиПроекта" - владелец "Проекты".

2. Документ "Платеж".
В табличной части "Операции" документа "Платеж" установлен реквизит "Проект" составного типа: СправочникСсылка.Проекты, СправочникСсылка.ЧастиПроекта.
При проведении реквизит "Проект" заносится в регист бухгалтерии "ЖурналОпераций"."Субконто1".
Не указываю подробного описания по связи "ЖурналаОпераций" с "Планом счетов" и "Планом видов характеристик", т.к. это не важно - суть в следующем.

3. Создал отчет "СостояниеПроектов".
3.1. Запрос:
ВЫБРАТЬ
    ТАБ_Обороты.Субконто1 КАК Проект,
    ТАБ_Обороты.СуммаОборот
ИЗ
    РегистрБухгалтерии.ЖурналОпераций.Обороты КАК ТАБ_Обороты

3.2. Ресуры: "СуммаОборот"
3.3. Настройки: Список, Группировка "Проект" (иерархия).

В данном отчете "Проекты" в иерархии как и должно быть отображаются нормально.
Хочется и "ЧастиПроекта" отобразить в иерархии. Иерархию для них нужно построить к "Владелец", который является элементом "Проекты".


Здесь желтым выделены "ЧастиПроекта"

Помогите пожалуйста решить вопрос.

Всех благ!!!

TipsyKID Подменю пользователя
сообщение 08.07.15, 11:26
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Попробую включить телепата :
ВЫБРАТЬ
    ТАБ_Обороты.Субконто1 КАК Проект,
    ТАБ_Обороты.СуммаОборот
ИЗ
    РегистрБухгалтерии.ЖурналОпераций.Обороты КАК ТАБ_Обороты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТАБ_Обороты2.Субконто2.Владелец,
    ТАБ_Обороты2.СуммаОборот
ИЗ
    РегистрБухгалтерии.ЖурналОпераций.Обороты КАК ТАБ_Обороты2


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

Спасибо сказали: SV71,

sava1 Подменю пользователя
сообщение 08.07.15, 11:41
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

А не проще использовать иерархию Проект и не задействовать ЧастиПроекта?
Цитата(TipsyKID @ 08.07.15, 12:26) *
ВЫБРАТЬ
    ТАБ_Обороты2.Субконто2.Владелец,

Имхо, части проекта находятся в Субконто1?
Используйте в запросе
CASE Субконто1 когда ссылка справочник.Проекты тогда  Субконто1
                                                         когда ссылка справочник.ЧастиПроекта тогда  Субконто1.Владелец конец как Проект


Сообщение отредактировал sava1 - 08.07.15, 11:42

TipsyKID Подменю пользователя
сообщение 08.07.15, 11:49
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

В условиях телепатии, тяжело давать оптимальные советы, лишь, по возможности, универсальные.

Сообщение отредактировал TipsyKID - 08.07.15, 11:50


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

SV71 Подменю пользователя
сообщение 09.07.15, 5:34
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(TipsyKID @ 08.07.15, 13:26) *
Попробую включить телепата :
ВЫБРАТЬ
    
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ


Спасибо за подсказанное решение.
Пошел по этому пути.

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

ОБЪЕДИНИТЬ ВСЕ

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

ОБЪЕДИНИТЬ ВСЕ

// ВЫБРАТЬ просто "Проекты"
ВЫБРАТЬ
    ТАБ_Проекты.Субконто1 КАК Проект,
    ТАБ_Проекты.Субконто1.Родитель КАК Родитель,
    ТАБ_Проекты.СуммаОборот
ИЗ
    РегистрБухгалтерии.Фин_Отч_ЖурналОпераций.Обороты КАК ТАБ_Проекты
ГДЕ
    ТАБ_Проекты.Субконто1 ССЫЛКА Справочник.НИС_Спр_Пр_Проекты


Ожидал, что "Части проекта" окажутся в иерархии с привязкой к своим "Проектам" но этого не произошло:

Здесь отмеченное красным должно быть в иерархии под выделенным желтым

Как обеспечить правильное отображение иерархии?

TipsyKID Подменю пользователя
сообщение 09.07.15, 9:42
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Как - то так.
ВЫБРАТЬ
    ТАБ_Владельцы.Субконто1.Владелец КАК Проект,
    ТАБ_Владельцы.Субконто1.Владелец.Родитель КАК Родитель,
    ТАБ_Владельцы.СуммаОборот
ПОМЕСТИТЬ ВТ_Данные
ИЗ
    РегистрБухгалтерии.Фин_Отч_ЖурналОпераций.Обороты КАК ТАБ_Владельцы
ГДЕ
    ТАБ_Владельцы.Субконто1 ССЫЛКА Справочник.НИС_Спр_Пр_ЧастиПроекта

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТАБ_ЧастиПроекта.Субконто1,
    ТАБ_ЧастиПроекта.Субконто1.Владелец,
    ТАБ_ЧастиПроекта.СуммаОборот
ИЗ
    РегистрБухгалтерии.Фин_Отч_ЖурналОпераций.Обороты КАК ТАБ_ЧастиПроекта
ГДЕ
    ТАБ_ЧастиПроекта.Субконто1 ССЫЛКА Справочник.НИС_Спр_Пр_ЧастиПроекта

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТАБ_Проекты.Субконто1,
    ТАБ_Проекты.Субконто1.Родитель,
    ТАБ_Проекты.СуммаОборот
ИЗ
    РегистрБухгалтерии.Фин_Отч_ЖурналОпераций.Обороты КАК ТАБ_Проекты
ГДЕ
    ТАБ_Проекты.Субконто1 ССЫЛКА Справочник.НИС_Спр_Пр_ЧастиПроекта
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Проекты.Ссылка КАК Проект,
    ЕСТЬNULL(ВТ_Данные.Родитель, "") КАК Родитель,
    ЕСТЬNULL(ВТ_Данные.СуммаОборот, 0) КАК СуммаОборот
ИЗ
    Справочник.Проекты КАК Проекты
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Данные КАК ВТ_Данные
        ПО Проекты.Ссылка = ВТ_Данные.Проект
ГДЕ
    НЕ ВТ_Данные.СуммаОборот ЕСТЬ NULL
СГРУППИРОВАТЬ ПО
       Проекты.Ссылка,
       ЕСТЬNULL(ВТ_Данные.Родитель, """")


Сообщение отредактировал TipsyKID - 09.07.15, 9:55


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

SV71 Подменю пользователя
сообщение 09.07.15, 11:00
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(TipsyKID @ 09.07.15, 11:42) *
Как - то так.
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Проекты.Ссылка КАК Проект,
    ЕСТЬNULL(ВТ_Данные.Родитель, "") КАК Родитель,
    ЕСТЬNULL(ВТ_Данные.СуммаОборот, 0) КАК СуммаОборот
ИЗ
    Справочник.Проекты КАК Проекты
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Данные КАК ВТ_Данные
        ПО Проекты.Ссылка = ВТ_Данные.Проект
ГДЕ
    НЕ ВТ_Данные.СуммаОборот ЕСТЬ NULL
СГРУППИРОВАТЬ ПО
       Проекты.Ссылка,
       ЕСТЬNULL(ВТ_Данные.Родитель, """")


Так не будет работать: отмеченные на картинке красным записи сразу отсекуться в "ЛЕВОЕ СОЕДИНЕНИЕ", потому что они не из "Справочник.Проекты", а из "Справочник.ЧастиПроекта".


Надо как-то по другому.

TipsyKID Подменю пользователя
сообщение 09.07.15, 11:19
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Поправте соединение.
       ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Данные КАК ВТ_Данные
       ПО Проекты.Ссылка = ВТ_Данные.Проект ИЛИ Проекты.Ссылка =  ВТ_Данные.Родитель


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

SV71 Подменю пользователя
сообщение 16.07.15, 7:22
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(TipsyKID @ 09.07.15, 13:19) *
Поправте соединение.
       ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Данные КАК ВТ_Данные
       ПО Проекты.Ссылка = ВТ_Данные.Проект ИЛИ Проекты.Ссылка =  ВТ_Данные.Родитель


Сомневался что это поможет. Проверил - так и есть: пропали записи с "Части проекта" (выделены на скриншотах отчета красным).

Тут принципиальная ошибка - попытка собрать только данные по справочнику "Проект", а нужно еще за проект выдать "Части проекта".

===========================================
Теперь про текущее состояние.

Загнал результат своего запроса (сообщение 09.07.15, 7:34) во временную таблицу. Потом выбрал данные и тип данных в полях "Проект", "Родитель":
// ВЫБРАТЬ "Проекты"-родители для "Части проекта"
ВЫБРАТЬ
    ТАБ_Владельцы.Субконто1.Владелец КАК Проект,
    ТАБ_Владельцы.Субконто1.Владелец.Родитель КАК Родитель,
    ТАБ_Владельцы.СуммаОборот
ПОМЕСТИТЬ ВТ_Данные
ИЗ
    РегистрБухгалтерии.Фин_Отч_ЖурналОпераций.Обороты КАК ТАБ_Владельцы
...
;

// ВЫБРАТЬ Данные
ВЫБРАТЬ
    ТипЗначения(Проект),
    Проект,
    ТипЗначения(Родитель),
    Родитель,
    СуммаОборот
ИЗ
    ВТ_Данные


Получил следующее:


С родителями тут все в порядке.
Я думаю СКД при сборе иерархии не присоединяет записи с типом "Части проекта", т.к. их тип отличается от родителей - тип "Проект".

Может можно как то преобразовать типы к какому-то универсальному, например "СправочникСсылка"?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 15:00
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!