Изменение записей в регистре сведений подчиненных регистратору #681894


#0 by LivingStar
Есть регистр сведений, в который в разные периоды помещается набор записей. Регистр подчиненный регистратору, периодичность по позиции документа. В регистре актуальным должен быть один набор записей. То есть при проведении документа предыдущие значения должны ставиться в значение ложь. Как лучше это сделать??? На дату проводимого документа все что есть в регистре записывать в ложь? Как то не совсем дойду... Подскажите кому не трудно?!!!
#1 by Maxus43
При проведении документа набор записей будет перезаписан, старые "удалены"
#2 by LivingStar
А если новые документы создаются? Старые остаются, поместившие данные в регистр со значением истина.
#3 by LivingStar
(2+) Нужно это что бы потом отбирая записи, выявлять какие на текущую дату, дату выборки актуальны имеют значение истина! Или какие были актуальны в прошлые периоды, фиксируется это все документом.
#4 by Maxus43
последние записи (актуальные) - СрезПоследних у регистра, другие записи трогать не надо
#5 by catena
Нельзя в обработке проведения одного документа исправлять движения другого. Регистра сведений обслуживает указанные нужды без всяких дополнительных телодвижений.
#6 by LivingStar
Приведу пример: март      - документом был введен в регистр один фокусный ассортимент июнь      - был введен другой фокусный ассортимент июль      - был введен третий фокуксный асссортимент ... сентябрь  - что бы ввести фокусный ассортимент на сентябрь документом, нужно предварительно отменить его у всей предварительно введенной номенклатуры Отчетом нужно смотреть какой был фокусный ассортимент у номенклатуры в любой из выбранных месяцев. То есть при вводе фокусного ассортимента, нужно при обработке проведения отменять предыдущий. Делать это предварительно перепроводя предыдущий документ со значением ложь для номенклатуры? Или в донном случае не нужно для регистра задавать регистратор? Документ нужен в люббом случае. Как лучше сделать?
#7 by LivingStar
Так видите в чем дело? Я записываю в регистр фокусный ассортимент номенклатуры: // --------------------------------------------------------------------------------------------------- Получается что он и будет там храниться со значением истина, а следующим документом я помещаю туда новый фокусный ассортимент, соответственно предыдущий нужно установить в значение ложь. А так получается что вся номенклатура там будет со значением истина лежать. Как отчеты то делать потом?
#8 by LivingStar
Не совсем понимаю тогда необходимость регистра для этой задачи, можно и документами просто ограничиться...
#9 by LivingStar
Решение в данном случае, - в обработке проведения документа, полшучать предыдущий документ, устанавливать номенклатуру в его табличной части в значение ложь и перепроводить его, будет верно?
#10 by catena
Нет. Верно будет так спроектировать регистр, чтобы не патчить все документы при проведении. Ты подумал, что произойдет, если какой-нить жутко умный пользователь в сентябре перепроведет например январь? У регистра есть период, есть периодичность - этого недостаточно для получения необходимых данных?
#11 by LivingStar
Получая данные на любуюу дату в выборку будут попадать вся номенклатура из регистра, так как у неё ФА=Истина у всей, так она попадает в регистр. Нужно как то устанавливать значение ФА=Ложь, это будет актуальная номенклатура на текущую дату... Что было актуальной в предыдущие периоды можно будет выбирать из документов. В документе можно поставить запрет перепроведения если есть последующие документы. Пока не соображу как правильно сделать. Период и периодичность в этом случае наверное не помогут, важно значение ФА (булево) номенклатуры, табличной части документа.
#12 by LivingStar
То есть что в регистре ФА=Истина - это актуальный фокусный ассортимент номенклатуры. Он может меняться из периода в период.
#13 by LivingStar
Подчинение регистратору в данном случае наверное не подойдет. Думаю сделать регистр с периодичностью день например. И записывать в него каждый раз 2 тч, 1- ФА=истина (Текущий фокусный ассортимент), 2- ФА=ложь (Предыдущий фокусный ассортимент) все на дату документа!
#14 by catena
Тут куча вариантов. Можно в том же документе садить проводки по всей остальной номенклатуре со значением ложь. Можно выбирать записи только максимального периода. Забудь про запросы по документам. Либо уж делай всё на документах и не парься с регистрами.
#15 by LivingStar
Решил делать так: Регистр независимый, периодичность день. Документ 2 Тч. 1Тч актуальный фокусный ассортимент на дату документа. 2Тч Предыдущий фокусный ассортимент для установки в ложь на дату документа. При проведении одна номенклатура устанавливается ФА=Истина на дату документа. Другая в ФА=Ложь, предыдущая не актуальная номенклатура на дату докумнета. Но она остается актуальной в предыдущем периоде для истории.
#16 by mikeA
открой для себя цены номенклатуры
#17 by anaed
Что мешает при проведении документа поискать последний из предыдущих и его табличную часть записать в РС с ложью?
#18 by LivingStar
Так примерно и собираюсь делать. При открытии табличную часть последнего из предыдущих занеся в Тч "ОтменяемыйФА".
#19 by anaed
В эту ТЧ обязательно кто-нибудь залезет и исправит. Да и зачем ее хранить в доке?
#20 by LivingStar
неактивной сделать, или вообще не показывать, ищу решения, встречаются неправильные и не совсем правильные
#21 by LivingStar
При движении нужно же устанавливать отбор не только на период, но и на номенклатуру??? А то что то криво работает (((
#22 by LivingStar
можно ли установить отбор на табличную часть?
#23 by LivingStar
Подскажите если периодичность регистра в пределах дня. И я выбираю номенклатуру для отмены фокусного ассортимента, это нужно брать тогда не на дату документа, как туда правильнее передать дату?
#24 by LivingStar
почему при таком проведении: я не вижу в регистре записей с ФА=Ложь, соответственно они потом все по новой и отбираются в Тч?!!!
#25 by catena
Один раз делай Записать
#26 by МимохожийОднако
Если фокусный ассортимент действует только месяц, в котором сделан документ, а предыдущие месяцы не учитываются, то хватит табличной части документа без всяких движений в регистрах. Очень похоже на документ инвентаризации. Он фиксирует состояние, но движений не делает. При таком подходе не надо думать о закрытии данных в регистрах сведений при переходе на очередной период.
#27 by anaed
И создавать набор не надо 2 раза.
#28 by LivingStar
спасибо!
#29 by LivingStar
У меня проблема в том что ФА в "Ложь" не устанавливается вообще ((( Всегда "Истина". Почему такое может быть?
#30 by Ненавижу 1С
неудачник, код покажи
#31 by LivingStar
А, или вот вижу стал ставить, а то реально сидел, везде истину пишет и все!!! Когда на исправил наверное помогло!!!!
#32 by LivingStar
А как обойти такой момент, на который сейчас наткнулся: Январь,  ставлю 7 ФА, отменять нечего Феврать, ставлю 4 ФА, отменяю 7 Март,    ставлю 5 ФА, а к отмене 11 (а должно быть 4) это как вижу...
#33 by LivingStar
При открытии когда формирую таблицу для ОтменыФокусногоАссортимента, видимо оперировать нужно только с предыдущим месяцем!!! А в периодическом регистре сведений только один период? Нужно тогда от даты документа захватывать предыдущий месяц.
#34 by LivingStar
можно ли делать выборку по регистру сведений передавая не период, а НачДата и КонДата ?
#35 by LivingStar
up!!!!
#36 by LivingStar
видимо только если условие накладывать не на регистр а на УСЛОВИЕ выборки, я правильно рассуждаю?
#37 by МимохожийОднако
Повторяю. Откажись от регистров. Достаточно документа в месяце.
#38 by LivingStar
вот так на !!! ВЫБРАТЬ     ФокусныйАссортиментСрезПоследних.Период КАК Период,     ФокусныйАссортиментСрезПоследних.Номенклатура,     ФокусныйАссортиментСрезПоследних.ФА     ФокусныйАссортиментСрезПоследних.Период МЕЖДУ &НачДата И &КонДата УПОРЯДОЧИТЬ ПО     Период
#39 by LivingStar
Понял!!!! И выборки потом по документам делать? Делать по ним соединения?
#40 by LivingStar
Согласен, а то что то крутящееся не понятно для чего получается. Оставлю так, пусть будет!!!
#41 by МимохожийОднако
Не понял, но согласен.
#42 by LivingStar
Да мож регистр пригодится!!! В отчеты из регистров же нужно брать данные. Вот и на это опираюсь....
#43 by bard666
Не забывай Читать наборы, а то перезапишешь весь регистр, а потом возвращать из бэкапов
#44 by МимохожийОднако
Сначала разберись какие отчеты нужны и что нужно для них. Только потом проектируй регистры и движения по ним. Программирование "на всякий случай" - это твоё ноу-хау?
#45 by LivingStar
то есть работает но не корректно??? нужно делать НаборЗаписей.Прочитать; ?
#46 by LivingStar
Так задачи ставятся, нужно то то, то то. Ну а я типа услышав, сразу увидел правильное решение и воплотил его. Было бы так !!! Отчет где отображается то, является ли выведенная номенклатура фокусным вссортиментом?! На дату выборки. Это может пригодяться или потребоваться в любом отчете....
#47 by bard666
Да, это может отработать некорректно. У меня было такое, когда новый документ перезаписывал весь регистр, стирая записи по предыдущим документам. Пришлось восстановить бэкап и оттуда восстанавливать регистр.
#48 by LivingStar
Нужно 100% делать НаборЗаписей.Прочитать; и все будет Ок? Спасибо, учту!!!
#49 by LivingStar
А если в наборе в первом цикле номенклатура устанавливается в ложь, а во втором в истину??? У меня сейчас выдает ошибку на это, если видимо 2 раза создавать то не ругалась бы???
#50 by LivingStar
Как исключить такую ошибку? шибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {Документ.УстановкаФокусногоАссортимента}: Ошибка при вызове метода контекста (Записать) по причине: Запись с такими ключевыми полями существует! : ФокусныйАссортимент: 01.03.2013, Номенколатура шт. (Регистр сведений: Фокусный ассортимент; Номер строки: 6)
#51 by LivingStar
Видимо выкинуть предварительно из таблицы ОтменаФокусногоАссортимента то что есть в таблице УстановкаФокусногоАссортимента?!!
#52 by LivingStar
такое название процедуры ниначто негативно не повлияет?
#53 by МимохожийОднако
Уже поздно. Повлияло.
#54 by Enders
Может вместо того что бы думать что-то с регистром, проще было бы отчет правильно написать? А регистр оставить подчинённый регистратору и периодический?) Тогда бы просто брали бы срез последний на нужную дату и период>НачалоПериода(НужнаяДата,Месяц)
#55 by Enders
Только в вашем случае не "Месяц", а квартал)
#56 by LivingStar
А если скажут что а одном месяце может быть несколько смен фокусных ассортиментов? Когда внедрится это в работу и будут видны все минусы или плюсы, той или иной постановки, там и можно будет править.
#57 by LivingStar
Была бы Функция УборИзОтменыТогоЧтоЕстьВУстановке(Отмена, Установка)
#58 by Enders
ну как я понял,то у вас не в одном месяце, а в квартале могут быть несколько ФА, на следующий квартал, прошлые не актуальны. По-этому мы: а) берём срез на дату, и получаем последние данные согласно вашим измерениям б) обрезаем данные условием по периоду НачалоПериода(НужнаяДата,Квартал). И то что было введено до квартала в котором вы хотите посмотреть не попадает в отчет.
#59 by LivingStar
Это так передается параметров в период регистра сведений НачалоПериода(НужнаяДата,Квартал)? Возможно вы правы, но я двигаюсь по своему алгоритму, так как сторонний мне не совсем понятен. Хотя вижу что ваш более адекватен и прозрачен. Я работаю как могу. делаю вот так как делаю. Сейчас я пытаюсь решить ту задачу когда из одной таблицы значений нужно выборочно удалить записи.
#60 by LivingStar
Нужно мне это для того, что бы я не мог записать одно и тоже значение на одну и туже дату в разные.
#61 by Enders
Запрос выглядит примерно так "Выбрать * Из РегистрСведений.ВашРегистр.СрезПоследних(&ВыбраннаяДата) как Регистр Где Регистр.Период>=НачалоПериода(ВыбраннаяДата,Квартал)"
#62 by Enders
То есть типо если  сентябре было введено ФА1, то в октябре нельзя ввести это же ФА1, так как один и тот же квартал?
#63 by Enders
Вернее ошибочка) Ведь октябрь и сентябрь в разных кварталах) Если в Августре было введено ФА1, то в сентябре нельзя ввести это же ФА1, так как один и тот же квартал?
#64 by LivingStar
Это уберет из Тз1 то что есть в Тз2 ?
#65 by LivingStar
говорю требования точные не ясны, может быть как угодня, завтра только точно узнаю и буду обновлять рабочую базу на регистр и документ. У меня там и в номенклатуре выводится флажек, фокусный это ассортимент или нет. Посмотрю как это все увяжится.
#66 by МимохожийОднако
Добавил бы реквизит Фокусный и обработкой прогонял установку признака, если не нужна история. Пока нет точных требований, приступать к кодированию опрометчиво.
#67 by LivingStar
Ну а что делать приходится. Требования есть, но в процессе возникает куча вопросов. Человека который на них бы ответил сейчас нет, вот и делаю как понимаю, как вижу... Все же можно исправить переписать. Пока вот как понял делаю.
#68 by МимохожийОднако
ОК. Во всяком случае тебе никто не мешает делать пустую работу.
#69 by LivingStar
Подскажите как добиться ? Что бы правильно удалить строки?????
#70 by LivingStar
обощел это следующим образом     Для каждого Стр Из ТзОтменаФА Цикл         Если ТзУстановкаФА.Найти(Стр.Номенклатура, "Номенклатура") = Неопределено Тогда
#71 by Enders
"говорю требования точные не ясны" Это пять)))программировать без точных требований и ТЗ, да вы, батенька, знаете толк в извращениях.
#72 by LivingStar
я просиживаю штаны сижу, увлекаюсь программированием!!!
#73 by LivingStar
ФА будет изменяться раз в квартал
#74 by LivingStar
То есть можно просто вводить раз в квартал документ где в табличной части будет фокусный ассортимент и все этоадекватно помещать в отчеты при формировании в разные квартала тот фокусный ассортимент что установлен в документах, не нужны для этого регистры????
#75 by LivingStar
Может и можно, если его задают ФА, то хоть каждый квартал думаю ....
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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