Проверка данных

26.10.17

Задачи пользователя - Адаптация типовых решений

Простой и удобный инструмент для проверки данных (справочников, документов) сразу в момент записи. Позволяет значительно повысить качество информации, вводимой в любую систему на платформе 1С:Предприятие 8.2-8.3. Прост в освоении и использовании, оптимизирован по быстродействию.

Скачать файлы

Наименование Файл Версия Размер
Конфигурация Проверка данных + инструкция по установке, версия 1.0.2.1
.zip 248,48Kb
245
.zip 1.0.2.1 248,48Kb 245 Скачать

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

 

Отчасти эту задачу решает сама система. Например, Управление производственным предприятием не позволит вам купить услугу на склад - спасибо ему за это. Но легко позволит отнести товар, например, на бухгалтерский счет 69.06.3 "Взносы в ФОМС" - как и на любой другой балансовый счет. 

А дело тут вот в чем.

Во-первых, большинство программ 1С - очень доверчивые. И чем больше и сложнее программа, тем больше она доверяет пользователю. 

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

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

 

Работа пользователей реального предприятия в учетной системе требует принципиально иного подхода к контролю качества данных. Одна из главных особенностей такого контроля - он должен работать к данным системы.

Например:

  • Если мы продаем со счета 10.01, то счет доходов должен быть 91.01, иначе - 90.01;
  • В требовании-накладной на основное производство, если номенклатура из папки "Металл", то статья затрат должна быть "Металлы основного производства";
  • В заказе покупателя обязательно должен быть указан грузополучатель и его адрес;
  • Если в плане ДДС указано подразделение "Отдел продаж", то расход денег может быть только наличный.
  • И т.д.

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

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

 

Но теперь есть повод для радости - появилось решение Проверка данных.

Если кратко, то это настраиваемая в пользовательском режиме проверка документов и справочников.

 

Основные возможности и особенности:

  1. Проверять можно любой справочник или документ, который есть в вашей программе на платформе 1С;
  2. Работает в любой конфигурации на платформе 1С, начиная с версии 8.2.16;
  3. Проверка выполняется при записи. Если проверка не прошла - записать не даст;
  4. Настраивать - не сложнее, чем делать отбор в отчетах;
  5. При желании и соответствующих навыках, для реализации проверки можно писать произвольный запрос через СКД;
  6. Можно на время отключить проверки для определенных пользователей. Например, для группового перепроведения документов;
  7. Можно массово проверить старые справочники и документы по новым проверкам (а не только при записи);
  8. Замер производительности - оценит, насколько увеличилось время записи/проведения при включении проверки;
  9. Разные варианты исполнения проверок с точки зрения производительности.

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

Вы сами научите ее, что правильно, а что нет, как нужно делать а как - не стоит. Вам понравится.

 

Производительность

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

В итоге мы получили результаты, которыми гордимся.

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

Например, на картинке, приведенной ниже, показано, что при записи заказа поставщику будет выполнено 4 проверки - и все одним запросом.

4 проверки одним запросом

 

Второе, не менее важное - мы реализовали несколько вариантов исполнения проверки

Варианты проверки

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

Простой вариант

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

Но и в простом варианте нашлось место оптимизации - если установить флаг "Проверять объект непосредственно", то обращения к базе данных не будет происходить вообще.
Это самый оптимальный способ исполнения, для несложных проверок - но таких, по нашему опыту порядка 30 %.

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

Если флаг "Проверять объект непосредственно" снять, то получится второй способ исполнения - выполнение запроса. Это самый распространенный режим исполнения, в котором работают примерно 40 % проверок. Его производительность несколько ниже, чем у первого способа.

Сложный вариант

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

Сложный вариант имеет три способа исполнения.

Первый способ - самый "тяжелый" с точки зрения производительности, т.к. при проверке будет исполняться схема целиком. На практике применяется редко, когда нужна архисложная проверка - не более 2 %.

Второй способ - преобразование схемы в макет компоновки. Формирование макета компоновки - самый длинный этап программного выполнения схемы. Но на это обращают внимание не все разработчики - и мы в числе тех, кто не сразу заметил, что макет компоновки можно создать заранее, а потом просто выполнять. И что бы вы думали - время выполнения готового макета в 4 раза меньше, чем выполнение схемы целиком. Мы не могли упустить такую возможность для оптимизации, и этот способ исполнения нашел отражение в продукте.

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

Третий способ - преобразование схемы в запрос. В таком режиме из схемы компоновки "добываются" только текст запроса и значения параметров - и этого, как правило, достаточно. Отдельно отмечу, что текст запроса берется не тот, который написал разработчик, а тот, который формирует сама схема при компоновке. В него, к примеру, включаются все сделанные в схеме отборы (в виде условий).

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

Практика показала, что такой режим используется примерно в 20-25 % случаев.

Для контроля производительности, оценки и выбора подходящего режима мы разработали отдельное средство.

Замер производительности

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

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

1. Сколько всего ушло времени на запись;

2. Сколько ушло времени конкретно на проверки.

Результат замера - насколько увеличилось время записи из-за применения проверки:

Замер производительности

На скриншоте, например, видно, что проведение заказа поставщику увеличилось на 1.4 - 3.5 %.

 

 

19.11.2014 г. - вышла обновленная версия.

Что нового:

1. Исправлен ряд скрытых недочетов;

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

 

04.03.2016 г. - вышла обновленная версия.

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

Сохраняется дата срабатывания, имя пользователя и текст сообщения.

 

Для анализа срабатывания проверок за период добавлен отчет "Эффективность проверок". Отчет показывает, какие проверки, у каких пользователей срабатывали в течение периода.

 

В отчете два предопределенных варианта - "По проверкам" и "По объектам".

 

Отчет может использоваться для разных целей.

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

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

17.08.2017 г.

Конфигурация и инструкция теперь в одном файле, по минимально возможной стоимости (1 sm).

Проверка проверка данных контроль данных качество данных онлайн проверка

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4452    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2952    4    0    

19

Конфигурация Flowcon

ServiceDesk, HelpDesk Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Набор инструментов для управления задачами, проектами и бизнесом.

10800 руб.

08.01.2019    48189    39    105    

112

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1282    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    1994    13    avmartynov    10    

43
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
119. 1c-intelligence 12771 13.02.17 06:00 Сейчас в теме
(118) спасибо, и это сделаю.
88. ponaroshku 03.06.16 12:31 Сейчас в теме
Добрый день!

Можно ли вашей обработкой делать сравнение не на конкретное значение, а на реквизит этого же документа?

Ну например Организация = ПодразделениеОрганизации.Владелец?


Или это лучше сделать через СКД?

С чем связана рекомендация
Запрос, написанный в схеме компоновки, должен возвращать данные для проверки, а не результат проверки. Проверки в любом варианте настраиваются на закладке "Проверки", с указанием текста сообщений.
90. 1c-intelligence 12771 03.06.16 20:06 Сейчас в теме
(88) ponaroshku,
Можно ли вашей обработкой делать сравнение не на конкретное значение, а на реквизит этого же документа?


можно, это стандартная функция СКДшного отбора. Надо в правом значении отбора нажать крестик, снова открыть выбор, в списке выбрать "Поле компоновки данных", и вам будут доступны все реквизиты проверяемого объекта.

С чем связана рекомендация


Это рекомендация о том, как избежать стандартной ошибки - писать проверку в запросе таким образом, что он возвращает только правильный объект. В этом случае любая новая проверка, добавленная снаружи - через табличку в форме - не будет работать. Банальный пример - если вы в запросе проверяете пометку удаления и возвращаете только помеченные на удаление, а в таблице сделаете проверку вроде "Проведен = Истина И ОтражатьВБУ = Ложь", то вторая проверка никогда не сработает, а неправильные документы (проведенные без галки БУ) у вас в системе появятся.

Запрос должен всегда возвращать объект, на этом строится "многоздачность", или "многопоточность" проверки - запрос один, выполняется один раз, а проверок делается несколько.

Но, в принципе, никто не мешает делать по-своему, просто надо учитывать описанную выше особенность.
91. ponaroshku 06.06.16 04:13 Сейчас в теме
(90)

можно, это стандартная функция СКДшного отбора. Надо в правом значении отбора нажать крестик, снова открыть выбор, в списке выбрать "Поле компоновки данных", и вам будут доступны все реквизиты проверяемого объекта.



я думала, что это работает так, как вы описали - про отбор
но крестика нет
https://yadi.sk/i/TPBRr77WsGs6y

А при не заполненном левом значении в списке выбора отсутствует тип "Поле компановки данных", только примитивные типа строка, число и т д


Поставила "Использовать в качестве значения поле" и конечно все заработало)

Про рекомендацию я вас поняла, спасибо


P.S. при пометке на удаление элемента справочника "Проверяемые объекты" проверка по условию все равно выполняется



Внимательно смотрю вашу разработку
сейчас при проверке документа нет возможности задать текст с использованием реквизитов проверяемого объекта, т.е. написать "Неверно указана организация" можно, а "Неверно указана организация ИП Иванов" нельзя
Планируется ли расширить текст ошибок?
92. 1c-intelligence 12771 06.06.16 06:36 Сейчас в теме
(91) ponaroshku,
Планируется ли расширить текст ошибок?

такую возможность сделать несложно, но я сознательно не стал ее закладывать, чтобы не усложнять создание проверок.
Вообще, сделать можно, внесу в список доработок.
ponaroshku; +1 Ответить
93. ponaroshku 06.06.16 09:22 Сейчас в теме
(92) спасибо, буду ждать нового "релиза"

Очень полезная разработка

89. пользователь 03.06.16 12:33
Сообщение было скрыто модератором.
...
94. ponaroshku 17.06.16 12:36 Сейчас в теме
Добрый день!

Подскажите, возможно ли сравнить текущий объект с ранее сохраненными данными?

Например, справочник организация - смотрим, если изменили наименование (сравнив его с ссылка.наименование?) выдать отказ?

Если да, то как это сделать, подскажите пожалуйста
95. 1c-intelligence 12771 21.06.16 21:47 Сейчас в теме
(94) ponaroshku, сейчас такой возможности нет. Планируется в новой версии.
ponaroshku; +1 Ответить
112. 1c-intelligence 12771 08.02.17 21:24 Сейчас в теме
(94) сейчас для вас какие доработки проверки данных необходимы? Кроме той, что вы указали.
96. virtmon 34 25.08.16 07:37 Сейчас в теме
Скачал вашу обработку, вставил по инструкции и на вкладке "настройки" поля недоступны.
97. 1c-intelligence 12771 31.08.16 19:26 Сейчас в теме
(96) virtmon, давайте версию конфигурации и версию платформы.
Если не затруднит, то скриншот метаданных справочника итПроверяемыеОбъекты из конфигуратора - в развернутом виде, чтобы было видно реквизиты, табличные части и реквизиты табличных частей.
98. German_Tagil 42 27.09.16 06:58 Сейчас в теме
99. Pro-man 13.12.16 23:39 Сейчас в теме
Шикарная вещь! Очень выручил механизм на проекте с большим количеством документов и низким уровнем пользователей. Что потребовалось доработать:
1. Добавлен признак "Запрещать проведение". Например, если проверка сработала неправильно, то пользователю можно дать возможность хотя бы записать данные документа без проведения, пока аналитик разбирается.
2. Добавлен признак "Проверять только при проведении". Это не то же самое, что запрещать проведение. Сначала решили, что если проверка запрещает проведение, то пусть она и выполняется только при проведении, но бывают ситуации, когда не нужно запрещать проводить, но выдать пользователю предупреждение нужно (именно при проведении). К тому же если проверка сложная, длится несколько секунд, то при записи документа без проведения это абсолютно ненужная задержка. Поэтому добавлен отдельный признак.
3. Добавили возможность указывать текст ошибки в виде шаблона (по аналогии с шаблоном в табличном документе). Сообщения об ошибках стали гораздо содержательнее (например, шаблон "Номенклатуру '[Номенклатура]' запрещено использовать!" выведется как "В строке 1 Номенклатуру 'Банка огурцов' запрещено использовать!")
Все это оказалось достаточно несложно сделать, поэтому отдельный плюс за простоту кода.
101. 1c-intelligence 12771 15.12.16 09:27 Сейчас в теме
(99) Спасибо, рад что проверка данных вам помогла.

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

За оценку простоты кода тоже спасибо, я старался :)
104. корум 287 15.12.16 11:08 Сейчас в теме
(101) слить результаты работы с полезными доработками (99) планируется?
105. 1c-intelligence 12771 15.12.16 13:11 Сейчас в теме
(104) вообще не планировал - именно сливать. Идеи предложенные реализовать - да.
106. корум 287 15.12.16 13:52 Сейчас в теме
(105) ок, будем подождать возможности вставки шаблонов и признаков проверки :)
111. 1c-intelligence 12771 08.02.17 21:22 Сейчас в теме
(104) для вас сейчас какие доработки проверки данных необходимы/критичны?
113. корум 287 09.02.17 09:15 Сейчас в теме
(111)
1. Добавлен признак "Запрещать проведение". Например, если проверка сработала неправильно, то пользователю можно дать возможность хотя бы записать данные документа без проведения, пока аналитик разбирается.

3. Добавили возможность указывать текст ошибки в виде шаблона (по аналогии с шаблоном в табличном документе). Сообщения об ошибках стали гораздо содержательнее (например, шаблон "Номенклатуру '[Номенклатура]' запрещено использовать!" выведется как "В строке 1 Номенклатуру 'Банка огурцов' запрещено использовать!")

Не столь важно, но тоже полезно:
2. Добавлен признак "Проверять только при проведении". Это не то же самое, что запрещать проведение. Сначала решили, что если проверка запрещает проведение, то пусть она и выполняется только при проведении, но бывают ситуации, когда не нужно запрещать проводить, но выдать пользователю предупреждение нужно (именно при проведении). К тому же если проверка сложная, длится несколько секунд, то при записи документа без проведения это абсолютно ненужная задержка. Поэтому добавлен отдельный признак.
114. 1c-intelligence 12771 09.02.17 09:37 Сейчас в теме
(113) спасибо. Что-то еще есть? Возможно, что вы сами не реализовывали?
115. корум 287 09.02.17 09:55 Сейчас в теме
116. Pro-man 09.02.17 16:50 Сейчас в теме
(114)
Не критично, но все же: возможность использования функций общих модулей при описании параметров СКД в режиме Запроса (пока работают только в режиме Макета и СКД целиком).
(113)
2. Добавлен признак "Проверять только при проведении"

Этот признак должен быть в шапке элемента проверки, чтобы СКД или запрос вообще не выполнялись, если документ не проводится.
117. 1c-intelligence 12771 09.02.17 20:09 Сейчас в теме
107. Pro-man 15.12.16 14:42 Сейчас в теме
Еще хотелось бы использовать в запросе параметры &ТекущаяДата и &ТекущийПользователь, чтобы например закрывать доступ к редактированию документов задним числом (без каждодневного сдвига границы редактирования) или устанавливать условия проверок в зависимости от пользователя. Заказчики уже интересуются такими возможностями :)
108. 1c-intelligence 12771 19.12.16 11:18 Сейчас в теме
(107) Их можно вычислять через параметры СКД. Например, тек.дату - функцией ТекущаяДата(). Текущего пользователя в УПП можно вычислять глобальной функцией (кажется, глЗначениеПеременной("ТекущийПользователь";)).

Проверка данных не привязана к какой-то конкретной конфигурации, поэтому определение тек.пользователя в общем случае выполняется разными способами. В проверке данных используются только ПользователиИнформационнойБазы (в механизме отключения проверок).
110. 1c-intelligence 12771 08.02.17 21:21 Сейчас в теме
(107) появилась возможность выполнить несколько доработок проверки данных, и выпустить новый релиз.
Что для вас наиболее критично и необходимо?
109. 1c-intelligence 12771 08.02.17 21:19 Сейчас в теме
Друзья, появилась возможность выполнить несколько доработок проверки данных, и выпустить новый релиз.
Что для вас наиболее критично и необходимо?
120. OlegBog1971 27 20.02.17 13:54 Сейчас в теме
а для версии 1С:Бухгалтерия 3.0.47.28 клиент-сервер будет работать?
121. 1c-intelligence 12771 20.02.17 15:22 Сейчас в теме
(120) могу проверить, но вроде препятствий нет. Единственное, почему может не работать - немодальный режим на уровне всей конфигурации. В этом случае нужны небольшие изменения, я такие делал для УНФ.
122. OlegBog1971 27 21.02.17 08:23 Сейчас в теме
(121) Вчера попробовал на 1С:Бухгалтерия 3.0.47.28 версия клиент-сервер.
Работает только простой вариант проверки, сложный - просто не доступен.
Залез в код, там стоит условие ... сложный вариант проверки доступен только для обычных форм и толстого клиента.
В случае с 1С:Бухгалтерия 3.0.47.28 клиент-сервер - это тонкий клиент и управляемая форма.
А жаль ... хороший механизм.
Есть ли решение для УФ?
124. 1c-intelligence 12771 21.02.17 10:24 Сейчас в теме
(122) опередили меня :)
Сложные варианты работают только там, где доступен запуск конструктора схемы компоновки данных.
Для этого нужно запустить приложение в толстом клиенте.
Обычно это можно сделать через отладку. В конфигураторе ставите режим запуска толстый клиент, запускаете отладку, делаете проверки.
В ДО работает. В БП проверю (все-таки догоню релиз).
125. 1c-intelligence 12771 27.02.17 10:39 Сейчас в теме
(122) догнал релиз БП до вашего, проверил - режим использования модальности стоит "Использовать с предупреждением".
Т.е. проверка данных в этом релизе работает.
Если нужна сложная проверка, то запуск надо делать в толстом клиенте, управляемом или обычном приложении.

Точной информации нет, когда модальность в БП 3.0 отключат, но это не проблема. Сейчас поддержка модальности в проверке данных нужна ровно для одного - чтобы работало на платформе 8.2. Два года назад это было актуально.

Возможно, сейчас настало время делать 2 разных релиза - для платформы 8.2 и платформы 8.3.
Конструктор схемы компоновки также, вроде, в какой-то версии платформы стал доступен в тонком клиенте, надо проверить.
126. OlegBog1971 27 27.02.17 16:30 Сейчас в теме
(125) похоже пришло время делать 2 разных релиза :-)
Удалось загрузить обработку только для толстого клиента и обычного приложения.
Пытаюсь сделать сложную проверку, но никак не могу понять как сделать ...
Может подскажите ... надо проверить ... документ Счет покупателям, запретить проведение если ты не автор документа.
Т.е. проверяем поле Ответственный, если тот кто открыл указан в поле Ответственный, то дать ему возможность изменять и проводить документ, а если нет - то запретить и только просмотр.
127. 1c-intelligence 12771 01.03.17 20:32 Сейчас в теме
(126) приложил файл с настроенной проверкой, загрузите обработкой ВыгрузкаЗагрузкаДанных82.

Для таких случаев нужна сложная проверка, с использованием схемы компоновки, и нужен параметр, определяющий текущего пользователя использованием "местной" функции. Для БП 3.0 "местных" функций несколько, мне показалась наиболее подходящей ПользователиКлиентСервер.АвторизованныйПользователь(), т.к. она работает во всех вариантах запуска приложения.

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

Единственное - управлять доступностью и "только просмотром" форм проверка данных не умеет.
Прикрепленные файлы:
Счет на оплату БП30.xml
123. 1c-intelligence 12771 21.02.17 10:12 Сейчас в теме
(120) на всякий случай скажу - сижу, догоняю демобазу до вашего релиза, чтобы проверить. Как только догоню - напишу отдельно.
128. agdam_m 6 09.11.17 19:39 Сейчас в теме
Обработка супер! А почему бы не поставить для модуля "итПроверкаДанных" флажок "Внешнее соединение", чтобы по умолчанию иметь возможность записи документов при COM-подключении из другой базы?
129. 1c-intelligence 12771 09.11.17 20:08 Сейчас в теме
(128) да как-то не встречалась такая задача на практике.
Если поставить флажок, начнет проверяться запись при обменах, а это плохо - она на сервере, человека там нет, начнут обмены колом вставать, ссылки оборванные появятся, и т.д.
Если для вашей задачи нужно внешнее соединение проверять - ради Бога.
130. kauksi 216 05.12.17 11:15 Сейчас в теме
Добавьте примечание, что если проверка идет по табличной части, то нужно чтобы в схеме компоновки проверки присутствовало поле НомерСтроки,
чтобы в сообщение выводился номер строки, по которой проверка сработала
131. 1c-intelligence 12771 06.12.17 06:42 Сейчас в теме
133. Glebis 13 17.05.18 11:57 Сейчас в теме
(131) а когда будет решена эта задача?
132. Glebis 13 01.02.18 10:37 Сейчас в теме
1) Не понял: зачем сделан отдельный регистр "итОтключениеПроверокДляПользователей", если можно в сам справочник "итПроверяемыеОбъекты" добавить ТЧ "ОтключениеПроверокДляПользователей". Ведь нет ничего страшного в том, чтобы записывать элемент справочника каждый раз, когда меняется список пользователей.

2) Да и вообще не хватает формы списка пользователей ИБ с отключенной проверкой в форме элемента справочника "итПроверяемыеОбъекты".

3) Во встроенной справке нет описания элемента "Не использовать на сервере". С ходу не могу понять суть этой опции, ведь запись всегда происходит на сервере.

4) К сожалению, нет встроенного функционала созданию набора данных из внешнего источника. Я решал глупую задача по сравнению цены номенклатуры в УТ и по оборотке по 10 счету этой номенклатуры в БП через com. Было бы совсем классно получить такую проверку "из [Вашей] коробки".

5) В регистр "итСрабатываниеПроверок" я добавил булево реквизит "Запись отменена", чтобы получить количество предотвращений записей ошибочных объектов, учитывая что булево "запрещать запись" может периодически меняться.

6) Будет ли версия в виде расширения?
134. 1c-intelligence 12771 17.05.18 12:06 Сейчас в теме
(132) о, а я пропустил этот комментарий, прошу прощения.
Про расширение мысль такая есть, но пока мало потребителей вроде.

Про остальное - учту при разработке новой версии.
135. Glebis 13 01.06.18 12:20 Сейчас в теме
(134) Также не хватает возможности (или я не понял способ) добавить в сообщение значение из схемы компоновки, чтобы сформировать текст сообщения:
"... уже использовалось в документе" + ДокументНомер
136. 1c-intelligence 12771 01.06.18 12:44 Сейчас в теме
(135) да, вы правы, парсер необходим.
137. Glebis 13 04.06.18 11:26 Сейчас в теме
(136)
да, вы правы, парсер необходим


Добавил в пр. ДобавитьСообщениеВТаблицу 9й параметр ОбъектПроверки.
Если он не заполнен в пр. ВыполнитьПроверкиОбъекта, то я его заполняю кодом равной строке выборки или строке ТЗ перед вызовом ДобавитьСообщениеВТаблицу.

В саму пр. ДобавитьСообщениеВТаблицу добавил код:
Попытка
		НоваяСтрока.ТекстСообщения = Вычислить(ТекстСообщения);
	Исключение
		НоваяСтрока.ТекстСообщения = ТекстСообщения;
	КонецПопытки;
:)

Таким образом можно вычислять значения из строки сообщения:
"Этот номер документа" + " " + ОбъектПроверки.Номер + " " + "уже используется"


Пробовал различные извращения, чтобы была возможность указать строки в зависимости от локализации с использование НСтр через ф-ии Выполнить(Вычислить() + НСтр), но ничего приятного не получилось.

Если ВыборкаРезультата[Проверки.ИмяПоляЗапроса] = 100500 Тогда
:)
138. rush52 25.10.18 18:33 Сейчас в теме
А можно при записи реализации сделать проверку наличия товара на складе?
Соединяю реализацию с остатками товаров на складах, но не понимаю как передать дату документа в виртуальную таблицу остатков
139. 1c-intelligence 12771 25.10.18 18:39 Сейчас в теме
(138) интересный вопрос. А если параметр вычислять? Типа &Объект.Дата? В параметрах СКД.
140. rush52 26.10.18 09:45 Сейчас в теме
(139)
&Объект.Дата?

Попробовал &ТекущийОбъект.Дата, работает. Спасибо.
Сначала смутило, что СКД ругается, что "поле не найдено", но в итоге отрабатывает нормально
141. 1c-intelligence 12771 26.10.18 09:54 Сейчас в теме
(140) да, &ТекущийОбъект. Забыл уже, как там что называется.
142. AlekSo 15 21.05.19 09:38 Сейчас в теме
Тема хоть и старая, но интересная. Кто-нибудь настраивал сложную проверку на управляемых формах?
143. 1c-intelligence 12771 21.05.19 19:07 Сейчас в теме
(142) Я настраивал. В ДО, например, в БП3. Нужна лишь возможность запустить в режиме "Толстый клиент управляемое приложение".
144. AlekSo 15 22.05.19 05:02 Сейчас в теме
(143) Да, тоже уже разобрался. Опишу кратко - может кому пригодится.
Для настройки произвольных запросов в конфигурациях на управляемых формах нужно сделать несколько изменений в модуле формы справочника "итПроверяемыеОбъекты".

1. В трёх или четырех местах заменить "ТолстыйКлиентОбычноеПриложение" на "ТолстыйКлиентУправляемоеПриложение".
2. Чтобы избавится от модальных вопросов, заменить процедуру "ПроизвольныйЗапросПриИзменении" на:
Процедура ПроизвольныйЗапросПриИзменении(Элемент)

Режим = РежимДиалогаВопрос.ДаНет;
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтаФорма, Параметры);

Если Объект.ПроизвольныйЗапрос Тогда
ПоказатьВопрос(Оповещение, НСтр("ru = 'Уверены, что хотите использовать произвольный запрос? При обратном преобразовании будет установлена схема по умолчанию.';"), Режим, 0);
Иначе
ПоказатьВопрос(Оповещение, НСтр("ru = 'Уверены, что хотите отменить использование произвольного запроса? Будет установлена схема по умолчанию.';"), Режим, 0);
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт
Если Объект.ПроизвольныйЗапрос Тогда
Если Результат = КодВозвратаДиалога.Нет Тогда
Объект.ПроизвольныйЗапрос = Ложь;
КонецЕсли;
Иначе
Если Результат = КодВозвратаДиалога.Нет Тогда
Объект.ПроизвольныйЗапрос = Истина;
Иначе
ИнициализацияСКД();

ИнициализацияКомпоновщика();
КонецЕсли;
КонецЕсли;

УстановитьВидимостьДоступность();
КонецПроцедуры
Показать


3. В процедуре "ОбъектСтрокойНачалоВыбора" заменить "ОткрытьФормуМодально" на "ОткрытьФорму".


Ну и не забывать, что работа с запросами в этом справочнике возможна ТОЛЬКО В ТОЛСТОМ КЛИЕНТЕ!
145. German_Tagil 42 22.05.19 05:31 Сейчас в теме
(144) А у меня так руки и дошли может сейчас когда идет переход на БП3
146. AlekSo 15 22.05.19 08:49 Сейчас в теме
Ещё бы можно было в сообщение выводить то значение по которому сработала проверка.
Делаю проверку - дней отпуска больше накопленных дней отпуска. Срабатывает в любом случае - сколько ни ставь. Причем этот же запрос в обычной консоли дает правильные значения. Так бы увидел с каким остатком сравнивается - может и понял бы в чем беда.
147. masik777 18.03.21 19:48 Сейчас в теме
Приветствую! У меня УТ 10.3 (33.1) Установил как по Инструкции. А дальше? Сколько не искал - не нашел, где Настройки Проверки и остальное? Я правильно понял, что при помощи обработки можно устанавливать Контроль на заполнение любого поля Документа? Т.е если НЕ заполнено, то вылезет ошибка? Извините, если что то не понял.
148. 1c-intelligence 12771 18.03.21 20:18 Сейчас в теме
(147) операции - справочники - проверяемые объекты.
149. 1c-intelligence 12771 18.03.21 20:19 Сейчас в теме
150. masik777 18.03.21 20:33 Сейчас в теме
151. German_Tagil 42 04.06.21 13:12 Сейчас в теме
Вопрос как включить редактирование запроса?
152. 1c-intelligence 12771 04.06.21 13:22 Сейчас в теме
(151) клиент толстый или тонкий?
153. German_Tagil 42 04.06.21 13:51 Сейчас в теме
(152) Толстый - может что-то включить надо?
Схема СКД -не активна.
154. German_Tagil 42 06.06.21 13:00 Сейчас в теме
(152) ? похоже что-то в конфе поменялось...
155. 1c-intelligence 12771 06.06.21 13:18 Сейчас в теме
(154) там когда-то ошибка была в коде, не помню, исправлена ли в этой версии - неправильно условие написано при определении доступности кнопки конструктора скд. Можете глянуть? Я только завтра могу.
156. German_Tagil 42 07.06.21 06:07 Сейчас в теме
(155) Подправил - вроде запустилось
157. German_Tagil 42 07.06.21 10:48 Сейчас в теме
Вопрос - каким образом получить текущую дату объекта как параметр.
т.е. я хочу проверить реализацию товаров и услуг табличную часть
если новый - то без проблем проверяется и есть встроенная проверка
а если существующий то надо передать параметр типа
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&Текущийобъект.ссылка.дата , Счет В ИЕРАРХИИ (&Счет43), &СубконтоНоменклатура, ) КАК ХозрасчетныйОстатки


но так не получается ...
158. 1c-intelligence 12771 07.06.21 11:58 Сейчас в теме
(157) вычислить значение параметра в скд пробовали? Не в запросе, а в схеме, на закладке Параметры, в Выражении. Типа &ТекущийОбъект.Дата
159. German_Tagil 42 07.06.21 13:12 Сейчас в теме
(158) Я сделал немного по другому
добавил запрос и передал дату через связи наборов данных
а параметрах &ТекущийОбъект.ссылка.дата ругается

Я так понял что в БП 3.0 проверки уже реализованы на количество
но ради интереса добил таки
168. masik777 02.09.22 18:28 Сейчас в теме
(167) Спасибо большое! Редко кто так оперативно реагирует.. Дык у меня УТ 10(33.1) может и из за этого..Старенькая типа. Жму руку друга и еще раз спасибо! Буду думать.
169. user1348029 15.01.23 17:13 Сейчас в теме
Добрый день! А есть пример с проверкой документа на время проведения? мне нужно, чтобы документы не проводились после 12:59:59
170. 1c-intelligence 12771 16.01.23 05:37 Сейчас в теме
(169) если нужно только это, да ещё и на множество документов - проще программисту 0.5-1 ч. работы оплатить, он сделает расширение или доработает конфигурацию.

В "проверке данных" это тоже несложно - нужна проверка через схему компоновки, там можно вычислять и проверять текущую дату. Справится программист от полугода опыта.
171. user1348029 16.01.23 06:14 Сейчас в теме
(170) я пробовала с компановкой данных, но не работает функционал.
172. 1c-intelligence 12771 16.01.23 07:08 Сейчас в теме
173. Borshevik33 08.06.23 01:08 Сейчас в теме
Возможно не совсем понял, но допустим я хочу поставить запрет на проведение документа РеализацияТоваровИУслуг и хочу, чтобы в сообщении об ошибке отобразилась номенклатура, как это сделать? Не совсем понял синтаксис, как я должен в этом текстовом поле обратиться к номенклатуре?
174. 1c-intelligence 12771 08.06.23 10:51 Сейчас в теме
(173) синтакис там простой - она подставит в сообщение то, что будет результатом вычисления выражения в квадратных скобках. Всё, что доступно для использования в тексте сообщения - аргументы процедуры "ДобавитьСообщениеВТаблицу".

Вообще, перечень такой:
ТаблицаСообщений
, ТекстСообщения
, Объект
, ЗапрещатьЗапись
, ИмяТабличнойЧасти
, НомерСтроки
, Проверка
, Отказ
, ВыполняетсяЗамерПроизводительности

Если у вас проверка табличной части, то будут заполнены и Объект (документобъект в данном случае), и имя табличной части, и номер строки, в которой возникла ошибка.
Если проверка объекта, то будет только объект, и добираться до нужной строки ТЧ надо как-то иначе.

Если у вас проверка "сложная", с выполнением СКД, то в аргументе Объект будет строка дерева, полученного из результата запроса. Тут вообще чё хотите, то и пишите в запросе - хоть номенклатуру, хоть курс валюты. И обращайтесь к нужным полям, типа [Объект.Номенклатура]
Borshevik33; +1 Ответить
175. Borshevik33 08.06.23 11:28 Сейчас в теме
(174) Спасибо большое за оперативный ответ, разобрался!
176. user1518031 13.09.23 02:05 Сейчас в теме
Добрый день, пользуюсь второй год и безмерно Вам благодарен за такое изобретение!)
Также вопрос имеется.

Есть дополнительный реквизит "Первичные документы". Хочу установить чтобы не могли закрыть заказ поставщику с пустым ревизитом. В итоге не получается его вывести. Делаю через. ЗаказПоставщику.ДополнительныеРеквизиты
(11.5.11.96) 8.3.23.1782

Заранее благодарю за ответ!
Прикрепленные файлы:
177. 1c-intelligence 12771 13.09.23 20:19 Сейчас в теме
(176)
лучше запрос написать в данном случае, чем таб.часть документа проверять.
178. dtybr 16 09.01.24 20:56 Сейчас в теме
Добрый вечер.
Скажите возможна на сегодняшний день переработка данного решения в Расширение *.cfe ?
На много быстрее конфигурация обновляется без снятия с поддержки. :)
179. 1c-intelligence 12771 10.01.24 08:00 Сейчас в теме
180. dtybr 16 10.01.24 08:57 Сейчас в теме
(179) Заинтересовался. Хочу приобрести.
Оставьте свое сообщение