Имя: Пароль:
1C
1C 7.7
v7: Отбор в форме списка справочника по реквизиту неопределенного вида
0 ЯнСмит
 
19.02.23
13:59
Всем привет, кто-нибудь пробовал реализовать сабж, или такое в принципе не возможно? Поясню, у меня реализован механизм прикрепления произвольных файлов/ссылок к любым документам через специальный справочник с двумя реквизитами типа Основание (документ неопределенного вида) и текстовое поля для хранения собственно ссылки. Для просмотра вложений к конкретному документу я открываю форму списка с отбором по этому документу, все работает замечательно. Аналогичная история и с вложениями к справочникам, только там Основание - это справочник неопределенного вида. Поскольку в обоих случаях функционал данного механизма практически идентичен, то захотелось объединить все это в один универсальный справочник для хранения вложений, т.е. теперь Основание - это реквизит неопределенного вида. При открытии формы списка я анализирую параметр передаваемый в форму, определяю документ это или элемент справочника, задаю определенный тип реквизиту Основание примерно вот так:

Процедура ПриОткрытии()
   Осн=Форма.Параметр;
   Тип=ТипЗначенияСтр(Форма.Параметр);
   Тек=СоздатьОбъект(Тип);
   Форма.Заголовок("Вложения к "+нрег(Тип)+"у "+Осн,0);
   НазначитьТип("Объект",Тип+"."+Осн.Вид());  
   УстановитьОтбор("Объект",ТекЭлм);
КонецПроцедуры

но значение основания не сохраняется, что только не перепробовал, может такое в принципе не возможно?
1 Злопчинский
 
19.02.23
14:28
а можно если называть основание то прямо в задаче писать что за реквизит соответсвует товему "оснвоанию"
Под "оснванием" ты понимаешь "Объект", который в "УстановитьОтбор"..?
.
что значит
"но значение основания не сохраняется"
.
где что должно сохраниться?
2 Злопчинский
 
19.02.23
14:30
Открой дерево метаданных
Открой ветку своего справочника
Стань на реквизит "Объект".
осмотри "свойства".
Ничего не напрягает/не наводит на размышления?
3 Aleksey
 
19.02.23
14:43
а если еще добавить
назначитьВид()
4 Злопчинский
 
19.02.23
14:45
(3) мне кааатца что отбор по объекту неопределенного типа - работать не будет. галочку на отбор в метаданных ты хрен поставишь.
5 Остап Ибрагимович
 
19.02.23
15:20
Не пробовал. Потому что не надо. И технологически не реализуемо.
За весь опыт работы (начиная с 7.0 если кто помнит) - хватало отборов по тому, что технологически допускает его возможность.
Ну т.е. вопрос - напомнил давнюю байку про параллельные пересекающиеся линии (ага, "с зайчиком").
6 Злопчинский
 
19.02.23
15:36
(0) храни объект в виде текстовой ссылки типа ЗначениеВСтрокуВнутр
7 ЯнСмит
 
19.02.23
16:01
(2) не напрягает, ибо можно сначала поставить галки "сортировка" и "отбор", а потом сменить тип реквизита на неопределенный, галки остаются на местах ))
(3) пробовал - ругается
(6) можно попробовать ...
8 Злопчинский
 
19.02.23
16:20
(7) по (2) но это не значит что это будет работать
9 Злопчинский
 
19.02.23
16:21
(7) по (6) а рядом хранить колонку текстового представления для визуализации
10 ЯнСмит
 
19.02.23
17:42
Да, уже так и сделал, спасибо тебе за идею )
11 АгентБезопасной Нацио
 
19.02.23
19:23
(6) можно хранить и в нативном виде char(23) (ЗначениеВСамуюДлиннуюСтрокуБД()).
а отображать путем ""+ЗначениеИзСамойДлиннойСтрокиБД()
12 Злопчинский
 
19.02.23
21:06
(11) а чем отличается ЗначениеВСтрокуВнутр от ЗначениеВСамуюДлиннуюСТрокуБД
?
13 victuan1
 
20.02.23
05:04
Можно вместо одного реквизита неопределенного вида сделать два реквизита:
1) Документ неопр. вида
2) Справочник неопр. вида.

По таким типам Отбор можно использовать.
14 Злопчинский
 
20.02.23
07:10
И назвать реквизиты так же "Документ" и "Справочник" - удобно будет
15 АгентБезопасной Нацио
 
20.02.23
07:16
(12) короче.
(13) ТКВ.
16 Калиостро
 
20.02.23
09:10
(0) Можно еще вместо штатного отбора воспользоваться методами ИерархическийСписок(1,0); ИспользоватьСписокЭлементов().
17 Харлампий Дымба
 
20.02.23
10:48
Строка 20 символов (максимум для отбора - 22). Из ЗначениеВСтрокуВнутр берешь:
Id типа объекта: 1 символ;
Id вида объекта: 6 символов (может быть до 10 - прогони по всем по Метаданнные.Документ() Метаданные.Справочнки() - посмотри сколько тебе хватит) ;
Id объекта - 13 символов.
18 АгентБезопасной Нацио
 
20.02.23
11:00
(17) а зачем? уменьшить длину? Тогда хватит 1 символ типа объекта, и ЗначениеВДлиннуюСтрокуБД - которое char(13), всего будет 14...
Но имхо проще хранить (23), и тогда сразу одним скалярным запросом возвращать объект.
19 Харлампий Дымба
 
20.02.23
11:13
(18) Длину уменьшить надо, да. Отбор по строке - 22 символа, даже 23 уже не получится.
Если можно получить всё то же самое штатными средствами, зачем использовать функции из сторонних dll? У меня Бух и ЗиК, мне от 1сpp.dll плюшек нет особых.
20 АгентБезопасной Нацио
 
20.02.23
11:16
(19) насколько помню, как раз по 23 отбор, это типовое поле неопределенного типа
21 Харлампий Дымба
 
20.02.23
11:32
Не, 22 - проверил ещё раз беглым гуглежом по форуму. Ну в любом случае в 22 можно будет запихнуть всё что потребуется, и УРБД при необходимости, и даже привязку электронной копии не конкретному объекта, а ко всему списку (Приказ об утверждении перечня статей накладных расходов) можно легко сделать. Советов надавали достаточно, дальше дело за ТС.
22 Харлампий Дымба
 
20.02.23
11:48
(20) Задумчиво: хотя может ты и прав, у себя в комментариях к функции нашел: "Нам надо впихнуться в 23 символа, по которым можно сделать отбор". Наверное 22 это не про отбор, а про максимальную длину строки, которую можно запихнуть в тип значения "Неопределенный".
23 Злопчинский
 
20.02.23
11:51
Понабежали.. мамонты.. мастодонты.. шерстистые носороги...
24 АгентБезопасной Нацио
 
20.02.23
11:57
(23) "Раньше я левитировал, как Зекс. А теперь, простите, не могу вывести растительность на ушах. Это так неопрятно… Но если нет таланта?"©
25 Харлампий Дымба
 
20.02.23
12:29
(24) Простите за нескромный вопрос, но при чем здесь диван?
26 Харлампий Дымба
 
20.02.23
12:55
Функция глПолучитьИдОбъектаДляЭК(Объект) Экспорт
    //можно предварительно пробежаться по всем объектам и выяснить максимальную длину строки, возвращаемую этой функцией и добавить пару символов про запас
    Результат="";
    Если ТипЗначенияСтр(Объект)="Справочник" Тогда
        Если Объект.Выбран()=0 Тогда
            Возврат Результат;
        КонецЕсли;    
        Идентификатор = ЗначениеВСтрокуВнутр(Объект.ТекущийЭлемент());//обязательно .ТекущийЭлемент()
    ИначеЕсли ТипЗначенияСтр(Объект)="Документ" Тогда
        Если Объект.Выбран()=0 Тогда
            Возврат Результат;
        КонецЕсли;    
        Идентификатор = ЗначениеВСтрокуВнутр(Объект.ТекущийДокумент());//обязательно .ТекущийДокумент()
    Иначе
        Возврат Результат;//другие нам неинтересны
    КонецЕсли;    
        
    Идентификатор = Сред(Идентификатор,2,СтрДлина(Идентификатор)-2);
    Элементы = СоздатьОбъект("СписокЗначений");
    Элементы.ИзСтрокиСРазделителями(Идентификатор);
                                                                                                                                
    //нам надо впихнуться в 23 символа, по которым можно делать отбор
    ID_ТипОбъекта=Элементы.ПолучитьЗначение(1);//1 - символ "B"-справочник, "O"-документ
    ID_ВидОбъекта=Формат(Элементы.ПолучитьЗначение(4),"С6");//может быть 10 символов - у нас не встречается больше 5, возьмем 6
    ID_Объекта=Элементы.ПолучитьЗначение(7);//13  символов
    
    Если СтрДлина(СокрЛП(Элементы.ПолучитьЗначение(4)))>6 Тогда
        //можно увеличить и до 8, но тогда надо и идентификатор увеличивать до 22 в справочнике (отбор не работает больше 23?) и существующие перенумеровать на 8 символов
        Сообщить("Слишком длинный внутренний идентификатор у  <"+СокрЛП(Объект)+">. Обратитесь к программисту и сообщите код проблемы #7!","!");
        а=1/0;
    КонецЕсли;    

    Возврат ""+ID_ТипОбъекта+ID_ВидОбъекта+ID_Объекта;//20 символов
КонецФункции//глПолучитьИдОбъектаДляЭК
27 АгентБезопасной Нацио
 
20.02.23
12:57
(25) "это транслятор..."
(26) "Код проблемы #7" - это жёстко
28 Builder
 
20.02.23
13:27
(26) У меня в одной конфе весь ID запихнут в 12 символов и выводится в виде EAN13.
29 АгентБезопасной Нацио
 
20.02.23
13:32
(28) !©Станиславский
30 Builder
 
20.02.23
13:34
(29) Просто сделан еще справочник для перекодировки внутреннего ИД документа в 2 символа :)
31 Builder
 
20.02.23
13:35
+ (30) внутреннего вида документа.
Короче при желании можно найти способы :)
32 АгентБезопасной Нацио
 
20.02.23
13:37
(30) все равно. даже без УРБД -  ZZZZZZ  всего втрое меньше, чем 10^12. т.е. хватит на три объекта метаданных
33 Builder
 
20.02.23
13:52
(32) Что куда хватит? 2 разряда на виды документов или справочников - это 100 видов. Можно увеличить до 3-х.
8 разрядов для ид документа - это 100 млн документов.
+ первый служебный символ. Итого 11-12 разрядов.
Куда еще?
34 АгентБезопасной Нацио
 
20.02.23
13:56
(33) "640К хватит всем"?
"8 разрядов для ид документа - это 100 млн документов" - нужно не забывать про УРБД. Если теряешь префикс - не востановишь однозначно. Если нумеруешь базы - рискуешь потерять соответсвие  при перенумерации/удалении базы. Но как частное ограниченное решение - сойдет, конечно.
35 Builder
 
20.02.23
14:05
(34) у меня УРБД нет, ШК сделаны только для документов.
Сделано 9 разрядов под ИД, это овердохрена. Клюшки столько не протянут :)
36 АгентБезопасной Нацио
 
20.02.23
14:12
(35) 6 а не 9.  Три  - это урбд.
насчет "не потянут" - ну, средняя конторка 3.5 ляма доков в год легко, 3 года (срок исковой) - уже больше 10 лямов, т.е. 8 десятичных разрядов. В архивной за 12 лет получалось уже 40. Так что "никогда не говори никогда"
37 Злопчинский
 
20.02.23
14:17
(27) ""Код проблемы #7" - это жёстко"
это правильное решение. Сам аналогично делаю когда пишу "хорошо", когда нельзя допустить слома кода но надо сигнализировать об ошибочной ситуации или выдать доп.информацию, типа
ОшибкаОписание = "ОШИБКА: тутидошибки, тут описание ошибки/проблемы/чтоделать";
.
в качестве Идошибки - тупо беру литералом из табло текущее _GetPerformanceCounter().
ю
и когда в ужасе кто-то орет аааа тут страшное что-то - "скажи номер ошибки - там он выводится" - говорят номер ошибки и тупо контекстным поиском практически быстро находишь нужное. Потому как даже в однйо обработке таких ловушек может быть штук 20-25, а обработок ткого рода - тоже штук 20
38 Остап Ибрагимович
 
20.02.23
14:39
Внутреннее представление ID объекта данных: Тип(1) + Вид(10) + Объект(10) + КодИБ(3) = 24 символа
В базе данных для полей _Id* состоящие из цифр Вид(10) и Объект(10) перекодируются в 35-ричное значение (в 1с есть недокументированные функции: _IdToStr для такой перекодировки - и "симметричная" функция _StrToId для обратной).
Итого полный ID любого объекта данных легко укладывается в строку длины 16 (там кстати и код ИБ для УРБД есть) - с возможностью простого получения из такого ИД ссылки на сам объект данных.
При этом никаких "подсчетов максимального" не надо от слова вообще - кодировка охватывает все пространство возможных объектов данных и взаимно-однозначна со ссылками на них.
39 АгентБезопасной Нацио
 
20.02.23
14:40
(37) у меня там, где обработка ошибки возможна - задачу мне формирует (в клюшках - сообщение через систему сообщений).
40 Злопчинский
 
20.02.23
14:42
(39) например в Абакане, Ижевске или Воронеже? ;-)
41 АгентБезопасной Нацио
 
20.02.23
14:45
(38) так достаточно длинннуюСтроку (13 символов) + 1 символ тип объекта. Итого 14. ПОчему использование типа увеличивает строку не на 1 знак, а на 10 - ну ХЗ, что там они курили.
поля  - в 36-ричой системе, а не 35.
42 Остап Ибрагимович
 
20.02.23
14:45
(38)+: вот это - используется давно, активно, без ошибок, удобно и успешно:
// НАЗНАЧЕНИЕ:    Получение ID объекта данных (Перечисление,Счет,Справочник,Документ)
//     ВВЕДЕНИЕ:    Перечень ID объекта данных:    Тип(1)+Вид(10)+Объект(10)+КодИБ(3)
//                Полный ID объекта складываетсчя из этих ID в указанном порядке, длина=24
//                В случае определенности типа справочника значение имеет только [Объект(10)+КодИБ(3)]
//    ПАРАМЕТЫ:    * тОбъект    -    объект данных (ВНИМАНИЕ! для выборки - обязательно
//                                "<ВыборкаОбъектов>.Текущий{Счет/Элемент/Документ}()"!)
//                * тИдСЗ        -    тип возвращаемого значения (СЗ=0/1/2/3/4, ПолныйИД,ТипИД,ВидИД,ОбъектИД,ИдИБ)
//    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ:    * Явный возврат: Заданный во втором параметре ID
//                            * Дополнительно: Во втором параметре вызова возвращается СЗ со всеми ID (см.выше)
//------------------------------------------------------------------------------
Функция ПолучитьИДыОбъекта(Знач тОбъект,тИдСЗ=0) Экспорт
    Перем _Ок,тТипВозврата,тСЗ,тТхт;
    тТхт=ТипЗначенияСтр(тИдСЗ);
    Если тТхт="СписокЗначений" Тогда
        тИдСЗ.УдалитьВсе(); тТипВозврата="*";
    Иначе
        Если тТхт="Число" Тогда тТипВозврата=тИдСЗ Иначе тТипВозврата=Число(СокрЛП(тИдСЗ)) КонецЕсли;
        тИдСЗ=СоздатьОбъект("СписокЗначений"); тТипВозврата=Макс(0,Мин(4,Окр(тТипВозврата,0)));
        тТипВозврата=?(тТипВозврата=4,"ИдИБ",?(тТипВозврата=3,"ИдОбъекта",?(тТипВозврата=2,"ИдВида",?(тТипВозврата=1,"ИдТипа","*"))));
    КонецЕсли;
    тСЗ=СоздатьОбъект("СписокЗначений");
    тТхт=ТипЗначения(тОбъект);//ТипЗначенияСтр(тОбъект);
    Если тТхт=0 Тогда тТхт=ТипЗначенияСтр(тОбъект);
    ИначеЕсли тТхт=1 Тогда тТхт="Число";
    ИначеЕсли тТхт=2 Тогда тТхт="Строка";
    ИначеЕсли тТхт=3 Тогда тТхт="Дата";
    ИначеЕсли тТхт=10 Тогда тТхт="Перечисление";
    ИначеЕсли тТхт=11 Тогда тТхт="Справочник";
    ИначеЕсли тТхт=12 Тогда тТхт="Документ";
    ИначеЕсли тТхт=13 Тогда тТхт="Календарь";
    ИначеЕсли тТхт=14 Тогда тТхт="ВидРасчета";
    ИначеЕсли тТхт=15 Тогда тТхт="Счет";
    ИначеЕсли тТхт=16 Тогда тТхт="ВидСубконто";
    ИначеЕсли тТхт=17 Тогда тТхт="ПланСчетов";
    ИначеЕсли тТхт=100 Тогда тТхт=ТипЗначенияСтр(тОбъект) КонецЕсли;
    Если тТхт="СписокЗначений" Тогда    // в Объекте получен СЗ (выдернуть из него ИД-ы)
        тОбъект.Выгрузить(тСЗ);
    ИначеЕсли тТхт="Строка" Тогда        // в Объекте получено внутреннее представление (=ЗначениеВСТрокуВнутр(<данные>))
        тСЗ.ИзСтрокиСРазделителями(Сред(Лев(тОбъект,СтрДлина(тОбъект)-1),2));
    ИначеЕсли Найти("СчетПеречислениеСправочникДокумент",тТхт)>0 Тогда    // В объекте получен сам обыект данных:
        тОбъект=ЗначениеВСтрокуВнутр(тОбъект); тСЗ=СоздатьОбъект("СписокЗначений");
        тСЗ.ИзСтрокиСРазделителями(Сред(Лев(тОбъект,СтрДлина(тОбъект)-1),2));
    Иначе Возврат("");
    КонецЕсли;
    тТхт=СокрЛП(тСЗ.ПолучитьЗначение(1));    // T=счет/O=документ/B=справочник/E=перечисление/U=неопределеннный:
    Если ПустоеЗначение(тТхт)=1 Тогда тТхт="U" Иначе тТхт=?(Найти("TOBEU",Лев(тТхт,1))=0,"U",Лев(тТхт,1)) КонецЕсли;
    _Ок=тТхт;
    тТхт=тСЗ.ПолучитьЗначение(тСЗ.РазмерСписка());
    Если СтрДлина(тТхт)=13 Тогда тТхт=Формат(Число(тСЗ.ПолучитьЗначение(4)),"Ч10") Иначе тТхт=Лев(тТхт,10) КонецЕсли;
    _Ок=_Ок+тТхт;
    тТхт=тСЗ.ПолучитьЗначение(тСЗ.РазмерСписка());
    Если СтрДлина(тТхт)>13 Тогда тТхт=Прав(тТхт,13) КонецЕсли;
    _Ок=_Ок+Формат(Число(Лев(тТхт,СтрДлина(тТхт)-3)),"Ч10")+Прав(тТхт,3);
    тИдСЗ.Установить("ИдТипа",Лев(_Ок,1));
    тИдСЗ.Установить("ИдВида",Сред(_Ок,2,10));
    тИдСЗ.Установить("ИдОбъекта",Сред(_Ок,12,10));
    тИдСЗ.Установить("ИдИБ",Прав(_Ок,3));
    Если тТипВозврата<>"*" Тогда _Ок=тИдСЗ.Получить(тТипВозврата) КонецЕсли;
    Возврат(_Ок);
КонецФункции //ПолучитьИДыОбъекта
//------------------------------------------------------------------------------
// Способы вызова:
//    - только первый параметр = внутреннее представление
//    - только первый параметр = Ключ(24) = ИдТипа(1)+ИдВида(10)+ИдОбъекта(10)+ИдИБ(3)
//    - в параметрах заданы все четре ИД-а
Функция ПолучитьОбъектПоИДам(Знач ИдТипа,Знач ИдВида="",Знач ИдОбъекта="",Знач ИдИБ="", Знач тБазаОЛЕ="") Экспорт
    Перем _Ок;
    Если ТипЗначенияСтр(ИдТипа)="СписокЗначений" Тогда
        ИдВида=ИдТипа.Получить("ИдВида");
        ИдОбъекта=ИдТипа.Получить("ИдОбъекта");
        ИдИБ=ИдТипа.Получить("ИдИБ");
        ИдТипа=ИдТипа.Получить("ИдТипа");
        Если ТипЗначенияСтр(тБазаОЛЕ)="OLE" Тогда
            _Ок=тБазаОЛЕ.ValueFromStringInternal("{"""+ИдТипа+""",""0"",""0"","""
            +ИдВида+""",""0"",""0"","""+Формат(Число(ИдОбъекта),"Ч10")+Формат(ИдИБ,"С3")+"""}");
        Иначе//Если ТипЗначенияСтр(тБазаОЛЕ)<>"OLE" Тогда
            _Ок=ЗначениеИзСтрокиВнутр("{"""+ИдТипа+""",""0"",""0"","""
            +ИдВида+""",""0"",""0"","""+Формат(Число(ИдОбъекта),"Ч10")+Формат(ИдИБ,"С3")+"""}");
        КонецЕсли;
    ИначеЕсли СтрДлина(ИдТипа)=24 Тогда
        Если Лев(ИдТипа,1)="T" Тогда    // Счет - составляется по-другому
            _Ок="{""T"",""0"",""0"",""0"",""0"",""0"","""+Сред(ИдТипа,2)+"""}";
        Иначе//Если Лев(ИдТипа,1)<>"T" Тогда
            _Ок="{"""+Лев(ИдТипа,1)+""",""0"",""0"","""+Сред(ИдТипа,2,10)+""",""0"",""0"","""+Сред(ИдТипа,12)+"""}";
        КонецЕсли;
        Если ТипЗначенияСтр(тБазаОЛЕ)="OLE" Тогда
            //_Ок=тБазаОЛЕ.ValueFromStringInternal(_Ок);
            _Ок=тБазаОЛЕ.EvalExpr("ЗначениеИзСтрокиВнутр("""+СтрЗаменить(_Ок,"""","""""")+""")");
        Иначе//Если ТипЗначенияСтр(тБазаОЛЕ)<>"OLE" Тогда
            _Ок=ЗначениеИзСтрокиВнутр(_Ок);
        КонецЕсли;
    ИначеЕсли Лев(ИдТипа,1)="{" Тогда
        Если ТипЗначенияСтр(тБазаОЛЕ)="OLE" Тогда
            //_Ок=тБазаОЛЕ.ValueFromStringInternal(ИдТипа);
            _Ок=тБазаОЛЕ.EvalExpr("ЗначениеИзСтрокиВнутр("""+СтрЗаменить(ИдТипа,"""","""""")+""")");
        Иначе//Если ТипЗначенияСтр(тБазаОЛЕ)<>"OLE" Тогда
            _Ок=ЗначениеИзСтрокиВнутр(ИдТипа);
        КонецЕсли;
    КонецЕсли;
    Возврат(_Ок);
КонецФункции //ПолучитьОбъектПоИДам
//------------------------------------------------------------------------------
Функция ИдОбъектаВПвБД(тИд) Экспорт
    Возврат(Лев(тИд,1)+_IdToStr(Число(Сред(тИд,2,10)))+_IdToStr(Число(Сред(тИд,12,10)))+Прав(тИд,3));
КонецФункции //ИдОбъектаВПвБД
//------------------------------------------------------------------------------
Функция ИдОбъектаБДвВП(тИд) Экспорт
    Возврат(Лев(тИд,1)+Формат(СокрЛП(_StrToId(Сред(тИд,2,6))),"Ч10.0")+Формат(СокрЛП(_StrToId(Сред(тИд,8,6))),"Ч10.0")+Прав(тИд,3));
КонецФункции //ИдОбъектаБДвВП
//------------------------------------------------------------------------------
43 Остап Ибрагимович
 
20.02.23
14:47
(41) нет не достаточно. точнее - можно и так, но это незачем.
44 АгентБезопасной Нацио
 
20.02.23
14:47
(40) Да, через РБД сообщения проходили.
45 Остап Ибрагимович
 
20.02.23
14:48
ЗЫ: Ага, там и по OLE можно дергать воэтовсё.
46 Злопчинский
 
20.02.23
14:49
извращенцы... вам всем прямой путь на 8-ку...
47 АгентБезопасной Нацио
 
20.02.23
14:50
(43) более чем достаточно.  
ЗначениеВСамуюДлиннуюСтрокуБД(Объект). Если уж надо сократить - бери первый символ, и последние 13..
обратно - один скалярный запрос, и имеешь объект
48 АгентБезопасной Нацио
 
20.02.23
14:51
(46) а мы и там извращаться продолжим!©вовочка
49 Остап Ибрагимович
 
20.02.23
14:54
(47): "Достаточно" и меньшего - при упаковке и прочих извращениях.
прим.: а отвечать на комментарий логичнее, прочитав его полностью - а не только то, на что возразить хочется искрометно ))
50 ЯнСмит
 
20.02.23
18:17
Ничёсе ... испуганно оглядываясь по сторонам =)))
51 Харлампий Дымба
 
20.02.23
18:50
(50) А, кстати, почему бы не сделать два поля отбора: одно заполнять для справочников, другое для документов? Ну и отбор дёргать в соответствии с типом объекта.
52 ЯнСмит
 
20.02.23
20:17
(51) да, спасибо, думаю в итоге так и сделать, это всяко проще, чем через внутреннее представление
53 Остап Ибрагимович
 
20.02.23
20:19
(51): Ну, например, есть такая удобная в отдельных (хотя и не редких) случаях фича в формах спискак семерки: "ЗакладкиОтбора(..)" тык - и красота. Но - только по одному реквизиту.
54 Злопчинский
 
20.02.23
20:47
(53) не обязательно
55 Злопчинский
 
20.02.23
20:48
правильнее "по одному из множества реквизитов"
56 Злопчинский
 
20.02.23
20:55
вот в журнале документов можно вот так сделать
https://i.ibb.co/XL387wj/2023-02-20-205108.jpg

в справочнике аналогично по реквизитам, у которых стоит галка "отбор"

может пригодится для удобнйо юзабельности
57 Остап Ибрагимович
 
20.02.23
21:01
(54),(55): "по одному из множества" - правильнее не "реквизитов", а "значений реквизитов".
58 Злопчинский
 
20.02.23
21:31
(57) убедил!
59 alyuev
 
17.03.23
12:13
(0) А мы прикрепляем в кнопку-скрепку любые файлы в файловую систему, а не во внутренний доп-справочник. В папку вида Y:\AC_Folder\Photo\Договор\8401972ACC - где последняя папка - код объекта. Объект, к которому можем прикреплять - это док или эл.справочника.
60 alyuev
 
17.03.23
12:17
Вот как выглядит меню добавления вложения: https://i.ibb.co/kJVFHx6/image.png