Ограничения полей, или как обмануть СКД?

04.02.21

Разработка - СКД

Каждое из ограничений полей можно обойти. Рассмотрим варианты обхода и способы обезопасить свой отчет.

Каждый одинэсник знает, что такое СКД. И каждый видел (а может, даже и использовал) эти замечательные галочки ограничений у полей.

 

 

Ограничивать поля иногда приходится, чтобы не дать пользователям нагрузить базу сложными условиями, увидеть "лишнее" или даже исказить результат запроса (с СКД такое бывает).

Но мало кто знает, что эти ограничения можно обойти. Давайте проведём эксперимент?

Делаем простой отчет. Для теста возьмём демо-базу ERP 2.4 (но конфигурация не важна). И платформу 8.3.16.1030. На разных версиях платформы могут отличаться нюансы, однако, в общем, описанное ниже будет работать везде.

Сделаем простенький запросик (ограничим выборку, нам ведь много данных не нужно):

 

Пока никаких ограничений у полей делать не будем и просто выведем все поля в отчет. А в отбор добавим Организация.ИНН и выведем его в быстрый доступ:

 

А в ПриКомпоновкеРезультата() добавим код, который будет нам выводить текст выполняемого запроса.

 

Открываем отчет и выполняем. Как видим, в демо-базе есть несколько документов на организации, у которых не указан ИНН.

Отбор прекрасно сработал

Глянем выполняемый СКД запрос.

СКД любит делать параметры с именем "П" =)

Всё работает как надо. А теперь поставим ограничение на использование реквизитов поля "Огранизация" в отборах:

Достаточно просто нажать на эту галочку

В настройках видно, что наш отбор помечен красным крестиком.

 

Не будем его удалять, а просто попробуем открыть отчет в базе. Уже на этом этапе можно заметить, что в быстрых настройках отбор всё равно виден:

интересно, что теперь поле растянуто

Но пусть, главное же, что он не сработает. Или же...

 

Как видим, отбор сработал. Может мы что-то перепутали? Давайте откроем здесь же в предприятии наш вариант по кнопке "Изменить вариант отчета"

 

Всё верно, отбор помечен красным. И в доступных полях нельзя выбрать реквизиты организации.

 

А что же стало с наши запросом?

 

Действительно, отбор сработал. И наложился на запрос, несмотря на ограничения.

А что если мы ограничим не только реквизиты поля, но и самого его?

 

Выполняем отчет

 

Отбор опять сработал. А что с остальными ограничениями?

Возьмёмся за ограничение выбора. Сначала выведем в отчет ИНН организации. Ну и для наглядности уберем из запроса "ПЕРВЫЕ 10".

 

Сделаем вывод реквизитов отдельной колонкой и посмотрим на результат

 

Всё хорошо. Теперь запретим пользователям выбирать реквизиты поля "Организация":

 

И попробуем выполнить отчет снова:

 

Как видим, ИНН не выводится. Хоть в настройках он и остался:

 

Но есть одна хитрость... Давайте для начала снова снимем ограничения реквизитов у организации.

 

Перейдём в пользовательские поля и добавим новое поле выражение:

 

И выведем его в отчет

 

Проверим результат в базе

 

А теперь снова установим ограничение на выбор реквизитов организации

 

И проверим результат

 

Поле выводится! А что с запросом?

 

Да, поле попало в запрос. А что, если запретить выбор самого поля "Организация"?

 

Формируем отчет:

 

Поле вывелось. Организация пропала, а пользовательское поле всё равно работает. А что в запросе?

 

Мы успешно обошли ограничения. Примерно так же обстоят дела и с ограничением на группировки и сортировки. И даже параметры. А ведь на них часто разработчики завязывают логику отчета.

 

А если снять Автозаполнение?

Есть возможность в СКД отключить галку "автозаполнение" и в запросе полностью описать разрешенные поля.

На этом примере мы в доступных для отбора полях не указали "Организация"

 

Но это тоже не помогает и отбор сработает:

 

Но, что интересно, запрос такой:

 

Заметьте, отбора в запросе нет. Но есть выборка Организация.ИНН. А это значит, что фильтрация произойдёт не на уровне SQL, а на Сервере Приложений 1С. (интересно, как это скажется на скорости)

Установка ограничений на поля в самой СКД опять же не помогает

 

Но попробуем доработать запрос и убрать у него реквизиты организации из списка доступных к выбору полей. Для этого просто уберём ".*" :

 

Что теперь будет?

 

Отбор всё равно сработал. Но интересно, что в запросе нет выбора ИНН организации. Как же 1С фильтрует записи? На самом деле нужно копнуть глубже, а для этого глянем макет компоновки:

 

Теперь в наборах данных появился набор "ОрганизацияРеквизиты". А в нём такой запрос

 

СКД усердно старается выполнить условие, которое должно игнорироваться. Какая сила воли!

Остаётся ещё один вариант - вообще убрать поле "Организация" из доступных к выбору. В этом запросе, оно не указано в {} (хоть и указано в основном запросе).

 

И что теперь?

 

Наконец-то! Теперь уж точно пользователи не смогут наложить отбор. Правда и поле вывести... И, конечно, это не решение проблемы. Но эксперимент мы провели)

 

Ну и зачем нам всё это знать?

 

 

Теперь мы знаем, что все ограничения полей в СКД можно обойти настройками. Ну и зачем нам это?

Во-первых, для понимания, как работает СКД. Ограничения влияют на пользовательскую доступность, а не на логику отчета. Частично, СКД проверяет и обрезает поля при формировании. Но не всегда, не везде и не совсем =)

Во-вторых, когда вы столкнётесь со странной ситуацией, вы вспомните об этой статье.

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

Пример из жизни. Жил да был сложный отчет с большим запросом. И пользователи любили в этом отчете выводить реквизиты регистратора. И реквизиты реквизитов регистратора. И делать на них отборы (да ещё и на табличные части). И сильно нагружали этим базу. Аналитики поговорили с пользователями, уточнили все их нужды и разработчик доработал запрос отчета так, чтобы он удовлетворял потребностям пользователей, но при этом меньше нагружал базу. А на поле "Регистратор" наложил ограничения реквизитов. Всё вроде бы хорошо, но в базе осталось множество пользовательских вариантов отчетов, которые содержали отборы типа "Регистратор.Реквизит.Реквизит". И, несмотря на ограничения в СКД, отчет всё равно нагружал базу, ведь отборы работали.

 

А есть ещё один интересный способ. Ведь у нас есть возможность сохранить настройки в файл.

 

И загрузить из файла 😉

 

Есть такие пользователи, которые любят хранить настройки в файлах. А потом загружать их после обновления базы, боясь, что что-то сломается.

А ещё однажды попался такой умный (и упрямый) пользователь, который любил ковыряться в 1С, лазить в структуре файлов и так далее. В общем, хобби такое у человека. И когда разработчики наложили в одном отчете ограничение на отбор по реквизитам, он воспринял это как вызов. Сохранил настройки в файл, отредактировал их в XML и загрузил обратно. Ну и продолжил нагружать базу своими хитровычурными отборами дальше.

Вот так выглядит наш отбор по ИНН в XML:

 

А однажды мы нашли ситуацию, когда пользовательский вариант отчета накладывал значение на скрытый параметр. А от него зависела логика варианта отчета. Так что всякое в жизни случается =)

Хотите ещё один способ нарушить правила?

В режиме предприятия заходим в "Изменить вариант". Как видите, наложить отбор ни на ИНН ни на Организацию нельзя:

 

Нажимаем волшебную кнопку "Изменить форму"

 

В элементах находим "Доступные поля полей" и переносим на закладку с отборами:

 

Теперь у нас слева таблица с доступными к выбору полями, по центру с доступными к отбору, а справа сам отбор.

 

А сейчас просто мышкой переносим поле Организация.ИНН с самой левой таблицы в самую правую. Как вам результат?)

 

Да, поле с красным крестиком. Но отбор всё равно сработает.

 

 

И что же теперь делать?

Вот мы приблизились к решению. И оно простое:

 

Этот метод хорош и будет спасать нас в большинстве случаев. Если в ПриКомпоновкеРезультата() вы вставите этот метод, то убережёте себя от большинства таких проблем. Просто, не правда ли? Но крайне редко такое делается.

Однако, не все ситуации он обрабатывает. И, к сожалению, он не работает с той ситуацией, которая позволяет пользователю легко нарушать ограничения отборов:

Помните пользовательские поля? Давайте поиграем. Возьмем такой запрос:

 

У нас нет возможности фильтровать ни по организации, ни по её реквизитам. А теперь добавляем новое пользовательское поле (даже в режиме предприятия).

 

И делаем на него отбор

 

И что получится?

 

Вуаля! Мы обошли запреты.

При этом в доступных к отбору полях организации нет.

 

И вишенка на торте. КомпоновщикНастроек.Восстановить() НЕ ПОМОГАЕТ.

В данной ситуации, пользовательское поле не является запрещенным. И при его помощи можно наложить и отборы. Можно наложить отборы и сложнее:

 

Вот такой при этом будет запрос

 

 

 

Какие выводы?

 

Сеньор Одинэсник

 

У СКД нет жёстких ограничений.

Но если вдруг нам очень уж нужно, то:

  1. Используйте КомпоновщикНастроек.Восстановить()
  2. Снимайте галку "Автозаполнение" (вы ещё ей пользуетесь?)
  3. При обновлении отчётов, обрабатывайте пользовательские варианты
  4. Ограничивать не только отбор подчиненных, но и выбор

Таким образом вы сможете минимизировать вероятность того, что пользователь обойдет ваши запреты.

И да пребудет с вами сила!

 

Понравилась статья?

Подайте знак автору =) Поставьте лайк звездочку и оставляйте комментарий



UPDATE: поддержка 1С ответила следующее:

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

Посему ожидать какой-то доработки штатной логики ограничений СКД не стоит.
Продолжаем самостоятельно выполнять пункты из выводов статьи =)
 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    134704    740    391    

775

Как посмотреть итоговый запрос в отчете СКД

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    4393    implecs_team    6    

40

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

По выбранной схеме компоновки данных генерирует программный код, который генерирует СКД, аналогичную исходной схеме. Есть дополнительные инструменты для просмотра дерева схемы, сравнение исходной схемы и полученной по коду, а также сравнение изменений в сгенерированном коде для исходной схемы и для измененной.

3 стартмани

05.02.2024    5107    39    obmailok    20    

75

Набор-объект для СКД по тексту или запросу

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2412    2    Yashazz    0    

33

СКД на JavaScript в 1С

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    9097    21    John_d    25    

124

Использование менеджера временных таблиц в СКД

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    5756    PROSTO-1C    13    

65
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 15.04.20 09:55 Сейчас в теме
на самом деле важно только одно

3. При обновлении отчётов, обрабатывайте пользовательские варианты


это очень муторно, конеш - но делать надо.
остальные байки мол, хитропопый выгружал настройки в файл, правил, загружал,
менял форму и пр. очень просто лечиться настройкой прав.
triviumfan; +1 Ответить
2. SeiOkami 3466 15.04.20 09:56 Сейчас в теме
(1)
очень просто лечиться настройкой прав.

То есть вы предлагаете отбирать у пользователя права сохранения своих вариантов отчётов? Достаточно радикально
nekit_rdx; d4rkmesa; rpgshnik; TeMochkiN; +4 Ответить
3. VmvLer 15.04.20 10:04 Сейчас в теме
(2) запретить сохранять в файлы и менять форму как минимум - зачем это в отчетах?
для особо уникальных запретить сохранять "для всех"
для матерых запретить даже "для себя"
в исключительных случаях кодом блокировать и "ругаться"
... еще 100500 вариантов "карантина".

Короче, я предлагаю не сюсюкать а ля "вот так нельзя", "туда ни хади", а применять
административные меры разной степени жесткости.

ЗЫ: Отборы через точку зло и за это зло необходимо наказывать сначала программиста, а потом пользователя.
4. SeiOkami 3466 15.04.20 10:12 Сейчас в теме
(3)

запретить сохранять в файлы и менять форму как минимум


Если я правильно вас понял, то изменить типовую форму варианта отчета. А так же менять формы в отчетах, не подключенных к типовой. А если у отчета генерируемая форма, то нужно её создать и донастроить. Это ограничит возможности пользователей.

Вы уверены, что это действительно лучше, чем просто КомпоновщикНастроек.Восстановить() ?)
5. VmvLer 15.04.20 10:24 Сейчас в теме
(4) вроде мои посылы понятны и ваши фантазии о деталях не уместны.

Это ограничит возможности пользователей


да, именно это и есть главный мотив, задача и обязанность спеца - ограничить пользователя,
ибо пользователь с расширенными правами обязательно будет косячить и чем больше его возможности - тем больше он будет делать что-то не так.
6. SeiOkami 3466 15.04.20 10:28 Сейчас в теме
(5)
фантазии о деталях не уместны


Почему неуместны? Как раз важна реализация.

Вместо того, чтобы просто использовать одну строчку кода, вы предлагаете править в конфигурации формы вариантов отчетов и обрезать права у пользователей.

главный мотив, задача и обязанность спеца - ограничить пользователя

Это спорное утверждение

ибо пользователь с расширенными правами

Это стандартные права пользователей. О расширенных тут не говорится.
TeMochkiN; d4rkmesa; +2 Ответить
7. VmvLer 15.04.20 10:32 Сейчас в теме
(6) я не сбираюсь развивать диспут

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

для ток шоу и бла-бла-бла как раз покатит)
8. SeiOkami 3466 15.04.20 10:33 Сейчас в теме
(7) ок, уровень аргументации ясен =)
alei1180; programmer_87; mongiilol; ubnkfl; nekit_rdx; aposumks; TeMochkiN; larisab; d4rkmesa; VitaliyCeban; ice-net; BackinSoda; CyberCerber; ixijixi; +14 Ответить
9. bulpi 215 15.04.20 11:47 Сейчас в теме
Вот за такую фигню я и не люблю СКД.
29. qwinter 680 17.04.20 10:43 Сейчас в теме
(9) а я за это СКД как раз люблю.
10. toypaul 63 15.04.20 14:19 Сейчас в теме
лайкосик. особенно за обход через пользовательские поля. 1С дырявая
11. rpgshnik 3728 16.04.20 03:16 Сейчас в теме
12. PerlAmutor 129 16.04.20 08:50 Сейчас в теме
У 1С в принципе с ограничениями не очень все гладко. Во многих случаях приходится "заметать под ковер". Не нашло большинство пользователей - меньше головной боли. Я тоже устал вычищать сохраненные пользователями варианты отчетов и перезаписывать программно те ключевые параметры до которых они добрались. Например в ERP вообще сделано так, что пользователь просто обязан загубить производительность сервера. Разработчики додумались в базовые права пользователя включить отчет "Места использования". На формах разрешили использовать полнотекстовый поиск, да еще и по-подстроке (ни по началу или точному совпадению). Понавыводили в формы списков реквизиты "Ссылка", чем не гнушаются активно пользоваться. Особо продвинутые умудряются использовать вкладку "Группировка", чтобы сгруппировать все договоры по контрагенту например... Потом звонят и жалуются, что все тормозит или форма вообще перестала открываться. Правильно, там такие отборы понастроены, что откроется она только, когда сервер перелопатит всю базу соединив левым соединением сотни таблиц из Ссылки составного типа...
14. starik-2005 3051 16.04.20 09:14 Сейчас в теме
+

(12)
Особо продвинутые умудряются использовать вкладку "Группировка", чтобы сгруппировать все договоры по контрагенту например... Потом звонят и жалуются, что все тормозит или форма вообще перестала открываться. Правильно, там такие отборы понастроены, что откроется она только, когда сервер перелопатит всю базу соединив левым соединением сотни таблиц из Ссылки составного типа...
Программа должна пользователю помогать - это основная миссия автоматизации. И пользователь ни разу не программист, поэтому его отбор (считай - запрос в цикле с кучей разыменовываний) - попытка программирования плохой с его точки зрения системы. На прошлой работе мы эту проблему решили кардинально - сделали вместо контрагента и договора поле поиска (комплитер), которое получало данные из отдельного индексированного справочника, при том отбор разделял слова и по каждому слову искал вхождение, производил транслитерацию и прочие моменты. Итог - уменьшение количества ошибок при заполнении документов на порядок.

Также и с отчетами - пользователям нужна информация для принятия решений, а не ограничения. Нужно выявлять эту информацию, а если лень, то необходимо разделить OLTP и OLAP друг от друга и реализовать прозрачный механизм формирования отчета из отзеркалированной базы (благо, что снапшот или реплика для всех СУБД может быть поднята за несколько секунд - зависит от экспертного уровня ДБА, конечно, но даже терабайтная реплика может быть создана за эти секунды, особенно если реализована потоковая репликация).

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

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

Но тем не менее лайк заслуженнй! )))
Yashazz; nekit_rdx; duhin; dabu-dabu; cefew; support; +6 Ответить
13. zqzq 24 16.04.20 09:08 Сейчас в теме
Вечная борьба бобра с ослом. Меня больше всего напрягает в СКД возможность выбора полей типа "Регистратор.Товары.Номенклатура" с рандомным результатом, где Товары это ТЧ (не знаю, исправили ли в новых версиях платформы).
18. improg 660 16.04.20 09:44 Сейчас в теме
(13) Это скорее к разработчику, а не к платформе.
19. SeiOkami 3466 16.04.20 09:57 Сейчас в теме
(18) почему к разработчику?
23. improg 660 16.04.20 17:45 Сейчас в теме
(19)потому что не нужно давать возможность вытаскивать поля через регистратор.
20. zqzq 24 16.04.20 10:23 Сейчас в теме
(18) В том-то и дело, что пользователи меняют настройки выбранных полей и такое выбирают. Помогает только добавление вычисляемого поля "Регистратор.Товары" равному пустой строке, но это костыль.
21. SeiOkami 3466 16.04.20 10:44 Сейчас в теме
(20) вообще, к сожалению, в СКД нельзя нормально ограничить обращение к конкретным реквизитам поля.
Не так, что либо "можно обращаться к любому реквизиту", либо "нельзя обращаться к реквизитам"
32. Activity 19.05.20 12:46 Сейчас в теме
(21) Потребовалось обеспечить именно такое ограничение, коллеги задумались о безопасности некоторых данных и это вызвало некоторые проблемы. Пока не решено как обеспечивать. А именно поле должно быть доступно только из рабочего места, а в отчетах и другом запретить выводить

Вообще, с учетом текущей статьи для полноценного обеспечения ограниченного доступа или формировать особую форму со своими проверками ограничений перед компиляцией и ограничениями, что больше подойдет для решения задачи для массы отчетов

Но, в теории, чтобы наверняка ограничить доступ похоже нужно выводить исключительно примитивные типы данных. Т.е. формировать таблицу отдельно (например запросом) и передавать её в скд, а уже с помощью скд обеспечивать вывод информации. Таким образом пользователь сможет делать отборы, группировки и т.д. но не доберется до лишней информации
33. SeiOkami 3466 19.05.20 13:29 Сейчас в теме
(32)
А именно поле должно быть доступно только из рабочего места, а в отчетах и другом запретить выводить

Не знаю, конечно, подробностей вашей ситуации, однако, мы реализовывали хранение в БСПшном регистре "Безопасное хранилище данных".
34. Activity 19.05.20 14:18 Сейчас в теме
(33)
Согласен, хороший подход, с не большим изменением структуры хранения данных (т.е. сейчас данные хранятся в справочнике, а будет в регистре). по идее как вариант решения будет обеспечить безопасное хранение конкретной информации

В целом тема интерес вызвала т.к. на лету однозначный ответ не нашелся
36. FlyVodolaz 21.05.20 22:41 Сейчас в теме
(21)
вообще, к сожалению, в СКД нельзя нормально ограничить обращение к конкретным реквизитам поля.
Не так, что либо "можно обращаться к любому реквизиту", либо "нельзя обращаться к реквизитам"

Если очень хочется, то можно достаточно просто
ВЫБРАТЬ
	Валюты.Ссылка КАК Валюта,
	Валюты.ПараметрыПрописи КАК ПараметрыПрописи
ПОМЕСТИТЬ Валюты
ИЗ
	Справочник.Валюты КАК Валюты

Теперь если в таблице поля у реквизита "ПараметрыПрописи" изменить путь на "Валюта.ПараметрыПрописи" и поставить ограничение поля, то из доступных отборов исчезает только это поле
37. SeiOkami 3466 22.05.20 06:37 Сейчас в теме
(36) да, подобный костыль описывали в (20). Но это всё равно костыль)
38. FlyVodolaz 22.05.20 13:28 Сейчас в теме
(37) Там целиком зануляют. А в моем примере, поле можно оставить в отборах и скрыть из выводимых или наоборот.
24. improg 660 16.04.20 18:04 Сейчас в теме
(20)если изначально как только зародился отчёт наложить ограничение, проблем описанных в статье не будет, а мы все прекрасно знаем что к регистратору в запросе нужно относиться аккуратно.
26. SeiOkami 3466 16.04.20 18:37 Сейчас в теме
(24) в статье указано несколько способов обойти ограничения. Как минимум, пользовательские поля дают лёгкий обход )
40. Dansur 262 10.06.21 20:11 Сейчас в теме
(26) настройки скд на то и настройки, чтобы пользователь мог получить информацию ему нужную без программиста. Да - ограничения полей в скд работают слабо - согласен, но вопросы кониденциальности нужно решать не настройками полей скд, а настройкой прав и RLS.
25. improg 660 16.04.20 18:06 Сейчас в теме
(20)по возможности вообще там его не использовать.
15. Поручик 4682 16.04.20 09:17 Сейчас в теме
Я и мой коллега пользуемся Автозаполнением и чо?
Vlad_2008; VitaliyCeban; +2 Ответить
35. FlyVodolaz 21.05.20 22:27 Сейчас в теме
(15)
Я и мой коллега пользуемся Автозаполнением и чо?

Хотя-бы потому, что автозаполнение работает на поля всех таблиц, а не последней. Т.е. запрос вида
ВЫБРАТЬ
	Валюты.Ссылка КАК Валюта
ПОМЕСТИТЬ Валюты
ИЗ
	Справочник.Валюты КАК Валюты
{ГДЕ
	Валюты.Ссылка КАК Валюта}
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	РеализацияТоваровУслуг.Ссылка КАК Реализация,
	РеализацияТоваровУслуг.ВалютаДокумента КАК Валюта
ИЗ
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		ЛЕВОЕ СОЕДИНЕНИЕ Валюты КАК Валюты
		ПО РеализацияТоваровУслуг.ВалютаДокумента = Валюты.Валюта
ГДЕ
	Валюты.Валюта ЕСТЬ NULL
Показать

При отбора скажем Валюта=руб.
Без автозаполнения выведет все не рублевые документы. А с автозаполнением не выведет ничего. И когда запрос не из двух подзапросов состоит, очень легко поймать такие накладывания полей
16. improg 660 16.04.20 09:28 Сейчас в теме
Дык надо в 1С писать чтобы латали дыры ))
17. improg 660 16.04.20 09:32 Сейчас в теме
Удивляться нечему чем больше возможностей в платформе, тем больше дырок, для 1С тем более, всегда были дырки и будут.
22. 79123890854 16.04.20 14:14 Сейчас в теме
Риторический вопрос:
Зачем обманывать инструмент? Может лучше выбрать другой интсрумент?
27. NeSPEC 46 16.04.20 19:58 Сейчас в теме
(22)
Зачем обманывать инструмент? Может лучше выбрать другой интсрумент?

К сожалению этот корявый инструмент - а именно саму (по большому счету, а не СКД) в настоящий момент заменить чем-то другим проблематично.
30. starik-2005 3051 20.04.20 15:27 Сейчас в теме
(27)
К сожалению этот корявый инструмент - а именно саму 1С (по большому счету, а не СКД) в настоящий момент заменить чем-то другим проблематично.
Я бы сказал, что в части BI ее заменить проще простого, но все упирается в компетенции разработчиков, которые о BI или не слышали, или оно для них что-то типа черного ящика Пандоры )))
28. qwinter 680 17.04.20 10:42 Сейчас в теме
Офигеть, вроде столько известных авторов комментирует статью и только сейчас узнали как работают ограничения и обрабатываются характеристики в СКД.
41. Yashazz 4752 24.08.21 19:19 Сейчас в теме
(28) Кстати будешь смеяться - я тоже не все финты из описанных знал. Не было времени и желания копать. Автору - спасибо и плюс.
31. echo77 1906 22.04.20 14:57 Сейчас в теме
(0) На каких платформах тестировалось? Может это баг? :-)
39. SeiOkami 3466 04.02.21 11:35 Сейчас в теме
Добавлен в статью ответ от поддержки 1С
42. user1274184 01.10.22 11:56 Сейчас в теме
Спасибо за статью! Я попытался сделать подобное и вывести текст запроса СКД через Сообщить или Сообщение пользователю, но сообщение не выводится, хотя в конфигураторе текст получается. Подскажите, пожалуйста, в чем может быть дело?
43. SeiOkami 3466 01.10.22 12:18 Сейчас в теме
(42) Возможно, отчет формируется в отдельном фоновом задании и сообщение остаётся там. Но можно просто заменить "Сообщить" на "ЗаписьЖурналаРегистрации"
user1274184; +1 Ответить
Оставьте свое сообщение