1с не установлен отбор по регистратору

Обновлено: 05.07.2024

а что мне отладчик? в регистре действительно пустые поля регистратора

"Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: План отгрузки стеклопакетов) "

в отладчике сделай остановку по ошибке. Когда остановится, посмотри чему равен Регистратор. И выясни почему.

+только не в регистре, а переменная Регистраотр вот здесь Набор.Отбор.Регистратор.Установить(Регистратор);

база под сто гигов ТИИ это ж скока времени то :-( КАК БЫ ТАК ПОТАНЦЕВАТЬ ТО малой кровью:-(

ок ща схожу в отладчик начну но результат будет тока ближе к вечеру. :-( а chkdbf.exe со скуль базами тоже рабтает.

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

" лезу в регистр а там регистр с пустыми полями регистратора " что, у ВСЕХ записей регистратор слетел?

99 % там регистраторами являются два дока. вот все что касается первого а это 99% записей регистра пусто есть строки тока со вторым доком отмены первого :-( в общем модуле он делает Набор.Отбор.Регистратор.Установить(Регистратор); ну и привет - какой отбор если их нет :-(

этот регистр у меня живет с 23 ноября - заставить бы эти записи перезаписываться - я бы перепровел доки за месяц нафиг

в тот период нет. пятница вечер мне уже все лень было :-) а как вижу до 17:30 доки проводились

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

с кодом у меня пока не ахти но такой наверно реализую

вот такой код жизнеспособен? у регистра всего три регистратора. и по идее при именно том что пропал он совпалает с измерением. повезло :-) у меня ща копии под рукой нет. хочу на парочке первых строк проверить. гляньте можно это н арабочей запсутить?

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

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

как указано в ошибка в общем модуле "ОбщийМодуль.ПолныеПрава(1146)" но убрать по сути могу. конфа очень давно не на поддержке

а если он автоматически устанавиливается то все равно не сработает - но ща попробую

отменить проведение так же как и провести либо пометить на удаление не получится. по коду никто не может ничего сказать чтоли? я то чайник :-) может кто дать добро на пробу на рабочей базе? он отработает как я и хочу всего две строки? и вообще что нить сделает ? правильно ли написал?

Перед Прочитать нужно использовать Отбор. Почему игнорируешь Отбор?

я не специально - я не сильно пишуший - поэтому прошу прверить поделку

Если нет Отбора, то при успешном проведении очистишь весь регистр.

а какой ? и зачем он мне нужен ? по сути мне нужен вечь регистр сведений. разве что отборать по пустому регистратору если тогда можно убрать условие про типы регистраторов. и как установить отбор на незаполненный регитсратор? яправ? можно написать так : тогда код будет такой: Процедура КнопкаВыполнитьНажатие(Кнопка)

НаборЗаписей.Отбор.Регистратор.Установить(Регистратор); регистратор не должен быть пустой ссылкой

так для чего был написан код. прблема в том что в настоящий момент в 99% строк регистра в регистраторе пусто и ни один документ являющийся регистратором данного регистра не проводится с ошибкой

Итак запрос в консоли показал что регистратор заполнен. и плевать что мы его не видим. регистр выглядел так как будьто бы один документ убрали из регистратора . заглянули в конфигуратор убедились что все наместе почесали репу. пришли к выводу что конфигурация бд и конфигуратора отличаются. в конфигураторе удалили из регистратора этот док, тут же добавили и сохранили изменение , т.к. цех работает сохранили динамически ииии о чюдо. после перезапуска клиента регистр заполнен и все работает. Спасибо хорошему человеку - помог :-)

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

Отчетом нужно смотреть какой был фокусный ассортимент у номенклатуры в любой из выбранных месяцев. То есть при вводе фокусного ассортимента, нужно при обработке проведения отменять предыдущий. Делать это предварительно перепроводя предыдущий документ со значением ложь для номенклатуры? Или в донном случае не нужно для регистра задавать регистратор? Документ нужен в люббом случае. Как лучше сделать?

(4) Так видите в чем дело? Я записываю в регистр фокусный ассортимент номенклатуры:
|
Получается что он и будет там храниться со значением истина, а следующим документом я помещаю туда новый фокусный ассортимент, соответственно предыдущий нужно установить в значение ложь. А так получается что вся номенклатура там будет со значением истина лежать. Как отчеты то делать потом?
Не совсем понимаю тогда необходимость регистра для этой задачи, можно и документами просто ограничиться.
Решение в данном случае, - в обработке проведения документа, полшучать предыдущий документ, устанавливать номенклатуру в его табличной части в значение ложь и перепроводить его, будет верно?

(9)Нет. Верно будет так спроектировать регистр, чтобы не патчить все документы при проведении. Ты подумал, что произойдет, если какой-нить жутко умный пользователь в сентябре перепроведет например январь?

У регистра есть период, есть периодичность - этого недостаточно для получения необходимых данных?

(10) Получая данные на любуюу дату в выборку будут попадать вся номенклатура из регистра, так как у неё ФА=Истина у всей, так она попадает в регистр. Нужно как то устанавливать значение ФА=Ложь, это будет актуальная номенклатура на текущую дату. Что было актуальной в предыдущие периоды можно будет выбирать из документов.

В документе можно поставить запрет перепроведения если есть последующие документы.

Пока не соображу как правильно сделать. Период и периодичность в этом случае наверное не помогут, важно значение ФА (булево) номенклатуры, табличной части документа.

(11) То есть что в регистре ФА=Истина - это актуальный фокусный ассортимент номенклатуры. Он может меняться из периода в период.
Подчинение регистратору в данном случае наверное не подойдет.
Думаю сделать регистр с периодичностью день например. И записывать в него каждый раз 2 тч, 1- ФА=истина (Текущий фокусный ассортимент), 2- ФА=ложь (Предыдущий фокусный ассортимент) все на дату документа!

Тут куча вариантов.

Можно в том же документе садить проводки по всей остальной номенклатуре со значением ложь.

Можно выбирать записи только максимального периода.

Забудь про запросы по документам. Либо уж делай всё на документах и не парься с регистрами.

(14) Решил делать так:

Регистр независимый, периодичность день.

Документ 2 Тч.
1Тч актуальный фокусный ассортимент на дату документа.
2Тч Предыдущий фокусный ассортимент для установки в ложь на дату документа.

При проведении одна номенклатура устанавливается ФА=Истина на дату документа. Другая в ФА=Ложь, предыдущая не актуальная номенклатура на дату докумнета. Но она остается актуальной в предыдущем периоде для истории.

Добрый день! Не понимаю почему вылезает ошибку, отбор стоит все норм.
<Документ.ПланированиеПоРемонту.Форма.ФормаДокумента.Форма(2 9)>: Ошибка при вызове метода контекста (Записать)
Движение.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: История планировщик ремонтных заявок)

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

Не установлен отбор по регистратору
Не совсем понятно, почему такая ошибка возникла: Ошибка при выполнении обработчика -.

Ermak27, может НоваяЗапись.Регистратор надо заполнить? В отладке посмотри какие поля где у тебя пустые.

Ermak27, Документ новый?

Подход к формированию движений документа - оригинальный!

Ermak27, погоди-погоди.
Ты пишешь в регистр перед открытием формы документа?

Если у тебя документ новый, откуда он тебе родит ссылку, если у тебя есть тупо объект в памяти?

Даже если не брать дикость подхода, то после

OrkVasya, Да процедура перед открытием формы документа.
Создаю новый документ. Ermak27, ты, надеюсь, в курсе, что ссылка появляется только после записи объекта в БД?

OrkVasya, При открытии создает регистр но после записи удаляет его, почему?

OrkVasya, нет не записывает

Ermak27, что у вас в обработчике ПослеЗаписи или в ОбработкеПроведения этого документа?

вот эта только процедура

что?? регистр может?

Добавлено через 3 минуты
а смысл вообще ПередЗаписью делать те же движения, что и при открытии? Почему бы не делать движения при обработке проведения?
И еще про процедуру ПередЗаписью, вы понимаете, что ни одно из условий не сработает?

Потому что в каждом условии вы сравниваете одни и те же поля. GreenkO, Это не одни и те же поля.
Это сравнение текущего состояния объекта с сохраненным в БД.


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

Как подключить к аналоговому ip регистратору ip камеру ?
Доброго времени . Есть ip камера и есть регистратор аналоговый ip и есть роуьер на dd wrt.

Подключение к DVR регистратору через интернет
Здраствуйте, нужен совет :) Что имеем. Видеокамеры, подключенные к DVR регистратору, в котором.

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

Манипулирование записями регистров без использования регистратора

В 1С:Предприятии 8 все регистры, кроме регистров сведений, всегда связаны с регистраторами. Регистры сведений могут быть независимыми или также подчиненными регистратору. В этом разделе мы опишем работу с регистрами, подчиненными регистраторам.

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

Однако в 1С:Предприятии 8 существует возможность изменять записи регистров без участия документа. При этом следует учитывать, что каждая запись регистра всегда подчинена одному и только одному регистратору (документу). Поэтому с точки зрения "времени жизни" записи всегда подчинены конкретным регистраторам. Однако, записи могут изменяться без участия самого документа. Главное, чтобы в них имелась ссылка на документ.

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

При изменении записей регистра можно использовать набор записей, входящий в коллекцию движений документа (свойство Движения объекта ДокументОбъект). Однако это не обязательно. Для изменения записей регистра можно использовать и набор записей созданный с помощью менеджера регистра.

Таким образом, чтобы изменить записи регистра необходимо:

  • создать набор записей;
  • установить отбор по определенному регистратору;
  • прочитать набор;
  • изменить записи набора;
  • записать набор.

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

//Выберем всех регистраторов регистра
Запрос = Новый Запрос;
Запрос.Текст ;
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
//Обойдем регистраторов
Пока Выборка.Следующий() Цикл
Сообщить("Изменение записей по регистратору: " + Выборка.Регистратор);
//Для каждого регистратора выполним изменение набора записей
НаборЗаписей = РегистрыНакопления.УчетНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Регистратор;
НаборЗаписей.Прочитать();
Для каждого Запись Из НаборЗаписей Цикл
Запись.Реквизит1 = "Тест";
КонецЦикла;
НаборЗаписей.Записать();
КонецЦикла;

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

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

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

Читайте также: