Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 апр 2025, 01:42

КАК из запроса обратится в общий модуль

Автор Дмитрий@, 01 апр 2015, 19:25

0 Пользователей и 1 гость просматривают эту тему.

blackmoon89

Цитата: vitasw от 02 апр 2015, 16:15
Так продемонстрируйте свой профессионализм, чтоб можно было его по достоинству оценить.
вам два раза написала уже, что проектировать бд надо на должном уровне <_<

слышали о теории баз данных? знакомы слова: сущности, релейшены, избыточность, etc

дык вот, необходимость использования вашего метода построения данных - это прямая связь с избыточностью вашей бд, которая обусловлена некомпетентностью разработчика

ваш отчет - это костыль, по другому его назвать нельзя, в продакшн пускать такие вещи крайне недопустимо, чтобы исправить вашу ошибку - нужно работать над бд, а не над отчетом, ну не знаю как вам еще объяснить

з.ы. только давай-те не будет про заученные фразы, что иб 1с изначально избыточна, кубы и nonesql, поверьте, бесполезно, только флуд разведете :)

vitasw

А вам во второй роз повторяю, что рассуждать общими фразами и твердить о неправильности организации БД может любой и предлагаю прежде чем заявлять о
Цитата: blackmoon89 от 02 апр 2015, 16:53дык вот, необходимость использования вашего метода построения данных - это прямая связь с избыточностью вашей бд, которая обусловлена некомпетентностью разработчика
может стоит разобраться? и предложить что-то более конкретное чем общие фразы?
Я вам предлагаю конкретный рабочий пример и предлагаю его оптимизировать и убрать избыточность и построить БД "правильно".
Есть 4 объекта базы данных
1. Спр. Штатные единицы.
2. РС периодический: "оклады по штатным единицам". Измерение: Штатная едииница. Ресурс = Сумма
3. Есть роль "Менеджер"
4. Есть роль "полные права"
На форму спр. штатные единицы выведен список РС(п2). Любой пользователь может открыть любой элемент справочника и увидеть всю историю по РС. Изменения вносит только полные права.
Есть отчет, один отчет, который в зависимости от прав отображает или не отображает сумму из РС. Опять же в зависимости от прав. Отображение суммы реализовано в запросе СКД как
ВЫБОР КОГДА &РольПолныеПраваДоступна ТОГДА Сумма ИНАЧЕ 0 КОНЕЦ
Параметр РольПолныеПраваДоступна устанавливается с помощью общего модуля. Благодяря чему отчет не содержит ни строчки кода, только схема СКД.
С нетерпением жду ваших предложений по оптимизации БД.


blackmoon89

Цитата: vitasw от 03 апр 2015, 11:34
А вам во второй роз повторяю, что рассуждать общими фразами и твердить о неправильности организации БД может любой и предлагаю прежде чем заявлять о
Цитата: blackmoon89 от 02 апр 2015, 16:53дык вот, необходимость использования вашего метода построения данных - это прямая связь с избыточностью вашей бд, которая обусловлена некомпетентностью разработчика
может стоит разобраться? и предложить что-то более конкретное чем общие фразы?
Я вам предлагаю конкретный рабочий пример и предлагаю его оптимизировать и убрать избыточность и построить БД "правильно".
Есть 4 объекта базы данных
1. Спр. Штатные единицы.
2. РС периодический: "оклады по штатным единицам". Измерение: Штатная едииница. Ресурс = Сумма
3. Есть роль "Менеджер"
4. Есть роль "полные права"
На форму спр. штатные единицы выведен список РС(п2). Любой пользователь может открыть любой элемент справочника и увидеть всю историю по РС. Изменения вносит только полные права.
Есть отчет, один отчет, который в зависимости от прав отображает или не отображает сумму из РС. Опять же в зависимости от прав. Отображение суммы реализовано в запросе СКД как
ВЫБОР КОГДА &РольПолныеПраваДоступна ТОГДА Сумма ИНАЧЕ 0 КОНЕЦ
Параметр РольПолныеПраваДоступна устанавливается с помощью общего модуля. Благодяря чему отчет не содержит ни строчки кода, только схема СКД.
С нетерпением жду ваших предложений по оптимизации БД.

Ваша задача решается простецким образом, путем добавления измерения составного типа в котором будет справочник недоступный для роли определенного пользователя и путем использования в запросе ВЫБРАТЬ РАЗРЕШЕННЫЕ, а потом, в запросе, при неопределенном параметре (не найденном объекте справочника) можно давать запись ресурса, либо не давать. И ни каких вывозов модуля.

Не разводите флейм, ваша задачка для детей :bleh:

vitasw

Странно от вас слышать подобные заявления, при том что в других вопросах вы показали себя достаточно квалифицированным специалистом...
Очередной раз убеждаюсь, что убедить женщину в том что она неправа очень сложно, и невозможно когда она это понимает сама.
Я вас не спрашиваю как записывать. С этим как раз проблем не возникает и безо всяких составных типов. Вопрос был только про отчет на СКД, как отобразить или не отобразить и не более того.

blackmoon89

Цитата: vitasw от 03 апр 2015, 18:17
Странно от вас слышать подобные заявления, при том что в других вопросах вы показали себя достаточно квалифицированным специалистом...
Очередной раз убеждаюсь, что убедить женщину в том что она неправа очень сложно, и невозможно когда она это понимает сама.
Я вас не спрашиваю как записывать. С этим как раз проблем не возникает и безо всяких составных типов. Вопрос был только про отчет на СКД, как отобразить или не отобразить и не более того.

А я вам объясняю в 10 раз, что не верная запись данных - это кривая разработка структуры информационной базы. Это ошибка стадии проектирования бд, вам не понять, только потому, что такие ошибки могут видеть только руководители проектов, вы - прикладной программист, вам поставили задачу - вы лепите костыли, это нормальная ситуация в вашем случае.

Вы не понимаете одного, что эта ошибка исправляется на стадии записи, так как если бы ИБ была продумана, то ни каких вызовов из общего модуля делать не нужно.

Запомните, вызов функции из общего модуля - это костыль, если прикладной программист не может решить задачу без таких действий, то это ошибка руководителя проекта.

Я такие отчеты от подчиненных не принимаю, ваш ответ - это глупость.

vitasw

Цитата: blackmoon89 от 03 апр 2015, 18:38А я вам объясняю в 10 раз, что не верная запись данных - это кривая разработка структуры информационной базы
ОК, делаем верную запись РС
Изначально предложено
Период   = 01.01.2015
Должность = Бухгалтер
Оклад = 20000,00

Добавляем новое измерение?
Период   = 01.01.2015
Должность = Бухгалтер
ПравоДоступа = ??? Составной тип? Т.е. добавляем справочник. Пусть будет спр.Полные права и Булево.
Оклад = 20000,00

К спр. Полные права у менеджера нет доступа. Я правильно понимаю? В таком случае сколько должно быть записей в РС? Учитывая то, что просмотреть история изменения оклада по конкретной должности может любой пользователь.(Право чтение на этот РС есть у обоих ролей)



Дмитрий@

Просто функционал в запросе очень скудный, нет функции преобразовать в строку в число, определить длину строки. Все эти функции конечно можно сделать самому, но тогда запрос будет трехэтажным.
А использование выгрузки и загрузки данных с точки зрения скорости, тоже не очень хорошо, но деваться некуда.

Dethmontt

blackmoon89, не понимаю вашего напора на проектирование БД! Конечно вы крутой РП и такое никогда не пустите в продакшн, но чувак и не писал что он в проекте, и что вообще собирается пускать это в продакшн!
Он просто для себя хочет разобраться почему в СКД можно сделать так "изящно", а в запросе не получается...

vitasw, Первая твоя ошибка: ты выбрал для себя не совсем правильный эталон!
Да! В Скд можно использовать вызовы общих модулей, но задай себе вопрос - хорошо ли это? Использование вызовов ОМ в вычисляемых полях приводит к тому что вызов происходит для каждой записи отчета, что наверное не совсем оптимально!
Цитата: Дмитрий@ от 01 апр 2015, 19:25Можно ли сделать что-то подобное в обыкновенном запросе, который находится в объекте документа?
Это единственный правильный ответ!
Запрос.УстановитьПараметр("РольПолныеПраваДоступна", вызовОбщегоМодуля());
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

blackmoon89

Цитата: Dethmontt от 04 апр 2015, 03:29
blackmoon89, не понимаю вашего напора на проектирование БД! Конечно вы крутой РП и такое никогда не пустите в продакшн, но чувак и не писал что он в проекте, и что вообще собирается пускать это в продакшн!
Он просто для себя хочет разобраться почему в СКД можно сделать так "изящно", а в запросе не получается...


Коротко - это не изящно, изящно - это когда быстро работает. Заказчик вашу "изящность" не оценит. Ну если у вас система 10 человек пользователей, то пишите что хотите, но в серьезных внедрениях такая глупость не прокатит.

По поводу напора на проектирование, поясняю.
У молодого человека проблема сгенерированная ошибкой проектирования ИБ. Не нужно путать причины со следствием, необходимость использования функции общего модуля в скд - это следствие причин недопроектирования ИБ. Как такие проблемы решаются? Проектированием ИБ, один выход, а не лепить костыли. Я не считаю решением вопроса показа записей в зависимости от роли необходимость вызова функции общего модуля, это не решение, это костыль.

Dethmontt

Цитата: blackmoon89 от 04 апр 2015, 04:30Заказчик вашу "изящность" не оценит. Ну если у вас система 10 человек пользователей, то пишите что хотите, но в серьезных внедрениях такая глупость не прокатит.

Я где то упомянул про серьезные внедрения? Кто вам вообще сказал что у данного кода есть заказчик?!
Добавлено: 04 апр 2015, 04:37


Цитата: blackmoon89 от 04 апр 2015, 04:30Я не считаю решением вопроса показа записей в зависимости от роли необходимость вызова функции общего модуля, это не решение, это костыль.

Так вас никто не просил учить ТС как нужно проектировать БД!!! ТС просил подсказать как допилить костыль, на серьезных внедрениях навязывайте свою теорию!
Добавлено: 04 апр 2015, 04:39


blackmoon89, а если не хотите помочь, лучше промолчите! (не нужно устраивать тут демагогию)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск