Имя: Пароль:
1C
 
Не получается указать измерение отбора набора записей - "Поле объекта не обнаружено"
0 Bahamut
 
19.09.18
04:44
Добрый день!

Собственно сабж. Есть регистр сведений Бригады с измерением ТранспортныеСредства. Регистр подчинён документу ОформлениеБригады и заполняется на его основе. Я хочу сделать так, чтобы при укомплектовании машины новой бригадой 1С не ругалась на уже существующую запись, а затирала старую и записывала новую. Для этого в модуле документа ОформлениеБригады я модифицировал событие ОбработкаПроведения. Получилось следующее:


Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    // регистр Бригады
    Движения.Бригады.Записывать = Истина;
    Движение = Движения.Бригады.Добавить();
    Если ПолучитьТСНаСервере(ТранспортноеСредство) = ТранспортноеСредство Тогда
        УдалитьЗаписьПоТС(ТранспортноеСредство);
    КонецЕсли;
    Движение.ТранспортноеСредство = ТранспортноеСредство;
    Движение.Грузчик1 = Грузчик1;
    Движение.Грузчик2 = Грузчик2;
    Движение.Водитель = Водитель;

    // регистр ПоездкиИКилометры
    Движения.ПоездкиИКилометры.Записывать = Истина;
    Движение = Движения.ПоездкиИКилометры.Добавить();
    Движение.Период = Дата;
    Движение.ТранспортноеСредство = ТранспортноеСредство;
    Движение.Километры = НачальноеЗначениеСчетчика;

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

&НаСервере
Функция ПолучитьТСНаСервере(ТС)
    НаборЗаписей = РегистрыСведений.Бригады.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.ТранспортноеСредство.Установить(ТС);
    Выборка=НаборЗаписей.Выбрать();
    Если Не Выборка.Следующий() Тогда
        Сообщить("Выборка пуста!");
    Иначе
        Выборка.Следующий();
    КонецЕсли;
КонецФункции

&НаСервере
Процедура УдалитьЗаписьПоТС(ТС)
    НаборЗаписей = РегистрыСведений.Бригады.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.ТранспортноеСредство.Установить(ТС);
    НаборЗаписей.Записать();
КонецПроцедуры

ПолучитьТСНаСервере(ТС) - проверочная функция, она пока ничего не возвращает. Но на линии
НаборЗаписей.Отбор.ТранспортноеСредство.Установить(ТС);
система выдаёт ошибку
Поле объекта не обнаружено (ТранспортноеСредство).
Пробовал включать свойство Ведущее в свойствах измерения ТранспортноеСредство, пробовал устанавливать отбор по регистратору - ничего не помогает. Где я прокололся? Как это можно исправить?

Заранее спасибо!
1 hhhh
 
19.09.18
05:07
(0) если регистр подчинен регистратору, то отбор только по регистратору. по измерениям отбор невозможен. поэтому выбросьте, что вы там навояли  про
НаборЗаписей.Отбор.ТранспортноеСредство.Установить(ТС);

и напишите по-новой
2 Bahamut
 
19.09.18
05:11
hhhh я так тоже пробовал, итог всё тот же - "Поле объекта не обнаружено (ОформлениеБригады)"
3 hhhh
 
19.09.18
05:14
(2) ну это совсем другой итог, не тот же, совершенно другая ошибка
4 Bahamut
 
19.09.18
05:23
(3) С чем она может быть связана? Я проверил данные регистра сведений - регистратор везде проставлен...
5 hhhh
 
19.09.18
05:31
(4) причем тут регистратор, вы не вчитались в ошибку, у вас ошибка не найдено поле ОформлениеБригады , и там в ошибке приведено имя модуля и номер строки, надо смотреть эту строку, почему не определено поле
6 catena
 
19.09.18
05:53
(2)Наверное потому, что отбор устанавливается по названию ключа (Регистратор), а не по типу документа (ОформлениеБригады)
7 Bahamut
 
19.09.18
06:12
(5) (6) Спасибо, уже разобрался. Судя по всему, НаборЗаписей тут бесполезен, сделаю через запрос.

Спасибо за помощь!