Избавляемся от НайтиПоКоду и НайтиПоНаименованию в 1С навсегда

Создаём специализированные объекты для хранения ссылок на конкретные подразделения, организации, контрагентов и т.д., которые нужны для использования в коде. Но больше не будем искать их по коду и наименованию.
spim1c

Пікірлер: 57

  • @user-en5dq3ke7m
    @user-en5dq3ke7m2 жыл бұрын

    Опыт 1 год. В целом использовал найти по наименованию и коду. Теперь буду знать как сделать иначе. Продолжайте снимать видео для задач из "жизни".

  • @MrGvk777
    @MrGvk7772 жыл бұрын

    Очень много лишних слов - краткость сестра таланта!!!

  • @vasiliynet3425
    @vasiliynet34256 ай бұрын

    Огонь! Великолепная целая лекция по теме получилась. Спасибо!

  • @YuriyKolosov
    @YuriyKolosov2 жыл бұрын

    Спасибо за видео, но полчаса смотреть на запрос в цикле и запрос с постотбором вместо использования условий было больно )

  • @alex121121ful
    @alex121121ful15 күн бұрын

    Проведите этот час с пользой, коллеги. В ролике автор рассказал про хранение значений констант в справочнике.

  • @ONE-im6hi
    @ONE-im6hi Жыл бұрын

    топ канал, ни у кого не видел столько полезного контента, все снимают одно и то же (азы)

  • @user-iw1ie7tn6j
    @user-iw1ie7tn6j Жыл бұрын

    15 лет программирую на 1С. НайтиПоКоду, НайтиПоНаименованию, ПолучитьСсылку(guid) это все нормальные рабочие инструменты. Случаи когда это ломается единичные. Автор привел пример "..а вот через 10 лет...", так вот через 10 лет этот справочник констант разрастется до таких нееб###их размеров что уже будет сложно что-то в нем использовать (а вдруг это используется где- то еще ), каждый раз придется создавать свое поверх существующего.

  • @DimaVort

    @DimaVort

    3 ай бұрын

    Нет. Єто зло в чистом виде. Встречал конфигурации где модули тупо превращались в телефонньій справочник с именами и кодами менеджеров или товаров или контрагентов. Когда заказчик просит развернуть чистую базу для каких-то нужд, появляется космический геморрой когда механизмьі перестают работать потому что в новой базе нет каких-то данньіх на которьіе завязан код, и такие зависимости раскиданьі по всему коду конфигурации.

  • @vama9606
    @vama96062 жыл бұрын

    После возврата код не выполняется. А почему сразу элемент не сделать предопределенным?

  • @Dnsmel
    @Dnsmel2 жыл бұрын

    Согласен на счет найти по наименование, но вот найти по коду в целом, не худшая альтернатива ( Если еще коммент подписать что за элемент ) "предопределенным" и отдельному регистру. Единственное что в этой ситуации плохо с кодом, что конфигурацию уже просто так не развернуть ... не будет того самого кода.

  • @pillowanalyst
    @pillowanalyst6 ай бұрын

    😱Я тоже накосячил. Буду исправлять.

  • @InternetSerwice

    @InternetSerwice

    5 ай бұрын

    не слушай этого тупого блогера, он тебе тут нарассказывает. Вечные печатные формы🤣🤣. Умняк... их использовать небезопасно.. они могут поменяться.... че ха ха ха олень, ты это расскажи компании 1С которой приходится обновления пачками выпускать и там каждые 20 обновлений меняется половина объектов конфигурации

  • @pillowanalyst

    @pillowanalyst

    5 ай бұрын

    @@InternetSerwice1С если косячит, то Красиво. Им можно // В процедуре требуется определить единицу измерения объема с кодом по ОКЕИ 112. // Используется для пересчета упаковок в литры. // // Параметры: // ЕдиницаИзмеренияЛитр - ОпределяемыйТип.Упаковка - Единица измерения объема (литр). Процедура ЕдиницаИзмеренияЛитр(ЕдиницаИзмеренияЛитр) Экспорт Результат = Справочники.БазовыеЕдиницыИзмерения.НайтиПоКоду("112"); Если ЗначениеЗаполнено(Результат) Тогда ЕдиницаИзмеренияЛитр = Результат; КонецЕсли; КонецПроцедуры ****************************** или так КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.ПустаяСсылка(); ТекущаяСтрокаКатегорияНовостейКод = ТекущаяСтрока.КатегорияНовостей.Код; Если ТекущаяСтрокаКатегорияНовостейКод = "SubsystemRealized" Тогда КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("SubsystemNotRealized"); ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "SubsystemNotRealized" Тогда КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("SubsystemRealized"); ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "FnOptionOn" Тогда КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("FnOptionOff"); ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "FnOptionOff" Тогда КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("FnOptionOn");

  • @user-sc3ir6ud3b
    @user-sc3ir6ud3b2 ай бұрын

    Долго, муторно, не всегда применимо, надо простите риски от применения той или иной конструкции всегда иметь ввиду. Но спасибо, хорошая идея

  • @MrGvk777
    @MrGvk7772 жыл бұрын

    Жесть жестокая!!! Ежели Вы указали ЛюбаяСсылка посмотрите на план запроса получения любого элемента, даже одного в настоящей ИБ например УТ 11.4 и Вы увидите соединение со всеми таблицами ссылочных типов , а их под пол тысячи. Я Вас поздравляю!!! А я думаю, что же битовские да рарусовские конфы не фунциклируют... Для файловой базы - сойдет. А вот как будет себя вести PostgreSQL.... Пилите, Шура, пилите - золото в середине!

  • @nmivan

    @nmivan

    2 жыл бұрын

    Какого запроса план нужно посмотреть?

  • @fedorsumkin2028

    @fedorsumkin2028

    Жыл бұрын

    @@nmivan Никто не знает, каким будет план запроса, если добавить в параметр виртуальной таблицы Продажи.Обороты() фильтр 'Контрагент в (Выбрать Значение из Справочник.Константы ГДЕ Наименование="ТотКогоНельзяПередаватьПараметромЗапроса")'?

  • @MrGvk777
    @MrGvk7772 жыл бұрын

    А в варианте с Хранилищем производительность лучше, но ссылочная целостность поддерживаться не будет. Просто в этом случае предполагается, что эта ссылка используется в других местах (документах и справочниках) и как следствие ее сложно удалить. Но за тот код, что Вы привели в начале - за это в приличном обществе канделябрами... Гончаров с экзамена на спеца выгоняет как только это увидит.

  • @nmivan

    @nmivan

    2 жыл бұрын

    Именно Гончарову я сдал спеца по платформе... И по УТ.

  • @mikefrygin6615
    @mikefrygin66152 жыл бұрын

    А что будет с записями в хранилище значения, если удалить запись в регистре?

  • @nmivan

    @nmivan

    2 жыл бұрын

    Ничего страшного, если вы имеете в виде какую-нибудь ссылочную целостность. Ресурс типа "ХранилищеЗначения" будет удалён вместе с записью. Все указанные в нём ссылки продолжал жить, как жили.

  • @mikefrygin6615

    @mikefrygin6615

    2 жыл бұрын

    Благодарю за разъяснения, вопрос возник именно из за "хвостов", т.е. мне было не ясно необходимо ли перед удалением принудительно выносить запись в "ХранилищеЗначения" или она уничтожится с удалением записи в РС. Еще раз спасибо. Ваш канал, один из немногих, который не пересказывает кнопку конфигуратора F1, а дает практические рекомендации по написанию и оптимизации. Смотрю с большим интересом, вот бы звук еще чуть повыше поднять.

  • @andreim5349
    @andreim53492 жыл бұрын

    покороче бы, зачем так тянуть кота за хвост

  • @dr5731
    @dr57312 жыл бұрын

    почему нет скорости х3((

  • @user-yh9np3cv7f

    @user-yh9np3cv7f

    3 ай бұрын

    страшно слышать такое от программистов

  • @andreim5349
    @andreim53492 жыл бұрын

    ну конечно, справочник, и каждый раз не динамическое обновление. а заполнять справочник всё равно будет программист.

  • @AntonSm2011
    @AntonSm20112 жыл бұрын

    Хорошая идея использовать модуль менеджера. А я уже понаделал общих модулей.

  • @AntonSm2011

    @AntonSm2011

    2 жыл бұрын

    Хотя если надо ссылку на клиенте получить, все равно надо через серверную функцию делать. И в этом случае клиентский общий модуль вполне ок.

  • @AntonSm2011

    @AntonSm2011

    2 жыл бұрын

    А справочник с ссылкой/ссылками удобнее тем, что при удалении чего-нибудь помеченного на удаление это самое помеченное на удаление не удалится, покамест ссылка в справочнике констант торчит. А вот в хранилище значения после удаления ссылки уже не будет.

  • @AntonSm2011

    @AntonSm2011

    2 жыл бұрын

    Еще такой прикол в обычных формах и клиент-серверном режиме. В таком варианте работы не работает УстановитьПривилегированныйРежим. Я на этом накололся, потому и запомнил. Поэтому и остается только в роль добавлять права на объект.

  • @fedorsumkin2028

    @fedorsumkin2028

    Жыл бұрын

    ​@@AntonSm2011 И в параметрах по умолчанию СКД, емнип, ошибка прав доступа без спец.роли на чтение константохранилища. Запилишь "хранилище констант" в общедоступном расширении - ссылаться из других расширений не сможешь. На помощь приходит Когда требуется запомнить настройку ХранилищеОбщихНастроек.Сохранить("ИмяОбъекта", "ИмяНастроек", Значение); Чтобы прочитать настройку Значение = ХранилищеОбщихНастроек.Загрузить("ИмяОбъекта", "ИмяНастроек", Значение);

  • @SmartEnot
    @SmartEnot5 ай бұрын

    не пояснили - почему это грех?

  • @ocean1487
    @ocean14878 ай бұрын

    Через обработку найди ссылку на элемент, и находи его так через получить ссылку

  • @InternetSerwice

    @InternetSerwice

    5 ай бұрын

    🤣он сказал - тыжело найти.... блохер отладкой пользоваться не умеет - сформировать ошибку и смотришь строку кода где ошибка возникла.... вау я научил блохера

  • @zergzerg8839
    @zergzerg88392 жыл бұрын

    А почему не использовать получитьссылку и не городить все это

  • @nmivan

    @nmivan

    2 жыл бұрын

    Получить ссылку по уникальному идентификатору? И писать его в коде?

  • @ujn77

    @ujn77

    2 жыл бұрын

    @@nmivan А почему бы нет? ГУИД элемента точно менять никто не сможет, даже программист (вариант с заменой ссылок сейчас в расчет не берем). Сам совмещаю оба подхода: для ссылок, значения которых условно никогда меняться не будут - использую поиск по GUID (в правилах обмена, как вариант), если же есть вероятность что что-то изменится - свой справочник или регистр.

  • @nmivan

    @nmivan

    2 жыл бұрын

    @@ujn77 кмк, вероятность, что что-то изменится, в типовых есть всегда. Но я не настаиваю - меня бесят гвиды, потому что надо идти и смотреть, что это. А через неделю - снова идти и смотреть.

  • @DimaVort

    @DimaVort

    3 ай бұрын

    А теперь представь тебе надо развернуть чистую базу из cf. Как будешь создавать запись справочника с нужньім гуидом? Переносить из старой базьі через через хмл?

  • @user-bj6tg4vh3d
    @user-bj6tg4vh3d6 ай бұрын

    Создать один Параметр Сеанса с типом Структура и туда все запихнуть. А тут постоянно в справочник создавать новые элементы. И ПараметрыСеана доступны на клиенте, а Реквизит предопределенного нет. Также можно запихнуть в параметры сеанса таблицы значений со всеми Складами, Организациями, Подразделениями.

  • @user-bi1zh1dt4k
    @user-bi1zh1dt4k6 ай бұрын

    жесть, жесть, жесть... 1. 16 часов на что-то там исправление у франча - а у франа рыло не лопнет? 2. эти все конструкции элементарно обволакивать в Екси нашли - присвоиили Иначе - сообщить("Ошибка. Не нашли то-то с кодом-наименованием таким-то"). 99% проблем улшо. 3. есть предопределнные элементы справочника - тоже решение. 4. есть поиск по гуиду (он будет лажать для клонов баз). но для такой пустяковой хны столько времени видео потратить - экономьте трафик и делайте пометку - для младшего школьного возраста...

  • @user-km2ii6lj4k

    @user-km2ii6lj4k

    16 күн бұрын

    Это все херня, поиск по коду наше все, все это бред согласен с вами.

  • @alexalexander3252
    @alexalexander32522 ай бұрын

    Вы- графоман и не знаете как растянуть 5 минутное видео на час? Обратитсесь к Ивану Белокаменцеву, в его видеосалон. Чувак, у тебя редкий талант.

  • @jonymartynez3881
    @jonymartynez388128 күн бұрын

    Не досмотрел. Много болтовни и мало информации.

  • @NicNicov-yh9ux
    @NicNicov-yh9ux2 жыл бұрын

    Сколько воды. Противно слушать

  • @nmivan

    @nmivan

    2 жыл бұрын

    но какая-то злая сила заставляет...

  • @zm987654321
    @zm9876543213 ай бұрын

    потом придет программер спустя 10 лет и так же будет - откуда же это все заполняется😅😅 что-то мне подсаазваает, искать он будет в разы дольше 😅😅

Келесі