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

  Рет қаралды 8,246

Видеосалон Ивана Белокаменцева

Видеосалон Ивана Белокаменцева

Күн бұрын

Пікірлер: 66
@СергейСергеенко-п5ж
@СергейСергеенко-п5ж 2 жыл бұрын
Опыт 1 год. В целом использовал найти по наименованию и коду. Теперь буду знать как сделать иначе. Продолжайте снимать видео для задач из "жизни".
@basssmirnoff2442
@basssmirnoff2442 Ай бұрын
Спасибо. Это интересный взгляд на поставленную проблему.
@vasiliynet3425
@vasiliynet3425 Жыл бұрын
Огонь! Великолепная целая лекция по теме получилась. Спасибо!
@MrGvk777
@MrGvk777 2 жыл бұрын
Очень много лишних слов - краткость сестра таланта!!!
@andreywonttell4016
@andreywonttell4016 4 ай бұрын
+1. ИМХО, можно было вообще шортс на 1-1.5 минут запилить. Люди бы спасибо сказали.
@ВладиславШишакин
@ВладиславШишакин 2 ай бұрын
Почти везде есть подобное использоуется. В одной организации из регистра сведений загоняли параметры сеанса, а оттуда уже считывали
@АлексейНеизвестный-ь6р
@АлексейНеизвестный-ь6р Жыл бұрын
15 лет программирую на 1С. НайтиПоКоду, НайтиПоНаименованию, ПолучитьСсылку(guid) это все нормальные рабочие инструменты. Случаи когда это ломается единичные. Автор привел пример "..а вот через 10 лет...", так вот через 10 лет этот справочник констант разрастется до таких нееб###их размеров что уже будет сложно что-то в нем использовать (а вдруг это используется где- то еще ), каждый раз придется создавать свое поверх существующего.
@DimaVort
@DimaVort 8 ай бұрын
Нет. Єто зло в чистом виде. Встречал конфигурации где модули тупо превращались в телефонньій справочник с именами и кодами менеджеров или товаров или контрагентов. Когда заказчик просит развернуть чистую базу для каких-то нужд, появляется космический геморрой когда механизмьі перестают работать потому что в новой базе нет каких-то данньіх на которьіе завязан код, и такие зависимости раскиданьі по всему коду конфигурации.
@YuriyKolosov
@YuriyKolosov 2 жыл бұрын
Спасибо за видео, но полчаса смотреть на запрос в цикле и запрос с постотбором вместо использования условий было больно )
@ONE-im6hi
@ONE-im6hi 2 жыл бұрын
топ канал, ни у кого не видел столько полезного контента, все снимают одно и то же (азы)
@alex121121ful
@alex121121ful 6 ай бұрын
Проведите этот час с пользой, коллеги. В ролике автор рассказал про хранение значений констант в справочнике.
@MrGvk777
@MrGvk777 2 жыл бұрын
Жесть жестокая!!! Ежели Вы указали ЛюбаяСсылка посмотрите на план запроса получения любого элемента, даже одного в настоящей ИБ например УТ 11.4 и Вы увидите соединение со всеми таблицами ссылочных типов , а их под пол тысячи. Я Вас поздравляю!!! А я думаю, что же битовские да рарусовские конфы не фунциклируют... Для файловой базы - сойдет. А вот как будет себя вести PostgreSQL.... Пилите, Шура, пилите - золото в середине!
@nmivan
@nmivan 2 жыл бұрын
Какого запроса план нужно посмотреть?
@fedorsumkin2028
@fedorsumkin2028 2 жыл бұрын
@@nmivan Никто не знает, каким будет план запроса, если добавить в параметр виртуальной таблицы Продажи.Обороты() фильтр 'Контрагент в (Выбрать Значение из Справочник.Константы ГДЕ Наименование="ТотКогоНельзяПередаватьПараметромЗапроса")'?
@ivperivm10
@ivperivm10 2 ай бұрын
Не нужно искать по значению константы, и не будет соединения со всеми таблицами
@Dnsmel
@Dnsmel 2 жыл бұрын
Согласен на счет найти по наименование, но вот найти по коду в целом, не худшая альтернатива ( Если еще коммент подписать что за элемент ) "предопределенным" и отдельному регистру. Единственное что в этой ситуации плохо с кодом, что конфигурацию уже просто так не развернуть ... не будет того самого кода.
@andreim5349
@andreim5349 3 ай бұрын
В справочнике с константами тоже будет пусто, и что? Если обрабатывать использование поиска (что по коду что по наименованию), как минимум выводить сообщение о том, что такое не найдено, то это вполне себе приличная история. Справочник с константами (вернее более развесистый аналог - пвх с табличными частями) использую, но хлама там накопилось на каждый случай неимоверное количество.
@йошкаматрешка
@йошкаматрешка 7 ай бұрын
Долго, муторно, не всегда применимо, надо простите риски от применения той или иной конструкции всегда иметь ввиду. Но спасибо, хорошая идея
@AntonSm2011
@AntonSm2011 2 жыл бұрын
Хорошая идея использовать модуль менеджера. А я уже понаделал общих модулей.
@AntonSm2011
@AntonSm2011 2 жыл бұрын
Хотя если надо ссылку на клиенте получить, все равно надо через серверную функцию делать. И в этом случае клиентский общий модуль вполне ок.
@AntonSm2011
@AntonSm2011 2 жыл бұрын
А справочник с ссылкой/ссылками удобнее тем, что при удалении чего-нибудь помеченного на удаление это самое помеченное на удаление не удалится, покамест ссылка в справочнике констант торчит. А вот в хранилище значения после удаления ссылки уже не будет.
@AntonSm2011
@AntonSm2011 2 жыл бұрын
Еще такой прикол в обычных формах и клиент-серверном режиме. В таком варианте работы не работает УстановитьПривилегированныйРежим. Я на этом накололся, потому и запомнил. Поэтому и остается только в роль добавлять права на объект.
@fedorsumkin2028
@fedorsumkin2028 2 жыл бұрын
​@@AntonSm2011 И в параметрах по умолчанию СКД, емнип, ошибка прав доступа без спец.роли на чтение константохранилища. Запилишь "хранилище констант" в общедоступном расширении - ссылаться из других расширений не сможешь. На помощь приходит Когда требуется запомнить настройку ХранилищеОбщихНастроек.Сохранить("ИмяОбъекта", "ИмяНастроек", Значение); Чтобы прочитать настройку Значение = ХранилищеОбщихНастроек.Загрузить("ИмяОбъекта", "ИмяНастроек", Значение);
@MrGvk777
@MrGvk777 2 жыл бұрын
А в варианте с Хранилищем производительность лучше, но ссылочная целостность поддерживаться не будет. Просто в этом случае предполагается, что эта ссылка используется в других местах (документах и справочниках) и как следствие ее сложно удалить. Но за тот код, что Вы привели в начале - за это в приличном обществе канделябрами... Гончаров с экзамена на спеца выгоняет как только это увидит.
@nmivan
@nmivan 2 жыл бұрын
Именно Гончарову я сдал спеца по платформе... И по УТ.
@ocean1487
@ocean1487 Жыл бұрын
Через обработку найди ссылку на элемент, и находи его так через получить ссылку
@InternetSerwice
@InternetSerwice 10 ай бұрын
🤣он сказал - тыжело найти.... блохер отладкой пользоваться не умеет - сформировать ошибку и смотришь строку кода где ошибка возникла.... вау я научил блохера
@andreywonttell4016
@andreywonttell4016 4 ай бұрын
+1. Откровенно, клиент может не понять, если у вас задача сделать внешнюю ПФ, а вы ему в код/расширение справочников напихали.
@ivperivm10
@ivperivm10 2 ай бұрын
Почему не использовать константы? В 1С давно отказались от хранения множества констант в одной таблице
@andreim5349
@andreim5349 2 жыл бұрын
покороче бы, зачем так тянуть кота за хвост
@dr5731
@dr5731 2 жыл бұрын
почему нет скорости х3((
@ПетрПетров-с7ь
@ПетрПетров-с7ь 9 ай бұрын
страшно слышать такое от программистов
@andreim5349
@andreim5349 2 жыл бұрын
ну конечно, справочник, и каждый раз не динамическое обновление. а заполнять справочник всё равно будет программист.
@vama9606
@vama9606 2 жыл бұрын
После возврата код не выполняется. А почему сразу элемент не сделать предопределенным?
@mikefrygin6615
@mikefrygin6615 2 жыл бұрын
А что будет с записями в хранилище значения, если удалить запись в регистре?
@nmivan
@nmivan 2 жыл бұрын
Ничего страшного, если вы имеете в виде какую-нибудь ссылочную целостность. Ресурс типа "ХранилищеЗначения" будет удалён вместе с записью. Все указанные в нём ссылки продолжал жить, как жили.
@mikefrygin6615
@mikefrygin6615 2 жыл бұрын
Благодарю за разъяснения, вопрос возник именно из за "хвостов", т.е. мне было не ясно необходимо ли перед удалением принудительно выносить запись в "ХранилищеЗначения" или она уничтожится с удалением записи в РС. Еще раз спасибо. Ваш канал, один из немногих, который не пересказывает кнопку конфигуратора F1, а дает практические рекомендации по написанию и оптимизации. Смотрю с большим интересом, вот бы звук еще чуть повыше поднять.
@ФедорШихирев-ы3к
@ФедорШихирев-ы3к Жыл бұрын
Создать один Параметр Сеанса с типом Структура и туда все запихнуть. А тут постоянно в справочник создавать новые элементы. И ПараметрыСеана доступны на клиенте, а Реквизит предопределенного нет. Также можно запихнуть в параметры сеанса таблицы значений со всеми Складами, Организациями, Подразделениями.
@SmartEnot
@SmartEnot 11 ай бұрын
не пояснили - почему это грех?
@alexalexander3252
@alexalexander3252 7 ай бұрын
Вы- графоман и не знаете как растянуть 5 минутное видео на час? Обратитсесь к Ивану Белокаменцеву, в его видеосалон. Чувак, у тебя редкий талант.
@ІмяПрізвище-н4ю
@ІмяПрізвище-н4ю Жыл бұрын
жесть, жесть, жесть... 1. 16 часов на что-то там исправление у франча - а у франа рыло не лопнет? 2. эти все конструкции элементарно обволакивать в Екси нашли - присвоиили Иначе - сообщить("Ошибка. Не нашли то-то с кодом-наименованием таким-то"). 99% проблем улшо. 3. есть предопределнные элементы справочника - тоже решение. 4. есть поиск по гуиду (он будет лажать для клонов баз). но для такой пустяковой хны столько времени видео потратить - экономьте трафик и делайте пометку - для младшего школьного возраста...
@ИльяБолдырев-т7в
@ИльяБолдырев-т7в 6 ай бұрын
Это все херня, поиск по коду наше все, все это бред согласен с вами.
@zergzerg8839
@zergzerg8839 2 жыл бұрын
А почему не использовать получитьссылку и не городить все это
@nmivan
@nmivan 2 жыл бұрын
Получить ссылку по уникальному идентификатору? И писать его в коде?
@ujn77
@ujn77 2 жыл бұрын
@@nmivan А почему бы нет? ГУИД элемента точно менять никто не сможет, даже программист (вариант с заменой ссылок сейчас в расчет не берем). Сам совмещаю оба подхода: для ссылок, значения которых условно никогда меняться не будут - использую поиск по GUID (в правилах обмена, как вариант), если же есть вероятность что что-то изменится - свой справочник или регистр.
@nmivan
@nmivan 2 жыл бұрын
@@ujn77 кмк, вероятность, что что-то изменится, в типовых есть всегда. Но я не настаиваю - меня бесят гвиды, потому что надо идти и смотреть, что это. А через неделю - снова идти и смотреть.
@DimaVort
@DimaVort 8 ай бұрын
А теперь представь тебе надо развернуть чистую базу из cf. Как будешь создавать запись справочника с нужньім гуидом? Переносить из старой базьі через через хмл?
@andreywonttell4016
@andreywonttell4016 4 ай бұрын
@@DimaVort Если конфа та-же перегрузка при помощи XML. Если конфа другая, то в любом случае этот справочник делать заново, заново заполнять и т.д. А если конфа другая, то половина этих костылей и не нужна будет. А та половина, которая нужна, все равно адаптируется под новую конфу. Слабый аргумент, короче.
@jonymartynez3881
@jonymartynez3881 6 ай бұрын
Не досмотрел. Много болтовни и мало информации.
@NicNicov-yh9ux
@NicNicov-yh9ux 2 жыл бұрын
Сколько воды. Противно слушать
@nmivan
@nmivan 2 жыл бұрын
но какая-то злая сила заставляет...
@zm987654321
@zm987654321 8 ай бұрын
потом придет программер спустя 10 лет и так же будет - откуда же это все заполняется😅😅 что-то мне подсаазваает, искать он будет в разы дольше 😅😅
@pillowanalyst
@pillowanalyst 11 ай бұрын
😱Я тоже накосячил. Буду исправлять.
@InternetSerwice
@InternetSerwice 10 ай бұрын
не слушай этого тупого блогера, он тебе тут нарассказывает. Вечные печатные формы🤣🤣. Умняк... их использовать небезопасно.. они могут поменяться.... че ха ха ха олень, ты это расскажи компании 1С которой приходится обновления пачками выпускать и там каждые 20 обновлений меняется половина объектов конфигурации
@pillowanalyst
@pillowanalyst 10 ай бұрын
@@InternetSerwice1С если косячит, то Красиво. Им можно // В процедуре требуется определить единицу измерения объема с кодом по ОКЕИ 112. // Используется для пересчета упаковок в литры. // // Параметры: // ЕдиницаИзмеренияЛитр - ОпределяемыйТип.Упаковка - Единица измерения объема (литр). Процедура ЕдиницаИзмеренияЛитр(ЕдиницаИзмеренияЛитр) Экспорт Результат = Справочники.БазовыеЕдиницыИзмерения.НайтиПоКоду("112"); Если ЗначениеЗаполнено(Результат) Тогда ЕдиницаИзмеренияЛитр = Результат; КонецЕсли; КонецПроцедуры ****************************** или так КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.ПустаяСсылка(); ТекущаяСтрокаКатегорияНовостейКод = ТекущаяСтрока.КатегорияНовостей.Код; Если ТекущаяСтрокаКатегорияНовостейКод = "SubsystemRealized" Тогда КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("SubsystemNotRealized"); ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "SubsystemNotRealized" Тогда КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("SubsystemRealized"); ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "FnOptionOn" Тогда КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("FnOptionOff"); ИначеЕсли ТекущаяСтрокаКатегорияНовостейКод = "FnOptionOff" Тогда КатегорияАнтагонист = ПланыВидовХарактеристик.КатегорииНовостей.НайтиПоКоду("FnOptionOn");
Вялая свёртка версий объектов в 1С УПП
28:36
Видеосалон Ивана Белокаменцева
Рет қаралды 686
DevCon.3 17. Как использовать новые возможности 1С:Предприятие 8.3.23
1:00:38
Сообщество 1С-разработчиков
Рет қаралды 5 М.
Try Not To Laugh 😅 the Best of BoxtoxTv 👌
00:18
boxtoxtv
Рет қаралды 7 МЛН
Mia Boyka х Карен Акопян | ЧТО БЫЛО ДАЛЬШЕ?
1:21:14
Что было дальше?
Рет қаралды 11 МЛН
Инструменты программиста 1С
15:23
IRONSKILLS - Курсы по 1С
Рет қаралды 32 М.
Моя система развития сотрудников
50:11
Видеосалон Ивана Белокаменцева
Рет қаралды 732
Помогаторы разработчика 1С
28:59
Виталий Онянов
Рет қаралды 26 М.
30 жёлтых дней - 5
56:36
Видеосалон Ивана Белокаменцева
Рет қаралды 692
Как Linux рисует окна?
48:46
Студенческие клубы разработки КНиИТ СГУ
Рет қаралды 55 М.