Отличную тему поднял "Косяки SF"! Сам на своем веку повидал кучу багов, которые невозможно объяснить с разумной точки зрения SF.
Из последних (доказательства не сохранились, буду объяснять на пальцах): 1. Выкачал в ant метаданные с одного орга чтобы залить на другой. Многие объекты пришли без тега type и конечно орг приемник стал ругаться. Пришлось проставлять вручную всякие data, text и так далее. Глюк? Точно не скажу. 2. Вообще интересный баг заметили мои коллеги на одном проде. В lookup поле записей хранились ID записей которых не существует на орге. Любое обращение к такому полю (для получения связанного объекта) валило internal error. Не помню чем история закончилась, но было не очень весело доказывать заказчику что мудаки в SF а не наша компания.
<tabVisibility> - выкачивается только для стандартныз профилей. Для кастомных выкачивается только значение DefaultOn
<userPermissions> - таже самая проблема, выкачивается только если <enabled>true</enabled>
<classAccesses>,<pageAccesses> - тут обратная ситуация, выкачивается вся инфа полностью, что не очень удобно если на орге приемнике нет каких-то классов или страниц.
PermissionSet - invalid parameter value, сам пока не разобрался. Скорее всего присутствует какая-то избыточная информация.
Работая с SalesForce заметил баг с бредскрамбами ("хлебные крошки"), суть в том, что он отрабатывает не корректно на некоторых страницах, т.е. возвращает не туда, куда должен.
- Не корректно отрабатывает порой консоль, особенно при работе с тестами, бывает что неверно отображает покрытие, а бывает что и количество строк кода не верное выдает, часто приходится чистить историю запусков тестов, но и это не панацея, когда поможет, а когда и нет...
- Не корректно отрабатывает чекбокс "Select All". К примеру когда выбрал все айтемы при помощи этого чекбокса, а потом из списка какой нить убрал, то чекнутый чекбокс показывает что все айтемы веделены, для наглядности можно к примеру глянуть страницу, где выбирается какой тестовый метод запустить, там поп-ап, так же данный бажок встречается и в других местах
Я для получения покрытия кода из орга писал в свое время тулзу, которая доставала данные через Tooling API. Тогда использовал python. Получилось очень классно. Параллельно один из разработчиков сделал тоже самое на Java.
Зашел не прод задеплоить changeSet c одной маленькой VF страничкой. Деплой показал что ОГРОМНОЕ количество ошибок на проде. Это показалось очень странным, потому что коллега деплоил большой changeSet буквально за день до меня и проблем никаких не было, как и изменений на проде.
По ошибкам посмотрели что все тесты валятся на одной строчке:
Profile profile = [select id, Name from profile where name='System Administrator'];
Эта самая безобидная строчка которая может быть в тестах, весь System Administrator же есть всегда.
А вот нет оказывается! Я выполнял деплой под русских пользователем, а для него name уже 'Системный Администратор'. Ну, думаю, ничего страшного, сейчас поменяю на developerName как, например, в RecordTypes делается в таких случаях. А вот и облом - нет такого поля в Profile объекте и вроде нет никаких похожих.
Как бы это не проблема - поменял на инглийский язык и работай дальше. Но действительно, получается прямо ущемление прав не англоязычных пользователей прямо.
Если мне надо знать кто в данные момент работает со страницей, админ или не админ, то получается я уже не могу опираться на Name профиля. А на что тогда могу? На Id? Хардкод? Получается 2 варианта - либо на ровне с Name = "System Administrator" надо проверять Name = "Системный Администратор" ? Или заносить Id системного администратора в Custom Settings и доставать уже оттуда (не забывая при этом на каждом орге эту переменную там создать).
apex:iframe - если не использовать параметр height, то салесфорс автоматом выставляет 600px. А это иногда бывает очень лишним, особенно в FF
apex:variable - <apex:variable var="c" value="{!$CurrentPage.parameters.height}" />. Если использовать такую конструкцию, то потом при попытке сохранения <apex:iframe src="{!$Page.devConsole}?id={!OrgSrc__c.Id}&WinH={!c}" height="100%"/> получаем ошибку от салесфорс, что она не может сохранить эту страницу.
при попытке сохранить onclick="selectType('{!HTMLENCODE(Item.lastModifiedDate)}',this,5)" - получаем Compilation error: Incorrect argument type for function 'HTMLENCODE()'.
а вот onclick="selectType('{!Item.lastModifiedDate}',this,5)" сохраняется без проблем
Сегодня столкнулся со странным косяком. В эклипс делаю изменения в коде и сохраняю страницу или класс. эклипс молча сохраняет (ошибок нет), показывает что изменения сохранены, а на орге изменения не появляются. Остается старый вариант исходного кода. ЖЕСТЬ! Я уже мозг сломал. Приходится сравнивать исходники из Эклипс и в браузере чисто визуально. Вот это реально Salesforce штормит.
Сегодня столкнулся со странным косяком. В эклипс делаю изменения в коде и сохраняю страницу или класс. эклипс молча сохраняет (ошибок нет), показывает что изменения сохранены, а на орге изменения не появляются. Остается старый вариант исходного кода. ЖЕСТЬ! Я уже мозг сломал. Приходится сравнивать исходники из Эклипс и в браузере чисто визуально. Вот это реально Salesforce штормит.
Да, конечно понимаю Но не могу сделать над собой усилие Свежи еще в памяти мытарства с самим Sublime - не воспринимает мозг Keyboard Shortcuts, а это основная фича данного редактора.
Да, конечно понимаю Но не могу сделать над собой усилие Свежи еще в памяти мытарства с самим Sublime - не воспринимает мозг Keyboard Shortcuts, а это основная фича данного редактора.
не знаю "косяк" ли это... коллеги заметили, что если в одном сендбоксе сделать на объекте кнопку типа УРЛ с адресом: apex/myPage?id={!something} все работает норм.
но если перенести эту кнопку в фул-копи сендбокс, то открывается окно с адресом: .../servlet/apex/myPage?id=234324324 с ошибкой, что мол нет такого УРЛ
и пришлось дописать слэш: /apex/myPage?id={!something} тогда все норм
Не смысл в переназначении, а смысл в их наличии. Я люблю когда все видеть и получать доступ к нужному функционалу в 2-3 клика мышки. А запоминать какая клавиша за что отвечает не очень люблю
и пришлось дописать слэш: /apex/myPage?id={!something}
Всегда пиши слеш первым в урлах. Это признак того что отсчет будет вестись от корня сайта! Если слеша не будет будет много проблем. В SF это проблема можно сказать косвенная, а при разработки нормального сайта очень актуальная, да и вообще не это проблема а догма.
Глючный Salesforce Как можно на простой странице логина иметь 4 ошибки? Я понимаю что это не критично, и эти ресурсы не нужны для этой страницы, но млин, можно же их и подгружать? Или я чего-то не понимаю?
БЛЯ!!!! Сегодня Eclipse показал себя во всей красе!!! Не знаю какого х..ра но у меня сохраняются изменения поверх чужих без каких либо предупреждений и ошибок. Сначала пару раз обратили внимание что пропадают изменения (два человека могут работают с одними и теми же классами) других программистов. А сейчас провели эксперимент. Я внес изменения, коллега (сидит на MavensMate) попробовал сохранить, получил предупреждение, что есть более новая версия и ему нужно было рефрешнуть класс, чтобы сохранить свои изменения. После этого уже я, без обновления класса, сохраняю и "О, бля, чудо" сохранило ни о чем никого не предупреждая! Все изменения что делал коллега ушли лесом. КРУТО, как такое вообще может быть? И интересно сколько кода похерилось таким образом? ps. извините за ненормативную лексику, но других слов просто нет.
БЛЯ!!!! Сегодня Eclipse показал себя во всей красе!!! Не знаю какого х..ра но у меня сохраняются изменения поверх чужих без каких либо предупреждений и ошибок. Сначала пару раз обратили внимание что пропадают изменения (два человека могут работают с одними и теми же классами) других программистов. А сейчас провели эксперимент. Я внес изменения, коллега (сидит на MavensMate) попробовал сохранить, получил предупреждение, что есть более новая версия и ему нужно было рефрешнуть класс, чтобы сохранить свои изменения. После этого уже я, без обновления класса, сохраняю и "О, бля, чудо" сохранило ни о чем никого не предупреждая! Все изменения что делал коллега ушли лесом. КРУТО, как такое вообще может быть? И интересно сколько кода похерилось таким образом? ps. извините за ненормативную лексику, но других слов просто нет.
Я тебе что вчера говорил....надо было задуматься :(
Глючный Salesforce Как можно на простой странице логина иметь 4 ошибки? Я понимаю что это не критично, и эти ресурсы не нужны для этой страницы, но млин, можно же их и подгружать? Или я чего-то не понимаю?
Я тебе что вчера говорил....надо было задуматься :(
ВСЁ!!! В строю MavensMate прибыло!!! Eclipse остается в анналах истории. Я теперь на MavensMate. Установка конечно посложнее чем у Force.com IDE, но это нормальный процесс для Sumlime Text. Был у меня опыт с этим редактором давно, когда изучал его. Да, там надо установить Package Control. А для самого MM нужен еще Python 2.7 версии и указать путь к Sublime Home Folder (почему-то определил сам неправильно). И в итоге профит. Все работает :)) Сразу в ход пустил быстрый поиск по проекту - ctrl+P и вводим имя - радость неописуемая :))) Это моя любимая фича в Intellij Idea (только там double-Shift). Жаль нет навигации по коду по нажатию на Ctrl + клик по имени класса (например открыть контроллер из страницы.) или переход на метод в том же классе. Или может он есть, только я не нашел? В общем пока впечатления только положительные, будем надеяться что так и будет дальше
Я тебе что вчера говорил....надо было задуматься :(
ВСЁ!!! В строю MavensMate прибыло!!! Eclipse остается в анналах истории. Я теперь на MavensMate. Установка конечно посложнее чем у Force.com IDE, но это нормальный процесс для Sumlime Text. Был у меня опыт с этим редактором давно, когда изучал его. Да, там надо установить Package Control. А для самого MM нужен еще Python 2.7 версии и указать путь к Sublime Home Folder (почему-то определил сам неправильно). И в итоге профит. Все работает :)) Сразу в ход пустил быстрый поиск по проекту - ctrl+P и вводим имя - радость неописуемая :))) Это моя любимая фича в Intellij Idea (только там double-Shift). Жаль нет навигации по коду по нажатию на Ctrl + клик по имени класса (например открыть контроллер из страницы.) или переход на метод в том же классе. Или может он есть, только я не нашел? В общем пока впечатления только положительные, будем надеяться что так и будет дальше :)
Я тоже уже пару дней как перешёл. Впечатления тоже строго положительные. Главная фишка что работает все очень быстро.
Тащусь от minimap - ориентироваться по коду однозначно проще. Сразу можно перейти в нужный участок большого класса просто кликнув по нему в minimap.
Опять же повторюсь не хватает навигации по методу ctrl + клик по названию метода, чтобы перейти к этому методу, или переменной, чтобы перейти к ее объявлению.
Столкнулся с таким багом. У меня была задача связанная с расшариванием Contacts. По дефолту их OWD привязано к Account, отвязываем и ставим отдельное правило - Private - кнопки расшарить нет. Что только ни делал - другие записи юзер не видит а шаринга на свои нет. Оказалось кнопка есть только если контакт привязать к аккаунту , тогда сразу появляется , если удалить привязку то снова пропадает. Если делать в коде то всё работает нормально, можно шарить и без аккаунтовые, но все равно это бред, получается настройка есть а сэйлсфорс всё равно работает по дефолту.
<script> function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); html = html.replace(/<b>/g,"<b>").replace(/<\/b>/g,"</b>"); console.log(html); jQuery(this).html(html); }); toggleButtons(true); } </script>
реально на странице в браузере видим
<script> function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); html = html.replace(/<b>/g,"<b>").replace(/<\/b>/g,"</b>"); jQuery(this).html(html); }); toggleButtons(true); } </script>
решение
<script> function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); var startTag = '&' + 'l' + 't;' +'b' +'&' + 'g' + 't;'; var endTag = '&' + 'l' + 't;\/' +'b' +'&' + 'g' + 't;'; var re = new RegExp(startTag,"g"); var re1= new RegExp(endTag,"g"); html = html.replace(re,"<b>").replace(re1,"</b>"); jQuery(this).html(html); }); toggleButtons(true); } </script>
<script> function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); html = html.replace(/<b>/g,"<b>").replace(/<\/b>/g,"</b>"); console.log(html); jQuery(this).html(html); }); toggleButtons(true); } </script>
реально на странице в браузере видим
<script> function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); html = html.replace(/<b>/g,"<b>").replace(/<\/b>/g,"</b>"); jQuery(this).html(html); }); toggleButtons(true); } </script>
решение
<script> function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); var startTag = '&' + 'l' + 't;' +'b' +'&' + 'g' + 't;'; var endTag = '&' + 'l' + 't;\/' +'b' +'&' + 'g' + 't;'; var re = new RegExp(startTag,"g"); var re1= new RegExp(endTag,"g"); html = html.replace(re,"<b>").replace(re1,"</b>"); jQuery(this).html(html); }); toggleButtons(true); } </script>
function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); html = $("<div/>").html(html ).text();!!!! console.log(html); jQuery(this).html(html); }); toggleButtons(true); }
function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); html = $("<div/>").html(html ).text();!!!! console.log(html); jQuery(this).html(html); }); toggleButtons(true); }
не. это только по твоему. А мне именно нужно было заменить <b>.*?</b> :)
function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); html = $("<div/>").html(html ).text();!!!! console.log(html); jQuery(this).html(html); }); toggleButtons(true); }
не. это только по твоему. А мне именно нужно было заменить <b>.*?</b> :)
function updateResult() { jQuery('ul.li > li').each(function(){ var html = jQuery(this).html(); html = $("<div/>").html(html ).text();!!!! console.log(html); jQuery(this).html(html); }); toggleButtons(true); }
не. это только по твоему. А мне именно нужно было заменить <b>.*?</b> :)
у вас есть текстовый файл размером скажем 0.5 Мега.
file.split('\n');
И вот эта операция возвращает нам System.LimitException: Regex too complicated
Я помню в далекие 90-е, мой древненький компьютер легко переваривал файлы рзмером в 10 Мега. Понятно что и эту проблему можно решить. Просто надоело уже это все решать.
Я бы советовал всем свои баги постить в качестве кейсов partner community (partner portal). И отчитываться здесь по статусу.
Иначе это просто жалобы на жизнь без какой либо попытки донести ее до тех поддержки и как-то решить.
Вот например, я нашел, что в Environment Hub нельзя создать Group Edition орг. Записал видео с багом, залил на youtube.com и прислал им линк вместе с описанием проблемы. Проблему они признали и внесли в список known issues - https://success.salesforce.com/issues_view?id=a1p300000008Xd2
Я бы советовал всем свои баги постить в качестве кейсов partner community (partner portal). И отчитываться здесь по статусу.
Иначе это просто жалобы на жизнь без какой либо попытки донести ее до тех поддержки и как-то решить.
Вот например, я нашел, что в Environment Hub нельзя создать Group Edition орг. Записал видео с багом, залил на youtube.com и прислал им линк вместе с описанием проблемы. Проблему они признали и внесли в список known issues - https://success.salesforce.com/issues_view?id=a1p300000008Xd2
Судя по количеству багов мне придется открывать свой канал на ютубе.
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU . Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.
Проблеме уже почти неделя. Да и вообще куча проблем на cs* инстансах последнее время. Словил наверно 5-6 Internal Server Error за неделю.
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.
Проблеме уже почти неделя. Да и вообще куча проблем на cs* инстансах последнее время. Словил наверно 5-6 Internal Server Error за неделю.
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.
Проблеме уже почти неделя. Да и вообще куча проблем на cs* инстансах последнее время. Словил наверно 5-6 Internal Server Error за неделю.
Ну покрытие это давняя проблема. Где-то пооцентов на 12 врет.
Это еще с того времени, когда они выпилили старый UI для запуска тестов + убрали подсветку и покрытие по классам. Просто не всегда просто это доказать менеджерам.
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU . Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.
Большое спасибо! хорошо, что вчера это прочел, иначе сегодня бы был в непонятках.
Ну покрытие это давняя проблема. Где-то пооцентов на 12 врет.
Это еще с того времени, когда они выпилили старый UI для запуска тестов + убрали подсветку и покрытие по классам. Просто не всегда просто это доказать менеджерам.
Сегодня столкнулся с очень интересной проблемой Salesforce, а точнее Tooling API.
В общем если сохранять определенный код через Tooling API (использует MavensMate и Developer Console) - то получаем ошибку Type is not visible: custometype Если сохраняет через браузер или Metadata API (Migration tools) код сохраняется отлично.
теперь немного подробностей. Погуглил и оказалось что я не одинок. Вот даже идея есть в IdeaExchange https://success.salesforce.com/ideaView?id=08730000000l8a5AAA Тут ситуация похожая на мою, только у меня apex class использовался в качестве DTO и передавался в качестве параметра в
Добрые люди подсказали решение. Оказывается весь продвинутый мир MavensMate использует замечательную настройку по умолчанию чтобы использовать старый добрый Metadate API:
Добрые люди подсказали решение. Оказывается весь продвинутый мир MavensMate использует замечательную настройку по умолчанию чтобы использовать старый добрый Metadate API:
ctrl_PostInstall onInstall error : SendEmail failed. First exception on row 0; first error: UNKNOWN_EXCEPTION, Object type not accessible. Please check permissions and make sure the object is not in development mode: sObject type 'Document' is not supported
То есть если вы ставите пакет и пытаетесь отправить емайл, но не простой а с документом, то получаем вот такой эксепшен.
Словил сегодня интересный косяк в Developer Console. По идее это не косяк, но неудобство, которое забрало у меня большой кусок времени чтобы выяснить причину (как всегда простые решения почему-то оставляются на потом).
Если поле у System Administrator не разрешено в FLS (залили например через ant) то в Developer Console его вообще не существует! При попытке сделать SOQL запрос выдает ERROR at Row:1:Column:8 No such column '...' А если открыть объект на просмотр (File->Open->...) то в списке полей тоже его нет.
Словил сегодня интересный косяк в Developer Console. По идее это не косяк, но неудобство, которое забрало у меня большой кусок времени чтобы выяснить причину (как всегда простые решения почему-то оставляются на потом).
Если поле у System Administrator не разрешено в FLS (залили например через ant) то в Developer Console его вообще не существует! При попытке сделать SOQL запрос выдает ERROR at Row:1:Column:8 No such column '...' А если открыть объект на просмотр (File->Open->...) то в списке полей тоже его нет.
Ну мы же в коде не получаем ошибку что такого поля нет, просто нет доступа к значению в данном поле. А тут я могу понять только одно - поле отсутствует как metadata
Ну мы же в коде не получаем ошибку что такого поля нет, просто нет доступа к значению в данном поле. А тут я могу понять только одно - поле отсутствует как metadata
Ну да, уверен - запрос то я взял с работающего контроллера и просто вставил в Developer Console чтобы увидеть что он возвращает - а он мне тупо заругался что нет таких полей. Apex код - нет ошибок, да и не должно быть, поле то существует.
Ну да, уверен - запрос то я взял с работающего контроллера и просто вставил в Developer Console чтобы увидеть что он возвращает - а он мне тупо заругался что нет таких полей. Apex код - нет ошибок, да и не должно быть, поле то существует.
Просто я получал такую же ошибку в коде. Все еще завист от объявления класса.
Вот сегодня столкнулся с тем что вот такая строчка не работает:
RecortType[] rts = [select id from RecordType where bla-bla];
Ошибка: "illegal assignment from list<record type> to list<record type> at line bla-bla"
Как оказалось кто-то создал enum с именем RecordType.
Это затенение - вполне нормальное явление.
Тоже на 99.9% уверен что это не косяк, просто в настройках проекта в Eclipse бывает слетает настройка "Work online", тогда все изменения сохраняются локально и на сервер не деплоятся. Обычно это происходит при смене токена, пароля или IPшника, когда старому проекту не удаётся сразу подрубиться к серверу.
И вот эта операция возвращает нам System.LimitException: Regex too complicated
сам столкнулся, когда парсил csv файлы... может не баг, но "скрытый" лимит точно... Всё просто - Salesforce limits the number of times an input sequence for a regular expression can be accessed to 1,000,000 times. If you reach that limit, you receive a runtime error.
Некоторые "косяки" таковыми не являются:
[quote="Alex Tsitsura"]По поводу косяков, я думаю что то что sf не проверяет зарезервирование слова, при создании класов, есть косяком.
Вот сегодня столкнулся с тем что вот такая строчка не работает:
[code]RecortType[] rts = [select id from RecordType where bla-bla];[/code]
Ошибка: "illegal assignment from list<record type> to list<record type> at line bla-bla"
Как оказалось кто-то создал enum с именем RecordType.[/quote]
Это затенение - вполне нормальное явление.
[quote="Dmitry Shnyrev"]Сегодня столкнулся со странным косяком. В эклипс делаю изменения в коде и сохраняю страницу или класс. эклипс молча сохраняет (ошибок нет), показывает что изменения сохранены, а на орге изменения не появляются. Остается старый вариант исходного кода. ЖЕСТЬ! Я уже мозг сломал. Приходится сравнивать исходники из Эклипс и в браузере чисто визуально. Вот это реально Salesforce штормит.[/quote]
Тоже на 99.9% уверен что это не косяк, просто в настройках проекта в Eclipse бывает слетает настройка "Work online", тогда все изменения сохраняются локально и на сервер не деплоятся. Обычно это происходит при смене токена, пароля или IPшника, когда старому проекту не удаётся сразу подрубиться к серверу.
[quote="Den Brown"][quote="wilder"]file.split('\n');
И вот эта операция возвращает нам System.LimitException: Regex too complicated[/quote]
сам столкнулся, когда парсил csv файлы... может не баг, но "скрытый" лимит точно...[/quote]
Всё просто - Salesforce limits the number of times an input sequence for a regular expression can be accessed to 1,000,000 times. If you reach that limit, you receive a runtime error.
в настройках проекта в Eclipse бывает слетает настройка "Work online"
Очередной повод проститься с Eclipse. Не знаю ilya, видел ли ты мои посты про то какие подлянки подкинул eclipse? В двух словах - не помню при каких обстоятельствах, но при сохранении по ctrl+S eclipse уходил в астрал, а потом оказывалось, то на орге (сандбоксе, где работали сразу несколько разработчиков (знаю что плохо, но не моя прихоть)) ВСЕ файлы проекта оказывались с моими последними изменениями причем даже перетирались более новые изменения других разработчиков. Благо пронесло и все быстро восстановили но это реальное западло. Это кстати случилось 2 раза в промежуток пару дней. После этого я ушел на MM и каждый день только радуюсь.
[quote="ilya leshchuk"] в настройках проекта в Eclipse бывает слетает настройка "Work online"[/quote]
Очередной повод проститься с Eclipse.
Не знаю ilya, видел ли ты мои посты про то какие подлянки подкинул eclipse?
В двух словах - не помню при каких обстоятельствах, но при сохранении по ctrl+S eclipse уходил в астрал, а потом оказывалось, то на орге (сандбоксе, где работали сразу несколько разработчиков (знаю что плохо, но не моя прихоть)) ВСЕ файлы проекта оказывались с моими последними изменениями причем даже перетирались более новые изменения других разработчиков. Благо пронесло и все быстро восстановили но это реальное западло. Это кстати случилось 2 раза в промежуток пару дней. После этого я ушел на MM и каждый день только радуюсь.
Привет. Сегодня столкнулся с КРАЙНЕ БОЛЬШОЙ пролемой Salesforce. Я догадываюсь что ноги растут из одного ограничения, но Salesforce молчит как партизан и тупо не выполняет то что должен, хотя в логах пишет что все ОК!!!!!
Ситуация простая - у меня есть один хеш, который я должен получить из запроса на сторонний сервис и параллельно сохранить в базу для последующего использования в течении следующих 24 часов, а так же записывается в базу две записи логов. Так вот это я делаю в getter переменной, которая вставляется на страницу при загрузки. ВСЕ РАБОТАЕТ ОТЛИЧНО!!! Хеш отлично получаю на странице, но 2 DML операции не выполняются - никаких изменений в базе не производится!!! А теперь самое интересное. Вот лог, а вот и 2 DML операции. Операции есть, изменений нет, ошибок нет.
Привет. Сегодня столкнулся с КРАЙНЕ БОЛЬШОЙ пролемой Salesforce.
Я догадываюсь что ноги растут из одного ограничения, но Salesforce молчит как партизан и тупо не выполняет то что должен, хотя в логах пишет что все ОК!!!!!
Ситуация простая - у меня есть один хеш, который я должен получить из запроса на сторонний сервис и параллельно сохранить в базу для последующего использования в течении следующих 24 часов, а так же записывается в базу две записи логов.
Так вот это я делаю в getter переменной, которая вставляется на страницу при загрузки.
ВСЕ РАБОТАЕТ ОТЛИЧНО!!! Хеш отлично получаю на странице, но 2 DML операции не выполняются - никаких изменений в базе не производится!!! А теперь самое интересное. Вот лог, а вот и 2 DML операции. Операции есть, изменений нет, ошибок нет.
[img]/pics/74/original_2015-06-07_20-23-37.png[/img]
Вот продолжение лога
[img]/pics/76/original_2015-06-07_20-28-33.png[/img]
Да, забыл сказать. Есть подозрение на ограничение SF в том что нельзя выполнять DML операции в конструкторе т.е. при загрузке страницы (обходится дополнительных action на apex:page) НО где тогда ошибки и относятся ли туда getters?
Да, забыл сказать.
Есть подозрение на ограничение SF в том что нельзя выполнять DML операции в конструкторе т.е. при загрузке страницы (обходится дополнительных action на apex:page) НО где тогда ошибки и относятся ли туда getters?
Возможно у тебя есть savepoint и в эксепшене все откатываетя.
Вынес инициализацию в отдельный метод на apex:page action и все сработало. DML операции прошли!!! Т.е. getter подпадает под ограничение. Но тогда непонятно почему нет никаких сообщений об ошибках. У меня нет ни savepoint и эти операции не обернуты в try/catch.
Ладно, поучительная получилась проблема, много полезного вспомнил
НЕ, НУ ТОЧНО!
Вынес инициализацию в отдельный метод на apex:page action
и все сработало. DML операции прошли!!!
Т.е. getter подпадает под ограничение. Но тогда непонятно почему нет никаких сообщений об ошибках. У меня нет ни savepoint и эти операции не обернуты в try/catch.
Ладно, поучительная получилась проблема, много полезного вспомнил :D
Радует что в воскресный вечер кто-то откликнулся - вижу Wilder все время на связи и Gres заскакивал посмотреть кто тут помощи просит
сегодня внезапно не могу вернуть из метода страницу:
[quote]Public PageReference doSubmit() {
return Page.MyPage;
}[/quote]
пишет:
Compile Error: Initial term of field expression must be a concrete SObject: Integer at line 59 column 12
а с return null и PageReference созданный от URL - все сохраняется...
ничего не понимаю
Compile Error: Initial term of field expression must be a concrete SObject: Integer at line 59 column 12
Возможно вы "затенили" Page.MyPage, создав переменную класса с именем page/Page, попробуйте вернуть System.Page.MyPage.
[quote="Den Brown"]Compile Error: Initial term of field expression must be a concrete SObject: Integer at line 59 column 12[/quote]
Возможно вы "затенили" Page.MyPage, создав переменную класса с именем page/Page, попробуйте вернуть System.Page.MyPage.
Возможно вы "затенили" Page.MyPage, создав переменную класса с именем page/Page, попробуйте вернуть System.Page.MyPage.
спасибо Илья, ты как всегда: по-существу и в точку.
есть такая переменная, служит в пагинационном механизме... сейчас переименную
[quote="ilya leshchuk"]Возможно вы "затенили" Page.MyPage, создав переменную класса с именем page/Page, попробуйте вернуть System.Page.MyPage.[/quote]
спасибо Илья, ты как всегда: по-существу и в точку.
есть такая переменная, служит в пагинационном механизме...
сейчас переименную
<apex:actionFunction name="delFile" action="{!delFile}" immediate="true" rerender="btn">
<apex:param name="[b]id[/b]" assignTo="{!delId}" value=""/>
</apex:actionFunction>
в контроллер приходит вовсе не переменная delId, приходит параметр ID из URL
Нельзя задеплоить IP ranges - валится неинформативная ошибка.
Супорт проблему не хочет фиксить и пытаются сказать что так и должно быть, даже несмортя на то, что написано в официальной документации:
https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_securitysettings.htm
Короче прошу поддержать эту идею -
https://success.salesforce.com/ideaView?id=08730000000oLxKAAU
О...я могу целую сагу написать о том что должно деплоиться а на самом деле не работает. Я запарюсь идеи заводить.
[quote="yurybond"]Нельзя задеплоить IP ranges - валится неинформативная ошибка.
Супорт проблему не хочет фиксить и пытаются сказать что так и должно быть, даже несмортя на то, что написано в официальной документации:
https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_securitysettings.htm
[/quote]
После месяца уговоров, упрямый индийский саппорт все таки создал Konwn Issue:
https://success.salesforce.com/issues_view?id=a1p30000000sXza
Кто-нибудь сталкивался с таких косяком?
https://success.salesforce.com/issues_view?id=a1p30000000T5R5AAK
Test.startTest() не сбрасывает лимиты по SOQL query в тестах.
(?i)\\s*(class|interface|enum)\\s+\\b(.+?)\\b - "Regex too complicated" - проверяю на файлике в 18 килобайт !!!
js справляется с этим на Ура. вот такой вот у нас волшебный клауд.
(?i)\\s*(class|interface|enum)\\s+\\b(.+?)\\b - "Regex too complicated" - проверяю на файлике в 18 килобайт !!!
js справляется с этим на Ура. вот такой вот у нас волшебный клауд.
(?i)\\s*(class|interface|enum)\\s+\\b(.+?)\\b - "Regex too complicated" - проверяю на файлике в 18 килобайт !!!
js справляется с этим на Ура. вот такой вот у нас волшебный клауд.
Уже писал об этом: Salesforce limits the number of times an input sequence for a regular expression can be accessed to 1,000,000 times. If you reach that limit, you receive a runtime error.
[quote="wilder"](?i)\\s*(class|interface|enum)\\s+\\b(.+?)\\b - "Regex too complicated" - проверяю на файлике в 18 килобайт !!!
js справляется с этим на Ура. вот такой вот у нас волшебный клауд.[/quote]
Уже писал об этом:
Salesforce limits the number of times an input sequence for a regular expression can be accessed to 1,000,000 times. If you reach that limit, you receive a runtime error.
Просто подправьте регулярку :)
(?i)\\s*(class|interface|enum)\\s+\\b(.+?)\\b - "Regex too complicated" - проверяю на файлике в 18 килобайт !!!
js справляется с этим на Ура. вот такой вот у нас волшебный клауд.
Уже писал об этом: Salesforce limits the number of times an input sequence for a regular expression can be accessed to 1,000,000 times. If you reach that limit, you receive a runtime error.
Просто подправьте регулярку :)
Ну если ты можешь, то подскажи как ее подправить. И за одно еще одно дополнение. Падает только на последнем вхождении. Это я тоже как-то могу подправить ? пробовал использовать (?i)\\s*(class)\\s+. Куда еще проще ?
Ну и в догонку. Почему я не могу перехватить exception через try catch ? Тут то я что должен упростить ?
[quote="ilya leshchuk"][quote="wilder"](?i)\\s*(class|interface|enum)\\s+\\b(.+?)\\b - "Regex too complicated" - проверяю на файлике в 18 килобайт !!!
js справляется с этим на Ура. вот такой вот у нас волшебный клауд.[/quote]
Уже писал об этом:
Salesforce limits the number of times an input sequence for a regular expression can be accessed to 1,000,000 times. If you reach that limit, you receive a runtime error.
Просто подправьте регулярку :)[/quote]
Ну если ты можешь, то подскажи как ее подправить. И за одно еще одно дополнение. Падает только на последнем вхождении. Это я тоже как-то могу подправить ? пробовал использовать (?i)\\s*(class)\\s+. Куда еще проще ?
Ну и в догонку. Почему я не могу перехватить exception через try catch ? Тут то я что должен упростить ?
На глаз тяжело подсказывать: - желательно бы знать поставленную задачу, потому как найти слово class проще методом indexof - при данной конфигурации regexp'а я бы не рекомендовал пользоваться методом find - слишком накладно по вычислениям - в случае с высоконагруженной регуляркой я вообще не рекомендую использовать метод find, лучше использовать метод lookingAt, с соответствующим образом переписанными regexp'ами
Вообще сообщение "Regex too complicated" сбивает с толку, выражение не сложное, просто оно много раз применяется, а когда я писал про "подправь регулярку", я немного некорректно выразился - имел в виду комбинация lookingAt и соответствующим образом подправленные regexp'ы.
На глаз тяжело подсказывать:
- желательно бы знать поставленную задачу, потому как найти слово class проще методом indexof
- при данной конфигурации regexp'а я бы не рекомендовал пользоваться методом find - слишком накладно по вычислениям
- в случае с высоконагруженной регуляркой я вообще не рекомендую использовать метод find, лучше использовать метод lookingAt, с соответствующим образом переписанными regexp'ами
Вообще сообщение "Regex too complicated" сбивает с толку, выражение не сложное, просто оно много раз применяется, а когда я писал про "подправь регулярку", я немного некорректно выразился - имел в виду комбинация lookingAt и соответствующим образом подправленные regexp'ы.
в случае с высоконагруженной регуляркой я вообще не рекомендую использовать метод find, лучше использовать метод lookingAt, с соответствующим образом переписанными regexp'ами
Ну задача как таковая парсинг апекс классов.
Я конечно любитель оптимизации, но если честно не совсем понимаю, почему такая относительно простая регуллярка валиться на таких крохотных объемах.
Я вообще не понимаю, почему я должен использовать разные методы, для выполнения одной и той же операции ? И почему в других языках, это делается простейшими средствами. А у нас это целая пляска с бубном. И хотя я родился в тех местах где как раз практикуют эти пляски, я уже порядком подустал от этих танцев.
[quote="ilya leshchuk"]в случае с высоконагруженной регуляркой я вообще не рекомендую использовать метод find, лучше использовать метод lookingAt, с соответствующим образом переписанными regexp'ами[/quote]
Ну задача как таковая парсинг апекс классов.
Я конечно любитель оптимизации, но если честно не совсем понимаю, почему такая относительно простая регуллярка валиться на таких крохотных объемах.
А вот регуллярка, которая действительно нужна.
(?i)(\\@RestResource\\s*\\(\\s*urlMapping\\s*=\\s*\'.*?\'\\s*\\))*\\s*(\\@istest\\s*(\\(\\s*seeAlldata\\s*=\\s*.*?\\s*\\))*)*\\s*(global|public|private)\\s*(static|virtual|abstract)*\\s*((with|without)\\s+sharing)*\\s+(static|virtual|abstract)*\\s*(class|interface|enum)\\s+\\b(.+?)\\b\\s*(extends\\s+(.+?))*\\s*(implements\\s+(.+))*\\s*\\{
Я вообще не понимаю, почему я должен использовать разные методы, для выполнения одной и той же операции ? И почему в других языках, это делается простейшими средствами. А у нас это целая пляска с бубном. И хотя я родился в тех местах где как раз практикуют эти пляски, я уже порядком подустал от этих танцев.
Методы разные по задаче и по сути: find - ищет по всей строке, отсюда и "затратность" его, особенно когда используются всякие lookahead, lookbehind, greedy quantifiers, а вот lookingAt - смотрит от текущей позиции, поэтому менее затратный - обломалась регулярка со старта - "давай до свидания!".
Методы разные по задаче и по сути: find - ищет по всей строке, отсюда и "затратность" его, особенно когда используются всякие lookahead, lookbehind, greedy quantifiers, а вот lookingAt - смотрит от текущей позиции, поэтому менее затратный - обломалась регулярка со старта - "давай до свидания!".
Попробовал я твой способ. Вылетает так же на ура, только на большем объеме. Так что вопрос остается открытым.
Попробовал я твой способ. Вылетает так же на ура, только на большем объеме. Так что вопрос остается открытым.
Ну первый шаг уже сделан, а дорогу осилит идущий! Я смотрю ты уже кое-где используешь reluctant quantifiers, а попробуй их использовать вообще везде (может понадобится внести изменение в регулярку), в том числе где у тебя "\\s*" поставить "\\s*?"? Может подлечит.
Ну первый шаг уже сделан, а дорогу осилит идущий!
Я смотрю ты уже кое-где используешь reluctant quantifiers, а попробуй их использовать вообще везде (может понадобится внести изменение в регулярку), в том числе где у тебя "\\s*" поставить "\\s*?"? Может подлечит.
Ну и финальная точка в диспуте о регексе. Есть очень большая вероятность что у них где-то косяк с памятью. Потому что есть взять отдельной файлик на котором вылетает регекс, то он парситься без проблем. А вот если парсить в цикле несколько файлов, вот тогда уже происходит вылет регекса.
Ну и финальная точка в диспуте о регексе. Есть очень большая вероятность что у них где-то косяк с памятью. Потому что есть взять отдельной файлик на котором вылетает регекс, то он парситься без проблем. А вот если парсить в цикле несколько файлов, вот тогда уже происходит вылет регекса.
Добавлю свои 5 копеек, Regex не нужен! Можно прекрасно обойтись без него. Главный плюс - код без него логичнее и понятнее.
Добавлю свои 5 копеек, Regex не нужен!
Можно прекрасно обойтись без него.
Главный плюс - код без него логичнее и понятнее.
Ну и финальная точка в диспуте о регексе. Есть очень большая вероятность что у них где-то косяк с памятью. Потому что есть взять отдельной файлик на котором вылетает регекс, то он парситься без проблем. А вот если парсить в цикле несколько файлов, вот тогда уже происходит вылет регекса.
- Доктор, меня почему-то никто не замечает. - Следующий!
Это не косяк с памятью, это лимит в обработчике регулярных выражений, который никто не скрывает: Salesforce limits the number of times an input sequence for a regular expression can be accessed to 1,000,000 times. If you reach that limit, you receive a runtime error.
Это, кстати, не означает что вы можете вызвать методы find/lookingAt/matches/etc. миллион раз, это счётчик внутренний, сколько раз сам обработчик регулярных выражений обращается к последовательности. К примеру вот такая регулярка (.*)a натравленная на строку "abbbbbbbbbb" (a и 10 b) обратится к последовательности 10 раз.
Да, сообщение "You reached a maximum number of times an input sequence for a regular expression can be accessed!" было бы в сто раз более информативно чем "System.LimitException: Regex too complicated", но об этом тоже уже написал.
Добавлю свои 5 копеек, Regex не нужен! Можно прекрасно обойтись без него. Главный плюс - код без него логичнее и понятнее.
Это верно только от части. Вполне вероятно что можно всегда обойтись без регулярных выражений для решения любой задачи, но вот в 99 из 100 более менее сложных задач решение с регуляркой будет проще и читабельнее. К примеру попробуйте сходу без регулярки решить задачу нахождения сложных комментариев в apex class'е.
[quote="wilder"]Ну и финальная точка в диспуте о регексе. Есть очень большая вероятность что у них где-то косяк с памятью. Потому что есть взять отдельной файлик на котором вылетает регекс, то он парситься без проблем. А вот если парсить в цикле несколько файлов, вот тогда уже происходит вылет регекса.[/quote]
[i]- Доктор, меня почему-то никто не замечает.
- Следующий![/i]
Это не косяк с памятью, это лимит в обработчике регулярных выражений, который никто не скрывает:
[i]Salesforce limits the number of times an input sequence for a regular expression can be accessed to 1,000,000 times. If you reach that limit, you receive a runtime error.[/i]
Это, кстати, не означает что вы можете вызвать методы find/lookingAt/matches/etc. миллион раз, это счётчик внутренний, сколько раз сам обработчик регулярных выражений обращается к последовательности. К примеру вот такая регулярка [i](.*)a[/i] натравленная на строку "abbbbbbbbbb" (a и 10 b) обратится к последовательности 10 раз.
Да, сообщение "You reached a maximum number of times an input sequence for a regular expression can be accessed!" было бы в сто раз более информативно чем "System.LimitException: Regex too complicated", но об этом тоже уже написал.
[quote="Gres"]Добавлю свои 5 копеек, Regex не нужен!
Можно прекрасно обойтись без него.
Главный плюс - код без него логичнее и понятнее.[/quote]
Это верно только от части. Вполне вероятно что можно всегда обойтись без регулярных выражений для решения любой задачи, но вот в 99 из 100 более менее сложных задач решение с регуляркой будет проще и читабельнее. К примеру попробуйте сходу без регулярки решить задачу нахождения сложных комментариев в apex class'е.
Если знаешь как увидеть этот счетчик. Я был бы просто счастлив. Потому как не могу поверить что на 30 простых классах регех срабатывает больше 1 000 000 раз.
Если знаешь как увидеть этот счетчик. Я был бы просто счастлив. Потому как не могу поверить что на 30 простых классах регех срабатывает больше 1 000 000 раз.
Не знаю где такой счётчик посмотреть, да и думаю что это нереально. А вот по-поводу "30 простых классов" давай представим ситуацию - есть классик который начинается так:
public class Example implements IExample {
и дальше идёт 10000 символов. На 100% не утверждаю, но уверен что присутствие в исходном регулярном выражении вот этого кусочка (implements\\s+(.+))*\\s*\\{, а точнее кусочка выделенного жирным, заставит процессор регулярных выражений обратиться к последовательности всего-то минимум 10 000 раз. А теперь если ещё добавить в начало файла комментариев, да использовать метод find, то скорее всего эти 10 000 перемножатся на длину коментария. Опять же - информация не проверенная, потому как это реально black box, а базируется на моих знаниях и понимании regexp'ов в форсе. А вот если кусочек заменить на (.+?) - эти 10 000 обращений уйдут. Я бы даже использовал "[^{]" вместо ".".
Не знаю где такой счётчик посмотреть, да и думаю что это нереально.
А вот по-поводу "30 простых классов" давай представим ситуацию - есть классик который начинается так:
[code]
public class Example implements IExample
{
[/code]
и дальше идёт 10000 символов. На 100% не утверждаю, но уверен что присутствие в исходном регулярном выражении вот этого кусочка [i](implements\\s+[b](.+)[/b])*\\s*\\{[/i], а точнее кусочка выделенного жирным, заставит процессор регулярных выражений обратиться к последовательности всего-то минимум 10 000 раз. А теперь если ещё добавить в начало файла комментариев, да использовать метод find, то скорее всего эти 10 000 перемножатся на длину коментария. Опять же - информация не проверенная, потому как это реально black box, а базируется на моих знаниях и понимании regexp'ов в форсе. А вот если кусочек заменить на [i](.+?)[/i] - эти 10 000 обращений уйдут. Я бы даже использовал "[^{]" вместо ".".
Ну и последние новости с полей борьбы с регекс.
Илья твой вариант не прокатил, и я очень об этом сожалел.
А вот мой вариант чудно отработал. Я просто заменил \n на пробел. С точки зрения \s что перевод строки что пробел одно и тоже. В общем я считаю что косяк в системе на лицо.
Ну и последние новости с полей борьбы с регекс.
Илья твой вариант не прокатил, и я очень об этом сожалел.
А вот мой вариант чудно отработал. Я просто заменил \n на пробел. С точки зрения \s что перевод строки что пробел одно и тоже. В общем я считаю что косяк в системе на лицо.
Илья есть у тебя желание собраться и обсудить идеальный парсер Арех? Может еще кто хочет присоединиться ?
Opportunity line item, есть филды
[img]http://i.imgur.com/tfbwI1c.png[/img]
[img]http://i.imgur.com/iGivI4w.png[/img]
почему на лейауте ListPrice field имеет лейбл Unit Price?
открываю редактирование лейаута
[img]http://i.imgur.com/bUyrW5i.png[/img]
но при редактировании релейтед листа на лейауте opportunity, филд почему-то Unit Price
[img]http://i.imgur.com/iWi1mzM.png[/img]
Транслейшены выключены.
Это баг или где-то можно переименовать лейбл филда?
UPDATE.
Нашёл причину, это не баг, а Rename Tabs and Labels
[img]http://i.imgur.com/Nn0qiWR.png[/img]
На такую фигню наступил.
<apex:outputLink value="{!$CurrentPage.Url}" target="_parent">Click me <apex:param name="q" value="true"/> </apex:outputLink>
параметр кодируется неверно в конечном линке. Бяка тут $CurrentPage.Url - содержит уже query string. Как лечить не придумал.
На такую фигню наступил.
[code]
<apex:outputLink value="{!$CurrentPage.Url}"
target="_parent">Click me
<apex:param name="q" value="true"/>
</apex:outputLink>
[/code]
параметр кодируется неверно в конечном линке.
Бяка тут $CurrentPage.Url - содержит уже query string.
Как лечить не придумал.
Этот код что делает? Редиректит страницу на саму себя с новым параметром? А не проще на JS сделать?
[quote="Dmitry Shnyrev"]Этот код что делает? Редиректит страницу на саму себя с новым параметром?
А не проще на JS сделать?[/quote]
1. Да редирект.
2. Стараюсь максимально использовать простые (стандартные) решения.
По опыту скажу стандартные решение не всегда являются простыми
Опять эти уроды наху...вертили.
В общем теперь на кнопку нельзя повесить скрипт с параметрами. То есть
[code]
{!REQUIRESCRIPT('/resource/ssync3__jsAPI/js/jsInit.js?ta=true&rlts=[b]true[/b]')}
{!REQUIRESCRIPT('/resource/ssync3__jsAPI/js/jsInit.js?ta=true&rlts=[b]false[/b]')}
[/code]
Отработает только один раз. Вот такая вот оптимизация.
Пора переходить на свой вронтенд - Angular|Backbone|RactiveJS + REST API и не надо будет бояться мега апдейтов от SF
Пора переходить на свой вронтенд - Angular|Backbone|RactiveJS + REST API
и не надо будет бояться мега апдейтов от SF :D
Прям праздник какой-то
SELECT ApexClassId,CreatedDate,ExtendedStatus,Id,JobItemsProcessed,JobType,MethodName,NumberOfErrors,ParentJobId,Status,TotalJobItems FROM AsyncApexJob WHERE status!='Completed' AND status!='Aborted' AND status != 'Failed'
выдает что есть 3 джоба. Соответственно через UI показывает что нет ничего. Удалить ничего не могу, потому что ParentJobId - null.
Сохранить тоже ничего не могу, не смотря на галочку в настройках. This Apex class has batch or future jobs pending or in progress (Line: 1, Column: 21)
Прям праздник какой-то
SELECT ApexClassId,CreatedDate,ExtendedStatus,Id,JobItemsProcessed,JobType,MethodName,NumberOfErrors,ParentJobId,Status,TotalJobItems FROM AsyncApexJob WHERE status!='Completed' AND status!='Aborted' AND status != 'Failed'
выдает что есть 3 джоба. Соответственно через UI показывает что нет ничего. Удалить ничего не могу, потому что ParentJobId - null.
Сохранить тоже ничего не могу, не смотря на галочку в настройках. This Apex class has batch or future jobs pending or in progress (Line: 1, Column: 21)
Придется ждать неделю пока почистят.....
вронтенд
- сильно сказано!!! я правда прочитал как "вротенд"
В кастомной кнопке если определить var window.ssEngine = new ssEngineClass("{!$Api.Session_ID}");
получаете ошибку, что они не ожидали ".". То есть определить что-то за пределами кнопки вам не дают. А кнопка в нашем случае это просто функция. Вот такая вот обрезаная область видимости получается.
Очередной нежданчик от индусов.
В кастомной кнопке если определить var window.ssEngine = new ssEngineClass("{!$Api.Session_ID}");
получаете ошибку, что они не ожидали ".". То есть определить что-то за пределами кнопки вам не дают. А кнопка в нашем случае это просто функция. Вот такая вот обрезаная область видимости получается.
КАК? Это ж JS. Он выполняется в браузере. Какие там могут быть области видимости? Кстати, а почему у тебя стоит VAR window.someVar ? Это не должно работать! должно быть просто window.someVar = ...
КАК?
Это ж JS. Он выполняется в браузере. Какие там могут быть области видимости?
Кстати, а почему у тебя стоит
VAR window.someVar ?
Это не должно работать!
должно быть просто window.someVar = ...
"This Apex class has batch or future jobs pending or in progress; This schedulable class has jobs pending or in progress"
И это не смотря на чекбокс что можно деплоить с работающими шедулерами и батчами.
Или еще вот такая ошибка
"This schedulable class has jobs pending or in progress"
В общем что-то они там перемудрили.
Зато Lightning внедрили который никто не знает как использовать
:D Зато Lightning внедрили который никто не знает как использовать :D
Косяк при обновлении пакета.
Если вы в пакете поменяли RemoteSite Settings, то вам придется удалить пакет и поставить заново, что бы ваши изменения попали в орг. Возможно это справедливо и для других MetaDataTypes
Если вы в пакете на странице используете StandardController и не используете sidebar="true" или если вы не используете <apex:....> то приготовтесь к тому что получите ошибку что вы не выбрали соответствующие поля.
я для этого использовал <apex:variable var="orgName" value="{!OrgSrc__c.Name}"/>, тогда и поля нормально появляются причем все, а не только то что указано, а так же namespace prefix пакета нормально ресолвится.
Косяк при обновлении пакета.
Если вы в пакете поменяли RemoteSite Settings, то вам придется удалить пакет и поставить заново, что бы ваши изменения попали в орг. Возможно это справедливо и для других MetaDataTypes
Если вы в пакете на странице используете StandardController и не используете sidebar="true" или если вы не используете <apex:....> то приготовтесь к тому что получите ошибку что вы не выбрали соответствующие поля.
я для этого использовал <apex:variable var="orgName" value="{!OrgSrc__c.Name}"/>, тогда и поля нормально появляются причем все, а не только то что указано, а так же namespace prefix пакета нормально ресолвится.
А почему бы не использовать этот метод из StandardController public Void addFields(List<String> fieldNames) Добавляешь поля которых тебе не хватает, или все просто перечисляешь и все нормально работает.
А почему бы не использовать этот метод из StandardController
public Void [b]addFields[/b](List<String> fieldNames)
Добавляешь поля которых тебе не хватает, или все просто перечисляешь и все нормально работает.
А почему бы не использовать этот метод из StandardController public Void addFields(List<String> fieldNames) Добавляешь поля которых тебе не хватает, или все просто перечисляешь и все нормально работает.
[quote="Dmitry Shnyrev"]А почему бы не использовать этот метод из StandardController
public Void [b]addFields[/b](List<String> fieldNames)
Добавляешь поля которых тебе не хватает, или все просто перечисляешь и все нормально работает.[/quote]
А у меня вообще нет контроллера на этой странице
[quote="Dmitry Shnyrev"]public Void addFields(List<String> fieldNames) [/quote]
Я пробывал потом это чудо покрывать в тестах,косяки какие то начинались, проще запрос написать и вытащить все что надо, чем парится с AddFields
Кстати да! В тестах эта команда не работает! НО! Это уже твои терки - смысл в том что когда работает страница - это забота SF собрать поля со страницы, отправить их в запрос и вернуть тебе в конструктор. В тестах если ты присмотришься то ты сам создаешь StandardController из записи которую сам подготовил. Кто мешает в эту запись добавить все нужные поля? Но вообще вариант с дополнительным запросом очень даже отличный. Сам так делаю, когда лень с addFields заморачиваться. Ну да - лишний SOQL получается, но это можно пережить
Кстати да! В тестах эта команда не работает!
НО! Это уже твои терки - смысл в том что когда работает страница - это забота SF собрать поля со страницы, отправить их в запрос и вернуть тебе в конструктор. В тестах если ты присмотришься то ты сам создаешь StandardController из записи которую сам подготовил. Кто мешает в эту запись добавить все нужные поля?
Но вообще вариант с дополнительным запросом очень даже отличный. Сам так делаю, когда лень с addFields заморачиваться. Ну да - лишний SOQL получается, но это можно пережить :D
Ура товарищи, дрстигнут новый лимит !!!
Failed to process the request successfully. Cause(LIMIT_EXCEEDED): LIMIT_EXCEEDED: Too many files in retrieve call, limit is: 10000
Ура товарищи, дрстигнут новый лимит !!!
Failed to process the request successfully. Cause(LIMIT_EXCEEDED): LIMIT_EXCEEDED: Too many files in retrieve call, limit is: 10000
Прям праздник сегодня
Failed to process the request successfully. Cause(LIMIT_EXCEEDED): LIMIT_EXCEEDED: The retrieved zip file exceeded the limit of 419430400 bytes.
Прям праздник сегодня
Failed to process the request successfully. Cause(LIMIT_EXCEEDED): LIMIT_EXCEEDED: The retrieved zip file exceeded the limit of 419430400 bytes.
Wilder, ты по ходу решил SF на прочность проверить ? смотри, а то они тебя скоро забанят - как злосного пожирателя лимитов
Wilder, ты по ходу решил SF на прочность проверить :D ?
смотри, а то они тебя скоро забанят - как злосного пожирателя лимитов :D
Wilder, ты по ходу решил SF на прочность проверить ? смотри, а то они тебя скоро забанят - как злосного пожирателя лимитов :D
Да я тут собственно не причем. Просто нужно было сделать BackUp всего орга. И тут началась свистопляска с бубном. Орг на бумаге UNLIMITED, как на практике оказалось нет зато и пакет свой проверил на прочность. Хватанул пару не приятных проблем. Вот сейчас сижу думаю как обойти.
[quote="Dmitry Shnyrev"]Wilder, ты по ходу решил SF на прочность проверить :D ?
смотри, а то они тебя скоро забанят - как злосного пожирателя лимитов :D[/quote]
Да я тут собственно не причем. Просто нужно было сделать BackUp всего орга. И тут началась свистопляска с бубном. Орг на бумаге UNLIMITED, как на практике оказалось нет :) зато и пакет свой проверил на прочность. Хватанул пару не приятных проблем. Вот сейчас сижу думаю как обойти.
Угадайте ошибку:
String currentAccountId = ''; for(Contact record : contacts) { if (currentAccountId != record.AccountId) {
Так Типы разные. Хоть по сути все Стринга. На одном проекте долго искал ошибку пока не нашел примерно такую конструкцию. Id то может быть полный или сокращенный)
[quote="Gres"]Угадайте ошибку[/quote]
Так Типы разные. Хоть по сути все Стринга.
На одном проекте долго искал ошибку пока не нашел примерно такую конструкцию. Id то может быть полный или сокращенный)
Line: 2, Column: 22 Variable does not exist: contacts
Line: 4, Column: 1
System.StringException: Invalid id:
Но вообще да, интересно тут с типами работают в твоем примере.
И думаю String currentAccountId = null прокатил бы или
Id currentAccountId = null
[quote="DevNull"]Id то может быть полный или сокращенный)[/quote]
Да, по ходу DevNull, ты прав. Чет я про это не подумал :) Давно не сталкивался с такой проблемой.
Gres, но мне кажется вопрос с подвохом А?
Странно, что приведение идет не к базовому типу, а к наследнику
[quote="Dmitry Shnyrev"]Gres, но мне кажется вопрос с подвохом А?[/quote]
Странно, что приведение идет не к базовому типу, а к наследнику
Итак порция косячков 1.ReadMetadata - не работает с ApexClass, ApexTrigger 2.ReadMetadata возвращает то Base64 то String в зависимости от типа метадаты.
Итак порция косячков
1.ReadMetadata - не работает с ApexClass, ApexTrigger
2.ReadMetadata возвращает то Base64 то String в зависимости от типа метадаты.
Если вы используете HTML-5.0 и используете конструкции вида:
<apex:inputfield html-dType="test" .../>
то будьте готовы к тому что Salesforce похерит все ваши аттрибуты для dependent picklist
Если вы используете HTML-5.0 и используете конструкции вида:
<apex:inputfield [b]html-dType[/b]="test" .../>
то будьте готовы к тому что Salesforce похерит все ваши аттрибуты для dependent picklist
Очередной баг при работе с ToolingApi при
SELECT Id, DeveloperName, EntityDefinitionId, NamespacePrefix FROM CustomField
получаю DeveloperName = '_tc__00N58000002ZJUC__19' я понимаю что 00N58000002ZJUC это типа ссылка на другое поле. Но что-то это особенно пока не помогает.
Очередной баг при работе с ToolingApi при
SELECT Id, DeveloperName, EntityDefinitionId, NamespacePrefix FROM CustomField
получаю DeveloperName = '_tc__00N58000002ZJUC__19' я понимаю что 00N58000002ZJUC это типа ссылка на другое поле. Но что-то это особенно пока не помогает.
Если в строке встречаются символы например из английского и арабского алфавита то indexOf() всегда возвращает -1
Например вы делаете интеграцию из Salesforce в Salesforce через tooling API. И хотите запустить тесты в которых есть httpmockup ? Не судьба. Получите http loop fallout exception.
Например вы делаете интеграцию из Salesforce в Salesforce через tooling API. И хотите запустить тесты в которых есть httpmockup ? Не судьба. Получите http loop fallout exception.
А можешь пояснить в 2 словах что ты в этом кусте такое делаешь?
Или это просто пример для воспроизведения ошибки?
А можешь пояснить в 2 словах что ты в этом кусте такое делаешь?
Удаляет запись salesforce лога. Только вот у них нет PageReference и сало ломается. В сале не думали, что люди будут экспериментировать с такой фантазией.
[quote="Dmitry Shnyrev"]А можешь пояснить в 2 словах что ты в этом кусте такое делаешь? [/quote]
Удаляет запись salesforce лога. Только вот у них нет PageReference и сало ломается.
В сале не думали, что люди будут экспериментировать с такой фантазией.
А можешь пояснить в 2 словах что ты в этом кусте такое делаешь?
Удаляет запись salesforce лога. Только вот у них нет PageReference и сало ломается. В сале не думали, что люди будут экспериментировать с такой фантазией.
[quote="Developer"][quote="Dmitry Shnyrev"]А можешь пояснить в 2 словах что ты в этом кусте такое делаешь? [/quote]
Удаляет запись salesforce лога. Только вот у них нет PageReference и сало ломается.
В сале не думали, что люди будут экспериментировать с такой фантазией.[/quote]
Я даже боюсь спросить, что-такое "сало" :D
[quote="Developer"]Удаляет запись salesforce лога.[/quote]
А почему именно так? В чем преимущество простой DML операции?
Я даже боюсь спросить, что-такое "сало" :D
Насколько я могу судить это понятие придумали в VRP, потому что кроме них я больше ни от кого такого не слышал. А они постоянно салом кидаются. Но мне понятие "сало" сильно режет слух!!! Я категорически против его использования. Это прям какое-то неуважение к платформе которая позволяет зарабатывать на хлебушек с икоркой.
[quote="camamber"]Я даже боюсь спросить, что-такое "сало" :D[/quote]
Насколько я могу судить это понятие придумали в VRP, потому что кроме них я больше ни от кого такого не слышал. А они постоянно салом кидаются.
Но мне понятие "сало" сильно режет слух!!! Я категорически против его использования. Это прям какое-то неуважение к платформе которая позволяет зарабатывать на хлебушек с икоркой.
[quote="Dmitry Shnyrev"]А почему именно так?[/quote]
Наверное, надо автора кода спросить?
[quote="Dmitry Shnyrev"]В чем преимущество простой DML операции?[/quote]
Эмм...Так тут же не простая DML операция.
Насколько я могу судить это понятие придумали в VRP, потому что кроме них я больше ни от кого такого не слышал. А они постоянно салом кидаются. Но мне понятие "сало" сильно режет слух!!! Я категорически против его использования. Это прям какое-то неуважение к платформе которая позволяет зарабатывать на хлебушек с икоркой.
В данной ситуации - лень переключать раскладку на английскую, когда пишешь на русском и сокращённо получается то что получается... п.с. если режет, то буду переключать раскладку :)
[quote="Dmitry Shnyrev"]Насколько я могу судить это понятие придумали в VRP, потому что кроме них я больше ни от кого такого не слышал. А они постоянно салом кидаются.
Но мне понятие "сало" сильно режет слух!!! Я категорически против его использования. Это прям какое-то неуважение к платформе которая позволяет зарабатывать на хлебушек с икоркой. [/quote]
В данной ситуации - лень переключать раскладку на английскую, когда пишешь на русском и сокращённо получается то что получается...
п.с. если режет, то буду переключать раскладку :)
Наверное, надо автора кода спросить?
А, мли, не усмотрел что это не автор ответил. То что делает код в принципе понятно, Но в руках wilder любой код может делать совсем не то что он должен! Developer, не спеши наперед батьки в пекло!!! Вопрос адресовался именно автору и подразумевает получение информации о подвохе!
[quote="Developer"]Наверное, надо автора кода спросить?[/quote]
А, мли, не усмотрел что это не автор ответил.
То что делает код в принципе понятно,
Но в руках wilder любой код может делать совсем не то что он должен! :D
Developer, не спеши наперед батьки в пекло!!!
Вопрос адресовался именно автору и подразумевает получение информации о подвохе!
лень переключать раскладку на английскую
А ты не пользуешься Punto Switcher?
Если нет, то я понимаю твою попаболь по поводу раскладок
[quote="Developer"]лень переключать раскладку на английскую[/quote]
А ты не пользуешься Punto Switcher?
Если нет, то я понимаю твою попаболь по поводу раскладок :D
А ты не пользуешься Punto Switcher?
Не срослось у меня с ним когда-то, когда он больше вредил, чем помогал, неправильно определяя нужную раскладку и переписывая то, что я написал.
[quote="Dmitry Shnyrev"]А ты не пользуешься Punto Switcher? [/quote]
Не срослось у меня с ним когда-то, когда он больше вредил, чем помогал, неправильно определяя нужную раскладку и переписывая то, что я написал.
Потому что автоматическое переключение надо сразу было отключить. Я сразу отключил. Переключение только по нажатию Break(Win) и Alt(Mac). Зато начинаешь печатать "не в той" раскладке просто нажал на волшебную кнопку и продолжаешь дальше печатать. Вместо того чтобы удалять переключаться и сново печатать. От этой привычки у меня сильная проблема взаимодействия с чужими компами, благо это редкие случаи.
Потому что автоматическое переключение надо сразу было отключить. Я сразу отключил.
Переключение только по нажатию Break(Win) и Alt(Mac).
Зато начинаешь печатать "не в той" раскладке просто нажал на волшебную кнопку и продолжаешь дальше печатать.
Вместо того чтобы удалять переключаться и сново печатать.
От этой привычки у меня сильная проблема взаимодействия с чужими компами, благо это редкие случаи.
Просто удалить логи не получается. Даже не смотря на то что он deletable.
Просто очень не хотелось задействовать bulk API.
Иногда прокатывает что-то удалить через standard controller.
Просто удалить логи не получается. Даже не смотря на то что он deletable.
Просто очень не хотелось задействовать bulk API.
Иногда прокатывает что-то удалить через standard controller.
Может кто нибудь сталкивался, не работает метод sforce.console.isInConsole() на visualforce странице? Независимо от того происходит ли это в service console или в обычном сейлсфорсе всегда выдает true. Скрипт <apex:includeScript value="/support/console/42.0/integration.js"/> включен на странице. Попытался залезть в соурс код, но чего то там такие дебри, что не хочется пока лезть. Возможно кто то знает в чем проблема и как ее можно решить? Открывать тикет сейлсфорсу и связываться с индийской службой поддержки пока что тоже не хочется Заранее спасибо
Может кто нибудь сталкивался, не работает метод sforce.console.isInConsole() на visualforce странице? Независимо от того происходит ли это в service console или в обычном сейлсфорсе всегда выдает true.
Скрипт <apex:includeScript value="/support/console/42.0/integration.js"/> включен на странице.
Попытался залезть в соурс код, но чего то там такие дебри, что не хочется пока лезть. Возможно кто то знает в чем проблема и как ее можно решить?
Открывать тикет сейлсфорсу и связываться с индийской службой поддержки пока что тоже не хочется :)
Заранее спасибо
Выяснил, что если в URL передавать isdtp=vw то sforce.console.isInConsole() будет всегда выдавать true. Независимо открываешь страницу в консоле или нет. По крайне мере у меня так. Не знаю относиться ли это к косякам Salesforce или я чего то не до конца понимаю просто :)
Выяснил, что если в URL передавать isdtp=vw то sforce.console.isInConsole() будет всегда выдавать true. Независимо открываешь страницу в консоле или нет. По крайне мере у меня так. Не знаю относиться ли это к косякам Salesforce или я чего то не до конца понимаю просто :)
isdtp=vw
Это недокументированный параметр, поэтому использовать его можно на свой страх и риск. Врядли это можно назвать косяком SF. Но то что упомянул его на форуме спасибо. Я такого не использовал, но сразу нагуглил такую замечательную статью http://salesforcelearn.blogspot.com.by/2016/04/use-of-isdtp-parameter-in-url-in.html Внизу кстати так и написано что это хак.
[quote="AntonB"]isdtp=vw[/quote]
Это недокументированный параметр, поэтому использовать его можно на свой страх и риск.
Врядли это можно назвать косяком SF. Но то что упомянул его на форуме спасибо.
Я такого не использовал, но сразу нагуглил такую замечательную статью
http://salesforcelearn.blogspot.com.by/2016/04/use-of-isdtp-parameter-in-url-in.html
Внизу кстати так и написано что это хак.
Хотя вру :D . Использовал. Но тоже как злой хак.
вот тут
https://salesforce-developer.ru/forum/topic-adaptirovanie-vf-stranits-dlya-raboty-v-lightning-mode
isdtp=p1
Вроде пацаны сделали хорошую опцию -
Select "Don't create an opportunity" by Default in Convert Lead Window
. Но у меня она почему-то не работает. Что-то еще нужно кроме поставить галку? .
Вроде пацаны сделали хорошую опцию - [quote]Select "Don't create an opportunity" by Default in Convert Lead Window[/quote]. Но у меня она почему-то не работает. Что-то еще нужно кроме поставить галку?
.
Блин, только для Lightning.
При оплате подписки на data.com, в salesforce создаются поля вроде CompanyDunsNumber на лиде. Выглядят как стандартные поля, находятся в секции стандартных полей, постфикса "__c" нет. Решили отменить подписку, что успешно сделали пару месяцев назад. Сегодня всплыла проблема - поля, которые созданы благодаря подписке data.com тихо исчезли с прода и всех связанных sandboxes. Никаких notifications не приходило. НО - эти поля использовались в коде, в триггерах/классах. Код просто перестал работать, выдавая ошибку, что пытаемся зареференсить несуществующее поле. Пришлось срочно выпиливать логику, связанную с этими полями и заливать на прод без нее. Аккуратно подготовьтесь к отмене подписки data.com. Поля, которые создаются при подписке, можно найти в документации. Например, для лида: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_lead.htm?search_text=Lead ищите фразу "This field is only available to organizations that use Data.com Prospector or Data.com Clean.". На лиде создается всего 1 поле. Зато для аккаунта таких полей уже 5 https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_account.htm?search_text=Lead .
При оплате подписки на data.com, в salesforce создаются поля вроде CompanyDunsNumber на лиде. Выглядят как стандартные поля, находятся в секции стандартных полей, постфикса "__c" нет.
Решили отменить подписку, что успешно сделали пару месяцев назад. Сегодня всплыла проблема - поля, которые созданы благодаря подписке data.com тихо исчезли с прода и всех связанных sandboxes. Никаких notifications не приходило. НО - эти поля использовались в коде, в триггерах/классах. Код просто перестал работать, выдавая ошибку, что пытаемся зареференсить несуществующее поле. Пришлось срочно выпиливать логику, связанную с этими полями и заливать на прод без нее.
Аккуратно подготовьтесь к отмене подписки data.com. Поля, которые создаются при подписке, можно найти в документации. Например, для лида: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_lead.htm?search_text=Lead ищите фразу "This field is only available to organizations that use Data.com Prospector or Data.com Clean.". На лиде создается всего 1 поле. Зато для аккаунта таких полей уже 5 https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_account.htm?search_text=Lead .
SOSL FIND {project} IN All FIELDS RETURNING User(Id,LastModifiedBy.Name,Name ORDER BY Name DESC)
BAD RESPONSE: [{"message":"No such relation 'LastModifiedBy' on entity 'User'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names.","errorCode":"INVALID_FIELD"}]
Падает если его делать через /services/data/v42.0/tooling/search и не падает если его делать через /services/data/v42.0/search
SOSL [b]FIND {project} IN All FIELDS RETURNING User(Id,LastModifiedBy.Name,Name ORDER BY Name DESC)[/b]
BAD RESPONSE: [{"message":"No such relation 'LastModifiedBy' on entity 'User'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names.","errorCode":"INVALID_FIELD"}]
Падает если его делать через [b]/services/data/v42.0/tooling/search[/b] и не падает если его делать через [b]/services/data/v42.0/search[/b]
Объект : cleanDataService
[Parameters] name : CleanDataService labelPlural : Data Services label : Data Service keyPrefix : 07S
Объект - [b]GlobalValueSet[/b] на самом деле [b]sharedPickListDefinition[/b]
.
SOSL FIND {project} IN All FIELDS RETURNING User(Id,LastModifiedBy.Name,Name ORDER BY Name DESC)
BAD RESPONSE: [{"message":"No such relation 'LastModifiedBy' on entity 'User'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names.","errorCode":"INVALID_FIELD"}]
Падает если его делать через /services/data/v42.0/tooling/search и не падает если его делать через /services/data/v42.0/search У нас схожее было в тестах. Как-то решил эту проблему? Мы в итоге пришли к try-catch в тесте с проверкой текста ошибки, что не лучшее решение, на мой взгляд.
[quote="wilder"]SOSL [b]FIND {project} IN All FIELDS RETURNING User(Id,LastModifiedBy.Name,Name ORDER BY Name DESC)[/b]
BAD RESPONSE: [{"message":"No such relation 'LastModifiedBy' on entity 'User'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names.","errorCode":"INVALID_FIELD"}]
Падает если его делать через [b]/services/data/v42.0/tooling/search[/b] и не падает если его делать через [b]/services/data/v42.0/search[/b][/quote]
У нас схожее было в тестах. Как-то решил эту проблему?
Мы в итоге пришли к try-catch в тесте с проверкой текста ошибки, что не лучшее решение, на мой взгляд.
Как-то решил эту проблему?
Неа. Я просто сделал анализ всех обьектов и нашел аномалии.
Ну это уже ни в какие ворота
[b]FIND {devConsoleApp} IN All FIELDS RETURNING ApexPage(Id,LastModifiedBy.Name,Name ORDER BY Name DESC)[/b]
не находит страницу с именем [b]devConsoleApp[/b]
через SELECT ясное дело что все работает.
Волшебный поиск.
Допустим у вас есть LongText поле и в нем у вас храниться некий текст. В тексте есть GUID.
Волшебный поиск. Это тот который сверху находит только цифры из этого GUID.
Пример GUID
1667f7cf-6b23-1d53-1b2b-e99a070001e8
Если искать по 1667f7cf-6b23-1d53-1b2b-e99a070001e8 не находит. Если искать по 1667 или по 070001 находит. Как только пытветесь искать 1667f - нет результатов.
Волшебный поиск.
Допустим у вас есть LongText поле и в нем у вас храниться некий текст. В тексте есть GUID.
Волшебный поиск. Это тот который сверху находит только цифры из этого GUID.
Пример GUID
[code]1667f7cf-6b23-1d53-1b2b-e99a070001e8[/code]
Если искать по [b]1667f7cf-6b23-1d53-1b2b-e99a070001e8[/b] не находит. Если искать по [b]1667[/b] или по [b]070001[/b] находит. Как только пытветесь искать [b]1667f[/b] - нет результатов.
Косяк в Data Import Wizard: Попробовал пройти Hands-on Challenge Your text to link here... В Data Import Wizard загруз на этапе Edit Field Mapping: Accounts and Contacts. Когда выбрать поле в столбце Mapped Salesforce Object и нажать Map, то всплывает модальное окно, которое нельзя передвигать, а его кнопки Сanсel и Map закрыты нижней панелью [Cancel-Previous-Next], модальное окно оказалось под этой панелью. Это и в Chrome и в Opera. IE у меня вообще не высвечивает кнопку залогиниться (в Trailhead), Mozilla ставить влом, еще и там разочароваться... Похоже, что они задали жесткие размеры модального окна и не учли мониторы ноутбуков, которые меньше стационарных 17-дюймовок. ... Попробовал на 17-дюймовом мониторе - получилось. Значит Data Import Wizard на ноутбуках не работает.
Косяк в Data Import Wizard:
Попробовал пройти [b]Hands-on Challenge[/b]
[url=https://trailhead.salesforce.com/content/learn/modules/lex_implementation_data_management/lex_implementation_data_import?trail_id=force_com_dev_beginner]Your text to link here...[/url]
В [b]Data Import Wizard[/b] загруз на этапе [b]Edit Field Mapping: Accounts and Contacts[/b].
Когда выбрать поле в столбце [b]Mapped Salesforce Object[/b] и нажать [b]Map[/b], то всплывает модальное окно, которое нельзя передвигать, а его кнопки Сanсel и Map закрыты нижней панелью [Cancel-Previous-Next], модальное окно оказалось под этой панелью. Это и в Chrome и в Opera. IE у меня вообще не высвечивает кнопку залогиниться (в Trailhead), Mozilla ставить влом, еще и там разочароваться... Похоже, что они задали жесткие размеры модального окна и не учли мониторы ноутбуков, которые меньше стационарных 17-дюймовок.
...
Попробовал на 17-дюймовом мониторе - получилось. Значит Data Import Wizard на ноутбуках не работает.
Один и тот же SOQL в классике работает в Lightening нет. Объяснений пока нет.
[quote="Dmitry Shnyrev"][quote="wilder"]Один и тот же SOQL[/quote]
А пример можешь скинуть?[/quote]
Уже не актуально. Нашли в чем косяк.
В классике id 15 символов в молнии 18. Поля формул тоже принимают 15. Здесь и был косяк.
[quote="wilder"]Ну просто нет слов. Изменить параметр isExposed можно только через deploy
https://github.com/msrivastav13/mo-dx-plugin/issues/4[/quote]
Кто-то ещё работает не через sfdx cli? :)
Проблема, как я понимаю, только через tooling api.
Кто-то ещё работает не через sfdx cli? Проблема, как я понимаю, только через tooling api.
Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.
[quote="Developer"]Кто-то ещё работает не через sfdx cli?
Проблема, как я понимаю, только через tooling api.[/quote]
Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.
Кто-то ещё работает не через sfdx cli? Проблема, как я понимаю, только через tooling api.
Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.
Официальная документация никогда не была идеальной
[quote="wilder"][quote="Developer"]Кто-то ещё работает не через sfdx cli?
Проблема, как я понимаю, только через tooling api.[/quote]
Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.[/quote]
Официальная документация никогда не была идеальной :)
Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.
to find required resource Id: select id from LightningComponentResource WHERE LightningComponentBundleId='' Use your Org's "LightningComponentBundleId".
[quote="wilder"]Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.[/quote]
https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_lightningcomponentresource.htm
API version [b]45[/b] или выше?
services/data/v48.0/tooling/sobjects/LightningComponentBundle/{id}
to find required resource Id:
select id from LightningComponentResource WHERE LightningComponentBundleId=''
Use your Org's "LightningComponentBundleId".
[quote="Developer"]Кто-то ещё работает не через sfdx cli?[/quote]
Ну вот я например не работаю:) и не собираюсь
Не знаю, адекватный ли пример привожу. Но я когда-то также яро стоял против Angular CLI и во всю пилил свой сборщик на webpack. Но потом смирился. Понял что компания и сообщество лучше меня смогут сделать тул для работы с Ангуляром С sfdx cli примерно такая же ситуация. Стандартный тул который постоянно пилится в итоге может оказаться лучше чем куча своих костылей, особенно при работе с командой более одного человека.
Не знаю, адекватный ли пример привожу.
Но я когда-то также яро стоял против Angular CLI и во всю пилил свой сборщик на webpack.
Но потом смирился. Понял что компания и сообщество лучше меня смогут сделать тул для работы с Ангуляром
С sfdx cli примерно такая же ситуация. Стандартный тул который постоянно пилится в итоге может оказаться лучше чем куча своих костылей, особенно при работе с командой более одного человека.
особенно при работе с командой более одного чело
Но я когда-то также яро стоял против Angular CLI и во всю пилил свой сборщик на webpack. Но потом смирился. Понял что компания и сообщество лучше меня смогут сделать тул для работы с Ангуляром С sfdx cli примерно такая же ситуация. Стандартный тул который постоянно пилится в итоге может оказаться лучше чем куча своих костылей, особенно при работе с командой более одного человека.
Вся проблема в том, что не всегда удается использовать на проектах какие-то локальные приложения, или это требует кучу времени и разрешений. Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?
[quote="Dmitry Shnyrev"] особенно при работе с командой более одного чело[/quote][quote="Dmitry Shnyrev"]Но я когда-то также яро стоял против Angular CLI и во всю пилил свой сборщик на webpack.
Но потом смирился. Понял что компания и сообщество лучше меня смогут сделать тул для работы с Ангуляром
С sfdx cli примерно такая же ситуация. Стандартный тул который постоянно пилится в итоге может оказаться лучше чем куча своих костылей, особенно при работе с командой более одного человека.[/quote]
Вся проблема в том, что не всегда удается использовать на проектах какие-то локальные приложения, или это требует кучу времени и разрешений. Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?
Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?
Для людей, которые хотят работать исключительно в облаке, есть Developer console(но там не всё поддерживается). IDE на ПК ставить не обязательно.
[quote="wilder"]Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?[/quote]
Для людей, которые хотят работать исключительно в облаке, есть Developer console(но там не всё поддерживается).
IDE на ПК ставить не обязательно. :)
Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?
Для людей, которые хотят работать исключительно в облаке, есть Developer console(но там не всё поддерживается). IDE на ПК ставить не обязательно. :)
Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)
[quote="Developer"][quote="wilder"]Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?[/quote]
Для людей, которые хотят работать исключительно в облаке, есть Developer console(но там не всё поддерживается).
IDE на ПК ставить не обязательно. :)[/quote]
Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)
Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)
[quote="wilder"]Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)[/quote]
Самописная? :)
Браузер не лагает?
Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)
Wilder, мы уже столько лет ждем когда же ты явишь миру свое творение! Даешь нормальное описание и видосы на YouTube с примерами работы твоей облачной IDE.
Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?
Вот это не верное представление. В облаке мы хостим и запускаем, а разрабатываем локально. Так весь мир ИТ работает, чем мы отличаемся? Heroku, Azure, VPS. SF ничем не отличается кроме того что не дает возможность запускать код локально, из-за чего весь этот гемор с заливкой изменений в облако на каждый Ctrl+S. Это не фича SF, а огромный косяк с которым приходится мириться. А разницы редактировать код в браузере или в нормальной IDE нет. И то и то происходит на вашей машине и отправляется в SF при сохранении. Просто SF наконец-то дошли мозгами что надо по максимуму перенести разработку на локальную машину чтобы минимизировать время загрузки самой IDE и необходимых метаданных, и сократить количество данных и само кол-во запросов к SF API. Не у всех интернет гигабитный. А с браузерной IDE (своей или Developer Console) IDE грузится из SF к вам в браузер на каждое открытие страницы (если пока не принимать во внимание кэш браузера) и хорошо если все укладывается в пару мегабайт.
[quote="wilder"]Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)[/quote]
Wilder, мы уже столько лет ждем когда же ты явишь миру свое творение! :)
Даешь нормальное описание и видосы на YouTube с примерами работы твоей облачной IDE.
[quote="wilder"]Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?[/quote]
Вот это не верное представление. В облаке мы хостим и запускаем, а разрабатываем локально. Так весь мир ИТ работает, чем мы отличаемся? Heroku, Azure, VPS. SF ничем не отличается кроме того что не дает возможность запускать код локально, из-за чего весь этот гемор с заливкой изменений в облако на каждый Ctrl+S. Это не фича SF, а огромный косяк с которым приходится мириться. А разницы редактировать код в браузере или в нормальной IDE нет. И то и то происходит на вашей машине и отправляется в SF при сохранении. Просто SF наконец-то дошли мозгами что надо по максимуму перенести разработку на локальную машину чтобы минимизировать время загрузки самой IDE и необходимых метаданных, и сократить количество данных и само кол-во запросов к SF API. Не у всех интернет гигабитный. А с браузерной IDE (своей или Developer Console) IDE грузится из SF к вам в браузер на каждое открытие страницы (если пока не принимать во внимание кэш браузера) и хорошо если все укладывается в пару мегабайт.
2nd generation managed package
Можно получить частичный доступ к функционалу без лицензии
Например есть lwc компонент, который общается с apexclass. Так вот все чудесно работает во flexi page и не работает в appBuilder без лицензии
[quote="Den Brown"]а о какой лицензии идет речь?[/quote]
О лицензии на пакет для пользователя
Type T = system.type.forName(null,helperTypeClass)
/*
SALESFORCE BUG. helperTypeClass must have API version 48 and not more!!!
*/
handler handlerClass = (handler)JSON.deserialize(JSON.serialize(data.get('data')), T);
helperTypeClass должен иметь API версию не выше 48, иначе для случая разных namespacePrefix получим ошибку "Type cannot be deserialized". И соответственно можно использовать только T.newInstance()
[code]
Type T = system.type.forName(null,helperTypeClass)
/*
SALESFORCE BUG. helperTypeClass must have API version 48 and not more!!!
*/
handler handlerClass = (handler)JSON.deserialize(JSON.serialize(data.get('data')), T);
[/code]
helperTypeClass должен иметь API версию не выше 48, иначе для случая разных namespacePrefix получим ошибку [b]"Type cannot be deserialized"[/b]. И соответственно можно использовать только T.newInstance()