Создание периодических реквизитов программно

1. ixijixi 1913 09.12.08 08:59 Сейчас в теме
Всем привет.

Помогите пожалуйста со следующей задачей.

Есть справочник "Сотрудники", где существует периодический реквизит ФизЛицо=Справочник.ФизЛица, а есть обычный - Должность=Справочник.Должности.

Так вот, необходимо поменять их периодичность местами, т.е. Должность должна быть ПР, а ФизЛицо - обычным. Загвоздка в том, что нужно оставить привязку к документу, а обычным методом этого не сделать.

Есть какие-нибудь трюки, позволяющие это сделать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sashulyT 201 09.12.08 09:04 Сейчас в теме
А что мешает прост сделать должносьт периодической, а у ФизЛицо снять признак периодичности?
3. ixijixi 1913 09.12.08 09:06 Сейчас в теме
Делал. Тогда вся история по ФИЗЛИЦу херится, а ее нужно перенести в ДОЛЖНОСТЬ (все, т.е.дату, значение, документ и прочие атрибуты периодики)
4. sashulyT 201 09.12.08 10:19 Сейчас в теме
А тип у них один?
Надо писать обработку по переносу значений или переименовать имена реквизитов.
5. vovan519 276 09.12.08 13:55 Сейчас в теме
6. Abadonna 3968 09.12.08 15:24 Сейчас в теме
Периодическое физлицо у Сотрудника - это я вам скажу! ;) Кто ж додумался? Сотрудник Иванов позавчера физлицом Петровым был?
Ну а сделать (если это и правда так было) надо примерно так:
Сделать сначала периодику на должность, перенести на нее периодику с физлица, а потом уж убить периодику последнего.
Но ваще - я чуть в осадок не выпал...
7. Abadonna 3968 09.12.08 15:26 Сейчас в теме
+(6) Убить - в смысле снять
8. ixijixi 1913 09.12.08 15:59 Сейчас в теме
(6) Да ладно, Abadonna, я сам с себя фигею!

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



История = СоздатьОбъект("Периодический");
История.ИспользоватьОбъект("Должность",Сотрудник);
История.Новый();
История.Значение = Сотрудник.Должность;
История.ДатаЗнач = Документы.ДатаДок;
История.ТекущийДокумент() = Документы.ТекущийДокумент();
История.Записать();
9. ixijixi 1913 09.12.08 16:00 Сейчас в теме
10. ixijixi 1913 09.12.08 16:00 Сейчас в теме
11. ixijixi 1913 09.12.08 16:01 Сейчас в теме
12. sashulyT 201 09.12.08 16:04 Сейчас в теме
13. vovan519 276 09.12.08 17:39 Сейчас в теме
Я бы не искал "какие-нибудь трюки, позволяющие это сделать", а в начале разобрался бы "ЧТО ДЕЛАТЬ?". (ну или в крайнем случае "КТО ВИНОВАТ?")
Если вообще отбросить периодику, как ты вообще думаешь засунуть элемент справочника физлица в реквизит с типом "Справочник.Должности"? (см.свой 3)
14. ixijixi 1913 09.12.08 22:36 Сейчас в теме
(13)
vovan519,
Виноват я, поэтому и спрашиваю - что делать.

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

Фактически было так:
Элемент = Директор
01.01.2008 | Прием на работу №1 | Иванов И.И.
01.06.2008 | Приказ по отпуску | <...>
29.06.2008 | Приказ по отпуску | Иванов И.И.
01.11.2008 | Кадровое перемещение | <...>


А нужно так:
Элемент = Иванов И.И.
01.01.2008 | Прием на работу №1 | Директор | Основное место работы
01.06.2008 | Приказ по отпуску |
29.06.2008 | Приказ по отпуску |
01.11.2008 | Кадровое перемещение | Зам. директора


Т.е. было, что определяла элемент должность, а нужно -чтобы физлицо.
15. ixijixi 1913 09.12.08 22:44 Сейчас в теме
А вообще я сужаю вопрос, а то пошел переход на личности ;)

Как создать запись периодического реквизита с привязкой к документу, но без перепроведения оного.
16. Ёпрст 1065 10.12.08 11:37 Сейчас в теме
(15) update таблички 1сконст и привет... правда, при перепроведении документа будет то, что документ поставит... :)
17. vovan519 276 10.12.08 11:40 Сейчас в теме
Стандартный механизм ты знаешь. А не стандартный - Периодика в 1sconst, а в нем DOCID.
Только позволь дать тебе два совета и не обижайся.
1. в 1 речь идет об реквизитах одного справочника, а в примере 14 ты описываешь два разных элемента (Элемент = Директор, Элемент = Иванов И.И. ) разных справочников. Поэтому либо ты не поймешь задание, либо не можешь грамотно сформулировать мысли. (была тут одна статья про буквоедство). В обоих случаях у тебя каша в голове. Лично я в таком состоянии даже не подхожу к компьютеру. Мысли должны быть ясными и четкими. Алгоритм полностью должен быть в голове, а не фрагментами.
2. В модуле документа (документов) должно быть четко прописано какое периодическое значение нужно установить для конкретного реквизита конкретного справочника. Это единственно верное значение мы получаем из параметров (реквизитов) нашего документа. И это тебе все равно придется делать. Ведь даже если ты засунешь в справочник то, что тебе нужно, документ то могут и перепровести. А движения и периодика заполнятся в соответствии с модулем твоего документа. Ты же в модуле не напишешь "1с, посмотри пожалуйста, в старой базе был периодический реквизит физлица, который я переделал в непериодический, вот подставь сюда то самое значение". А если тебе все равно придется переделывать Модуль документа. Так переделай. А после этого тебе останется только перепровести документы.
Буду рад если мои советы тебе помогут.
18. ixijixi 1913 10.12.08 13:40 Сейчас в теме
(17)
vovan519,

vovan519 пишет:
в 1 речь идет об реквизитах одного справочника, а в примере 14 ты описываешь два разных элемента (Элемент = Директор, Элемент = Иванов И.И. ) разных справочников

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

vovan519 пишет:
тебе все равно придется переделывать Модуль документа.

Это полюбасу.

Спасибо за советы. Похоже путь мне на форум 1с++ :-D
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот