0. 1c-intelligence 8405 01.07.14 11:04 Сейчас в теме

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

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

Перейти к публикации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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


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


Ну и не забывать, что работа с запросами в этом справочнике возможна ТОЛЬКО В ТОЛСТОМ КЛИЕНТЕ!
145. German_Tagil 6 22.05.19 05:31 Сейчас в теме
(144) А у меня так руки и дошли может сейчас когда идет переход на БП3
146. AlekSo 13 22.05.19 08:49 Сейчас в теме
Ещё бы можно было в сообщение выводить то значение по которому сработала проверка.
Делаю проверку - дней отпуска больше накопленных дней отпуска. Срабатывает в любом случае - сколько ни ставь. Причем этот же запрос в обычной консоли дает правильные значения. Так бы увидел с каким остатком сравнивается - может и понял бы в чем беда.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Екатеринбург
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Программист 1C
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день


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

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день