Регистрация  |  Вход

Косяки SALESFORCE о которых вы возможно не знаете

1. Настройки профиля не полностью доступны в метадате. Смотри рис 1.
Переходят только настройки тех аппликейшенс, у которых есть линк "Del"

Пример кусочка одного из профилей

<applicationVisibilities>
<application>BL_Live_Agent</application>
<default>false</default>
<visible>true</visible>
</applicationVisibilities>
<applicationVisibilities>
<application>Chatter_Answers_Moderator</application>
<default>false</default>
<visible>false</visible>
</applicationVisibilities>
<applicationVisibilities>
<application>Live_Agent_Supervisor</application>
<default>true</default>
<visible>true</visible>
</applicationVisibilities>
<applicationVisibilities>
<application>Service_Cloud_Console</application>
<default>false</default>
<visible>false</visible>
</applicationVisibilities>

Все что салесфорс не может выгрузить или загрузить указано
http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_unsupported_types.htm

1. Настройки профиля не полностью доступны в метадате. Смотри рис 1.
Переходят только настройки тех аппликейшенс, у которых есть линк "Del"

Пример кусочка одного из профилей
[code]
    <applicationVisibilities>
        <application>BL_Live_Agent</application>
        <default>false</default>
        <visible>true</visible>
    </applicationVisibilities>
    <applicationVisibilities>
        <application>Chatter_Answers_Moderator</application>
        <default>false</default>
        <visible>false</visible>
    </applicationVisibilities>
    <applicationVisibilities>
        <application>Live_Agent_Supervisor</application>
        <default>true</default>
        <visible>true</visible>
    </applicationVisibilities>
    <applicationVisibilities>
        <application>Service_Cloud_Console</application>
        <default>false</default>
        <visible>false</visible>
    </applicationVisibilities>
[/code]
Все что салесфорс не может выгрузить или загрузить указано 
[url]http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_unsupported_types.htm[/url]

2. Так же вы должны помнить о зависимостях во время получения метадаты.
Например.

Вам нужно получить перевод Custom Labels, для этого вы так же должны получить и сами Custom Labels иначе вы просто получите пустой файл.

Если вам нужно получить полную информацию о профиле вы так же должны не забыть получить информацию об объектах, лайаутах.

2. Так же вы должны помнить о зависимостях во время получения метадаты.
Например.

Вам нужно получить перевод Custom Labels, для этого вы так же должны получить и сами Custom Labels иначе вы просто получите пустой файл.

Если вам нужно получить полную информацию о профиле вы так же должны не забыть получить информацию об объектах, лайаутах.

wilder спасибо за информацию.

Отличную тему поднял "Косяки SF"!
Сам на своем веку повидал кучу багов, которые невозможно объяснить с разумной точки зрения SF.

Из последних (доказательства не сохранились, буду объяснять на пальцах):
1. Выкачал в ant метаданные с одного орга чтобы залить на другой. Многие объекты пришли без тега type и конечно орг приемник стал ругаться. Пришлось проставлять вручную всякие data, text и так далее. Глюк? Точно не скажу.
2. Вообще интересный баг заметили мои коллеги на одном проде. В lookup поле записей хранились ID записей которых не существует на орге. Любое обращение к такому полю (для получения связанного объекта) валило internal error. Не помню чем история закончилась, но было не очень весело доказывать заказчику что мудаки в SF а не наша компания.

wilder спасибо за информацию.

Отличную тему поднял "Косяки 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, сам пока не разобрался. Скорее всего присутствует какая-то избыточная информация.

Итак очередная порция багов. И снова профили

<tabVisibility> - выкачивается только для стандартныз профилей. Для кастомных выкачивается только значение DefaultOn

<userPermissions> - таже самая проблема, выкачивается только если <enabled>true</enabled>

<classAccesses>,<pageAccesses> - тут обратная ситуация, выкачивается вся инфа полностью, что не очень удобно если на орге приемнике нет каких-то классов или страниц.


PermissionSet - invalid parameter value, сам пока не разобрался. Скорее всего присутствует какая-то избыточная информация.

Работая с SalesForce заметил баг с бредскрамбами ("хлебные крошки"), суть в том, что он отрабатывает не корректно на некоторых страницах, т.е. возвращает не туда, куда должен.

Работая с SalesForce заметил баг с бредскрамбами ("хлебные крошки"), суть в том, что он отрабатывает не корректно на некоторых страницах, т.е. возвращает не туда, куда должен.

Вот буквально вчера наткнулся на интересное поведение ISBLANK функции

// VisualForce
{!ISBLANK(emptyLine)} // false
// where emptyLine = ''

Удалось решить проблему написав:

{!ISBLANK(TRIM(emptyLine))}

Вот буквально вчера наткнулся на интересное поведение ISBLANK функции

[code]
// VisualForce
{!ISBLANK(emptyLine)} // false
// where emptyLine = ''
[/code] 

Удалось решить проблему написав:
[code]
{!ISBLANK(TRIM(emptyLine))}
[/code]

Ничего себе сентябрьский БАГопад

Баг от Alex ну вообще ни в какие ворота не лезет.
Надо будет попробовать

Ничего себе сентябрьский БАГопад :)

Баг от Alex ну вообще ни в какие ворота не лезет.
Надо будет попробовать :) 

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

- Не корректно отрабатывает чекбокс "Select All". К примеру когда выбрал все айтемы при помощи этого чекбокса, а потом из списка какой нить убрал, то чекнутый чекбокс показывает что все айтемы веделены, для наглядности можно к примеру глянуть страницу, где выбирается какой тестовый метод запустить, там поп-ап, так же данный бажок встречается и в других местах

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

- Не корректно отрабатывает чекбокс "Select All". К примеру когда выбрал все айтемы при помощи этого чекбокса, а потом из списка какой нить убрал, то чекнутый чекбокс показывает что все айтемы веделены, для наглядности можно к примеру глянуть страницу, где выбирается какой тестовый метод запустить, там поп-ап, так же данный бажок встречается и в других местах 

Roman Bazylev
- Не корректно отрабатывает порой консоль, особенно при работе с тестами, бывает что неверно отображает покрытие, а бывает что и количество строк кода не верное выдает, часто приходится чистить историю запусков тестов, но и это не панацея, когда поможет, а когда и нет...

- Не корректно отрабатывает чекбокс "Select All". К примеру когда выбрал все айтемы при помощи этого чекбокса, а потом из списка какой нить убрал, то чекнутый чекбокс показывает что все айтемы веделены, для наглядности можно к примеру глянуть страницу, где выбирается какой тестовый метод запустить, там поп-ап, так же данный бажок встречается и в других местах

1. Поэтому использую свой тул
2. Нужно создать кейс в салесфорсе, может поможет

[quote="Roman Bazylev"]- Не корректно отрабатывает порой консоль, особенно при работе с тестами, бывает что неверно отображает покрытие, а бывает что и количество строк кода не верное выдает, часто приходится чистить историю запусков тестов, но и это не панацея, когда поможет, а когда и нет...

- Не корректно отрабатывает чекбокс "Select All". К примеру когда выбрал все айтемы при помощи этого чекбокса, а потом из списка какой нить убрал, то чекнутый чекбокс показывает что все айтемы веделены, для наглядности можно к примеру глянуть страницу, где выбирается какой тестовый метод запустить, там поп-ап, так же данный бажок встречается и в других местах[/quote]

1. Поэтому использую свой тул
2. Нужно создать кейс в салесфорсе, может поможет

wilder
Поэтому использую свой тул

Я для получения покрытия кода из орга писал в свое время тулзу, которая доставала данные через Tooling API.
Тогда использовал python. Получилось очень классно. Параллельно один из разработчиков сделал тоже самое на Java.

Так что этим кто только не занимается

[quote="wilder"]Поэтому использую свой тул [/quote]

Я для получения покрытия кода из орга писал в свое время тулзу, которая доставала данные через Tooling API.
Тогда использовал python. Получилось очень классно. Параллельно один из разработчиков сделал тоже самое на Java. 

Так что этим кто только не занимается :) 

Dmitry Shnyrev
wilder
Поэтому использую свой тул

Я для получения покрытия кода из орга писал в свое время тулзу, которая доставала данные через Tooling API.
Тогда использовал python. Получилось очень классно. Параллельно один из разработчиков сделал тоже самое на Java.

Так что этим кто только не занимается :)

Дело в том что сторонние тулы работают лучше чем родные :)

[quote="Dmitry Shnyrev"][quote="wilder"]Поэтому использую свой тул [/quote]

Я для получения покрытия кода из орга писал в свое время тулзу, которая доставала данные через Tooling API.
Тогда использовал python. Получилось очень классно. Параллельно один из разработчиков сделал тоже самое на Java. 

Так что этим кто только не занимается :)[/quote]

Дело в том что сторонние тулы работают лучше чем родные :)

wilder
Дело в том что сторонние тулы работают лучше чем родные :)

А самописные, ну вообще жгут

[quote="wilder"]Дело в том что сторонние тулы работают лучше чем родные :)[/quote]
А самописные, ну вообще жгут :) 

Очередной косяк.

Если вы делаете деплой объекта без перевода, то весь перевод который был до этого стирается.

Похожая проблема с ченджсетами. Тут наоборот если вы делаете деплой транслейшена без объекта, то перевод стирается.

Очередной косяк.

Если вы делаете деплой объекта без перевода, то весь перевод который был до этого стирается.

Похожая проблема с ченджсетами. Тут наоборот если вы делаете деплой транслейшена без объекта, то перевод стирается.

Столкнулся сегодня с интересных косяком.

Зашел не прод задеплоить changeSet c одной маленькой VF страничкой. Деплой показал что ОГРОМНОЕ количество ошибок на проде. Это показалось очень странным, потому что коллега деплоил большой changeSet буквально за день до меня и проблем никаких не было, как и изменений на проде.

По ошибкам посмотрели что все тесты валятся на одной строчке:

Profile profile = [select id, Name from profile where name='System Administrator'];

Эта самая безобидная строчка которая может быть в тестах, весь System Administrator же есть всегда.

А вот нет оказывается! Я выполнял деплой под русских пользователем, а для него name уже 'Системный Администратор'. Ну, думаю, ничего страшного, сейчас поменяю на developerName как, например, в RecordTypes делается в таких случаях. А вот и облом - нет такого поля в Profile объекте и вроде нет никаких похожих.

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

Или там не так все сложно и я преувеличил?

Столкнулся сегодня с интересных косяком.

Зашел не прод задеплоить changeSet c одной маленькой VF страничкой. Деплой показал что ОГРОМНОЕ количество ошибок на проде. Это показалось очень странным, потому что коллега деплоил большой changeSet буквально за день до меня и проблем никаких не было, как и изменений на проде.

По ошибкам посмотрели что все тесты валятся на одной строчке:

[code]
Profile profile = [select id, Name from profile where name='System Administrator'];
[/code]

Эта самая безобидная строчка которая может быть в тестах, весь System Administrator же есть всегда.

А вот нет оказывается! Я выполнял деплой под русских пользователем, а для него name уже 'Системный Администратор'. Ну, думаю, ничего страшного, сейчас поменяю на developerName как, например, в RecordTypes делается в таких случаях. А вот и облом - нет такого поля в Profile объекте и вроде нет никаких похожих.

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

Или там не так все сложно и я преувеличил? :) 

Млин, а проблема то оказывается куда глубже!

Если мне надо знать кто в данные момент работает со страницей, админ или не админ, то получается я уже не могу опираться на Name профиля. А на что тогда могу? На Id? Хардкод? Получается 2 варианта - либо на ровне с Name = "System Administrator" надо проверять Name = "Системный Администратор" ? Или заносить Id системного администратора в Custom Settings и доставать уже оттуда (не забывая при этом на каждом орге эту переменную там создать).

Млин, а проблема то оказывается куда глубже!

Если мне надо знать кто в данные момент работает со страницей, админ или не админ, то получается я уже не могу опираться на Name профиля. А на что тогда могу? На Id? Хардкод? Получается 2 варианта - либо на ровне с Name = "System Administrator" надо проверять Name = "Системный Администратор" ? Или заносить Id системного администратора в Custom Settings и доставать уже оттуда (не забывая при этом на каждом орге эту переменную там создать).

По поводу косяков, я думаю что то что sf не проверяет зарезервирование слова, при создании класов, есть косяком.

Вот сегодня столкнулся с тем что вот такая строчка не работает:

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.

По поводу косяков, я думаю что то что 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.

Alex Tsitsura
По поводу косяков, я думаю что то что sf не проверяет зарезервирование слова, при создании класов, есть косяком.

Вот сегодня столкнулся с тем что вот такая строчка не работает:

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.

Еще можно класс назвать Test и все упадет)

Не знаю как в новых апиверсиях, но раньше было можно.

[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]

Еще можно класс назвать Test и все упадет)

Не знаю как в новых апиверсиях, но раньше было можно.

Итак очередная порция багов.

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%"/> получаем ошибку от салесфорс, что она не может сохранить эту страницу.

Итак очередная порция багов.

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)" сохраняется без проблем

Очередной косячок

при попытке сохранить onclick="selectType('{!HTMLENCODE(Item.lastModifiedDate)}',this,5)" - получаем [b]Compilation error: Incorrect argument type for function 'HTMLENCODE()'. [/b]

а вот onclick="selectType('{!Item.lastModifiedDate}',this,5)" сохраняется без проблем

Сегодня столкнулся со странным косяком. В эклипс делаю изменения в коде и сохраняю страницу или класс. эклипс молча сохраняет (ошибок нет), показывает что изменения сохранены, а на орге изменения не появляются. Остается старый вариант исходного кода. ЖЕСТЬ! Я уже мозг сломал. Приходится сравнивать исходники из Эклипс и в браузере чисто визуально. Вот это реально Salesforce штормит.

Сегодня столкнулся со странным косяком. В эклипс делаю изменения в коде и сохраняю страницу или класс. эклипс молча сохраняет (ошибок нет), показывает что изменения сохранены, а на орге изменения не появляются. Остается старый вариант исходного кода. ЖЕСТЬ! Я уже мозг сломал. Приходится сравнивать исходники из Эклипс и в браузере чисто визуально. Вот это реально Salesforce штормит.

Dmitry Shnyrev
Сегодня столкнулся со странным косяком. В эклипс делаю изменения в коде и сохраняю страницу или класс. эклипс молча сохраняет (ошибок нет), показывает что изменения сохранены, а на орге изменения не появляются. Остается старый вариант исходного кода. ЖЕСТЬ! Я уже мозг сломал. Приходится сравнивать исходники из Эклипс и в браузере чисто визуально. Вот это реально Salesforce штормит.

Теперь ты понимаешь почему я его бросил ? :)

[quote="Dmitry Shnyrev"]Сегодня столкнулся со странным косяком. В эклипс делаю изменения в коде и сохраняю страницу или класс. эклипс молча сохраняет (ошибок нет), показывает что изменения сохранены, а на орге изменения не появляются. Остается старый вариант исходного кода. ЖЕСТЬ! Я уже мозг сломал. Приходится сравнивать исходники из Эклипс и в браузере чисто визуально. Вот это реально Salesforce штормит.[/quote]

Теперь ты понимаешь почему я его бросил ? :)

Да, конечно понимаю Но не могу сделать над собой усилие
Свежи еще в памяти мытарства с самим Sublime - не воспринимает мозг Keyboard Shortcuts, а это основная фича данного редактора.

Да, конечно понимаю :) Но не могу сделать над собой усилие :) 
Свежи еще в памяти мытарства с самим Sublime - не воспринимает мозг Keyboard Shortcuts, а это основная фича данного редактора. 

Dmitry Shnyrev
Да, конечно понимаю Но не могу сделать над собой усилие
Свежи еще в памяти мытарства с самим Sublime - не воспринимает мозг Keyboard Shortcuts, а это основная фича данного редактора.

ну так переназначь клавиши, делов то...

[quote="Dmitry Shnyrev"]Да, конечно понимаю :) Но не могу сделать над собой усилие :) 
Свежи еще в памяти мытарства с самим Sublime - не воспринимает мозг Keyboard Shortcuts, а это основная фича данного редактора.[/quote]

ну так переназначь клавиши, делов то...

не знаю "косяк" ли это...
коллеги заметили, что если в одном сендбоксе сделать на объекте кнопку типа УРЛ с адресом:
apex/myPage?id={!something}
все работает норм.

но если перенести эту кнопку в фул-копи сендбокс, то открывается окно с адресом:
.../servlet/apex/myPage?id=234324324
с ошибкой, что мол нет такого УРЛ

и пришлось дописать слэш:
/apex/myPage?id={!something}
тогда все норм

и не сразу поймешь в чем дело

не знаю "косяк" ли это...
коллеги заметили, что если в одном сендбоксе сделать на объекте кнопку типа УРЛ с адресом:
apex/myPage?id={!something}
все работает норм.

но если перенести эту кнопку в фул-копи сендбокс, то открывается окно с адресом:
.../[b]servlet[/b]/apex/myPage?id=234324324
с ошибкой, что мол нет такого УРЛ

и пришлось дописать слэш:
[b]/[/b]apex/myPage?id={!something}
тогда все норм

и не сразу поймешь в чем дело

wilder
ну так переназначь клавиши, делов то...

Не смысл в переназначении, а смысл в их наличии. Я люблю когда все видеть и получать доступ к нужному функционалу в 2-3 клика мышки. А запоминать какая клавиша за что отвечает не очень люблю

[quote="wilder"]ну так переназначь клавиши, делов то...[/quote]
Не смысл в переназначении, а смысл в их наличии. Я люблю когда все видеть и получать доступ к нужному функционалу в 2-3 клика мышки. А запоминать какая клавиша за что отвечает не очень люблю :) 

Den Brown
и пришлось дописать слэш:
/apex/myPage?id={!something}

Всегда пиши слеш первым в урлах. Это признак того что отсчет будет вестись от корня сайта!
Если слеша не будет будет много проблем. В SF это проблема можно сказать косвенная, а при разработки нормального сайта очень актуальная, да и вообще не это проблема а догма.

[quote="Den Brown"]и пришлось дописать слэш: 
/apex/myPage?id={!something} [/quote]
Всегда пиши слеш первым в урлах. Это признак того что отсчет будет вестись от корня сайта!
Если слеша не будет будет много проблем. В SF это проблема можно сказать косвенная, а при разработки нормального сайта очень актуальная, да и вообще не это проблема а догма.

Глючный Salesforce
Как можно на простой странице логина иметь 4 ошибки?

Я понимаю что это не критично, и эти ресурсы не нужны для этой страницы, но млин, можно же их и подгружать? Или я чего-то не понимаю?

Глючный Salesforce
Как можно на простой странице логина иметь 4 ошибки?
[img]/pics/12/medium_2014-11-06_11-22-46.png[/img]
Я понимаю что это не критично, и эти ресурсы не нужны для этой страницы, но млин, можно же их и подгружать? Или я чего-то не понимаю?

БЛЯ!!!! Сегодня Eclipse показал себя во всей красе!!!
Не знаю какого х..ра но у меня сохраняются изменения поверх чужих без каких либо предупреждений и ошибок.
Сначала пару раз обратили внимание что пропадают изменения (два человека могут работают с одними и теми же классами) других программистов.
А сейчас провели эксперимент. Я внес изменения, коллега (сидит на MavensMate) попробовал сохранить, получил предупреждение, что есть более новая версия и ему нужно было рефрешнуть класс, чтобы сохранить свои изменения. После этого уже я, без обновления класса, сохраняю и "О, бля, чудо" сохранило ни о чем никого не предупреждая! Все изменения что делал коллега ушли лесом.
КРУТО, как такое вообще может быть? И интересно сколько кода похерилось таким образом?
ps. извините за ненормативную лексику, но других слов просто нет.

БЛЯ!!!! Сегодня Eclipse показал себя во всей красе!!!
[color=red]Не знаю какого х..ра но у меня сохраняются изменения поверх чужих без каких либо предупреждений и ошибок.[/color]
Сначала пару раз обратили внимание что пропадают изменения (два человека могут работают с одними и теми же классами) других программистов. 
А сейчас провели эксперимент. Я внес изменения, коллега (сидит на MavensMate) попробовал сохранить, получил предупреждение, что есть более новая версия и ему нужно было рефрешнуть класс, чтобы сохранить свои изменения. После этого уже я, без обновления класса, сохраняю и "О, бля, чудо" сохранило ни о чем никого не предупреждая! Все изменения что делал коллега ушли лесом. 
КРУТО, как такое вообще может быть? И интересно сколько кода похерилось таким образом?
ps. извините за ненормативную лексику, но других слов просто нет. 

Dmitry Shnyrev
БЛЯ!!!! Сегодня Eclipse показал себя во всей красе!!!
Не знаю какого х..ра но у меня сохраняются изменения поверх чужих без каких либо предупреждений и ошибок.
Сначала пару раз обратили внимание что пропадают изменения (два человека могут работают с одними и теми же классами) других программистов.
А сейчас провели эксперимент. Я внес изменения, коллега (сидит на MavensMate) попробовал сохранить, получил предупреждение, что есть более новая версия и ему нужно было рефрешнуть класс, чтобы сохранить свои изменения. После этого уже я, без обновления класса, сохраняю и "О, бля, чудо" сохранило ни о чем никого не предупреждая! Все изменения что делал коллега ушли лесом.
КРУТО, как такое вообще может быть? И интересно сколько кода похерилось таким образом?
ps. извините за ненормативную лексику, но других слов просто нет.

Я тебе что вчера говорил....надо было задуматься :(

[quote="Dmitry Shnyrev"]БЛЯ!!!! Сегодня Eclipse показал себя во всей красе!!!
[color=red]Не знаю какого х..ра но у меня сохраняются изменения поверх чужих без каких либо предупреждений и ошибок.[/color]
Сначала пару раз обратили внимание что пропадают изменения (два человека могут работают с одними и теми же классами) других программистов. 
А сейчас провели эксперимент. Я внес изменения, коллега (сидит на MavensMate) попробовал сохранить, получил предупреждение, что есть более новая версия и ему нужно было рефрешнуть класс, чтобы сохранить свои изменения. После этого уже я, без обновления класса, сохраняю и "О, бля, чудо" сохранило ни о чем никого не предупреждая! Все изменения что делал коллега ушли лесом. 
КРУТО, как такое вообще может быть? И интересно сколько кода похерилось таким образом?
ps. извините за ненормативную лексику, но других слов просто нет.[/quote]

Я тебе что вчера говорил....надо было задуматься :(

Dmitry Shnyrev
Глючный Salesforce
Как можно на простой странице логина иметь 4 ошибки?

Я понимаю что это не критично, и эти ресурсы не нужны для этой страницы, но млин, можно же их и подгружать? Или я чего-то не понимаю?

Это они уже чуток подправили, раньше было хуже.

[quote="Dmitry Shnyrev"]Глючный Salesforce
Как можно на простой странице логина иметь 4 ошибки?
[img]/pics/12/medium_2014-11-06_11-22-46.png[/img]
Я понимаю что это не критично, и эти ресурсы не нужны для этой страницы, но млин, можно же их и подгружать? Или я чего-то не понимаю?[/quote]

Это они уже чуток подправили, раньше было хуже.

wilder
Я тебе что вчера говорил....надо было задуматься :(

ВСЁ!!! В строю MavensMate прибыло!!! Eclipse остается в анналах истории.
Я теперь на MavensMate.
Установка конечно посложнее чем у Force.com IDE, но это нормальный процесс для Sumlime Text. Был у меня опыт с этим редактором давно, когда изучал его. Да, там надо установить Package Control. А для самого MM нужен еще Python 2.7 версии и указать путь к Sublime Home Folder (почему-то определил сам неправильно). И в итоге профит. Все работает :))
Сразу в ход пустил быстрый поиск по проекту - ctrl+P и вводим имя - радость неописуемая :))) Это моя любимая фича в Intellij Idea (только там double-Shift). Жаль нет навигации по коду по нажатию на Ctrl + клик по имени класса (например открыть контроллер из страницы.) или переход на метод в том же классе. Или может он есть, только я не нашел?
В общем пока впечатления только положительные, будем надеяться что так и будет дальше

[quote="wilder"]Я тебе что вчера говорил....надо было задуматься :([/quote]
ВСЁ!!! В строю [b]MavensMate[/b] прибыло!!! Eclipse остается в анналах истории.
Я теперь на MavensMate.
Установка конечно посложнее чем у Force.com IDE, но это нормальный процесс для Sumlime Text. Был у меня опыт с этим редактором давно, когда изучал его. Да, там надо установить Package Control. А для самого MM нужен еще Python 2.7 версии и указать путь к Sublime Home Folder (почему-то определил сам неправильно). И в итоге профит. Все работает :))
Сразу в ход пустил быстрый поиск по проекту - ctrl+P и вводим имя - радость неописуемая :))) Это моя любимая фича в Intellij Idea (только там double-Shift). Жаль нет навигации по коду по нажатию на Ctrl + клик по имени класса (например открыть контроллер из страницы.) или переход на метод в том же классе. Или может он есть, только я не нашел?
В общем пока впечатления только положительные, будем надеяться что так и будет дальше :) 

Dmitry Shnyrev
wilder
Я тебе что вчера говорил....надо было задуматься :(

ВСЁ!!! В строю MavensMate прибыло!!! Eclipse остается в анналах истории.
Я теперь на MavensMate.
Установка конечно посложнее чем у Force.com IDE, но это нормальный процесс для Sumlime Text. Был у меня опыт с этим редактором давно, когда изучал его. Да, там надо установить Package Control. А для самого MM нужен еще Python 2.7 версии и указать путь к Sublime Home Folder (почему-то определил сам неправильно). И в итоге профит. Все работает :))
Сразу в ход пустил быстрый поиск по проекту - ctrl+P и вводим имя - радость неописуемая :))) Это моя любимая фича в Intellij Idea (только там double-Shift). Жаль нет навигации по коду по нажатию на Ctrl + клик по имени класса (например открыть контроллер из страницы.) или переход на метод в том же классе. Или может он есть, только я не нашел?
В общем пока впечатления только положительные, будем надеяться что так и будет дальше :)

Я тоже уже пару дней как перешёл. Впечатления тоже строго положительные. Главная фишка что работает все очень быстро.

[quote="Dmitry Shnyrev"][quote="wilder"]Я тебе что вчера говорил....надо было задуматься :([/quote]
ВСЁ!!! В строю [b]MavensMate[/b] прибыло!!! Eclipse остается в анналах истории.
Я теперь на MavensMate.
Установка конечно посложнее чем у Force.com IDE, но это нормальный процесс для Sumlime Text. Был у меня опыт с этим редактором давно, когда изучал его. Да, там надо установить Package Control. А для самого MM нужен еще Python 2.7 версии и указать путь к Sublime Home Folder (почему-то определил сам неправильно). И в итоге профит. Все работает :))
Сразу в ход пустил быстрый поиск по проекту - ctrl+P и вводим имя - радость неописуемая :))) Это моя любимая фича в Intellij Idea (только там double-Shift). Жаль нет навигации по коду по нажатию на Ctrl + клик по имени класса (например открыть контроллер из страницы.) или переход на метод в том же классе. Или может он есть, только я не нашел?
В общем пока впечатления только положительные, будем надеяться что так и будет дальше :)[/quote]

Я тоже уже пару дней как перешёл. Впечатления тоже строго положительные. Главная фишка что работает все очень быстро.

wilder
Главная фишка что работает все очень быстро.

Это однозначно.

Тащусь от minimap - ориентироваться по коду однозначно проще. Сразу можно перейти в нужный участок большого класса просто кликнув по нему в minimap.

Опять же повторюсь не хватает навигации по методу ctrl + клик по названию метода, чтобы перейти к этому методу, или переменной, чтобы перейти к ее объявлению.

[quote="wilder"]Главная фишка что работает все очень быстро.[/quote]
Это однозначно.

Тащусь от minimap - ориентироваться по коду однозначно проще. Сразу можно перейти в нужный участок большого класса просто кликнув по нему в minimap.

Опять же повторюсь не хватает навигации по методу ctrl + клик по названию метода, чтобы перейти к этому методу, или переменной, чтобы перейти к ее объявлению.

Я думаю про MavensMate можно поднимать старую тему !!!!
и делиться впечатлениями.
Eclipse vs MavensMate

Я думаю про MavensMate можно поднимать старую тему !!!! :)
и делиться впечатлениями.
[url=https://salesforce-developer.ru/forum/topic-eclipse-vs-mavensmate]Eclipse vs MavensMate[/url]

Столкнулся с таким багом. У меня была задача связанная с расшариванием Contacts. По дефолту их OWD привязано к Account, отвязываем и ставим отдельное правило - Private - кнопки расшарить нет. Что только ни делал - другие записи юзер не видит а шаринга на свои нет. Оказалось кнопка есть только если контакт привязать к аккаунту , тогда сразу появляется , если удалить привязку то снова пропадает. Если делать в коде то всё работает нормально, можно шарить и без аккаунтовые, но все равно это бред, получается настройка есть а сэйлсфорс всё равно работает по дефолту.

Столкнулся с таким багом. У меня была задача связанная с расшариванием Contacts. По дефолту их OWD привязано к Account, отвязываем и ставим отдельное правило - Private - кнопки расшарить нет. Что только ни делал - другие записи юзер не видит а шаринга на свои нет. Оказалось кнопка есть только если контакт привязать к аккаунту , тогда сразу появляется , если удалить привязку то снова пропадает. Если делать в коде то всё работает нормально, можно шарить и без аккаунтовые, но все равно это бред, получается настройка есть а сэйлсфорс всё равно работает по дефолту.

Новогодний баг

Есть у вас предположим страница и есть там скрипт

<script>
function updateResult() {
jQuery('ul.li > li').each(function(){
var html = jQuery(this).html();
html = html.replace(/&lt;b&gt;/g,"<b>").replace(/&lt;\/b&gt;/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(/&#60;b&#62;/g,"<b>").replace(/&#60;\/b&#62;/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>

Новогодний баг

Есть у вас предположим страница и есть там скрипт
[code]
<script>
		function updateResult() {
			jQuery('ul.li > li').each(function(){
				var html = jQuery(this).html();
				html = html.replace(/&lt;b&gt;/g,"<b>").replace(/&lt;\/b&gt;/g,"</b>");
				console.log(html);
				jQuery(this).html(html);
			});
		toggleButtons(true);
	}
	</script>
[/code]

реально на странице в браузере видим

[code]
<script>
  function updateResult() {
   jQuery('ul.li > li').each(function(){
    var html = jQuery(this).html();
    html = html.replace(/&#60;b&#62;/g,"<b>").replace(/&#60;\/b&#62;/g,"</b>");
    jQuery(this).html(html);
   });
  toggleButtons(true);
 }
 </script>
[/code]


решение

[code]
<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>
[/code]

wilder
Новогодний баг

Есть у вас предположим страница и есть там скрипт

<script>
function updateResult() {
jQuery('ul.li > li').each(function(){
var html = jQuery(this).html();
html = html.replace(/&lt;b&gt;/g,"<b>").replace(/&lt;\/b&gt;/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(/&#60;b&#62;/g,"<b>").replace(/&#60;\/b&#62;/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>

имхо это какой-то костыль

[quote="wilder"]Новогодний баг

Есть у вас предположим страница и есть там скрипт
[code]
<script>
		function updateResult() {
			jQuery('ul.li > li').each(function(){
				var html = jQuery(this).html();
				html = html.replace(/&lt;b&gt;/g,"<b>").replace(/&lt;\/b&gt;/g,"</b>");
				console.log(html);
				jQuery(this).html(html);
			});
		toggleButtons(true);
	}
	</script>
[/code]

реально на странице в браузере видим

[code]
<script>
  function updateResult() {
   jQuery('ul.li > li').each(function(){
    var html = jQuery(this).html();
    html = html.replace(/&#60;b&#62;/g,"<b>").replace(/&#60;\/b&#62;/g,"</b>");
    jQuery(this).html(html);
   });
  toggleButtons(true);
 }
 </script>
[/code]


решение

[code]
<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>
[/code][/quote]

имхо это какой-то костыль

и помоему тебе надо

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);
}

и помоему тебе надо 
[code]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);
}[/code]

Maxim Elets
и помоему тебе надо
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> :)

[quote="Maxim Elets"]и помоему тебе надо 
[code]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);
}[/code][/quote]

не. это только по твоему. А мне именно нужно было заменить <b>.*?</b> :)

wilder
Maxim Elets
и помоему тебе надо
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> :)


Только <b> ?

[quote="wilder"][quote="Maxim Elets"]и помоему тебе надо 
[code]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);
}[/code][/quote]

не. это только по твоему. А мне именно нужно было заменить <b>.*?</b> :)[/quote]
Только <b> ?

Maxim Elets
wilder
Maxim Elets
и помоему тебе надо
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> :)


Только <b> ?

Да. Только это. потому что есть другой баг :)

[quote="Maxim Elets"][quote="wilder"][quote="Maxim Elets"]и помоему тебе надо 
[code]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);
}[/code][/quote]

не. это только по твоему. А мне именно нужно было заменить <b>.*?</b> :)[/quote]
Только <b> ?[/quote]

Да. Только это. потому что есть другой баг :)

Ну и баг который меня бесит уже года 3

у вас есть текстовый файл размером скажем 0.5 Мега.

file.split('\n');

И вот эта операция возвращает нам System.LimitException: Regex too complicated

Я помню в далекие 90-е, мой древненький компьютер легко переваривал файлы рзмером в 10 Мега. Понятно что и эту проблему можно решить. Просто надоело уже это все решать.

Ну и баг который меня бесит уже года 3

у вас есть текстовый файл размером скажем 0.5 Мега.

file.split('\n');

И вот эта операция возвращает нам [b]System.LimitException: Regex too complicated[/b]

Я помню в далекие 90-е, мой древненький компьютер легко переваривал файлы рзмером в 10 Мега. Понятно что и эту проблему можно решить. Просто надоело уже это все решать.

wilder
file.split('\n');

И вот эта операция возвращает нам System.LimitException: Regex too complicated

сам столкнулся, когда парсил csv файлы... может не баг, но "скрытый" лимит точно...

[quote="wilder"]file.split('\n');

И вот эта операция возвращает нам System.LimitException: Regex too complicated[/quote]

сам столкнулся, когда парсил csv файлы... может не баг, но "скрытый" лимит точно...

Я бы советовал всем свои баги постить в качестве кейсов 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

yurybond
Я бы советовал всем свои баги постить в качестве кейсов partner community (partner portal). И отчитываться здесь по статусу.

Иначе это просто жалобы на жизнь без какой либо попытки донести ее до тех поддержки и как-то решить.

Вот например, я нашел, что в Environment Hub нельзя создать Group Edition орг. Записал видео с багом, залил на youtube.com и прислал им линк вместе с описанием проблемы.
Проблему они признали и внесли в список known issues - https://success.salesforce.com/issues_view?id=a1p300000008Xd2

Судя по количеству багов мне придется открывать свой канал на ютубе.

[quote="yurybond"]Я бы советовал всем свои баги постить в качестве кейсов partner community (partner portal). И отчитываться здесь по статусу.

Иначе это просто жалобы на жизнь без какой либо попытки донести ее до тех поддержки и как-то решить.

Вот например, я нашел, что в Environment Hub нельзя создать Group Edition орг. Записал видео с багом, залил на youtube.com и прислал им линк вместе с описанием проблемы. 
Проблему они признали и внесли в список known issues - https://success.salesforce.com/issues_view?id=a1p300000008Xd2[/quote]

Судя по количеству багов мне придется открывать свой канал на ютубе.

Из последнего.

На Lead делаем кнопку со скриптом alert('{!Lead.Id}'); и как думаете что получаем ?... Рандомное число вместо ID

Из последнего.

На Lead делаем кнопку со скриптом alert('{!Lead.Id}'); и как думаете что получаем ?... Рандомное число вместо ID

Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU . Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.

Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU . Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.

Alex Tsitsura
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.

Проблеме уже почти неделя.
Да и вообще куча проблем на cs* инстансах последнее время.
Словил наверно 5-6 Internal Server Error за неделю.

[quote="Alex Tsitsura"]Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.[/quote]
Проблеме уже почти неделя.
Да и вообще куча проблем на cs* инстансах последнее время.
Словил наверно 5-6 Internal Server Error за неделю.

Gres
Alex Tsitsura
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.

Проблеме уже почти неделя.
Да и вообще куча проблем на cs* инстансах последнее время.
Словил наверно 5-6 Internal Server Error за неделю.

Да и на дев оргах, за вчера вылетело 2 Internal Server Error.
А cs7 на котором я работаю с восьмого января держал тест запущенным http://gyazo.com/817fe43e6a73fc9fa2584e03fe4783cc

[quote="Gres"][quote="Alex Tsitsura"]Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.[/quote]
Проблеме уже почти неделя.
Да и вообще куча проблем на cs* инстансах последнее время.
Словил наверно 5-6 Internal Server Error за неделю.[/quote]
Да и на дев оргах, за вчера вылетело 2 Internal Server Error.
А cs7 на котором я работаю с восьмого января держал тест запущенным http://gyazo.com/817fe43e6a73fc9fa2584e03fe4783cc

Maxim Elets
Gres
Alex Tsitsura
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.

Проблеме уже почти неделя.
Да и вообще куча проблем на cs* инстансах последнее время.
Словил наверно 5-6 Internal Server Error за неделю.

Да и на дев оргах, за вчера вылетело 2 Internal Server Error.
А cs7 на котором я работаю с восьмого января держал тест запущенным http://gyazo.com/817fe43e6a73fc9fa2584e03fe4783cc

У нас вчера проблема с тестами пофиксилась, а то были в запущенном состоянии 3 дня.
Правда как-то покрытие кода считается очень странно.

[quote="Maxim Elets"][quote="Gres"][quote="Alex Tsitsura"]Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU. Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.[/quote]
Проблеме уже почти неделя.
Да и вообще куча проблем на cs* инстансах последнее время.
Словил наверно 5-6 Internal Server Error за неделю.[/quote]
Да и на дев оргах, за вчера вылетело 2 Internal Server Error.
А cs7 на котором я работаю с восьмого января держал тест запущенным http://gyazo.com/817fe43e6a73fc9fa2584e03fe4783cc[/quote]
У нас вчера проблема с тестами пофиксилась, а то были в запущенном состоянии 3 дня.
Правда как-то покрытие кода считается очень странно.

Ну покрытие это давняя проблема. Где-то пооцентов на 12 врет.

Ну покрытие это давняя проблема. Где-то пооцентов на 12 врет.

wilder
Ну покрытие это давняя проблема. Где-то пооцентов на 12 врет.

Это еще с того времени, когда они выпилили старый UI для запуска тестов + убрали подсветку и покрытие по классам.
Просто не всегда просто это доказать менеджерам.

[quote="wilder"]Ну покрытие это давняя проблема. Где-то пооцентов на 12 врет.[/quote]
Это еще с того времени, когда они выпилили старый UI для запуска тестов + убрали подсветку и покрытие по классам.
Просто не всегда просто это доказать менеджерам.

Alex Tsitsura
Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU . Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.

Большое спасибо! хорошо, что вчера это прочел, иначе сегодня бы был в непонятках.

[quote="Alex Tsitsura"]Вчера столкнулся с проблемой что тести, запущение через дев консоль, или через Test Execution, не ранятса на инстансе cs14. Проблема фиксится https://success.salesforce.com/issues_view?id=a1p300000008XgLAAU . Но если тести запускать с помощу еклипса или мавенс мейта, то все ок.[/quote]

Большое спасибо! хорошо, что вчера это прочел, иначе сегодня бы был в непонятках.


Gres
wilder
Ну покрытие это давняя проблема. Где-то пооцентов на 12 врет.

Это еще с того времени, когда они выпилили старый UI для запуска тестов + убрали подсветку и покрытие по классам.
Просто не всегда просто это доказать менеджерам.

Подсветка есть в девелопер консоли.

[quote="Gres"][quote="wilder"]Ну покрытие это давняя проблема. Где-то пооцентов на 12 врет.[/quote]
Это еще с того времени, когда они выпилили старый UI для запуска тестов + убрали подсветку и покрытие по классам.
Просто не всегда просто это доказать менеджерам.[/quote]

Подсветка есть в девелопер консоли.

Сегодня столкнулся с очень интересной проблемой 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 и передавался в качестве параметра в

<apex:attribute name="..." type="CustomeType" ... />

Вот и все. При чем как вроде бы стало известно эта проблема зависит от орга - у одних все нормально, у меня косяк.

Сегодня столкнулся с очень интересной проблемой Salesforce,
а точнее Tooling API.

В общем если сохранять определенный код через Tooling API (использует MavensMate и Developer Console) - то получаем ошибку
[b]Type is not visible: custometype[/b]
Если сохраняет через браузер или Metadata API (Migration tools) код сохраняется отлично.

теперь немного подробностей. Погуглил и оказалось что я не одинок. Вот даже идея есть в IdeaExchange
https://success.salesforce.com/ideaView?id=08730000000l8a5AAA
Тут ситуация похожая на мою, только у меня apex class использовался в качестве DTO и передавался в качестве параметра в
[code]<apex:attribute name="..." type="CustomeType" ... />[/code]

Вот и все. При чем как вроде бы стало известно эта проблема зависит от орга - у одних все нормально, у меня косяк.

wilder
Подсветка есть в девелопер консоли.

Только она, как не странно, любит съезжать!

[quote="wilder"]Подсветка есть в девелопер консоли.[/quote]
Только она, как не странно, любит съезжать!

Добрые люди подсказали решение. Оказывается весь продвинутый мир MavensMate использует замечательную настройку по умолчанию чтобы использовать старый добрый Metadate API:

"mm_compile_with_tooling_api" : false

Добрые люди подсказали решение. Оказывается весь продвинутый мир MavensMate использует замечательную настройку по умолчанию чтобы использовать старый добрый Metadate API:

[b]"mm_compile_with_tooling_api" : false[/b]

Dmitry Shnyrev
Добрые люди подсказали решение. Оказывается весь продвинутый мир MavensMate использует замечательную настройку по умолчанию чтобы использовать старый добрый Metadate API:

"mm_compile_with_tooling_api" : false

Такая же настройка была и в последнем эклипсе.

[quote="Dmitry Shnyrev"]Добрые люди подсказали решение. Оказывается весь продвинутый мир MavensMate использует замечательную настройку по умолчанию чтобы использовать старый добрый Metadate API:

[b]"mm_compile_with_tooling_api" : false[/b][/quote]

Такая же настройка была и в последнем эклипсе.

Свеженький косячок

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

То есть если вы ставите пакет и пытаетесь отправить емайл, но не простой а с документом, то получаем вот такой эксепшен.

Свеженький косячок

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->...) то в списке полей тоже его нет.

Какая-то нелогичная реакция на права доступа.

Dmitry Shnyrev
Словил сегодня интересный косяк в Developer Console.
По идее это не косяк, но неудобство, которое забрало у меня большой кусок времени чтобы выяснить причину (как всегда простые решения почему-то оставляются на потом).

Если поле у System Administrator не разрешено в FLS (залили например через ant)
то в Developer Console его вообще не существует!
При попытке сделать SOQL запрос выдает
ERROR at Row:1:Column:8 No such column '...'
А если открыть объект на просмотр (File->Open->...) то в списке полей тоже его нет.

Какая-то нелогичная реакция на права доступа.


Мне кажется, это логично

[quote="Dmitry Shnyrev"]Словил сегодня интересный косяк в Developer Console.
По идее это не косяк, но неудобство, которое забрало у меня большой кусок времени чтобы выяснить причину (как всегда простые решения почему-то оставляются на потом).

Если поле у System Administrator не разрешено в FLS (залили например через ant)
то в Developer Console его вообще не существует!
При попытке сделать SOQL запрос выдает
ERROR at Row:1:Column:8 No such column '...'
А если открыть объект на просмотр (File->Open->...) то в списке полей тоже его нет.

Какая-то нелогичная реакция на права доступа.[/quote]
Мне кажется, это логично

Gres
Мне кажется, это логично

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

[quote="Gres"]Мне кажется, это логично[/quote]
Ну мы же в коде не получаем ошибку что такого поля нет, просто нет доступа к значению в данном поле.
А тут я могу понять только одно - поле отсутствует как metadata

Dmitry Shnyrev
Gres
Мне кажется, это логично

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

Ты уверен, что не получаем?

[quote="Dmitry Shnyrev"][quote="Gres"]Мне кажется, это логично[/quote]
Ну мы же в коде не получаем ошибку что такого поля нет, просто нет доступа к значению в данном поле.
А тут я могу понять только одно - поле отсутствует как metadata[/quote]
Ты уверен, что не получаем?

Ну да, уверен - запрос то я взял с работающего контроллера и просто вставил в Developer Console чтобы увидеть что он возвращает - а он мне тупо заругался что нет таких полей. Apex код - нет ошибок, да и не должно быть, поле то существует.

Ну да, уверен - запрос то я взял с работающего контроллера и просто вставил в Developer Console чтобы увидеть что он возвращает - а он мне тупо заругался что нет таких полей. Apex код - нет ошибок, да и не должно быть, поле то существует.

Dmitry Shnyrev
Ну да, уверен - запрос то я взял с работающего контроллера и просто вставил в Developer Console чтобы увидеть что он возвращает - а он мне тупо заругался что нет таких полей. Apex код - нет ошибок, да и не должно быть, поле то существует.

Просто я получал такую же ошибку в коде. Все еще завист от объявления класса.

[quote="Dmitry Shnyrev"]Ну да, уверен - запрос то я взял с работающего контроллера и просто вставил в Developer Console чтобы увидеть что он возвращает - а он мне тупо заругался что нет таких полей. Apex код - нет ошибок, да и не должно быть, поле то существует.[/quote]
Просто я получал такую же ошибку в коде. Все еще завист от объявления класса.

Некоторые "косяки" таковыми не являются:

Alex Tsitsura
По поводу косяков, я думаю что то что sf не проверяет зарезервирование слова, при создании класов, есть косяком.

Вот сегодня столкнулся с тем что вот такая строчка не работает:

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.

Это затенение - вполне нормальное явление.

Dmitry Shnyrev
Сегодня столкнулся со странным косяком. В эклипс делаю изменения в коде и сохраняю страницу или класс. эклипс молча сохраняет (ошибок нет), показывает что изменения сохранены, а на орге изменения не появляются. Остается старый вариант исходного кода. ЖЕСТЬ! Я уже мозг сломал. Приходится сравнивать исходники из Эклипс и в браузере чисто визуально. Вот это реально Salesforce штормит.

Тоже на 99.9% уверен что это не косяк, просто в настройках проекта в Eclipse бывает слетает настройка "Work online", тогда все изменения сохраняются локально и на сервер не деплоятся. Обычно это происходит при смене токена, пароля или IPшника, когда старому проекту не удаётся сразу подрубиться к серверу.

Den Brown
wilder
file.split('\n');

И вот эта операция возвращает нам 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.



ilya leshchuk
в настройках проекта в 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 и в эксепшене все откатываетя.

Возможно у тебя есть savepoint и в эксепшене все откатываетя.

нет ни одного.

нет ни одного.

НЕ, НУ ТОЧНО!

Вынес инициализацию в отдельный метод на apex:page action
и все сработало. DML операции прошли!!!
Т.е. getter подпадает под ограничение. Но тогда непонятно почему нет никаких сообщений об ошибках. У меня нет ни savepoint и эти операции не обернуты в try/catch.

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

НЕ, НУ ТОЧНО!

Вынес инициализацию в отдельный метод на apex:page action
и все сработало. DML операции прошли!!!
Т.е. getter подпадает под ограничение. Но тогда непонятно почему нет никаких сообщений об ошибках. У меня нет ни savepoint и эти операции не обернуты в try/catch.

Ладно, поучительная получилась проблема, много полезного вспомнил :D 

Радует что в воскресный вечер кто-то откликнулся - вижу Wilder все время на связи и Gres заскакивал посмотреть кто тут помощи просит

Радует что в воскресный вечер кто-то откликнулся - вижу [b]Wilder[/b] все время на связи и [b]Gres[/b] заскакивал посмотреть кто тут помощи просит :D 

Dmitry Shnyrev
Радует что в воскресный вечер кто-то откликнулся

У нас рабочая неделя начинается с воскресенья:)

[quote="Dmitry Shnyrev"]Радует что в воскресный вечер кто-то откликнулся[/quote]

У нас рабочая неделя начинается с воскресенья:)

:D 

в visualforce email template в Email Subject нельзя использовать

"
. ошибки при этом никакой не выкинет, просто перезагрузит страницу

в visualforce email template в Email Subject нельзя использовать [code]"[/code]. ошибки при этом никакой не выкинет, просто перезагрузит страницу

сегодня внезапно не могу вернуть из метода страницу:

Public PageReference doSubmit() {

return Page.MyPage;

}

пишет:
Compile Error: Initial term of field expression must be a concrete SObject: Integer at line 59 column 12

а с return null и PageReference созданный от URL - все сохраняется...
ничего не понимаю

сегодня внезапно не могу вернуть из метода страницу:

[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 - все сохраняется...
ничего не понимаю

Den Brown
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.

ilya leshchuk
Возможно вы "затенили" 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="id" assignTo="{!delId}" value=""/>
</apex:actionFunction>

в контроллер приходит вовсе не переменная delId, приходит параметр ID из URL

<apex:actionFunction name="delFile" action="{!delFile}" immediate="true" rerender="btn">
     <apex:param name="[b]id[/b]" assignTo="{!delId}" value=""/>
</apex:actionFunction>

в контроллер приходит вовсе не переменная delId, приходит параметр ID из URL

<apex:actionFunction action="{!goTo}" name="goTo">
<apex:param name="var1" assignTo="{!var1}" value=""/>
<apex:param name="var2" assignTo="{!var2}" value=""/>
</apex:actionFunction>

не асайнит значения в переменные. решение: добавить reRender="dummyElement"

[code]
<apex:actionFunction action="{!goTo}" name="goTo">
    <apex:param name="var1" assignTo="{!var1}" value=""/>
    <apex:param name="var2" assignTo="{!var2}" value=""/>
</apex:actionFunction>
[/code]

не асайнит значения в переменные. [b]решение: добавить reRender="dummyElement"[/b]

Да, есть такое. Если не ререндерить, то actionFunction не работает.

Да, есть такое. Если не ререндерить, то actionFunction не работает.

Гребанный CORS не работает вообще... Ну просто никак. Нахер они его интересно сделали ???

Гребанный CORS не работает вообще... Ну просто никак. Нахер они его интересно сделали ???

У меня тоже не работает как в инструкции написано. Но ИМХО это я где-то что-то не то делаю. У индусов вот всё работает )

У меня тоже не работает как в инструкции написано. Но ИМХО это я где-то что-то не то делаю. У индусов вот всё работает )

Нельзя задеплоить 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

Нельзя задеплоить 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

О...я могу целую сагу написать о том что должно деплоиться а на самом деле не работает. Я запарюсь идеи заводить.

О...я могу целую сагу написать о том что должно деплоиться а на самом деле не работает. Я запарюсь идеи заводить.

Выкатывай свою сагу, нечего сидеть на жопе ровно)

Выкатывай свою сагу, нечего сидеть на жопе ровно)

Читай мои посты в этой теме. Тут есть многое.

Читай мои посты в этой теме. Тут есть многое.

https://c.eu5.visual.force.com/apex/help/apex/devImport/apex/help - берет последний /apex/...

https://c.eu5.visual.force.com/apex/help/apex/devImport/[b]apex/help[/b] - берет последний /apex/...

так это же фича!!!

так это же [b]фича[/b]!!!

yurybond
Нельзя задеплоить IP ranges - валится неинформативная ошибка.
Супорт проблему не хочет фиксить и пытаются сказать что так и должно быть, даже несмортя на то, что написано в официальной документации:
https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_securitysettings.htm

После месяца уговоров, упрямый индийский саппорт все таки создал Konwn Issue:
https://success.salesforce.com/issues_view?id=a1p30000000sXza

[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 в тестах.

Кто-нибудь сталкивался с таких косяком?

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 справляется с этим на Ура. вот такой вот у нас волшебный клауд.

wilder
(?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.

Просто подправьте регулярку :)

ilya leshchuk
wilder
(?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'ы.

ilya leshchuk
в случае с высоконагруженной регуляркой я вообще не рекомендую использовать метод find, лучше использовать метод lookingAt, с соответствующим образом переписанными regexp'ами

Ну задача как таковая парсинг апекс классов.

Я конечно любитель оптимизации, но если честно не совсем понимаю, почему такая относительно простая регуллярка валиться на таких крохотных объемах.

А вот регуллярка, которая действительно нужна.

(?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*\\{

Я вообще не понимаю, почему я должен использовать разные методы, для выполнения одной и той же операции ? И почему в других языках, это делается простейшими средствами. А у нас это целая пляска с бубном. И хотя я родился в тех местах где как раз практикуют эти пляски, я уже порядком подустал от этих танцев.

[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 не нужен!
Можно прекрасно обойтись без него.
Главный плюс - код без него логичнее и понятнее.

wilder
Ну и финальная точка в диспуте о регексе. Есть очень большая вероятность что у них где-то косяк с памятью. Потому что есть взять отдельной файлик на котором вылетает регекс, то он парситься без проблем. А вот если парсить в цикле несколько файлов, вот тогда уже происходит вылет регекса.

- Доктор, меня почему-то никто не замечает.
- Следующий!

Это не косяк с памятью, это лимит в обработчике регулярных выражений, который никто не скрывает:
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", но об этом тоже уже написал.

Gres
Добавлю свои 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 что перевод строки что пробел одно и тоже. В общем я считаю что косяк в системе на лицо.

Илья есть у тебя желание собраться и обсудить идеальный парсер Арех? Может еще кто хочет присоединиться ?

Илья есть у тебя желание собраться и обсудить идеальный парсер Арех? Может еще кто хочет присоединиться ?

Почему бы и нет, тем более что у меня уже есть одна реализация под свои нужды :)

Почему бы и нет, тем более что у меня уже есть одна реализация под свои нужды :)

Ну у меня тоже есть. Сейчас проблема только в размере файла для парсинга. У меня ограничение в 150 килобайт и это меня напрягает.

Ну у меня тоже есть. Сейчас проблема только в размере файла для парсинга. У меня ограничение в 150 килобайт и это меня напрягает.

Email: illia.leshchuk at gmail.com
Skype: ilyaleshchuk

Email: illia.leshchuk at gmail.com
Skype: ilyaleshchuk

Opportunity line item, есть филды


почему на лейауте ListPrice field имеет лейбл Unit Price?

открываю редактирование лейаута

но при редактировании релейтед листа на лейауте opportunity, филд почему-то Unit Price

Транслейшены выключены.

Это баг или где-то можно переименовать лейбл филда?

UPDATE.
Нашёл причину, это не баг, а Rename Tabs and Labels

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 сделать?

Этот код что делает? Редиректит страницу на саму себя с новым параметром?
А не проще на JS сделать?

Dmitry Shnyrev
Этот код что делает? Редиректит страницу на саму себя с новым параметром?
А не проще на JS сделать?

1. Да редирект.
2. Стараюсь максимально использовать простые (стандартные) решения.

[quote="Dmitry Shnyrev"]Этот код что делает? Редиректит страницу на саму себя с новым параметром?
А не проще на JS сделать?[/quote]
1. Да редирект.
2. Стараюсь максимально использовать простые (стандартные) решения.

По опыту скажу стандартные решение не всегда являются простыми

По опыту скажу стандартные решение не всегда являются простыми :) 

Custom_Object__History через Decribe не имеет префикса, хотя и имеет ID, которое начинается с 017...

Custom_Object__History через Decribe не имеет префикса, хотя и имеет ID, которое начинается с 017...

Опять эти уроды наху...вертили.

В общем теперь на кнопку нельзя повесить скрипт с параметрами. То есть

{!REQUIRESCRIPT('/resource/ssync3__jsAPI/js/jsInit.js?ta=true&rlts=true')}
{!REQUIRESCRIPT('/resource/ssync3__jsAPI/js/jsInit.js?ta=true&rlts=false')}

Отработает только один раз. Вот такая вот оптимизация.

Опять эти уроды наху...вертили.

В общем теперь на кнопку нельзя повесить скрипт с параметрами. То есть 

[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)

Придется ждать неделю пока почистят.....

Dmitry Shnyrev
вронтенд
- сильно сказано!!! я правда прочитал как "вротенд"

[quote="Dmitry Shnyrev"]вронтенд[/quote] - сильно сказано!!! я правда прочитал как "вротенд"

:D :D :D 

Очередной нежданчик от индусов.

В кастомной кнопке если определить 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 = ...

Согласен затуп, каюсь :(

Согласен затуп, каюсь :(

Нормально У меня с JS постоянно похожие затупы случаются. Очень часто сижу в консоли сначала свои наработки испытываю.

Нормально :) У меня с JS постоянно похожие затупы случаются. Очень часто сижу в консоли сначала свои наработки испытываю.

... создал отдельную тему ...

... создал отдельную тему ...

а линку на новую тему?

а линку на новую тему?

"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"

В общем что-то они там перемудрили.

"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)
Добавляешь поля которых тебе не хватает, или все просто перечисляешь и все нормально работает.

Dmitry Shnyrev
А почему бы не использовать этот метод из StandardController
public Void addFields(List<String> fieldNames)
Добавляешь поля которых тебе не хватает, или все просто перечисляешь и все нормально работает.

А у меня вообще нет контроллера на этой странице

[quote="Dmitry Shnyrev"]А почему бы не использовать этот метод из StandardController
public Void [b]addFields[/b](List<String> fieldNames)
Добавляешь поля которых тебе не хватает, или все просто перечисляешь и все нормально работает.[/quote]

А у меня вообще нет контроллера на этой странице

Ну это аргумент

Ну это аргумент :) 

Dmitry Shnyrev
public Void addFields(List<String> fieldNames)

Я пробывал потом это чудо покрывать в тестах,косяки какие то начинались, проще запрос написать и вытащить все что надо, чем парится с AddFields

[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 

Dmitry Shnyrev
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) {

}
}


:)

Угадайте ошибку:
[code]
String currentAccountId = '';
for(Contact record : contacts) {
	if (currentAccountId != record.AccountId) {

        }
}
[/code]
:)

Gres
Угадайте ошибку

Так Типы разные. Хоть по сути все Стринга.
На одном проекте долго искал ошибку пока не нашел примерно такую конструкцию. Id то может быть полный или сокращенный)

[quote="Gres"]Угадайте ошибку[/quote]
Так Типы разные. Хоть по сути все Стринга.
На одном проекте долго искал ошибку пока не нашел примерно такую конструкцию. Id то может быть полный или сокращенный)  

Line: 2, Column: 22
Variable does not exist: contacts

:D :D :D 

Line: 2, Column: 22
Variable does not exist: contacts

Line: 4, Column: 1
System.StringException: Invalid id:

Но вообще да, интересно тут с типами работают в твоем примере.

И думаю String currentAccountId = null прокатил бы или
Id currentAccountId = null

Line: 4, Column: 1
System.StringException: Invalid id:

Но вообще да, интересно тут с типами работают в твоем примере.

И думаю String currentAccountId = null прокатил бы или 
Id currentAccountId = null

Gres
:)

Gres, но мне кажется вопрос с подвохом А?

[quote="Gres"]:)[/quote]
Gres, но мне кажется вопрос с подвохом ;) А?

DevNull
Id то может быть полный или сокращенный)

Да, по ходу DevNull, ты прав. Чет я про это не подумал Давно не сталкивался с такой проблемой.

[quote="DevNull"]Id то может быть полный или сокращенный)[/quote]
Да, по ходу DevNull, ты прав. Чет я про это не подумал :) Давно не сталкивался с такой проблемой.

Dmitry Shnyrev
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 это типа ссылка на другое поле. Но что-то это особенно пока не помогает.

Проголосуйте плиз за идею - https://success.salesforce.com/ideaView?id=08730000000DfdiAAC

Проголосуйте плиз за идею - https://success.salesforce.com/ideaView?id=08730000000DfdiAAC

Если в строке встречаются символы например из английского и арабского алфавита то indexOf() всегда возвращает -1

Если в строке встречаются символы например из английского и арабского алфавита то indexOf() всегда возвращает -1

Например вы делаете интеграцию из Salesforce в Salesforce через tooling API. И хотите запустить тесты в которых есть httpmockup ? Не судьба. Получите http loop fallout exception.

Например вы делаете интеграцию из Salesforce в Salesforce через tooling API. И хотите запустить тесты в которых есть httpmockup ? Не судьба. Получите http loop fallout exception.

Wilder все продолжает ломать Salesforce

Wilder все продолжает ломать Salesforce :D :D :D 

Internal Server Error

for (ApexLog item : [SELECT Id FROM ApexLog LIMIT 1]) {
ApexPages.StandardController sc = new ApexPages.StandardController(item);
sc.delete();
}

[b]Internal Server Error[/b]

[code]for (ApexLog item : [SELECT Id FROM ApexLog LIMIT 1]) {
	ApexPages.StandardController sc = new ApexPages.StandardController(item);
	sc.delete();
}[/code]

А можешь пояснить в 2 словах что ты в этом кусте такое делаешь?
Или это просто пример для воспроизведения ошибки?

А можешь пояснить в 2 словах что ты в этом кусте такое делаешь?
Или это просто пример для воспроизведения ошибки?

Dmitry Shnyrev
А можешь пояснить в 2 словах что ты в этом кусте такое делаешь?

Удаляет запись salesforce лога. Только вот у них нет PageReference и сало ломается.
В сале не думали, что люди будут экспериментировать с такой фантазией.

[quote="Dmitry Shnyrev"]А можешь пояснить в 2 словах что ты в этом кусте такое делаешь? [/quote]

Удаляет запись salesforce лога. Только вот у них нет PageReference и сало ломается.
В сале не думали, что люди будут экспериментировать с такой фантазией.

Developer
Dmitry Shnyrev
А можешь пояснить в 2 словах что ты в этом кусте такое делаешь?

Удаляет запись salesforce лога. Только вот у них нет PageReference и сало ломается.
В сале не думали, что люди будут экспериментировать с такой фантазией.

Я даже боюсь спросить, что-такое "сало" :D

[quote="Developer"][quote="Dmitry Shnyrev"]А можешь пояснить в 2 словах что ты в этом кусте такое делаешь? [/quote]

Удаляет запись salesforce лога. Только вот у них нет PageReference и сало ломается.
В сале не думали, что люди будут экспериментировать с такой фантазией.[/quote]

Я даже боюсь спросить, что-такое "сало" :D

Я думаю SF)

Я думаю SF)

Developer
Удаляет запись salesforce лога.

А почему именно так? В чем преимущество простой DML операции?

[quote="Developer"]Удаляет запись salesforce лога.[/quote]
А почему именно так? В чем преимущество простой DML операции?

camamber
Я даже боюсь спросить, что-такое "сало" :D

Насколько я могу судить это понятие придумали в VRP, потому что кроме них я больше ни от кого такого не слышал. А они постоянно салом кидаются.
Но мне понятие "сало" сильно режет слух!!! Я категорически против его использования. Это прям какое-то неуважение к платформе которая позволяет зарабатывать на хлебушек с икоркой.

[quote="camamber"]Я даже боюсь спросить, что-такое "сало" :D[/quote]
Насколько я могу судить это понятие придумали в VRP, потому что кроме них я больше ни от кого такого не слышал. А они постоянно салом кидаются. 
Но мне понятие "сало" сильно режет слух!!! Я категорически против его использования. Это прям какое-то неуважение к платформе которая позволяет зарабатывать на хлебушек с икоркой.

Dmitry Shnyrev
А почему именно так?

Наверное, надо автора кода спросить?

Dmitry Shnyrev
В чем преимущество простой DML операции?

Эмм...Так тут же не простая DML операция.

[quote="Dmitry Shnyrev"]А почему именно так?[/quote]

Наверное, надо автора кода спросить?

[quote="Dmitry Shnyrev"]В чем преимущество простой DML операции?[/quote]

Эмм...Так тут же не простая DML операция.

Dmitry Shnyrev
Насколько я могу судить это понятие придумали в VRP, потому что кроме них я больше ни от кого такого не слышал. А они постоянно салом кидаются.
Но мне понятие "сало" сильно режет слух!!! Я категорически против его использования. Это прям какое-то неуважение к платформе которая позволяет зарабатывать на хлебушек с икоркой.

В данной ситуации - лень переключать раскладку на английскую, когда пишешь на русском и сокращённо получается то что получается...
п.с. если режет, то буду переключать раскладку :)

[quote="Dmitry Shnyrev"]Насколько я могу судить это понятие придумали в VRP, потому что кроме них я больше ни от кого такого не слышал. А они постоянно салом кидаются.
Но мне понятие "сало" сильно режет слух!!! Я категорически против его использования. Это прям какое-то неуважение к платформе которая позволяет зарабатывать на хлебушек с икоркой. [/quote]

В данной ситуации - лень переключать раскладку на английскую, когда пишешь на русском и сокращённо получается то что получается...
п.с. если режет, то буду переключать раскладку :)

Developer
Наверное, надо автора кода спросить?

А, мли, не усмотрел что это не автор ответил.
То что делает код в принципе понятно,
Но в руках wilder любой код может делать совсем не то что он должен!
Developer, не спеши наперед батьки в пекло!!!
Вопрос адресовался именно автору и подразумевает получение информации о подвохе!

[quote="Developer"]Наверное, надо автора кода спросить?[/quote]
А, мли, не усмотрел что это не автор ответил.
То что делает код в принципе понятно,
Но в руках wilder любой код может делать совсем не то что он должен! :D 
Developer, не спеши наперед батьки в пекло!!! 
Вопрос адресовался именно автору и подразумевает получение информации о подвохе!

Developer
лень переключать раскладку на английскую

А ты не пользуешься Punto Switcher?

Если нет, то я понимаю твою попаболь по поводу раскладок

[quote="Developer"]лень переключать раскладку на английскую[/quote]

А ты не пользуешься Punto Switcher? 

Если нет, то я понимаю твою попаболь по поводу раскладок :D 

Dmitry Shnyrev
А ты не пользуешься 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 или я чего то не до конца понимаю просто :)

AntonB
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
Внизу кстати так и написано что это хак.

Хотя вру . Использовал. Но тоже как злой хак.
вот тут
https://salesforce-developer.ru/forum/topic-adaptirovanie-vf-stranits-dlya-raboty-v-lightning-mode
isdtp=p1

Хотя вру :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
. Но у меня она почему-то не работает. Что-то еще нужно кроме поставить галку?
.

Блин, только для Lightning.

Вроде пацаны сделали хорошую опцию - [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

[Settings]
updateable : true
undeletable : false
triggerable : false
searchable : true
retrieveable : true
replicateable : false
queryable : true
mruEnabled : false
mergeable : false
layoutable : false
isSubtype : false
hasSubtypes : false
feedEnabled : false
deprecatedAndHidden : false
deletable : true
customSetting : false
custom : false
createable : true
activateable : false

При попытке запустить SOSL
выдает [{"message":"cleanDataService is not searchable","errorCode":"INVALID_TYPE"}]"

Объект : cleanDataService 

[code]
[Parameters]
	name : CleanDataService
	labelPlural : Data Services
	label : Data Service
	keyPrefix : 07S

[Settings]
	updateable : true
	undeletable : false
	triggerable : false
	[b]searchable : true[/b]
	retrieveable : true
	replicateable : false
	queryable : true
	mruEnabled : false
	mergeable : false
	layoutable : false
	isSubtype : false
	hasSubtypes : false
	feedEnabled : false
	deprecatedAndHidden : false
	deletable : true
	customSetting : false
	custom : false
	createable : true
	activateable : false[/code]

При попытке запустить SOSL 
выдает [b][{"message":"cleanDataService is not searchable","errorCode":"INVALID_TYPE"}]"[/b]

Объект - GlobalValueSet на самом деле sharedPickListDefinition
.

Объект - [b]GlobalValueSet[/b] на самом деле [b]sharedPickListDefinition[/b]
 	.

wilder
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 в тесте с проверкой текста ошибки, что не лучшее решение, на мой взгляд.

EvAzi
Как-то решил эту проблему?

Неа. Я просто сделал анализ всех обьектов и нашел аномалии.

[quote="EvAzi"]Как-то решил эту проблему? [/quote]

Неа. Я просто сделал анализ всех обьектов и нашел аномалии.

Ну это уже ни в какие ворота

FIND {devConsoleApp} IN All FIELDS RETURNING ApexPage(Id,LastModifiedBy.Name,Name ORDER BY Name DESC)

не находит страницу с именем devConsoleApp

через SELECT ясное дело что все работает.

Ну это уже ни в какие ворота

[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 нет. Объяснений пока нет.

Один и тот же SOQL в классике работает в Lightening нет. Объяснений пока нет.

wilder
Один и тот же SOQL

А пример можешь скинуть?

[quote="wilder"]Один и тот же SOQL[/quote]
А пример можешь скинуть?

Dmitry Shnyrev
wilder
Один и тот же SOQL

А пример можешь скинуть?

Уже не актуально. Нашли в чем косяк.

В классике id 15 символов в молнии 18. Поля формул тоже принимают 15. Здесь и был косяк.

[quote="Dmitry Shnyrev"][quote="wilder"]Один и тот же SOQL[/quote]
А пример можешь скинуть?[/quote]

Уже не актуально. Нашли в чем косяк.

В классике id 15 символов в молнии 18. Поля формул тоже принимают 15. Здесь и был косяк.

Ну просто нет слов. Изменить параметр isExposed можно только через deploy
https://github.com/msrivastav13/mo-dx-plugin/issues/4

Ну просто нет слов. Изменить параметр isExposed можно только через deploy
https://github.com/msrivastav13/mo-dx-plugin/issues/4

wilder
Ну просто нет слов. Изменить параметр isExposed можно только через deploy
https://github.com/msrivastav13/mo-dx-plugin/issues/4

Кто-то ещё работает не через sfdx cli?
Проблема, как я понимаю, только через tooling api.

[quote="wilder"]Ну просто нет слов. Изменить параметр isExposed можно только через deploy
https://github.com/msrivastav13/mo-dx-plugin/issues/4[/quote]

Кто-то ещё работает не через sfdx cli? :) 
Проблема, как я понимаю, только через tooling api. 

Developer
Кто-то ещё работает не через sfdx cli?
Проблема, как я понимаю, только через tooling api.

Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.

[quote="Developer"]Кто-то ещё работает не через sfdx cli? 
Проблема, как я понимаю, только через tooling api.[/quote]

Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.

wilder
Developer
Кто-то ещё работает не через sfdx cli?
Проблема, как я понимаю, только через tooling api.

Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.

Официальная документация никогда не была идеальной

[quote="wilder"][quote="Developer"]Кто-то ещё работает не через sfdx cli? 
Проблема, как я понимаю, только через tooling api.[/quote]

Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.[/quote]

Официальная документация никогда не была идеальной :) 

wilder
Да это не то чтобы проблема. Просто об этом нужно было написать в официальной документации.

https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_lightningcomponentresource.htm

API version 45 или выше?

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="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".

Developer
Кто-то ещё работает не через sfdx cli?

Ну вот я например не работаю:) и не собираюсь

[quote="Developer"]Кто-то ещё работает не через sfdx cli?[/quote]

Ну вот я например не работаю:) и не собираюсь

Не знаю, адекватный ли пример привожу.
Но я когда-то также яро стоял против Angular CLI и во всю пилил свой сборщик на webpack.
Но потом смирился. Понял что компания и сообщество лучше меня смогут сделать тул для работы с Ангуляром
С sfdx cli примерно такая же ситуация. Стандартный тул который постоянно пилится в итоге может оказаться лучше чем куча своих костылей, особенно при работе с командой более одного человека.

Не знаю, адекватный ли пример привожу. 
Но я когда-то также яро стоял против Angular CLI и во всю пилил свой сборщик на webpack.
Но потом смирился. Понял что компания и сообщество лучше меня смогут сделать тул для работы с Ангуляром
С sfdx cli примерно такая же ситуация. Стандартный тул который постоянно пилится в итоге может оказаться лучше чем куча своих костылей, особенно при работе с командой более одного человека.

Dmitry Shnyrev
особенно при работе с командой более одного чело
Dmitry Shnyrev
Но я когда-то также яро стоял против 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. Не многовато ли?

wilder
Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?

Для людей, которые хотят работать исключительно в облаке, есть Developer console(но там не всё поддерживается).
IDE на ПК ставить не обязательно.

[quote="wilder"]Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить nodejs, java, VSCode, sfdx. Не многовато ли?[/quote]

Для людей, которые хотят работать исключительно в облаке, есть Developer console(но там не всё поддерживается).
IDE на ПК ставить не обязательно. :) 

Developer
wilder
Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить 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 :)

wilder
Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)

Самописная?
Браузер не лагает?

[quote="wilder"]Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)[/quote]

Самописная? :)
Браузер не лагает?

wilder
Представь что есть Developer Console, которая поддерживает все, и при этом ничего ставить не нужно, даже Git :)

Wilder, мы уже столько лет ждем когда же ты явишь миру свое творение!
Даешь нормальное описание и видосы на YouTube с примерами работы твоей облачной IDE.

wilder
Да и к тому же я никак не могу понять мы вроде как работет в облаке, но почему для для разработки я должен установить 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 к вам в браузер на каждое открытие страницы (если пока не принимать во внимание кэш браузера) и хорошо если все укладывается в пару мегабайт.

del

del
2nd generation managed package
Можно получить частичный доступ к функционалу без лицензии

Например есть lwc компонент, который общается с apexclass. Так вот все чудесно работает во flexi page и не работает в appBuilder без лицензии
2nd generation managed package
Можно получить частичный доступ к функционалу без лицензии

Например есть lwc компонент, который общается с apexclass. Так вот все чудесно работает во flexi page и не работает в appBuilder  без лицензии
а о какой лицензии идет речь?
а о какой лицензии идет речь?
Den Brown
а о какой лицензии идет речь?
О лицензии на пакет для пользователя
[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()