Здравствуйте))
Подскажите пожалуста как можно синхронизировать Excell с Terrasoftom XRM

Нравится

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

Добрый день, Туркян!
По Вашему вопросу не понятна суть задачи. Что в данном случае понимается под синхронизацией Excel с TS?
Опишите подробно, что необходимо сделать? Какой итоговый результат нужно получить?
Имеете ли Вы в виду импорт данных из Excel в TS?

Если необходимо настроить интеграцию, то можно запустить файл TSMSOfficeConfig.exe, который находится в папке Bin, где установлена Terrasoft.

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Добрый день! Благодарю вас за ваши ответы. Я хочу чтобы Excell файл со всеми содержащими в них колонках и информацией в ней загрузился в Террасофт, я даже поменяла название колонок в Excell как в Террасофт и наоборот, но ничего не получается, высвечивается в Террасофт только название файла, а данных не бывает.

С уважением,
Туркян Рагимова

Добрый день, Туркян!
Для импорта данных из Excel файла в Terrasoft необходимо создать и настроить интеграцию Excel. Задать главную таблицу, поля импорта и с соответствие их между колонками Terrasft и Excel.

Пошаговая инструкция прилагается.
Приятной работы!

Пытаюсь загрузить инциденты из XLS (ещё бы лучше из CSV). Контрагенты, контакты импортируются, но как указать для Инцидентов ключевые поля не пойму. Заголовки Террасофт второй строкой себе для улучшения ориентации вставил.

Что и как указать для импорта в таблицу Инцидент?

Добрый день, Vadson.
В полученном шаблоне я не нашел поля, идентичного "Признакам и симптомам". В базовой конфигурации - это ключевое поле. Отсутствие связи его с колонкой Excel не позволит провести импорт.

Для примера, я связал поле Признаки с названием контрагента в файле excel.

17-08-2012_12-11-39.png

Павел!!! Спасибо!!! Моя ошибка была в том, что пытался тянуть ключевые поля с шапки.

Ключевые поля для уникальной идентификации надо тянуть с тела таблицы соответствия!!!!!!!

Ещё вопрос по импорту. Как нумерацию сделать? Из XLS номера не катят, а при импорте они получаются NULL, т.к. при выборе полей для импорта IncidenNumber вообще не нашёл (?)

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

  1. Шаблон файла Excel:
    excel.png
  2. Настройка интеграции:
    settings.png
  3. Результат импорта:
    result.png

Ага, нашёл. Название поля Номер инцидента зачем-то переименовано было в Инцидент. Спасибооооо!!!!!!!

Можно ли при импорте из XLS каким-либо способом трансформировать содержимое ячеек. Например в источнике указано ФИО и надо симпортировать на три поля раздельно Фамилия - Имя - Отчество с разделителем пробел?
Попытался отредактировать скрипт импорта, получил ошибку

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

Алгоритм действий таков:

  1. Найти метод, который сохраняет поля.
  2. Задать в нем проверки ID интеграции и имени поля в БД куда импортируется текущая запись
  3. Применить к значению поля базовый метод Split()
  4. Далее обратиться к полученному массиву рассплитованных данных и вписать их в соответствующие поля БД - на этом этапе возможно понадобится добавить новые связи

XRM Террасофт 3.3.2.252
Ошибка возникает при попытке редактировать скрипт импорта из Excel. Скрины прилагаются

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

Рекомендую Вам вернуть скрипт импорта в исходное состояние, и разнести данные ФИО на три колонки в Excel.

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

Здравствуйте!
Я нашла пример экспорта справочника продуктов из 1С в Terrasoft CRM (https://community.terrasoft.ua/developer/integration/1923). Но возник следующий вопрос. Есть ли возможность произвести интеграцию Terrasoft CRM c 1C (7 и 8) для детали "Продукты". И так чтобы если произвести экспорт продуктов из 1С в Terrasoft CRM в деталь "Продукты" и таким образом, чтобы были корневые группы и подчиненные группы. Т.е. чтобы в деталь "продукты" продукты распределялись автоматически по группам. Система Terrasoft CRM позволяет такое? Или нужно программировать?

Нравится

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

Валентина, автоматический экспорт групп в утилите не реализован.

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

Обратите внимание, реализация будет сильно различаться для 1С77 и 1С 82, т.к. в первой группе хранятся в отдельной сущности в базе данных, а в 82 являются частным случаем номенклатуры.

Спаисбо за ответ, Анна.
На данный момент я занимаюсь исследование на тему интеграции TerrasoftCRM с 1С, поэтому возник вопрос.

Здравствуйте!
Сейчас немного ближе ознакомилась с данным вопросом. И немного поподробнее расскажу. Дело в том, что есть интегратор, который объединяет данные, которые идут из 1С7 и 1С8 в Terrasoft. А продукты в 1С не распределены по определенным группам и поле "группа" продукта у них нет, поэтому возникает сложность. Как так интегрировать продукты по определенным группам.

Вариант 1й - Может создать поле "Группа" в 1С (Но заказчик на это смотрит не очень положительно, дополнительная работа для бухгалтера)
Вариант 2й - Внести нумерацию

Валентина, уточните, пожалуйста, где в данном случае хранится информация о группах, и можем ли мы получить ее из "интегратора"?

Удалось поговорить с главным бухгалтером. Немного переиграли постановку задачи. В 1С в "Товарах" "Стандартная сборка" содержит в себе составляющие сборки (рисунок-1).
Если перевести это в печатную форму, то это будет выглядить как на рисунке 2. Сборок может быть несколько и нужно это учитывать. Нужно осуществить выгрузку именно сборки со всеми составляющими сборки в Terrasoft, в деталь "Товары".

http://imageshack.us/f/23/26978495.jpg/ (побольше картинки)

В таком случае, оптимальным вариантом будет выгружать информацию на деталь Комплектация продукта.

В данном случае структура базы данных у нас следующая:

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

При добавлении продукта в Счет, Документ, Продажу комплектация подтягивается из соответствующего продукта, однако в продажу могут быть добавлены и другие продукты.

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

Пользуемся Октел, Террасофт и IP телефонами Yealink
Все нравится, удобно, есть конечно проблемки но помощью техподержки и Айти-Сферы постепено снимаем.

Но есть три вопроса на развитие.

1. Как можно звонить из Террасофта минуя Октелл, например у меня стоит IP телефон в нем три акаунта, один на Октел, остальные другие операторы. Как я могу из Террасофта позвонить по другому Аккаунту.

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

3. Как можно звонить в другие сиптранки минуя городскую телефоную сеть, например надо позвонить в техническую потдержку террасофта, я со своего IP телефона звоню через Октел в телефоную сеть на городские телефоны Террасофта, потом они преобразуются в IP и попадают сотрудникам. А было бы проще в Террасофте нажал кнопку и сразу связь с техподержкой.

Нравится

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

Как говорится "Лучшее враг хорошего" :wink:, но альтернативное решение есть и оно в данный момент проходит интенсивное тестирование.
Есть отдельный модуль LiTPhone - это SIP телефон, который работает с любым поставщиком SIP телефонии (аля X-Lite). Этот модуль разработан специально для системы Террасофт и поддерживает событийную модель, что дает дополнительные возможности вашим разработчикам.

>> Как можно звонить из Террасофта минуя Октелл:

В базовой версии это не пока не представляется возможным, так как Terrasoft не является IP-телефоном, а взаимодействует с сервисами телефонии исключительно на базе интеграции. Oktell же является IP-АТС, которая позволяет производить звонки через каналы многих операторов. В этом случае необходимо завести каналы от нескольких операторов в свою ATC и настроить в IVR правила (сценарии) маршрутизации звонков.

>> Как можно перенаправить звук с компьютера на телефон

Вопрос опять же маршрутизации звонка. Реализация зависит от того, чем является "телефон": компьютерное приложение (место оператора в Oktell, например), IP-телефон, аналоговый или мобильный телефон? К чему подключён данный телефон?

>> ... было бы проще в Террасофте нажал кнопку и сразу связь с техподержкой

Это практически нереализуемо. Мы со своими абонентами можем использовать разных операторов IP телефонии и "договорится" между собой о прямой ip-связи наши операторы не смогут. Схема, описанная Вами является аналогом Skype/MSN (и т.п. по аналогии) в распространенном понимании - прямая связь с абонентом. Также, по этому вопросу, рекомендуется почитать документацию о принципах SIP:
http://ru.wikipedia.org/wiki/SIP
http://www.ixbt.com/comm/proto-sip.shtml

"Фильковский Павел" написал:то практически нереализуемо. Мы со своими абонентами можем использовать разных операторов IP телефонии и договорится между собой о прямой ip-связи они не смогут. Схема, описанная Вами является аналогом Skype/MSN (и т.п. по аналогии) в распространенном понимании - прямая связь с абонентом

Почему нереализуемо?
Мне кажется что идея отличная!
Ведь вам ничего не мешает (с технической точки зрения) поднять тот же Asterisk или на своем Ok-Tell-е (в вашей компании кажется Ok-Tell используется) открыть отдельную линию именно для тех поддержки.

Я конечно не специалист но у каждого пользователя есть свой адрес sip:имя@IP-адрес могу ли я звонить по этому адрессу с IP телефона не добавляя аккаунт и нелогинясь на IP-адрес

В качестве идеи предлагаю Террасофту и Октеллу сделать возможность для своих клиентов доступ (только для внутрених звонков) к своей телефонной сети. То есть каждый покупатель продукта паралельно получает и персональный sip:имя@IP-адрес в сети разработчика. Мне кажется это будет удобно.

"Фильковский Павел" написал:так как Terrasoft не является IP-телефоном, а взаимодействует с сервисами телефонии исключительно на базе интеграции.

Немного неправильно сформулировал вопрос. Могу ли я с Террасофта управлять напрямую аппаратным IP телефоном, по аналогии например когда я выбираю контакт скайпа то у меня запускается скайп.
А в идеале было бы что бы можно было и подключать свой мобильный телефон, то есть выбрав номер в Террасофте он набирался на мобильном. Или звонок на мобильный отображался в террасофте.

Имеется ввиду параллельно с нормальной работой Террасофта и Октелла.

"Фильковский Павел" написал:Вопрос опять же маршрутизации звонка. Реализация зависит от того, чем является "телефон": компьютерное приложение (место оператора в Oktell, например), IP-телефон, аналоговый или мобильный телефон? К чему подключён данный телефон?

У меня аппаратный IP телефон Yealink (софтовые пробовал, увы качество звука значительно хуже) подключен по сети. То есть сетевой кабель в Телефон, а из него в Компьютер.

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

При этом с террасофта можно произвести http (web) запрос на октелл и запускать слежубный сценарий дозвона с необходимыми параметрами (т.е. для определенного пользователя по определенным внешним и внутренним линиям).

Это достаточно простой способ реализации вашей задумки.

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

Здравствуйте! Кто-то может помочь с решением проблемы по экспорту номенклатуры? Экспортируем номенклатуру, наименования встают в 1с7, а вот Базовая единица и %НДС никак не получается

Нравится

1 комментарий

Дмитрий, в 1С77 значение поля БазоваяЕдиница формируется на уровне программного кода модуля карточки 1С из выбранного значния классификатора единиц измерения, штрихкода и ссылки на номенклатурную единицу.

Для того, чтобы значения корректно переносились, следует всю логику, реализованную в карточке 1С переписать в скрипт интеграции.

Алгоритм следующий:

1. Проанализировать программный код карточки в конфигураторе 1С, выбрать тот, что отвечает за логику формирования справочника Единицы;

2. Переписать программный код под использованием с COM-объектом 1С в Terrasoft;

3. Добавить программный код в событие AfterExport, реализовать добавление записи в справочник Единицы по содержимому карточки Номенклатура и редактирование поля базовая в добавленной записи.

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

Добрый день!

Делаю интеграцию с 1С 8.2 на стороне Terrasoft:

1c_import_ts.png

Скриптами получаю "контактную информацию" из "контактного лица". Вот запрос:

var Object1C = Param.Obj1C;            
                var ContactInfo = Object1C.NewObject("Запрос");          
                ContactInfo.text = "ВЫБРАТЬ КонтактнаяИнформация.Объект," + '\n'+
                                "КонтактнаяИнформация.Тип," + '\n'+
                                "КонтактнаяИнформация.Вид," + '\n'+
                                "КонтактнаяИнформация.Представление," + '\n'+
                                "КонтактнаяИнформация.Поле1," + '\n'+
                                "КонтактнаяИнформация.Поле2," + '\n'+
                                "КонтактнаяИнформация.Поле3," + '\n'+
                                "КонтактнаяИнформация.Поле4," + '\n'+
                                "КонтактнаяИнформация.Поле5," + '\n'+
                                "КонтактнаяИнформация.Поле6," + '\n'+
                                "КонтактнаяИнформация.Поле7," + '\n'+
                                "КонтактнаяИнформация.Поле8," + '\n'+
                                "КонтактнаяИнформация.Поле9," + '\n'+
                                "КонтактнаяИнформация.Поле10," + '\n'+
                                "КонтактнаяИнформация.Комментарий," + '\n'+
                                "КонтактнаяИнформация.ЗначениеПоУмолчанию" + '\n'+
                        "ИЗ" + '\n'+
                                "РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация" + '\n' +
                        "ГДЕ"+ '\n' +
                                "КонтактнаяИнформация.Объект = &Ссылка1;";                 
                ContactInfo.УстановитьПараметр("Ссылка1", Select1C[QueryLink].Ссылка);                                       
                var SContactInfo = ContactInfo.execute()               
                var RContactInfo = SContactInfo.Выгрузить();

В 1С это так выглядит:

1c_import.png

Из "Представление" (1) значение получаю без проблем!

Как получить значение перечисления "Тип" (2)? Может кто-то уже такое делал?

Спасибо!

Нравится

8 комментариев
Param.Obj1C.Перечисления.ТипыКонтактнойИнформации.Другое

Если нам нужно получить тип из 1С, тогда вот пример скрипта:

var EnumName = 'ТипыКонтактнойИнформации';
var EnumIndex = Param.Obj1C.Перечисления[EnumName].Индекс(Select1C.Тип);
var Name = Select1C.Тип.Метаданные().EnumValues.Get(EnumIndex).Имя; 

Обратите внимание, это для 1С 8.х

В 1С 77 название можно было получить проще: Select1C.Тип.Представление()

Пробовал следующий код:

var EnumName = 'ТипыКонтактнойИнформации';
var EnumIndex = Param.Obj1C.Перечисления[EnumName].Индекс(RContactInfo.Получить(i).Тип);
var Name = Select1C.Тип.Метаданные().EnumValues.Get(EnumIndex).Имя;

Name из undefined ((((

Александр, а что у Вас в RContactInfo?

Это переменная с результатом выполнения запроса:

var SContactInfo = ContactInfo.execute()                
var RContactInfo = SContactInfo.Выгрузить();

Александр, в данном случае необходимо произвести отладку и выяснить, что у нас в RContactInfo.Получить(i).Тип

Для корректной работы функции должна быть ссылка на элемент перечисления. В случае, если у нас там что-то другое, код работать не будет.

RContactInfo.Получить(i).Тип - закрытый объект, как узнать ссылка это или скажем посмотреть его свойства?

Александр, попробуйте сравнить значение. Например, есть Вам точно известно, что тип в данном регистре - Адрес, тогда:

if (Param.Obj1C.Перечисления.ТипыКонтактнойИнформации.Адрес == RContactInfo.Получить(i).Тип){
//если выполняется, тогда равно.
}else{
это не ссылка на элемент перечисления.
}

Еще один из способов получения названия элемента из ссылки на него описан здесь: http://www.community.terrasoft.ua/blogs/8329#comment-34738

Спасибо. нашел решение проблемы!

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

Добрый день!

Подскажите, как импортировать из 1С 8.2 в Террасофт данные из Регистра накопления? Насколько я понимаю, каким-то образом нужно передать в запрос дату, на которую требуется получить значения остатков.

Может у кого есть рабочий пример?

Нравится

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

Здравствуйте, Николай!

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

В принципе порядок импорта зависит от структуры контретного регистра сведений.

Алгоритм следующий:

1. Создаем корневую интеграцию с сущностью, по которой формируется регистр;
2. Создаем подчиненную интеграцию для переноса информации из регистра на деталь.

Спасибо за подсказку. Появился еще один вопрос: как установить фильтр по дате таким образом, чтобы он был всегда равен не фиксированному значению, а текущей дате?

Переформулирую вопрос, так как внимательно изучил структуру регистра. В нем, оказывается, фиксируются все движения остатков. Причем, в окне регистра приходные и расходные операции обозначаются как "+" и "-". Для того, чтобы получить текущий остаток, я должен не просто взять все движения по регистру, но и взять их с правильным знаком. А вот как это сделать из Терасофта?

И, еще, в 1С, обращаясь к регистру накопления, можно сразу получить остаток на интересуюущую дату. Возможно ли это реализовать через Террасофт?

"bayborodin" написал:как установить фильтр по дате таким образом, чтобы он был всегда равен не фиксированному значению, а текущей дате?

Для этого необходимо в фильтрах интеграции задать фильтр по периоду:

111

"bayborodin" написал:в окне регистра приходные и расходные операции обозначаются как "+" и "-". Для того, чтобы получить текущий остаток, я должен не просто взять все движения по регистру, но и взять их с правильным знаком. А вот как это сделать из Терасофта?

Это также настраивается в блоке фильтрации.

"bayborodin" написал:И, еще, в 1С, обращаясь к регистру накопления, можно сразу получить остаток на интересуюущую дату. Возможно ли это реализовать через Террасофт?

Это интересная и нетривиальная задача. Рассмотрим детально:

Что такое остаток на интересующую дату? Это первая запись регистра сведений, отфильтрованная по данному товару, дате и отсортированная по дате.

Для того, чтобы это реализовать, есть два варината:

1. Импортировать всю информацию, и производить поиск средствами Terrasoft;

2. Реализовать на уровне программного кода подключение к 1С и выполнение запроса к регистрам. Хочу предупредить, этот вариант будет очень трудоемким.

"Alimova Anna" написал:

Это интересная и нетривиальная задача. Рассмотрим детально:

Что такое остаток на интересующую дату? Это первая запись регистра сведений, отфильтрованная по данному товару, дате и отсортированная по дате.

Для того, чтобы это реализовать, есть два варината:

1. Импортировать всю информацию, и производить поиск средствами Terrasoft;

2. Реализовать на уровне программного кода подключение к 1С и выполнение запроса к регистрам. Хочу предупредить, этот вариант будет очень трудоемким.

К сожалению, регистр остатков в 1С 8.2 - это не регистр сведений, а регистр накопления. Так что, предложенный вариант отпадает.

Это также настраивается в блоке фильтрации.
а как? можно тоже скриншот?

Заранее большое спасибо!

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

Регистр накопления "ТоварыНаСкладах" 1С 8.2 УТ 10.3

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

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

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

Добрый день.

Подскажите, как импортировать данные из Excel_файла в грид террасофта?
При этом нужно произвести некоторые манипуляции с данными в файле (просуммировать значения одного столбца по значению другого).

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

Вопрос как собственно импортировать (по нажатию кнопки на том самом гриде) и есть ли другой способ манипуляций с данными в табличном файле?

Нравится

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

Добрый день!

Во время импорта провести "манипуляции" нельзя.
Но Ваш подход решения весьма трудоемок. Рассмотрите вариант написание функции с циклом, который "пройдет" по необходимому датасету и выполнит необходимые действия.

Мне почему-то кажется, что обработка данных непосредственно в таблице будет быстрее. Хотя, возможно, не совсем правильно.

А как сам импорт произвести?

На мой взгляд, наиболее простой способ - сделать все манипуляции непосредственно в самом Excel файле. Затем импортировать его стандартными средствами раздела "Интеграции". От туда же можно взять "код" из кнопки импорта.

Максим, согласен, самое разумное решение :)
Но не похоже, что Лена ищет легких путей)

"Росинская Лена" написал:

А как сам импорт произвести?

Стандартными средствами через "Интеграцию".

"Гакало Игорь Александрович" написал:Максим, согласен, самое разумное решение :)

Excel-файлы могут, например, прийти из другой системы или от людей как есть. И хочется их загрузить без открытия и изменения.

А если сделать вычисляемую (средствами js) колонку в датасете или вычисляемое (средствами sql) поле в select query?

Игорь, Вы ошибаетесь.

Просто заказчик не собирается руками править файл перед импортом в ТС.

Не вполне понятно Ваше предложение "пройтись по датасету": как в нём можно реализовать агрегатные функции аналогичные sum + group by в sql?

Всё что я нашла в веткеCommon\Tools\Integration\MS Office\MS Excel\ это 2 скрипта: scr_MSExcelLibrary и scr_MSExcelLibraryConsts.

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

Первая из ошибок - пустой объект var SaveDisplayAlerts = ExcelApplication.DisplayAlerts; в скрипте scr_DataflowTuning.

Лена, по поводу ошибки подсказать не могу, необходима отладка. Если Вы не изменяли стандартную логику, то поддержка сможет помочь.

Не думаю, что сортировка будет очень важна при импорте, а суммирование значений - это именно то, что я имел в виду под "пройтись" :) То есть, либо запуск скрипта из конфигурации, либо добавление кнопки "Суммирования" (или других операций) над значениями полей, которая будет находиться в GridArea "Интеграций" для определенных ID интеграций Excel, которым потребуется слияние.
В этом же скрипте Вы можете добавить проверку на дату добавления записи, чтобы обрабатывались не все записи, а только те, которые, к примеру, были добавлены сегодня.

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

Добрый день, коллеги!

Подскажите, как вы решаете задачу синхронизации товарных остатков между XRM и 1С?

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

И, вторая часть вопроса - если делать не как правильно, а как проще, то есть просто импортировать текущие значения регистра остатков - то, как это сдалать? Есть ли пример импорта остатков товаров из 1С в Террасофт, чтобы на него можно было посмотреть и разобраться (или любой другой пример работы с регистрами)?

Заранее спасибо за ответы!

P.S. Речь идет о Торговле 8.2

Нравится

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

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

Работу с регистраци сведений можно посмотреть на примере импорта адресов контрагентов (в приложении).

"bayborodin" написал:В частности, интересует первичная синхронизация при настройке интеграции: по идее, загружать куда-то цифры остатков - не правильно, должен быть сформирован документ, "двигающий" эти остатки. В частности, в данном случае, наверное, это будет документ "Ввод начальных остатков". Только вот, как его получить из текущих остатков в 1С, да еще и импортировать в Террасофт - не понятно :(

Для расчета остатков в коробочной версии существует отчет по складским документам.

В случае, если учет остатков планиуется вести в 1С, тогда необходимо решить, какую информацию импортировать.

Есть вариант вносить все складские документы, и по ним рассчитывать, однако это трудоемкий процесс, и возникнет вопрос сверки остатков 1С и Terrasoft.

"bayborodin" написал:И, вторая часть вопроса - если делать не как правильно, а как проще, то есть просто импортировать текущие значения регистра остатков - то, как это сдалать? Есть ли пример импорта остатков товаров из 1С в Террасофт, чтобы на него можно было посмотреть и разобраться (или любой другой пример работы с регистрами)?

Получать готовую информацию непосредственно из 1С - не только проще, но и правильнее.

Однако для решения вопроса таким образом без программирования не обойтись. Есть два варианта решения задачи:

1. Если у Вас 1С 8.2, тогда можно рассимотреть варианты интеграции с 1CAutomationServer и показывать отчет 1С по нажатию конпки в Terrasoft.

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

Спасибо за ответ, но стратегия дальнейших действий пока не ясна.

Опишу задачу более подробно: требуется перенести складской учет в Террасофт. С периодической выгрузкой документов в 1С. Следовательно: показывать просто отчет, сформированный 1С - не подойдет, нужно не просто витеть из Террасофта остатки по складам, но и управлять ими. При этом не просто записывать статические цифры на какую-то деталь, а использовать все возможности Terrasoft XRM Distrubution. Отсюда - желание проинициализировать начальные остатки данными из 1С, сделать это корректно, и в дальнейшем вести складской учет в Terrasoft.

Здравствуйте, Николай!

В таком случае рекомендуем производить импорт складских документов в раздел Склад (он есть в конфигурации XRMDistribution), и затем по складским документам делать аналитику и считать остатки.

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

Добрый день! Необходимо реализовать след. задачу: при сохранении карточки документа формировать письмо в Outlook'е со след. параметрами:
1
Вероятно нужно создать шаблон письма? Как это делается, хотелось бы знать в общих чертах.

Нравится

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

Да, Антон Владимирович, это делается с использованием раздела "Шаблоны сообщений". О нём можно почитать в инструкции, стр. 462-487. В двух словах, сначала создаётся пользовательский запрос, вытягивающий нужные поля из таблиц, потом на его основе - шаблон письма.

Разделы "Шаблоны сообщений" и "Запросы" находятся в верхнем меню "Интструменты".
раздел шаблонов
Запрос конструируется в таком вот построителе запросов:
построитель запросов
А шаблон - в окне нового письма Аутлука с подключеным плагином Terrasoft:
Аутлук

Понятно, спасибо. Когда я указываю раздел "Документы" и запрос для шаблона сообщения, на вкладке макросы доступны лишь поля запроса. А мне необходимо еще #Контакты.Обращение#, то есть Обращение контакта, которому посылается письмо. Его динамически можно в шаблон потом подставить или сразу можно как то в шаблон вставить?

А этот контакт имеет отношение к документу? Если да, можно вытянуть это поле в запрос, выбрав в построителе в дереве слева.

имеет) спасибо, что то не подумал сразу.

Предложенный вариант Александра хочется немного дополнить автоматизацией:

  • Дабавив шаблон получите его ID в Terrasoft Administrator: сервис Mail\Dictionaries\Templates\Main Grid\sq_MailTemplate, к примеру в моем случае - это  '{F8D4D576-DA9C-43BA-815D-14DC4ED92A21}'
  • В сервис Documents\General\Main Grid\scr_DocumentEdit перед блоком // Event handlers добавьте две вспомогательные функции:

    function ProcessSendEmail(Dataset) {
    	if (Self.Attributes('SkipSendEmail')) {
    		return;
    	}
    	if (ShowConfirmationDialog(
    		"Отправить E-mail клиенту?") != wmrYes) {
    		return;
    	}
    	var AddressList = [];
    	var ContactID = Dataset.Values('ContactID');
    	GetMailAddressesByContactID(ContactID, AddressList);
     
    	SendIncidentEmailToContact(Dataset, AddressList);
    }
     
    function SendIncidentEmailToContact(DocumentDataset, AddressList) {
    	var EmailSubject = "Коммерческое предложение №" +
    		DocumentDataset.ValAsStr('DocumentNumber');
    	var TemplateID = '{F8D4D576-DA9C-43BA-815D-14DC4ED92A21}';
    	var ID = DocumentDataset.Values('ID');
    	SendEmailByTemplate(TemplateID, {RecordID: ID, Address: AddressList, Subject: EmailSubject});
    }
  • В обработчик события dlDataOnDatasetAfterPost(Dataset) добвьте вызов ранее вставленной функции:
    function dlDataOnDatasetAfterPost(Dataset) { 
    	ProcessCopyOfferingDetail(Dataset);
    	ProcessSendEmail(Dataset)	
    }

Спасибо за дополнение, Павел!

Нужно реализовать условный макрос. Читал в руководстве следующее:

3

Что такое Пол в этом выражении? Вероятно это название макроса Пол, из запроса для этого шаблона?

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

Добрый день!

В террасофте имеется возможность использовать хтмл-теги, к примеру:

var BodyFormat = "HTML";
var CopyRecipients = 'crm-inbox@vitpc.com';

var Body = FormatStr("
Номер проекта: "
+ OpportunityNumber );

var SQL = "EXEC msdb.dbo.sp_send_dbmail  @profile_name = '%1', ";

SQL += "@recipients = '%2', @copy_recipients = '%3', @body = '%4', @subject = '%5', @body_format = '%6'";
SQL = FormatStr(SQL, ProfileName, AddressStr, CopyRecipients, Body, Subject, BodyFormat);
Connector.DBEngine.ExecuteCustomSQL(SQL, System.EmptyValue);

Когда происходит экспорт задач в аутлук, тело задачи заполняется следующим образом:

В сервисе scr_MSOutlookTasksSynchronization

function ExportAppointmentToMSOutlook(Dataset, olAppointment) {
    var RemindMinute;
 
    var title_string =  Dataset('Title');
        olAppointment.Subject = 'встреча: ' + title_string;
...
        olAppointment.Body = 'тест'
...
}

Вставка тегов в olAppointment.Body = 'тест' или даже использование метода bold() не работает (текст воспринимается буквально). Вероятно, потому что нужно указать вид форматирования (BodyFormat в примере выше).

Вопрос: где указывается тип форматирования "HTML" При экспорте задач?

Нравится

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

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

Попробуйте использовать свойство olAppointment.HTMLBody вместо olAppointment.Body.
MSDN link

Добрый день!

Написала, как по ссылке:

olAppointment.BodyFormat = olFormatHTML
olAppointment.HTMLBody = '<br><b>test</b>';

Падает исключение на .BodyFormat и .HTMLBody: объект не поддерживает данное свойство или метод

Здравствуйте, Елена.

Действительно, свойство BodyFormat и HTMLBody доступно только для e-mail сообщений Outlook. В задачах и встречах это свойство не доступно: ссылка

Append text to an existing non-message item:
If you don’t care about formatting, modify the Body property.
If you want to preserve formatting, use Inspector.WordEditor.

Поэтому нужно использовать WordEditor. Описание можно почитать по следующей ссылке.

1

Дополнительные ссылки:
http://www.outlookcode.com/threads.aspx?forumid=3&messageid=31711
http://www.pcreview.co.uk/forums/html-olappointment-body-t2968525.html

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