Как проверить существование записи в регистр сведений? #573661


#0 by kuromanlich
т.е. есть запись. мы ее перезаписываем. перезаписываем не программно, а мануально, из собственной формы регистра сведений. как програмно определить есть ли такая запись в программе, или же эту запись в данный момент добавили?
#1 by Luhtas
Запрос с условием по этой записи к регистру сведений не?
#2 by Один С
если такая запись в регистре есть, то регистра поругается на то, что такая запись уже есть..
#3 by kuromanlich
согласен. но как понять что запись перезаписывают или добавили новую?
#4 by kuromanlich
весь сыр бор в том, что при перезаписи данных нет.
#5 by kuromanlich
апа
#6 by Jaffar
очевидно - перед записью ее там поискать.
#7 by kuromanlich
гы гы ) вот тут и проблема... пока он перед записью запрос у меня пустым выходит...
#8 by Explorer1c
Странная-проблемма-зачем-это-ваабще-нужно?Заполнисначаларегистр-программно-а-потом-открой-доступ-пользователям
#9 by kuromanlich
описываю маразм: добавлять можно, изменять уже добавленное нельзя. вот и пытаюсь реализовать.
#10 by Explorer1c
Запрос-по-регистру-если-есть-запись-тогда-выходим-из-процедуры.Выполняем-в-одной-транзакции,т.е-блокируем-таблицу-на-время-записи
#11 by Jaffar
чем не критерий? пустой запрос - добавление, не пустой - редактирование.
#12 by Necessitudo
плюс 1
#13 by Explorer1c
Всмысле?
#14 by Renat11111
чем не подходит? РегистрСведенийМенеджерЗаписи.<Имя регистра сведений>.Выбран (InformationRegisterRecordManager.<Имя регистра сведений>.Selected) РегистрСведенийМенеджерЗаписи.<Имя регистра сведений> (InformationRegisterRecordManager.<Имя регистра сведений>) Выбран (Selected) Синтаксис: Выбран Возвращаемое значение: Тип: Булево. Истина - набор не изменялся; Ложь - изменялся, в частности, если набор не считывался и не записывался, а также, если записывался с добавлением записей. Описание: Определяет, считана запись или нет. Примечание: При изменении отбора считается, что набор перестает быть считанным. Пример:
#15 by Renat11111
+ это сп между прочим
#16 by hhhh
это самый главный секрет 1С. А не заметил, что перед записью 2 раза вызывается?
#17 by kuromanlich
заметил )
#18 by kuromanlich
это не подходит для случая когда событие генерирует сам рег сведений. т.е. если скажем я буду пытаться применить это в модуле объекта рег.свед в процедуре "призаписи" или "передзаписью" то не я ставлю "отбор" и "прочитываю", это делает сама программа. соответственно нет возможности использовать этот операнд.
#19 by kuromanlich
up
#20 by ptiz
Синтаксис: ПриНачалеРедактирования(<Новая строка>, <Копирование>) Параметры: <Новая строка> Тип: Булево. Признак редактирования новой строки. Имеет значение Истина, если строка была добавлена или скопирована. <Копирование> Тип: Булево. Если данный параметр имеет значение Истина, то выполняется копирование строки. Описание: Возникает при начале редактирования старой или добавленной строки табличного поля. В процедуре - обработчике события нельзя отказаться от редактирования, но могут быть выполнены действия, необходимые при вводе новой строки, например, установка начальных значений.
#21 by ptiz
Хотя нет, там отказаться нельзя. Но можно тут: ПередОкончаниемРедактирования
#22 by kuromanlich
уже пробывал. Но это есть не универсально. нельзя таким способом с помощью скажем подписки на события сделать для всех регистров. интересует как это сделать в "призаписи" "пеердзаписью" "проверказаполнения"
#23 by ptiz
Посмотрел сейчас, при перезаписи из формы "вручную" обработчики срабатывают дважды: 1 раз - удаление старого набора (в обработчике ПередЗаписью записи еще есть, ПриЗаписи - нет) 2 раз - запись нового ((в обработчике ПередЗаписью записей нет, ПриЗаписи - есть) Нам достаточно того, что при первом срабатывании, смотрим ПередЗаписью - если запись была, значит её изменяют или удаляют, ставим Отказ.
#24 by kuromanlich
тут и проблема. если есть время попробуй сделать. у меня запрос пустоту выдает ри перезуписи существующего.
#25 by ptiz
Давно уж сделал, почему и написал
#26 by kuromanlich
хм... странно что запрос у меня пустым выходит, а то что ты показываешь нет... но с другой стороны механизмы извлечения данных могут быть разными у 1С для запроса и для чтения набора... будем пробывать. в моем случае еще правда отбор нужно заполнить весь и для всех...
#27 by kuromanlich
спасибо за помощь )
#28 by ptiz
Механизмы абсолютно одинаковые. Скорее всего, что-то другое передаешь в отбор.
#29 by kuromanlich
#30 by kuromanlich
если запись мы перезаписываем выдает: если добавляем то: ПередЗаписью 0 ПриЗаписи 1
#31 by kuromanlich
и т.о. то что у тебя в работает конечно, но с помощью него нельзя определить когда новую запись заносят, а когда старую редактируют
#32 by kuromanlich
и еще. заметил следующее: хотя перед записью и запрос и чтение набора выдают пустой результат, под другим сеансом если в этот же момент запросом получать то же самое оно получается (операйия проводится с помощью точки останова).
#33 by kuromanlich
ура! нашел! ОбработкаПроверкиЗаполнения выолняется перед тем как 1С перезаписывает набор, т.о. получается, что если это новое, то записей действительно нет, а если есть, то они (записи набора) еще "не считаны" и соответственно все еще существуют. всем спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С