|   |   | 
| 
 | v7: Прошу совета: как хранить историю изменения значений реквизита справочника | ☑ | ||
|---|---|---|---|---|
| 0
    
        america2013 14.11.13✎ 15:15 | 
        Приветствую Вас, уважаемые форумчане!
 Прошу дельного совета в таком деле, если в кратце: есть конфа 7.7; есть справочник Сотрудники с реквизитом Подразделение (не периодический); есть отчет с параметрами дата и подразделения, выводящий данные по сотрудникам; подсчеты ведутся на основании выбранного сотрудника и подразделения. Идея доработки: результат отчета зависит от выбранного подразделения; суть в том, что период может быть разным и в течении времени подразделение у сотрудника может смениться, поэтому необходимо хранить историю изменения подразделения у сотрудника, чтобы при формировании отчета подразделение указывалось не выбранное в реквизите сейчас, а на дату отчета. Можно конечно сделать реквизит Подразделение в справочнике у Сотрудника периодическим, но тогда я предвижу, что везде, где используется этот реквизит Подразделение нужно будет указывать дату, на которую нужно выбирать значение. Где это может встретиться - не известно. Надеюсь изложил доступно. Порекомендуйте, как быть? Заранее благодарен. | |||
| 1
    
        sapphire 14.11.13✎ 15:19 | 
        (0) Создать точно такой же реквизит, только периодический и назвать его например "ПодразделениеПериодический".
 При изменении реквизита "Подразделение" писать инфо и в "ПодразделениеПериодический". | |||
| 2
    
        Chum 14.11.13✎ 15:20 | 
        (1) +1     | |||
| 3
    
        america2013 14.11.13✎ 15:23 | 
        (1) Да, решение достойное. Спасибо!
 Я было ещё думал о том, чтобы создать Справочник (реквизиты Подразделение, Сотрудник и Дата) и использовать его как регистр сведений в 8, но это конечно выглядит как изврат, поэтому и решил спросить мнение у более опытных. Есть ли ещё варианты реализации? | |||
| 4
    
        alex74 14.11.13✎ 15:24 | 
        (3) новое подраздееление в карточку заносится вручную или документом о переводе?     | |||
| 5
    
        mikecool 14.11.13✎ 15:25 | 
        (3) подчиненный справочник к сотрудникам с полями дата и подразделение     | |||
| 6
    
        america2013 14.11.13✎ 15:27 | 
        (4) Вот это конечно стоит ещё выяснить..... а то догадываюсь, что изменения будут срабатывать, только при ручном вводе.     | |||
| 7
    
        alex74 14.11.13✎ 15:28 | 
        (6) если документом - ничего дорабатывать не надо, бери историю из документов.     | |||
| 8
    
        america2013 14.11.13✎ 15:30 | 
        (7) А если из документов и вручную, то брать оба значения и сравнивать какое свежее?     | |||
| 9
    
        alex74 14.11.13✎ 15:32 | 
        (8) тогда дорабатывай документы чтобы они изменяли периодический реквизит тоже, и отчет строй по реквизиту.
 Или по подчиненному справочнику из (5), потому что периодические реквизиты в семерке придумали извращенцы. | |||
| 10
    
        Господин ПЖ 14.11.13✎ 15:33 | 
        перейти на 8-ку     | |||
| 11
    
        Господин ПЖ 14.11.13✎ 15:33 | 
        периодика в клюшках - чудо враждебной техники     | |||
| 12
    
        Chum 14.11.13✎ 15:35 | 
        (3) периодический реквизит 7-ки это что-то вроде аналога регистра сведений 8-ки.
 (8) если допускается изменение реквизита вручную, тогда запрос по документам как в (7) тебе ничего не даст. здесь без периодики не обойдешься. (11) отчасти согласен, сильно тупит при обращении к периодике в циклах. особенно в ЗиК-е. приходится предварительно формировать таблицу с актуальными данными и потом обращаться к ней, а не к периодике. работает в разы быстрее. | |||
| 13
    
        Mikeware 14.11.13✎ 15:43 | 
        (1) штатная периодика - зло. 
 хотя - просто и дешево. ---------- лучше дополнительный справочник, и в ПриЗаписи пробегать все реквизиты, сравнивать с объектом в базе, и при различиях - писать в справочник кортеж ДатаВремя-Подьзователь-Реквизит-СтароеЗначение-НовоеЗначение | |||
| 14
    
        alex74 14.11.13✎ 15:47 | 
        (13) топикстартер замахается отслеживать все программные изменения справочника.     | |||
| 15
    
        Mikeware 14.11.13✎ 15:50 | 
        (14) это да.     | |||
| 16
    
        america2013 14.11.13✎ 15:52 | 
        Удалось выяснить, что Подразделение у Сотрудника никаким документами не меняется, только ручками, но это была только беседа с бухом, а не допрос, что означает, что где-то может и выстрелить документ ; ))) Отсюда следует, что больше подходит вариант создать копию реквизита Подразделение, но уже периодический и брать историю с него. Начну работу в этом направлении, но тему какое-то время продолжу монеторить, если вдруг будут ещё предложения.
 (10) Об этом у бухов нет и речи : ) Но на будущее конечно стоит учесть : ))) (13) Если создать ещё справочник, опосаюсь, что база ещё больше раздуется, кто знает, как часто туда буду вестись записи... (14) и (15) Расшифруйте пожалуйста, Ваш сленг ; ) | |||
| 17
    
        alex74 14.11.13✎ 15:58 | 
        (16) в семерке чтобы отследить что справочник меняется вручную - есть процедура "ПриЗаписи()", которая вызывается из формы элемента, и из формы списка справочника (т.е. тебе надо будет дублировать и там и там). Но если справочник меняется программно - например документом "кадровое перемещение" или обработкой, то эта процедура не запускается. В этих случаях тебе надо дописывать документ или обработку, чтобы они делали нужные изменения.     | |||
| 18
    
        america2013 18.11.13✎ 14:55 | 
        Работу продолжил. Добавил рядом с Подразделением ещё реквизит ПодразделениеПериодическое (конечно, периодический).
 В ходе работы столкнулся с применением такого реквизита. Прошу подскажите, как теперь в запросе (уже имеющемся) выбрать не Подразделение, а ПодразделениеПериодическое (у сотрудника)? Имею код: "//{{ЗАПРОС(Сформировать1) |с НачДата по КонДата; |ОбрабатыватьДокументы Проведенные; |Подразделение = Документ.ВедомостьНачислений.Сотрудник.Подразделение; |Организация = Документ.ВедомостьНачислений.Организация; |Оклад = Документ.ВедомостьНачислений.Оклад; |Дополнительные = Документ.ВедомостьНачислений.Дополнительные; |Функция СуммаНачислено = Сумма(Оклад+Дополнительные); |Функция НачисленоДополнительно = Сумма(Дополнительные); |Условие (Организация = ВыбОрганизация); |Группировка Подразделение упорядочить по Подразделение.Код Без Групп; |Без итогов; |"//}}ЗАПРОС ; | |||
| 19
    
        america2013 18.11.13✎ 15:00 | 
        Вариант, типа...
 |Подразделение = Документ.ВедомостьНачислений.Сотрудник.ПодразделениеПериодическое.Получить(НачДата); ...не работает : ((( | |||
| 20
    
        Mikeware 18.11.13✎ 15:00 | 
        (16) Ну, как мнеять будут. у меня логи ручных изменений - одни из самых больших таблиц в базе (почти 7 гигов - лог изменений документов).     | |||
| 21
    
        alex74 18.11.13✎ 15:05 | 
        |Подразделение  = Документ.ВедомостьНачислений.Сотрудник.ПодразделениеПериодическое ;     | |||
| 22
    
        america2013 18.11.13✎ 15:06 | 
        (21) И все? Простите, но как, если вкратце, система узнает, что мне необходимо значение на начальную дату отчета?     | |||
| 23
    
        alex74 18.11.13✎ 15:08 | 
        (22) система вернет значение на КонДата     | |||
| 24
    
        america2013 18.11.13✎ 15:10 | 
        (23) А на НачДата возможно реализовать?     | |||
| 25
    
        1dvd 18.11.13✎ 15:10 | 
        (24) Да, если строить запрос
 Период с НачДата по КонДата; | |||
| 26
    
        1dvd 18.11.13✎ 15:12 | 
        тьфу...
 Период с НачДата по НачДата; | |||
| 27
    
        america2013 18.11.13✎ 15:15 | 
        (26) Нет, так не подойдет, тогда и значения в запрос будут попадать только за 1 день : (((     | |||
| 28
    
        ЧеловекДуши 18.11.13✎ 15:27 | 
        (1) Оно и так периодическое :)     | |||
| 29
    
        ЧеловекДуши 18.11.13✎ 15:28 | 
        (0) Слышь, соколик, таки у тебя что за конфигурация?     | |||
| 30
    
        ЧеловекДуши 18.11.13✎ 15:28 | 
        (27) А периодичность в лице 1С, по их Черным запросам, всегда рассматривается в пределе конечной даты :)     | |||
| 31
    
        ЧеловекДуши 18.11.13✎ 15:29 | 
        +(27) Либо ты пишешь прямой запрос...
 Либо, как все, через Цикл в Цикле :) | |||
| 32
    
        america2013 18.11.13✎ 15:36 | 
        (29) 
 ТиС (7.7) 7.70.009 Реквизит и отчет добавлены самостоятельно. (30) Понятно с запросом, согласую этот момент, что бы так оставить не переделывая: Подразделение = Документ.ВедомостьНачислений.Сотрудник.ПодразделениеПериодическое; Но вот есть ещё вопрос: если значение ПодразделениеПериодичес - пустое, как это проверить? И если пустое, то выбрать Подразделение = Документ.ВедомостьНачислений.Сотрудник.Подразделение; | |||
| 33
    
        america2013 18.11.13✎ 15:54 | 
        Прошу, гуру, не покидайте! Нужна помощь: если значение ПодразделениеПериодическое - пустое, как это проверить? И если пустое, то выбрать
 Подразделение = Документ.ВедомостьНачислений.Сотрудник.Подразделение; | |||
| 34
    
        alex74 18.11.13✎ 15:55 | 
        (33) получай в цикле и то и то.     | |||
| 35
    
        america2013 18.11.13✎ 16:12 | 
        (34) Понятно.
 Благодарю всех за участие!!!!!! Удачи и успехов!!! | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |