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

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

Комментарии • 57

  • @user-en5dq3ke7m
    @user-en5dq3ke7m 2 года назад +9

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

  • @alex121121ful
    @alex121121ful Месяц назад

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

  • @vasiliynet3425
    @vasiliynet3425 6 месяцев назад

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

  • @YuriyKolosov
    @YuriyKolosov 2 года назад +4

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

  • @MrGvk777
    @MrGvk777 2 года назад +19

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

  • @ONE-im6hi
    @ONE-im6hi Год назад +1

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

  • @user-iw1ie7tn6j
    @user-iw1ie7tn6j Год назад +11

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

    • @DimaVort
      @DimaVort 3 месяца назад

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

  • @vama9606
    @vama9606 2 года назад

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

  • @MrGvk777
    @MrGvk777 2 года назад +4

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

    • @nmivan
      @nmivan  2 года назад

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

    • @fedorsumkin2028
      @fedorsumkin2028 2 года назад +1

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

  • @Dnsmel
    @Dnsmel 2 года назад +2

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

  • @mikefrygin6615
    @mikefrygin6615 2 года назад +1

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

    • @nmivan
      @nmivan  2 года назад +1

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

    • @mikefrygin6615
      @mikefrygin6615 2 года назад +1

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

  • @MrGvk777
    @MrGvk777 2 года назад

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

    • @nmivan
      @nmivan  2 года назад

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

  • @user-sc3ir6ud3b
    @user-sc3ir6ud3b 2 месяца назад

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

  • @dr5731
    @dr5731 2 года назад +3

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

    • @user-yh9np3cv7f
      @user-yh9np3cv7f 4 месяца назад

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

  • @pillowanalyst
    @pillowanalyst 6 месяцев назад

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

    • @InternetSerwice
      @InternetSerwice 5 месяцев назад

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

    • @pillowanalyst
      @pillowanalyst 5 месяцев назад

      @@InternetSerwice1С если косячит, то Красиво. Им можно
      // В процедуре требуется определить единицу измерения объема с кодом по ОКЕИ 112.
      // Используется для пересчета упаковок в литры.
      //
      // Параметры:
      // ЕдиницаИзмеренияЛитр - ОпределяемыйТип.Упаковка - Единица измерения объема (литр).
      Процедура ЕдиницаИзмеренияЛитр(ЕдиницаИзмеренияЛитр) Экспорт

      Результат = Справочники.БазовыеЕдиницыИзмерения.НайтиПоКоду("112");
      Если ЗначениеЗаполнено(Результат) Тогда
      ЕдиницаИзмеренияЛитр = Результат;
      КонецЕсли;

      КонецПроцедуры
      ****************************** или так
      КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.ПустаяСсылка();
      ТекущаяСтрокаКатегорияНовостейКод = ТекущаяСтрока.КатегорияНовостей.Код;
      Если ТекущаяСтрокаКатегорияНовостейКод = "SubsystemRealized" Тогда
      КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("SubsystemNotRealized");
      ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "SubsystemNotRealized" Тогда
      КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("SubsystemRealized");
      ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "FnOptionOn" Тогда
      КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("FnOptionOff");
      ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "FnOptionOff" Тогда
      КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("FnOptionOn");

  • @SmartEnot
    @SmartEnot 6 месяцев назад

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

  • @andreim5349
    @andreim5349 2 года назад +1

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

  • @zergzerg8839
    @zergzerg8839 2 года назад +1

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

    • @nmivan
      @nmivan  2 года назад +1

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

    • @ujn77
      @ujn77 2 года назад +1

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

    • @nmivan
      @nmivan  2 года назад

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

    • @DimaVort
      @DimaVort 3 месяца назад

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

  • @user-bj6tg4vh3d
    @user-bj6tg4vh3d 6 месяцев назад +1

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

  • @andreim5349
    @andreim5349 2 года назад +2

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

  • @ocean1487
    @ocean1487 9 месяцев назад

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

    • @InternetSerwice
      @InternetSerwice 5 месяцев назад

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

  • @AntonSm2011
    @AntonSm2011 2 года назад +1

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

    • @AntonSm2011
      @AntonSm2011 2 года назад

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

    • @AntonSm2011
      @AntonSm2011 2 года назад

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

    • @AntonSm2011
      @AntonSm2011 2 года назад +1

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

    • @fedorsumkin2028
      @fedorsumkin2028 2 года назад

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

  • @user-bi1zh1dt4k
    @user-bi1zh1dt4k 6 месяцев назад +1

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

    • @user-km2ii6lj4k
      @user-km2ii6lj4k Месяц назад

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

  • @alexalexander3252
    @alexalexander3252 2 месяца назад

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

  • @NicNicov-yh9ux
    @NicNicov-yh9ux 2 года назад +1

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

    • @nmivan
      @nmivan  2 года назад +1

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

  • @jonymartynez3881
    @jonymartynez3881 Месяц назад

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

  • @zm987654321
    @zm987654321 3 месяца назад

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