#0
by МаленькийВопросик
Вопрос такой- где правильнее делать проверку незаполненности реквизитов формы в "перед записью" или "обработка проведения". вот небольшой код (проверка табличной части на заполнение одного реквизита строки):
#6
by Aleksey
Не согласен в корне Есть реквизиты которые можно пока не заполнять, но они должны быть заполнены для проведения
#7
by Aleksey
В частности цена. На момент записи я пока не знаю какая цена, от записал пока и всё. Как узнаю (ответственный за цену приедет с обеда), проставлю и проведу документа А вы что предлагаете?? проставлять левые значения, чтобы было?
#10
by КартузПива
Синтаксис: ПередЗаписью(<Отказ>, <РежимЗаписи>, <РежимПроведения>) Параметры: ... <РежимЗаписи> Тип: РежимЗаписиДокумента. В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.
#14
by Фокусник
Правильнее проверять перед записью, НО с проверкой: проводится ли при этом документ. Потому как если проверять/запрещать перед записью (и документ не проводится, а просто записывается), то у пользователя НЕ будет возможности начать делать документ, записать промежуточный (не до конца заполненный) результат в базу, пойти пообедать, продолжить по возвращении ;)
#15
by vde69
если разрешено записывать с пустыми полями - то ПриПроведении если не разрешено - то ОбработкаПроверкиЗаполнения если требуется интерактивные действия - то предЗаписью в модуле ФОРМЫ
#16
by Feunoir
Почитать СП и понять что отличать ничего не требуется. Так как процедура вызывается при записи для документов, которым запрещено проведение и при проведении, если проведение разрешено.
#18
by Feunoir
Не надо брать пример со старых типовых. А новые уже проверяют в ОбработкаПроверкиЗаполнения. Правда с них тоже пример лучше не брать.
#19
by Armando
Как уже сказали в ОбработкаПроверкиЗаполнения. ПерезЗаписью, ПриЗаписи и т.п. выполняются в транзакции. А транзакции вредно долго держать открытыми, ибо блокировки. ОбработкаПроверкиЗаполнения выполняется до начала транзакции.
#21
by MrStomak
Проверку незаполненности реквизитов формы нужно делать в событиях формы, желательно в проверке заполнения. Событие проведения у форм отсутствует.
#22
by Krolik Bezobraznik
А если форму заполнять не через нее саму а кодом, к примеру на основании, то в таком случае ваши события не сработают ибо они только для интерактивной работы пользователя и формы.
#23
by MrStomak
Сама формулировка задачи "Проверка незаполненности реквизитов формы" подразумевает наличие формы, а значит, интерактивный ввод данных. ОбработкаПроверкиЗаполнения тоже, если что, сама по себе не работает, если записываешь объект программно.
#25
by Kalambur
вот от тебя-то и неожидал что ты не можешь пользовать в процедуре ПередЗаписью проверку на редим проведения
#26
by КартузПива
ОбработкаПроверкиЗаполнения не всегда применима. Например, при аккуратной доработке типовой или партнерской конфигурации. Т.к. у реквизитов документа может не стоять признак ПроверятьЗаполнение. И в подписку на событие реквизит не попадет. Ставить признак самим - увеличивать геморрой при обновлении. А подписка ПередЗаписью отработает без проблем.
#27
by DexterMorgan
Тебе кто мешает самому в подписке добавить реквизит в массив ПроверяемыеРеквизиты?
#28
by DexterMorgan
на тебе сп бесплатно: "При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана. "
#29
by DexterMorgan
Единственное, что нужно учитывать: при программной записи/проведения документа этот обработчик не вызывается (вызов нужно сделать самостоятельно методом ПроверитьЗаполнение).
#31
by Aleksey
Ага видел я это поведения в новых типовых. Теперь из-за этого бухи косячат по чёрному Раньше при проведении документа проверялся корректность договора, типа а принадлежит ли договор правильной фирме и контрагенту Сечас при групповом проведении программе пофиг, и спокойно проводит документы по "чужому" договору
#34
by Aleksey
ХЗ куда перенесли, но по в последних релиз при групповом изменении реквизитов отключены всякие контроли
#35
by Zapal
если в базе используются какие-то обмены, или импорт данных то отмена записи в ПередЗаписью может приводить к проблемам. Групповые обработки тоже будут не срабатывать иногда. Кроме того, при отмене записи у пользователя нет возможности показать тебе косячный документ который он полдня заполнял а теперь он почему-то не проводится и не сохраняется в общем категорически я за контроль в ОбработкаПроведения
#36
by MrStomak
Еще один неведающий о параметре РежимЗаписи. Также, как и про ОбменДанными.Загрузка, очевидно.
#37
by Enders
Или в "передЗаписью" с проверкой на то, что это проведение. Или "ОбработкаПроверкиЗаполнения". Как по мне, то лучше "передЗаписью", так как возможны программные вводы документа и не факт, что не забудете вызвать "ОбработкаПроверкиЗаполнения".
#39
by Zapal
считать себя умней других - сильно плохая привычка а по сути могу сказать что в 90% случаях про эти параметры забывают
#40
by КартузПива
>> а по сути могу сказать что в 90% случаях про эти параметры забывают Расшифруй. Это азбука из 8.0, на курсах на это обращали внимание еще 9 лет назад я еще не встречал спеца, который об этом не знает.
#41
by Zapal
да знают конечно все, но просто забывают вставлять эти проверки. По крайней мере я такого видел много да и зачем собственно их вставлять, если тот же код можно поместить в ОбработкаПроведения без всяких проверок
#42
by MrStomak
>>считать себя умней других - сильно плохая привычка В таком случае не поступай так, дружище. >>а по сути могу сказать что в 90% случаях про эти параметры забывают С каких это пор недостаток квалификации отдельных кадров влияет на правильность методики? >> да и зачем собственно их вставлять, если тот же код можно поместить в ОбработкаПроведения без всяких проверок К моменту проведения, уже завершился факт записи документа, факт его регистрации в последовательности, факт его регистрации в таблицах обмена, наложились соответствующие блокировки. При отказе потом это всё обратно восстанавливается. Зачем, собственно,всё это делать, если тот же код с проверками на режим записи можно поместить в "ПередЗаписью" и снизить нагрузку на систему, уменьшить время получения сообщения об ошибке на время бесполезного ожидания предоставления блокировки и повысить параллельность работы?
#43
by Armando
Проверки, выполняемые в и вне транзакции записи объекта 2.1. Проверки в обработчике ОбработкаПроверкиЗаполнения выполняются вне транзакции записи объекта. Поскольку в случае некорректного заполнения объекта выполнение операции будет прервано еще до записи объекта в базу данных, то размещение проверок в этом обработчике является наиболее эффективным. При выполнении внетранзакционных проверок в обработчике ОбработкаПроверкиЗаполнения необходимо учитывать тот факт, что новое состояние объекта еще не записано. Если требуется выполнить запрос к тем или иным данным системы, например, прочитать признак ВидНоменклатуры для товаров, выбранных в табличной части документа, "отталкиваясь" от данных документа, то такую поверку можно выполнить, применяя сохранение необходимых для запроса данных во временные таблицы. 2.2. В то же время, в обработчике ОбработкаПроверкиЗаполнения не следует размещать проверки, которые должны гарантировать целостное состояние объекта или зависящих от него данных (например, движений) на которые рассчитывает система. Поэтому для реквизитов, некорректные значения которых могут привести к рассогласованности данных в информационной базе, проверку корректности следует выполнять в обработчиках событий, возникающих в транзакции записи - ПередЗаписью, ПриЗаписи, ОбработкаПроведения (для документов). Для транзакционных проверок, в свою очередь, выделяются два случая: Проверка состояния движений, формируемых документами оперативного учета. Такие проверки довольно часто встречаются в приложениях с оперативным учетом. Проверка состояния других объектов информационной базы, ссылки на которых содержатся в текущем объекте. Такие проверки следует применять очень редко. Не следует злоупотреблять количеством проверок в транзакции записи объекта. Следует помнить, что внутри транзакции записи имеет смысл выполнять только проверки таких ресурсов или таких правил соответствия объектов друг другу, которые не изменяются без проверок всеми участниками процесса. В первом случае, проверку остатков некоторого ресурса имеет смысл выполнять в транзакции записи только в том случае, если все документы выполняют такую же проверку в транзакции записи. Если хоть один из документов, изменяющих ресурс, делает это без проверок, выполнение проверок другими участниками процесса бессмысленно и такие проверки необходимо выполнять вне транзакции. Исключением может быть только случай, когда документ, который выполняет изменение контролируемого ресурса без проверок, вводится крайне редко. Например, не смотря на то, что документ "Инвентаризация товаров" изменяет остатки товаров без проверок, эта ситуация допустима в виду того, что он вводится крайне редко. Каждое такое исключение из правила должно быть оправданным. Во втором случае, если при записи Подразделения в транзакции записи выполняется проверка, что сотрудник, выбранный в качестве руководителя подразделения, имеет должность "Руководитель", то при записи Сотрудника также должна выполняться и "встречная" проверка этого же правила: нельзя записать Сотрудника с должностью отличной от "Руководитель", если он указан руководителем того или иного подразделения. Поскольку правило, что "Сотрудник", выбранный руководителем подразделения, должен иметь должность "Руководитель", может быть нарушено как при записи подразделения, так и при записи сотрудника, то и проверка должна выполняться или в транзакции записи обоих объектов, или вне транзакции записи обоих объектов (а может и не выполняться вообще).
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- 1С взаимоблокировки при записи в регистр.
- Инвентаризация товаров на складе. УТ 10.3
- ЗУП 3.0: где ставка ФСС НС???
- Поступление товаров из переработки. УПП
- Свойство базовое измерения регистра расчета
- Объединение ячеек табличного документа (по вертикали)
- Зависает 1С 8.3.5.1119 на клиент-серверном варианте
- Конвертация данных:выгрузка движений документов
- Отчет о фин.результатах
- 8.3 Странное поведение работы с Word.Application
- Унифицированная форма Т-51
- Поделитесь, пожалуйста, последней версией Tool_1CD
- Мобильная платформа. Размер базы.
- Автоматический обмен данными между УПП 1.3 и БП 3.0
- Отбор строк в таблице значений
- v7: Неверный идентификатор колонки!
- Статистика, Форма П-6
- ЗУп 2.5 Не считается скидка на взносы по рождению ребенка
- Первоначальная выгрузка в ЗУП 3.0 из ЗУП 2.5.
- работа с почтовым ящиком IMAP с шифрованием SSL. Переключение между ящиками