Предопределенные элементы справочника #244028


#0 by Дурочка 1С ®
Мне нужны предопределенные элементы в справочнике. Т.е. я создаю их программно, мне нужно как-то программно их идентифицировать и не путать с пользовательскими.Как?Мое решение (которое никто не хочет тестировать): Код из форм везде убираю, когда создаю календарь программно, то присваиваю коды с префиксом «Ф»: Ф001, Ф002 …ПрефиксАвтонумерации("Справочник.Д1СКалендари","П");и считаю, что всегда отличу по коду предопределенные элементы от пользовательских.Есть другие решения? Очень хотелось бы послушать идеи потешающихся в
#1 by Programmer
вы уж определитесь с терминами - предопределенные или созданные прогрммно? имхо разные вещи
#2 by Дурочка 1С ®
Предопределенные элементы не могут быть созданы пользователем. На то они и предопределенные ...
#3 by Programmer
предопределенные элементы не могут быть созданы программно, на то они и предопределенные. и вообще, не надоело изобретать велик? в снеговике это все реализовано.
#4 by Дурочка 1С ®
Отвались ...
#5 by Programmer
шо-шо? ты мене?
#6 by MAXXL
А реквизит со значеним 0/1 не катит?
#7 by Тот кто не понял
элементы в папку "Служебные"
#8 by Дурочка 1С ®
Чтобы отличить пользовательский от предопределенного? Катит, катит ...Осталось решить вопрос идентификации.Как этот реквизит поможет автору в ?
#9 by Дурочка 1С ®
А если ее переименуют, переместят элементы, напихают в нее пользовательских элементов?Чем это решение отличается от ? Да еще гемороиться, чтобы не дать юзеру все запутать ...И, самое главное, как потом в этой папке найти где-что?
#10 by Тот кто не понял
юзеры могут любую константу поменять в типовой, но не делают этого бездумно. объяснение - это метод.
#11 by VZ
Да ладно, насчет способов "как"... Это не важно. ;)Я как-то прикидывал механизм... Получилось примерно так: создаем справочник предопределенных объектов: пара Идентификатор+ИДобъекта. Любого объекта, замечу. Возможно, периодический. Справочник, естественно, недоступен юзеру.Получается типа СправочникДикихКонстант ;)
#12 by Gosha
Ёмаё.НОВЫЙ одноуровневый справочник "ПредопределенныеЭлементы", Наименование - вид справочника, "Элемент" типа "Справочник" (неопр.вида) - сам предопределенный элемент. Пускать в справочник только админа (как вариант - подчинить самому себе - есть такой финт))).Гибкость ещё - многоуровневость с папками по применимости, доп.реквизиты уточняющие уместность применения в различніх контекстах, и т.п.
#13 by Тот кто не понял
(11,12) а юзер зайдёт и в исходном справочнике изменит/удалит вашу дикую константу
#14 by Тот кто не понял
с "удалит" погорячился. изменит.
#15 by Gosha
2: нифига ты таки не понял, правильный никнэйм.КАК он удалит если на элемент ЕСТЬ ССЫЛКА ????(дикие варианты с разрешением непосредственного удаления, или кодом, который удаляет элемент без проверки наличия ссылок на него - не предлагать.. ну или предлагать - но не мне, а например обитателям палаты, соседствующим с Наполеоном, Эйнштейном и Махатмой Ганди).
#16 by Тот кто не понял
согласен. см. а что по поводу "изменит"?
#17 by Gosha
2: А что с ним должно что-то случиться???? ИМХО ответ на : ни-че-го. У темя концептуальное непонимание. Измененный элемент справочника от этого не перестает быть предопределенным. Равно как, например, измененный элемент справочника, выбранный в константу, не перестанет быть значением константы. ;)
#18 by VZ
Фраза в "Справочник, естественно, недоступен юзеру" не видна в браузере?
#19 by Тот кто не понял
да? а я думал что от значений реквизитов этих элементов(диких констант) могут зависеть корреспонденции счетов, ставки НДС, формулы расчета чего-нить и подобное. я ошибался?
#20 by Тот кто не понял
а то что элементы этого справочника являются элементами других справочников, доступных для редактирования пользователям? или я что-то не так понял из постановки задачи в ?
#21 by Тот кто не понял
опять тороплюсь. но суть-то надеюсь ясна? в вашем справочники ссылки на элементы, которые может менять юзер - так?
#22 by Дурочка 1С ®
Что-то я не догоняю смысла ...Еще раз: у меня есть справочник. В нем есть предопределенные элементы (их количество конЕчно) и пользовательские. Внешне они практически не отличимы. Пользователь будет постоянно работать с элементами. Как со своими, так и с моими (предопределенными). При расчетах мне нужно открывать определенный предопределенный элемент и смотреть у него реквизиты. Сейчас я делаю это, находя элемент по коду.Что даст создание дополнительного справочника к этому справочнику?
#23 by Тот кто не понял
автор меня понял
#24 by Gosha
Предопределенные элементы будут задаваться не на уровне метаданных - а на уровне данных!.. ("почувствуйте разницу" ©)Грубо говоря, один раз пишешь код для работы со справочником предопределенных элементов (поиск-позиционирование-...) - и всё.
#25 by Дурочка 1С ®
???Как сделать (поиск-позиционирование-...) - и всё. в справочнике предопределенных элементов?
#26 by Gosha
!!!Моё нарисовано исходя из (вполне собой разумеющегося) того, что предопределенный элемент в каждом справочнике адын. Тебе надо другое.Давай мы сделаем так. Ты попробуешь нарисовать мне - в дополнение к - каким образом задается предопределенность. Для твоего случая незначительно дорабатывается и работает.Если есть регулярная зависимость "вида предопределенности" от контекста или от наличия и значений определенных реквизитов формы, из которой "открывается" определенным образом предопределенный элемент - то это тоже реализуемо. На программном уровне - тщательно и один раз, а в дальнейшем - на уровне данных!!! - задаются и при нужде меняются собственно сами предопределенные элементы (и - контексты их действия).
#27 by Дурочка 1С ®
Т.е., если бы предопределенный элемент был бы один, ты предлагал создать еще один справочник(!!!) с единственным элементом, содержащим ссылку на элемент первого справочника?!!! Это уж слишком ... Для этого, вообще-то, константы существуют ...
#28 by Gosha
2: Нет, я предлагал НЕ то что ты пишешь. Читай внимательнее.(надоело блин.. не поняв нифига обвинять в тупости собеседника.. ковыряйся само дальше, не в коня корм)
#29 by Тот кто не понял
бедняжка
#30 by Gosha
2: Ошибаешься, о, генитальный ходжа.---2: Погорячился в . Но суть верна - ты неверно поняла .Давай попробуем так: ты описываешь КОНКРЕТНО что тебе надо (а именно КАКИМ ОБРАЗОМ ты определяешь в конкретном контексте то, какой из предопределенных элементов в какой из реквизитов ставить или открывать по кнопке - и я попробую на пальцах разрисовать тебе что я имел ввиду в своих предложениях.. это конечно ЕСЛИ тебе действительно важно и интересно решить твою проблему а не поприкалываться ради поприкалываться и/или потешить свои комплексы...
#31 by Тот кто не понял
о0о, ну теперь я тебя зауважааал. спасибо, что очень подробно ответил на все мои вопросы
#32 by Дурочка 1С ®
Не знаю как еще тебе объяснить, чтобы потешить твои комплексы ... Это справочник календарей. Часть календарей предопределенные, например, "Пятидневка". Пользователь может создать свои календари и правила их заполнения, например, "День через день", в том числе и полные копии предопределенных. Время от времени он будет их все открывать и заполнять.Для некоторых расчетов, например, для расчета отпускных, мне нужно получить числа из определенного календаря ("Шестидневка" или "По календарным дням", не важно - из определенного предопределенного). Где эти календари используются в качестве реквизита для задачи значения не имеет. Возможность юзера удалить, переименовать, перенести в другую группу и т.п. тоже не обсуждается - пусть делает что хочет.
#33 by Gosha
0. Справочник ПредопределенныеЭлементы, реквизиты.0.0. Код, Наименование.0.1. ТипВидОбъектаФормы (тип - Строка, с отбором и сортировкой).0.2. ВидСправочника (тип - Строка)0.3. Элемент (тип - "Справочник").1. На кнопку формы например расчета отпускных формулу процедуры, в которой код глОткрытьПредопределенныйЭлемент(Контекст,"Календари")2. Глоб.модуль.---В справочник ПредопределенныеЭлементы добавляешь элемент:0.0. Наименование="Календарь для отпускных записок"0.1. ТипВидОбъектаФормы="Документ.РасчетОтпуска" (пусть док.называется так в метаданных, Ок?).0.2. ВидСправочника="Календари"0.3. Элемент - свой элемент справочника календарей ("Шестидневка" или "По календарным дням", не важно ©)-------Это - навскидку, алгоритм поиска предопределенного элемента, когда СПОСОБ(!) предопределения задается типом и видом объекта, для которого открыта форма, из которой необходимо посмотреть предопределенный элемент справочника определенного вида. Задаются предопределенные элементы (в справочнике) на уровне данных (меняй реквизит "Элемент" в справочнике ПредопределенныеЭлементы для нужного сочетания признаков, определяющих предопределенность - код отработает по заданному).ЕЩЁ РАЗ. СПОСОБ ПРЕДОПРЕДЕЛЕНИЯ важен, в этом посте - только "навскидку" способ предопределения, указанный тобой в примере. Это - только(!!!) пример, дающий возможное общее направление "копания" в проблеме.
#34 by Gosha
ЗЫ: ты попробуй все-таки осилить в конструктивном ключе, а не с критиканским настроем - может все-таки пригодится?.. хотя не уверен что терпеливости и внимательности в организме в такое время на это хватит - но все-таки хотел бы ошибиться в этом предположении.. а я пошёл спать, будут вопросы - держи ветку на плаву своими знаменитыми подколками и язвительностью.. :)))
#35 by VZ
Нагородил-то... Нафига этому справочнику Код? Нафига этому справочнику Вид и прочее, если это можно получить из самого значения (методами Вид, ТипЗначенияСтр...)? И почему только "Справочник"? А если хоцца "Счет"?И чем, кроме ненужного, это отличается от ?
#36 by Gosha
2: Код - ну он есть по дефолту, не нравится - укороти. Про остальное - я не допонял . Какого объекта (Данных? Метаданных?)??? Какой ИД?.. и т.п.За то, что "нагородил" - готов ответить. Но - уже сплю. Если будет интересно - по асе 77405945 (уже не завтра, а сегодня) вечером..
#37 by Дурочка 1С ®
Нагородил-то ... Т.е. вместо простого поиска по коду в нужном справочнике, предлагается отбор элементов другого справочника с последующим перебором и поиском единственновозможного элемента. Т.е. двух элементов в справочнике ПредопределенныеЭлементы завести нельзя - поиск всегда будет находить первый ...
#38 by Тот кто не понял
можете считать меня тупым, но я не действительно не понимаю. вот есть справочник. к примеру, "Цены" какие-нить. Открывает его юзер, берёт элемент "Цена продажи" и меняет у него реквизит "Включает скидку" с 1 на 0, записывает. проводит кучу документов, и даже не догадывается - что оказывается этот элемент справочника "Цены" - он служебный aka предопределенный. и от значений реквизитов этого элемента зависит ну очень много (или наоборот не зависит ничего, а юзер думает что зависит). а не догадывается он - потому что админ спрятал от юзера список предопределенных элементов справочника "Цены". Врочем как и других справочников :-) и у юзера даже мысли не возникнет, что он что-то не так делает VZ, сможешь ты ответить на этот вопрос? а то больше некому.  и второе. если юзер всё-таки откуда-то догадывается, что в справочнике определенные элементы - служебные. то почему их просто не сложить в одну папку и оттуда пользовать? а идентификация - хоть по коду, хоть по наименованию, хоть по комментарию.  вобщем игрушка ваша ничего, но игрушка. имхо.
#39 by Дурочка 1С ®
+ Точно такого же эффекта можно добиться настрогав констант: Константа1 - календарь Пятидневка, константа2 - Шестидневка и т.д. ... и нечего городить каких-то справочников ... и удалить календарь нельзя будет - в константе ссылка ...
#40 by Zhuri
Gosha, молдца я такое реализовал давно только функции по использованию такие:35) это ответ Функция глПолучитьЗначениеДопПараметра(ИмяПараметра) Экспортбез этого справочника задолбался бы константы добавлять
#41 by HAMMER
Я делал предопределенные элементы через константы, по мне так проще, быстрее, доступнее и т.д. а главное работает :)
#42 by Макс 1С
если есть возможность запретить редактировать код - то тогда как в и описало в сабже, если возможности запретить редактировать код нету, или нет такого желания, тогда дополнительный реквизит с отбором, не доступный для редактирования пользователю....
#43 by Gosha
> Т.е. вместо простого поиска по коду в нужном справочнике, предлагается отбор элементов другого справочника с последующим перебором и поиском единственновозможного элемента.=== Вместо заданного В КОДЕ поиска по коду предлагается поиск по "правилу предопределения" - при этом имеется возможность не лазя в код менять предопределенные элементы и исключены ошибки работы кода при изменении данных (кода твоего справочника).> Т.е. двух элементов в справочнике ПредопределенныеЭлементы завести нельзя - поиск всегда будет находить первый ...=== Можно завести несколько. В таком случае код немного изменится - функцией получать и возвращать СЗ из элементов, в процедуре открывать формы элементов по списку (или выбираемый из СЗ).Ключевой мысли (формализация способов предопределения элементов справочников в зависимости от контекста и дефиниция предопределенных элементов справочников для различных контекстов на уровне данных) ты, Дура, всетки не захотело понять - предпочтя почесать свой комплекс неполноценности. С сожалением вынужден констатировать, что тебе нафиг не надо никакого конструктива, а только погафкать. Тяфкай дальше.
#44 by android
Отдаю голос за СправочникДикихКонстант.
#45 by Дурочка 1С ®
Это вообще лажа. Фактически предлагается вместо поиска по коду недоступному пользователю создать другой недоступный пользователю справочник и искать в нем по наименованию, да еще таким варварским способом (перебором). Масло масленное. Это мне категорически не подходит. Решение с константами меня бы тоже устроило - предопределенных элементов будет не много (в пределах десятка - это точно) и десяток дополнительных констант никого бы не обидел. Одна проблема: у меня религиозный запрет на изменение ГМ. Как, не имея доступа к процедуре ПриЗаписиКонстанты, обеспечить неприкосновенность констант?
#46 by VZ
Поиск в СправочникеДиКихКонстант "по наименованию".Константы - это изменение Метаданных, ГМ - всего лишь модуль, исчезает при накате любого обновления.Блокировать изменение константы можно просто сняв галку в правах. Сняв все галки - сделаем константу "невидимой" в интерфейсе вообще.Разумеется, наличие живого юзера, умеющего лазать в конфигураторе и писать обработки, не предусматривается. При таком наличии вообще вести разговор о каких-то изменениях нет смысла.
#47 by Дурочка 1С ®
Кстати, с галкой в правах константы - это да, это вполне ...Наверное, так и стоит сделать. Насчет невидимости(?) - не знаю ... В списке-то она все равно видна, значения только не видно ...Ну и что, что изменение метаданных? Добавленные объекты при любых объединениях не затираются ©Я
#48 by Макс 1С
не видна.. если мы про константы....
#49 by HAMMER
А заказчику оно надо, чтобы константы невидимые были? Ну будит он их видеть что от этого поменяется, пускаю любуется. Чего сомневаться то, быстро, просто, сердито, работает или у тебя времени много?
#50 by Дурочка 1С ®
мы про константы.... видна...
#51 by Макс 1С
действительно... видна... а как то было такое что не видно было... не помню как, может при обновлении если такого набора прав нет?... ладно.. не важно....
#52 by Дурочка 1С ®
Кто такой заказчик? "Юзер - быдло!" © 1С. Что дадим, то и будут жрать и радоваться ... А на счет времени - не хочется уподобляться писателямДляВсейСтраны (© Mike). Разве национальная валюта рубль, например, в типовой - это не предопределенный элемент справочника? Но его может запросто не быть в справочнике, его можно переименовать, изменить код ... а писателям пофиг ...
#53 by p etrovich
Дурочка 1С ®, твой вариант безусловно лучший! На то ты и Дурочка 1С ®
#54 by мнемоника
а что бы не залепить документ с многострочной частью, это было бы клево
#55 by Чучундер
сорри, может я не в тему.предопределенный элемент справочника - т.е. перед его юзанием в алгоритме должны удостоверится, что он не изменился - так как от этого много зависит. Делаем СправочникДикихКонстант, в качестве кода - GUID предопределенного элемента, в качестве наименования (или реквизита строки неогр.длины) - "слепок" набора реквизитов предопределенного элемента, далее так..пробегаем по справочникуДикихконстант и сравниваем "слепок" с текущими значениями реквизитов элемента справочника... если сошлись все элементы дикогосправочника - система настроена как надо - идем дальше и юзаем обычным образом наш алгоритм - ищем по наименованию и пр...
#56 by Дурочка 1С ®
Нет. Не то ... Наоборот - элементы справочника изменяются пользователем (и слава богу).Вот такой пример: как в справочнике валют найти национальную валюту и (доллар уже не канает, т.к. курс у него <> 30 ©1С) Евро?
#57 by Дурочка 1С ®
Не лежит у меня душа к этим константам - облажаться можно с ними легко.Права ведь к набору прав привязаны. Такое ведь часто бывает, приходит новый ГБ, топает ногой "всех урезать, МНЕ(!!!) - отдельный набор прав со всеми правами! Живо!" ... И что получится? Создаст ей админ набор прав, установит для него все права и ... привет моей песне ...Опять же, в типовой только один набор прав, а сколько их и какие сейчас у юзеров - одному Miky известно ... Спроецируется ли на них права, объявленные для набора прав Администратор? Вопрос ...Установит ли при объединении конфигураций (типовой и нашей) юзер флажок "Права" или нет? Сиди гадай ... Все как-то стрёмно ...
#58 by SunShinne
+[44] за справочник Диких констант (Д1СКонстанты). Так универсальнее.
#59 by VZ
Я что, совсем непонятно структуру СправочникаДикихКонстрант в предложил?Ишшо раз:Наименование - скажем, длина 49. Чтоб можно было запихнуть что-то типа "СчетДляТоваровНаКомиссии" (с запасцем неким).Объект - тип Неопределенный.Все. никаких больше реквизитов не надо. Никому не доступен, никому не видим. (В скобках: если на Константу снять все права, вкл. "чтение" - фиг она через Меню-Операции-Константы видна)И доступ к записи справочника будет прост, как березовый веник. Мы же сами будем формировать названия "предопределенных", небось хватит ума не дублировать?
#60 by Дурочка 1С ®
Цель справочника какая? Вижу только одну выгоду - удалить нельзя (ссылка есть). Хотя название мне нравится ...Но смысл? Смысл объясните! Искать по коду в одном справочнике или по наименованию/коду/индексированному реквизиту в другом, причем, искать не элемент, а ссылку ... ??? ... Вкус есть, а смысла не вижу ©Реклама какая-то ...
#61 by VZ
Как в той же "восьмерке" используется "предоредеделенное" значение?У нас придется использовать что-то типаКоррСчет = Преопределенный("АмортизацияНематериальныхАктивов)";Ну, а расписывать функцию Предопределенный(НазвПредопределенногоОбъекта) не буду :)Главное: в СправочникеДикихКонстант в поле Объект могут быть ссылы на ЛЮБОЙ агрегатный объект - только задаваемый не в конфигураторе, а в "пользовательском" режиме (не самим пользователем, конечно).
#62 by VZ
+61 Фанаты 1С++ могут организовать классы так, чтоб эти "предопределенные" звучали в коде по "восьмерошному", через "точку" ;)Но это уже вопрос стиля...
#63 by VZ
А в сущности-то, такой справочник просто-напросто заменяет пару СохранитьЗначение/ВосстановитьЗначение, но тольно не для пользователя, а для всех пользователей базы. Да и хранение в отдельном справочнике надежнее, чем в профилях.Вот и все.
#64 by Дурочка 1С ®
Уговорили, чЕрти языкастые ...Может, действительно, когда-нибудь где-нибудь пригодится ...Да и поиск практически такой же по количеству строк (ровно в 2-е строки). Зато универсальный. И не надо думать что там: справочник, документ, перечисление ... Ну, что:Справочник: Д1СДикиеКонстанты, длина кода - 0, Наименование - 25, уровней - 1 Так?
#66 by Дурочка 1С ®
Кстати, а в неопределенном можно хранить строки, ТЗ, СЗ?
#67 by Дурочка 1С ®
Кстати, спрятать этот справочник не получится - его можно распечатать универсальной печатью справочников и заменить универсальной заменой значений ...
#68 by Gosha
2: В неопределенном можно хранить только ссылки на агрегатные типы данных и данные примитивных типов длиной кажется не больше 11-ти. ТЗ и СЗ не поместятся.
#69 by VZ
Зато в ссылочном реквизите можно хранить ссылу на справочник в целом. Кажется договорились, что от юзера класса "программист" скрыть ничего нельзя? А вот в обработку печати справочника запросто можно вставить проверку на "права" - там, где формируется список для выбора. Увы, да. Можно и это преодолеть, но тогда структура потеряет простоту и прочность. По сути, надо сделать нечто вроде "Хранилища значений", а это отдельная песня...
#70 by мнемоника
а мне по любому документ с табличной частью больше по душезначений правда не больше 10000, но опять же и не ios лепитьопять же есть уникальная возможность иметь несколько предопределенных наборов значений, а глобальный для конфигурации - так уж и быть - в константу типа этого документа
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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