|   |   | 
| 
 | 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     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |