INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Еникеев Марат | Руководитель проектов 1С | ГК «Комплексная автоматизация»

«Структурно-независимые базы данных в 1С»

В докладе расскажу об идеях построения гибких (содержащих в БД структуру данных) систем на платформе 1С. Рассмотрим: - варианты развития функциональности известных подсистем БСП "Дополнительные реквизиты/сведения"; - как они соотносятся с конфигурациями "Конвертация данных (2 и 3)" и "Система проектирования прикладных решений"; - причем здесь паттерн программирования Модель-Представление-Контроллер (MVC) и расширение “Характеристики” языка запросов СКД; - по-новому посмотрим на периодические независимые регистры сведений и возможности их использования. Коснемся вопросов интеграции такого рода систем с внешними, в частности использование пакетов\фабрик XDTO, проведём аналогии с пакетом EnterpriseData (универсальный формат обмена данными). Обозначим области применения таких систем и их ограничения, в частности возможные подходы к решению проблем версионирования, производительности, обеспечения целостности данных и специфику формирования отчетов. Рассмотрим практический опыт разработки/внедрения/сопровождения подобной структурно-независимой формации на примере запатентованного продукта учета ресурсов системы здравоохранения и его механизмов интеграции с федеральным сервисом Единой Государственной Информационной Системы Здравоохранения в разрезе Федерального Регистра Медицинских Работников и других регистров. Поговорим об использовании этих идей в целях: - прототипирования информационных систем на этапе сбора/анализа требований, - построения экспертных систем поддержки принятия решений (ЭСППР) на базе описанной архитектуры.

1. user875116 08.08.18 23:07 Сейчас в теме

Прошу о помощи, в запрос попадают только 430 строк из 2978

ВЫБРАТЬ 
ГруппыДоступаПользователи.Ссылка КАК Ссылка 
ИЗ 
Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи 
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи 
ПО (ГруппыДоступаПользователи.Пользователь = Пользователи.Ссылка)


Вот такой запрос.

В конфигурации 1С:ERP Управление предприятием 2 (2.4.3.126) делаю отчёт, и из справочника Пользователи попадает только 430 строк, сижу уже два дня и не могу разобраться, где рыть, какие условия поставить или что почитать..

Выглядит это так что до 430-й строчки данные пользователя (имя и комментарий) заполнены как надо а потом ФИО пользователя и комментарий просто отрубает и поля пустые, но данные из справочника Группы Пользователей идут до конца и кончаются только на 2978 строчке...

Буду очень признателен и благодарен...
Вознаграждение за ответ
Показать полностью
Ответы
Сортировка: Древо
16. mkalimulin 172 09.08.18 10:59 Сейчас в теме
(1) Вы, видимо, не в курсе, что 1С сама генерирует левое соединение.
Пишите просто:

ВЫБРАТЬ
    ГруппыДоступаПользователи.Ссылка КАК Ссылка,
    ГруппыДоступаПользователи.Родитель КАК Родитель,
    ГруппыДоступаПользователи.Наименование КАК Наименование,
    ГруппыДоступаПользователи.Профиль КАК Профиль,
    ГруппыДоступаПользователи.Пользователь КАК Пользователь
    ГруппыДоступаПользователи.Пользователь.Комментарий КАК Комментарий
ИЗ
    Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
Показать


Вы своими лишними ссылками и ненужным левым соединением сломали движок.
24. kudlach 20 13.08.18 12:48 Сейчас в теме
(1)
ВЫБРАТЬ
    ЕСТЬNULL(ГруппыДоступаПользователи.Ссылка.Родитель,NULL) КАК Родитель,
    ЕСТЬNULL(ГруппыДоступаПользователи.Ссылка.Наименование,NULL)  КАК ГруппыДоступаНаименование,
    ЕСТЬNULL(ГруппыДоступаПользователи.Ссылка.Профиль,NULL)  КАК Профиль,
    Пользователи.Ссылка КАК Пользователь,
    Пользователи.Комментарий КАК Комментарий
ИЗ
    Справочник.Пользователи КАК Пользователи
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
        ПО Пользователи.Ссылка = ГруппыДоступаПользователи.Пользователь
ГДЕ 
    Пользователи.ПометкаУдаления=ЛОЖЬ
ИТОГИ
ПО 
    ГруппыДоступаНаименование, Пользователь
Показать
2. leosoft 116 09.08.18 00:12 Сейчас в теме
Это реальный запрос? Нет ли в нем секции ГДЕ?
3. user875116 09.08.18 00:36 Сейчас в теме
(2)
ГДЕ?


нет нету, а должна быть?
4. user652236_dima_-_- 09.08.18 00:38 Сейчас в теме
данные пользователя (имя и комментарий)
в запросе не выбираются.
вы выбираете группы доступа, и возможно их только 430
попробуйте

ВЫБРАТЬ
ГруппыДоступаПользователи.пользователь
5. user875116 09.08.18 00:40 Сейчас в теме
(4)
их только 430


а как тогда выбрать так что бы все пользователи попали?

Вот так выглядит запрос с выбранными полями:

ВЫБРАТЬ
	ГруппыДоступаПользователи.Ссылка КАК Ссылка,
	ГруппыДоступаПользователи.Ссылка.Родитель КАК Родитель,
	ГруппыДоступаПользователи.Ссылка.Наименование КАК Наименование,
	ГруппыДоступаПользователи.Ссылка.Профиль КАК Профиль,
	Пользователи.Ссылка КАК Ссылка1,
	Пользователи.Комментарий КАК Комментарий
ИЗ
	Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
		ПО ГруппыДоступаПользователи.Пользователь = Пользователи.Ссылка
Показать
6. user652236_dima_-_- 09.08.18 00:42 Сейчас в теме
полное соединение вместо левое

тогда, если пользователь не в группе доступа, проверка на isnull
7. user875116 09.08.18 00:43 Сейчас в теме
(6)
проверка на isnull


там все пользователи в какой-то группе, что бы они не были в группе не может быть
13. Plash 4 09.08.18 09:16 Сейчас в теме
(7) чудес не бывает, бывает неучтенки.

ВЫБРАТЬ 
ГруппыДоступаПользователи.Ссылка КАК Ссылка 
ИЗ 
Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи


В данном запросе сколько у вас строк появляется? если не 2978 то значит не у всех пользователей есть группы.

Как и ранее советовали, соедините по полному соединение и где null там у пользователя группы нет.
8. user652236_dima_-_- 09.08.18 00:54 Сейчас в теме
зачем для выбора пользователей обходить спр. группы доступа?

если надо узнать в какой группе пользователь, тогда

ВЫБРАТЬ
    ГруппыДоступаПользователи.Ссылка КАК Ссылка, ГруппыДоступаПользователи. Пользователь
    
ИЗ
    Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
9. s1koka 09.08.18 06:01 Сейчас в теме
ВЫБРАТЬ
	ГруппыДоступаПользователи.Ссылка КАК Ссылка,
	ГруппыДоступаПользователи.Ссылка.Родитель КАК Родитель,
	ГруппыДоступаПользователи.Ссылка.Наименование КАК Наименование,
	ГруппыДоступаПользователи.Ссылка.Профиль КАК Профиль,
	Пользователи.Ссылка КАК Ссылка1,
	Пользователи.Комментарий КАК Комментарий
ИЗ
	Справочник.Пользователи КАК Пользователи
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
		ПО Пользователи.Ссылка = ГруппыДоступаПользователи.Пользователь
Показать


Попробуй потом посмотри что возвращается в качесвенны ссылки на группу пользователей, скорее всего передаётся NULL поэтому при твоей связи он берёт только тех юзеров у которых указаны группы....
11. VZyryanov 09.08.18 07:46 Сейчас в теме
Запрос из Справочник.ГруппыДоступа.Пользователи. В этой таблице 430 строк. Если нужны 2978 строк из Справочник.Пользователи, то нужно писать как в (9).
12. user875116 09.08.18 08:27 Сейчас в теме
(11)
Если нужны 2978 строк из Справочник.Пользователи, то нужно писать как в (9).


если делать так то наоборот возвращаются пустые строки из ГруппыДоступа...

то есть если от одной к другой делаешь соединение то в той нет и так по кругу...

+

вместо 3-х тысяч там только 1000 строк , то есть что то не добирается
10. mark_oilbass 09.08.18 07:40 Сейчас в теме
Может отбор какой нибудь стоит в скд? Или программно при компоновки что нибудь изменяется либо запрос либо отбор. Может вариант отчета еще нет тот открывается.
14. user875116 09.08.18 10:06 Сейчас в теме
через ГруппыДоступа не видно всех пользователей из Справочника Пользователи, так может быть?
15. virtmon 22 09.08.18 10:39 Сейчас в теме
ВЫБРАТЬ 
Пользователи.Ссылка КАК Ссылка 
ИЗ 
Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи 
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи 
ПО (ГруппыДоступаПользователи.Пользователь = Пользователи.Ссылка)


Может вы так хотели?
17. user875116 09.08.18 13:34 Сейчас в теме
(15) Нужно сделать что бы было так:

То есть нужна информация из трёх справочников: Пользователи, ГруппыДоступа и ПрфилиГруппДоступа...

Я попробовал сделать объединением, так как совершенно не знаю да и не получается сделать левым соединением даже две таблицы (не говоря уже о третьей) но теперь не знаю как схлопнуть поля и можно ли это...

Вот такой запрос получился:

ВЫБРАТЬ
                ПрофилиГруппДоступа.Ссылка КАК Профиль,
                0 КАК Пользователь,
                NULL КАК Комментарий,
                0 КАК Группа
ИЗ
                Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа

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

ВЫБРАТЬ
                0,
                Пользователи.Ссылка,
                Пользователи.Комментарий,
                NULL
ИЗ
                Справочник.Пользователи КАК Пользователи

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

ВЫБРАТЬ
                0,
                0,
                NULL,
                ГруппыДоступа.Родитель
ИЗ
                Справочник.ГруппыДоступа КАК ГруппыДоступа

СГРУППИРОВАТЬ ПО
                ГруппыДоступа.Родитель
Показать
Прикрепленные файлы:
18. leosoft 116 09.08.18 17:29 Сейчас в теме
(17) Этот запрос во временную таблицу, а потом ее выбрать и там сгруппировать.
19. user875116 09.08.18 19:02 Сейчас в теме
(18)
(17) Этот запрос во временную таблицу, а потом ее выбрать и там сгруппировать.


а как сгруппировать?
20. leosoft 116 09.08.18 19:10 Сейчас в теме
В консоли выбрать временную таблицу и в ней уже сгруппировать
21. selez-a 16 10.08.18 09:13 Сейчас в теме
Возможно у вас в табличной части Справочника ГруппыПользователя Пользователи пустые строки, поэтому они и не могут быть найдены в Справочники Пользователи.
22. registration123 1 10.08.18 10:49 Сейчас в теме
Если нужно получить группу пользователя и пользователя можно сделать так:
ВЫБРАТЬ
	ГруппыПользователейПользователиГруппы.Ссылка.Наименование,
	ГруппыПользователейПользователиГруппы.Ссылка.Код,
	ГруппыПользователейПользователиГруппы.Пользователь.Наименование,
	ГруппыПользователейПользователиГруппы.Пользователь.ФизЛицо,
	ГруппыПользователейПользователиГруппы.Пользователь.Код,
	ГруппыПользователейПользователиГруппы.Пользователь.Ссылка
ИЗ
	Справочник.ГруппыПользователей.ПользователиГруппы КАК ГруппыПользователейПользователиГруппы
Показать


Результат таблица:

№ Наименование Код ПользовательНаименование ПользовательФизЛицо ПользовательКод ПользовательСсылка

сгруппировать можно и по пользователю
23. registration123 1 10.08.18 12:56 Сейчас в теме
(22) да, получается как в (16), незаметил
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Одесса (Украина)
зарплата от 40 000 руб.
Полный день

Программист 1С
Санкт-Петербург
Полный день

Аналитик 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день

1С Developer
Одесса (Украина)
зарплата от 60 000 руб. до 120 000 руб.
Полный день

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 70 000 руб. до 90 000 руб.
Полный день