Установка отбора на несколько значений #706137


#0 by yusose
Доброго времени суток! Нужно установить отбор по нескольким возможным значениям одного измерения, а именно: есть регистр сведений, непериодический, независимый. Нужно сделать отбор по значению измерения: НаборЗаписей.Отбор.ВидУчетаВремени.Установить(ЗНАЧЕНИЯ); Где Значения-это несколько значений Перечислений, либо одно НЕ Значение Перечисления)) Как поняла, отбор может использоваться только для одного значения, как можно установить отбор по нескольким значениям? Заранее спасибо всем откликнувшимся!
#1 by Maxus43
нельзя, отбор набора записей - только на равенство
#2 by yusose
а чем можно заменить?
#3 by Maxus43
смотря зачем надо. Если просто прочитать данные - Запрос
#4 by yusose
новый не хотелось бы создавать, а в имеющийся не могу вклиниться, чтоб аккуратно)) нужно не удалять строки регистра по одному типу документа. По умолчанию удаляются все пересекающиеся по периоду действия строки, вне зависимости от вида учета времени.
#5 by Wobland
создать набор, прочитать набор, изменить набор, записать набор
#6 by Maxus43
простите, но миелофон у меня сломался, телапатия отказала, и задачу вашу я не понял. Что за регистр? ГрафикРаботПоВидамВремени чтоль? Короче данные пишутся по каждой записи скорей всего (все измерения = Основной Отбор), надо менять алгоритм табеля. Это если я правильно протелепатил
#7 by Maxus43
технически для такого регистра "По умолчанию удаляются все пересекающиеся по периоду действия строки" - не имеет силу закона, это тупо в коде сделано
#8 by yusose
все правильно) данные да, для каждой записи не могу сообразить, где менять алгоритм табеля? (я всего месяц как... стажер...) нужно, чтобы "По умолчанию удаляются все пересекающиеся по периоду действия строки" работало нормально, но не задевало новый документ.
#9 by Maxus43
о, миелофон снова в строю! там алгоритм примерно такой - всё что указано в табеле на каждого сотрудника по периоду - заполняется новыми записями, не разбираясь "а что там было раньше". Перед записью очередной записи в регистре придётся "разобраться", т.е. прочитать значение менеджера регистра, куда собирается писать табель. В регистре нет признака каким документом были сделаны движения, есть только реквизит "Документ", можно на него смотреть и принимать решение записывать или нет новую запись.
#10 by yusose
Есть реквизит документ, и НОВЫЙ вид учета времени, по значению которого я и пытаюсь сделать отбор... т.е. наоборот, чтобы это значение в отбор не попадало... А вот так сильно криво будет? : И еще, подскажите, чем пользуетесь для вставки кода в форум?
#11 by yusose
он, оказывается, сам вставляется))) не знала)
#12 by yusose
правда криво как-то...
#13 by yusose
вот, полностью:
#14 by yusose
это все в цикле на каждого сотрудника
#15 by Maxus43
>>И еще, подскажите, чем пользуетесь для вставки кода в форум? ничем, так и пиши. Я не понимаю зачем какие-то отборы... там есть код:                     НаборГрафикиРаботыПоВидамВремени.Загрузить(ТаблицаНабора); в самом примитивном варианте (долгий и некультурный, но работать будет) надо тебе до Загрузить; обойти таблицу ТаблицаНабора и на каждую запись по измерениям проверить "а что там было до записи", посомтреть реквизит "Документ". И удалить эти строки из таблицы, чтобы записывалось что надо. этот код Удалит записи же, а надо как я понял - не удалять записи, сделанные определённым документом
#16 by yusose
там нет этого кода... все работает в процедуре УдалитьЗаписиЗаПериодДокумента, она как раз работает по отборам, мои добавленные строки в данном случае будут
#17 by yusose
а остальное все стандартное все это в цикле на каждого сотрудника документа
#18 by yusose
т.е. отбор был, и именно в этом отборе он проверяет...
#19 by Maxus43
а что должен сделать этот код?
#20 by yusose
он делает отбор по 4 из 5-ти (пятый созданный мной) значениям)))
#21 by yusose
т.е. пятое значение не попадает в отбор, и, соответсвенно, не перезаписывается... правильно? вот только не знаю, в данном случае цикл, наверное, сильно замедляет работу?
#22 by Maxus43
нет, он делает только отбор Перечисления.ВидыУчетаВремени.ПоЧасам и удаляет только эти записи, остальные не трогает
#23 by yusose
НаборЗаписей.Записать; это же тоже в цикле для сч=1 по 4? значит, каждый очищает и удаляет?
#24 by yusose
вот здесь
#25 by yusose
полный текст
#26 by Maxus43
тогда да, но я не совсем понимаю как это относится к задаче ... не удаляет только по отбору, которого нет в цикле
#27 by yusose
именно это мне и нужно, чтобы при новом виде учета времени запись не удалялась. Раз уж отбор нельзя сделать по нескольким значениям... А как с быстродействием в данном случае?
#28 by Maxus43
терпимо впринципе. Тут заковыка в том, что "удалить" запись он может не только в этой процедуре, поверх старой он может положить новую, там где и идёт запись в регистр
#29 by yusose
нуу... вообщем-то, запись остается, как факт) спасибо большое за подробные ответы! :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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