Добрый день!
версия 3.4.1
В карточке контакта и контрагента есть средство связи типа email, при его заполнении и нажатии на значок письма почему-то открывается не письмо с подставленным адресом, а пустая страничка браузера.
Почему? Как исправить?

Нравится

4 комментария

Здравствуйте.
Проверьте, пожалуйста, что запущена сборка, бинарные файлы которой зарегистрированы. Также нужно удостовериться, что включена и работает интеграция с Outlook. Далее нужно проверить, что Outlook установлен, как почтовый клиент по умолчанию (Файл\Параметры\Сделать Outlook используемой по умолчанию программой для электронной почты...).

Спасибо.
Скажите, пожалуйста, еще можно ли сделать следующее:
есть раздел e-mail - в реестре отображается только сообщения учетных данных данного пользователя.
остальным пользователям можно просматривать эти сообщения в разделе контакты на закладке e-mail.
Скажите, можно ли как-то сделать так:
чтобы системный администратор мог искать в разделе e-mail письма других учетных записей
(например, настроить динамическую папку там, ввести соответствующий адрес и видеть письма в этой папке)
Мне почему-то казалось, раньше была такая возможность..

Дарья, эта фильтрация задаётся в scr_MailWorkspace

function ApplyMailsWorkspaceFilter() {
	ApplyStandardWorkspaceFilter();
	ApplyDatasetFilter(BaseWorkspace.GridDataset, 'OwnerID',
		Connector.CurrentUser.ContactID,
		!BaseWorkspace.GroupsDataset.ValAsBool('IsFiltered'));
}

Там можно добавить проверку текущего пользователя на права системного администратора или какое-либо другое условие (например, права плюс включена галочка, которую добавить в окне раздела).

Показать все комментарии

Версия 3.0.2.244
Примерно с полгода назад добавил возможность получать координаты объекта по адресу с помощью запроса к google, вполне нормально работало до вчерашнего дня, теперь пишет "Отказано в доступе".

function btnGPSOnClick(Control) {
        var xmlhttp = getXmlHttp();
        var str = 'http://geocode-maps.yandex.ru/1.x/?geocode=' + dlData.Dataset.Values('Address');
        xmlhttp.open('GET', str, true);
        xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4) {
                if(xmlhttp.status == 200) {
                        var PosElem = xmlhttp.responseXML.getElementsByTagName('pos');
                                var GPS = PosElem[0].text;     
                                var sqGetGPS = Services.GetNewItemByUSI('sq_GetGPS');
                                sqGetGPS.Parameters.ItemsByName('StringGPS').Value = GPS;
                                var dsGetGPS = sqGetGPS.Open();
                                if (System.MessageDialog('Координаты получены. X = ' + dsGetGPS.Values('GPSX') + ', Y = ' + dsGetGPS.Values('GPSY') + '. Сохранить?', mdtConfirmation, mdbYes + mdbNo, 0) == mrYes) {
                                        dlData.Dataset.Values('GPSX') = dsGetGPS.Values('GPSX');
                                        dlData.Dataset.Values('GPSY') = dsGetGPS.Values('GPSY');
                                        } else {
                                        return;
                                                };
                                }
                                }
                        };
        xmlhttp.send(null);
}

Пробовал более простой код, всё равно на методе send() - "Отказано в доступе":

var webAddress = 'http://geocode-maps.yandex.ru/1.x/?geocode=' + dlData.Dataset.Values('Address');
var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.6.0");
xmlHttpReq.open("GET", webAddress, false);            
xmlHttpReq.send();

Может кто-то сталкивался с такой проблемой, или просто знает, как ее решить?

Нравится

3 комментария

Может, дело в этом:


В бесплатной версии API Карт можно делать не более 25 000 запросов к геокодеру в сутки. Чтобы сократить число обращений, одинаковые ответы геокодера можно кешировать. Заодно это снизит нагрузку на ваш сайт или сервис.

Или же смотрите в их правилах, могут быть и другие тонкости. Там же адрес службы поддержки сервиса.

"Зверев Александр" написал:

Может, дело в этом:

Цитата:

В бесплатной версии API Карт можно делать не более 25 000 запросов к геокодеру в сутки. Чтобы сократить число обращений, одинаковые ответы геокодера можно кешировать. Заодно это снизит нагрузку на ваш сайт или сервис.


нет... проблема была в настройках IE...

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

Показать все комментарии

Добрый день!
Подскажите, пожалуйста, как и где можно поменять шрифт по-умолчанию в детали "Описание" на "Times New Roman"?
Сейчас там стоит "Arial" - http://joxi.ru/1A5RqYYsYlM0rE

Нравится

2 комментария

Тут писали, что программно менять шрифт можно, но сложно:

"Олейник Дмитрий" написал:

как оказалось, тут все не так просто. RichDataControl в BLOB поле хранит данные в RTF формате. Поэтому чтобы программно с кода изменить, к примеру, размер шрифта необходимо через RichDataControl.DataField.Value считать содержимое RTF файла, далее, соответственно спецификации формата RTF, найти и заменить строку fs12 на, к примеру, fs10. (что означает что размер шрифта будет не 12, а 10 пунктов). Для изменения других параметров шрифта необходимо также заменить RTF теги на любые требуемые Вам в RichDataControl.DataField.Value.

Подробнее про RTF теги: http://www.codenet.ru/progr/formt/rtf1.php

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

"Зверев Александр" написал:

Тут писали, что программно менять шрифт можно, но сложно:

Олейник Дмитрий пишет:

как оказалось, тут все не так просто. RichDataControl в BLOB поле хранит данные в RTF формате. Поэтому чтобы программно с кода изменить, к примеру, размер шрифта необходимо через RichDataControl.DataField.Value считать содержимое RTF файла, далее, соответственно спецификации формата RTF, найти и заменить строку fs12 на, к примеру, fs10. (что означает что размер шрифта будет не 12, а 10 пунктов). Для изменения других параметров шрифта необходимо также заменить RTF теги на любые требуемые Вам в RichDataControl.DataField.Value.

Подробнее про RTF теги: http://www.codenet.ru/progr/formt/rtf1.php

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


Спасибо! Буду пробовать

Показать все комментарии

Здравствуйте, подскажите пожалуйста возможные пути реализации выгрузки каталогов продукции с сайта 1C-Битрикс, используя Terrasoft и\или MS SQL Server.
На сайте http://v8.1c.ru/edi/edi_stnd/131/#2, в общем описан алгоритм связи с сайтом. Столкнулся с проблемой: используя ActiveXObject MSXML2.XMLHTTP.6.0 не получается авторизироваться на сайте.
На PHP используя curl, с авторизацией и обменном данных проблем нет, но подымать web-сервер это крайний вариант.
Возможно кто то решал подобную задачу или я копаю не в ту сторону.
Буду благодарен за любую помощь.
Спасибо.

Нравится

3 комментария

"Дашкевич К." написал:используя ActiveXObject MSXML2.XMLHTTP.6.0 не получается авторизироваться на сайте.

Речь о базовой авторизации? Тут пишут, что XMLHTTPRequest её поддерживает:

open( method, URL, async, userName, password )
...
userName, password - данные для HTTP-авторизации.

Александр, нет таким способом не проходит, в responseText возвращаеться html страница с ошибкой авторизации, а не ожидаемый ответ "слово "success"; имя Cookie; значение Cookie."

Тут тоже пишут, что авторизация делается именно так:


1С отправляет http-запрос вместе с http-авторизацией следующего вида:
http://<сайт>/bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth
Сайт отвечает тремя строками (с разделителем "\n"):
1. слово "success";
2. имя Cookie;
3. значение Cookie.
Примечание:
Все последующие запросы к сайту сопровождаются выставлением со стороны 1С имени и значения Cookie, полученными по команде "checkauth".

Значит, проблема на стороне сайта, смотрите в его настройках.

Показать все комментарии

Добрый день.
Такой вопрос: не выгружается статус продажи из 1с в crm в течении нескольких дней. Почему?
Принудительная выгрузка тоже не дает результата.

Нравится

3 комментария

Здравствуйте.
Что-то явно сломалось.
Можете предоставить подробности, в частности настройки интеграции данной сущности и данного реквизита?

Добрый день.
Вот соответствие.

и еще в истории интеграции появляются следующие ошибки.

Николь, спасибо.
Уточню:
1) найдите в соответствии именно статус продажи, нажмите изменить и сделайте скриншот;
2) в сообщениях об ошибках нажмите два раза на ошибку и сделайте скриншот;

3) возможно вы знаете, кто настраивал вам данную интеграцию? т.к. скорее всего тут просто так не разобраться и нужно смотреть и отлаживать процесс "в живую".

Показать все комментарии

Всем добрый день!

Спустя n-ое количество времени надоело вносить изменения в справочники вручную из одной системы в другую + апдейть файл констант / менять значения в процессах и т.п. (база MS SQL)

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

Вызов хранимки:
declare @txt varchar(max)
exec dbo.usp_SynchronizeDictionaries '2015-05-14', 'Terrasoft_Source', 'Terrasoft_Target', null, null, @txt output

1) '2015-05-14' –дата с какой нужно затащить изменения (обычно это дата, на которую снята копия базы)
2) 'Terrasoft_Source' – имя базы-источника
3) 'Terrasoft_Target' – имя целевой базы (можно добавить сервер типа [srv].Terrasoft_Target если есть linked server)
4) Null первый – можно задать имя конкретной одной таблицы (не обязательно, используется в рекурсии)
5) Null второй – строка имен таблиц в формате «;tbl_1;tbl_2;» (разделители ;) которые «Обработаны», т.е. которые не нужно трогать (не обязательно, используются в рекурсии)
6) @txt параметр для передачи списка таблиц в рекурсии

Суть работы хранимой процедуры:
1) пробегаем по всем таблицам, которые находятся в нужных группах (Справочники + у нас, например, еще 2 доп. группы.). В каждой таблице смотрим, есть ли внешние ключи (если есть, то нужно вначале провести манипуляции с таблицами, на которые они ссылаются). Для таблиц из внешних ключей хранимая процедуры вызывается рекурсивно. Есть защита от "зацикливания" (список обработанных таблиц) в случае если в справочниках есть перекрестные ссылки друг на друга. К счастью, у нас такого нет. + Если референсные таблицы не являются справочниками, их не трогаем.
2) для каждой таблицы вытаскиваем набор столбцов и формируем запросы на адпейт (для записей у которых ModifiedOn > даты из параметра запуска), запросы на вставку для новых записей (для которых CreatedOn > даты из параметра запуска)

Как результат получаем список команд (надеюсь, в нужной последовательности - см. примечание про внешние ключи). Для нашей системы вроде работает так, как и задумывалось.

TO-DO: можно контролировать, что в целевой системе не было апдейтов параметров начиная с даты, переданной в хранимку (чтобы случайно не перетереть настройки, сделанные на продакшене за это время вручную).

Текст процедуры прикрепил "as is", не обессудьте, прилизывать текст некогда... кому понадобится думаю легко сделает это + конечно же возможны улучшения, но на них тоже нет времени :)

Нравится

2 комментария

Здравствуйте!

Спасибо за полезный пример.

TO-DO: генерировать наименования столбцов нужно в скобках [] т.к. они могут совпадать со служебными словами... например одна из колонок у нас называлась Order, соотв. нужно чтобы скрипт генерировал t.[Order] = s.[Order]

Показать все комментарии

Добрый день!
Подскажите, пожалуйста, почему не высчитывается сумма по столбцу?
В MasterData вывожу итоговую сумму столбца DetailData.
[SUM([ds_RD07_AP_ProjectManHour."EstimatedManHour"], DetailData2)]

Нравится

2 комментария

Оказалось, по какой-то причине, нельзя вывести итоги в МasterData. В Footer они вывелись.

Для корректного вычисления необходимо написать скрипт:
[SUM([<ds_RD07_AP_ProjectManHour."EstimatedManHour">], DetailData2)]

Ссылка на документацию Fast Report по агрегатным функциям: Aggregate functions

Показать все комментарии

Ошибка возникла из неоткуда. При открытии сервиса "wnd_OfferingsDetailTreeArea" возникает ошибка: "Дублируется значение свойства 'UID'. Значение '{91DAAD2E-F7A3-4382-AD0C-2D3B63EF870C}' уже существует". Такая же ошибка выбивает когда пытаюсь перенести сервис со старого работающего бекапа. Изначально ошибка обнаружилась через клиент, открыли раздел "Продукты"

Нравится

17 комментариев

Чтобы понять, в чём дело, нужно выгрузить сервис в XML-файл (в администраторе из контекстного меню или по Ctrl+Shift+S), открыть в блокноте и найти все места, где встречается "91DAAD2EF7A34382AD0C2D3B63EF870C" (без фигурных скобок и дефисов).

Дальше смотреть по обстоятельствам. Возможно, поможет, если в файле просто удалить текст «UID="91DAAD2EF7A34382AD0C2D3B63EF870C" », сохранить файл и загрузить обратно в администратор, оно само сгенерирует новый UID.

На всякий случай перед манипуляциями сделайте бекап базы.

даже когда пытаюсь выгрузить сервис выдает журнал с ошибкой:
Ошибка получения элемента по USI 'Opportunities\Details\Offerings\wnd_OfferingInOpportunitiesDetailTreeArea'. Дублируется значение свойства 'UID'. Значение '{91DAAD2E-F7A3-4382-AD0C-2D3B63EF870C}' уже существует «Call Stack»
-------------------------------
Поднял старый бекап, там сервис работает нормально...

Так ругается на wnd_OfferingInOpportunitiesDetailTreeArea или wnd_OfferingsDetailTreeArea? Или на оба?

"Зверев Александр" написал:

Так ругается на wnd_OfferingInOpportunitiesDetailTreeArea или wnd_OfferingsDetailTreeArea? Или на оба?


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

Если такой же сервис есть в старой резервной копии, можно попробовать неработающий из дерева в TSAdmin удалить, а на его место залить такой же со старого. Поскольку это сервис окна, а не таблицы, то при удалении данные не должны пропасть. Возможно, но не факт, после удаления и заливки новой-старой надо будет перезалить окно раздела, в котором используется эта деталь.

"Зверев Александр" написал:Если такой же сервис есть в старой резервной копии, можно попробовать неработающий из дерева в TSAdmin удалить, а на его место залить такой же со старого.

только что пробовал на тестовой, удаляется, но при заливке ошибка приложения и такое же сообщение

После удаления?

Может, сервис с таким же UID есть ещё один?
Предлагаю после удаления выгрузить все схемы в виде файлов в одну папку (правой кнопкой по корню дерева в TSAdmin) и поискать по их тексту упоминания "91DAAD2EF7A34382AD0C2D3B63EF870C".

выгрузил все разделы кроме продаж. Я даже проверять не стал на нормальность этих сервисов, в журнале выбило 2 одинаковых ошибки на 2 сервиса: wnd_OfferingInInvoiceGridArea и wnd_OfferingInInvoiceInProjectGridArea. После их удаление проблема не исчезла, залить старый-новый неудется

После удаления удалось выгрузить в папку все остальные? Может, ещё и третий есть.:lol:

"Зверев Александр" написал:После удаления удалось выгрузить в папку все остальные? Может, ещё и третий есть.

да, был еще один, удалил и его... не помогло... поискал в папке, нашел и там упоминание этой ИД, удалил и этот сервис, это тож не помогло!!

То есть на текущий момент в конфигурации нет ни одного сервиса с таким UID и при этом загрузить в конфигурацию сервис с этим UID не даёт?

"Зверев Александр" написал:То есть на текущий момент в конфигурации нет ни одного сервиса с таким UID и при этом загрузить в конфигурацию сервис с этим UID не даёт?

Фантастика, но так и есть...

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

"Терещук Павел" написал:

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


3.4.0.130

НАШЕЛ!!! Оказывается был еще один сервис где вспоминалось это UID - "wnd_OfferingsDetailTreeArea"(я просто не дождался второго файла при поиске). Когда там удалил строку «UID="91DAAD2EF7A34382AD0C2D3B63EF870C" » - все ошибки пропали!!!

Показать все комментарии

Добрый день!
Возникла такая задача:
Нужно отфильтровать данные в lookupDataControl на основе фильтра в запросе.

При использовании

var Dataset1 = dlData.Dataset; 
        var Dataset = LookupDataControl.DataField.LookupDataset;
ApplyDatasetFilter(Dataset, 'IncidentID', Dataset1.Values('IncidentID'), true);
        EnableDatasetFilters(Dataset, true, 'IncidentID');

вылетает в ошибку с необработанным исключением.
Как решить сию задачу?

Нравится

3 комментария
        var FieldID = dlData.Dataset('FieldID');
	if (FieldID != null) {
		var Dataset = LookupDataControl.DataField.LookupDataset;
		ApplyDatasetFilter(Dataset, 'FieldID', FieldID, true);
	}

это если у вас поле не списочное (нет стрелочки вниз - вместо нее лупа).

Олейник Дмитрий
Подскажи как написать фильтр в массиве для одного поля
Типо такого
ApplyDatasetFilter(Dataset, 'FieldID', New Array(1 фильтр, 2 фильтр), true);

ApplyDatasetIncludeFilter(Dataset, 'FieldID', FieldIDsArray, true);

При этом IncludeFilter должен быть заранее задизайнен в сервисе SelectQuery.

Показать все комментарии

добрый день.

Как в Select Query реализуется такое объединение?

inner join tbl_Task t on t.ownerid = c.id and t.accountid = a.id

Нравится

2 комментария