Подскажите пожалуйста, я никогда не работал с этой программой, но передо мной стоит задача экспортировать всю базу Террасофт Риэлт в 1с:Управление недвижимостью, возможно ли это вообще сделать? Если да, то как? Или может, возможен експорт всей базы в формат Exсel?
Программный продукт TS CRM Realty – это разработка нашего партнера ‘Альфа-Информ’.
Для уточнения деталей реализации и возможностей интеграции с другими программными системами свяжитесь, пожалуйста, с компанией ‘Альфа-Информ’ по телефонам, указанным на их сайте: http://www.olp.ru/
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.
Добрый день! Настроил экспорт счетов из Terrasoft в 1С. Интеграция запускается по расписанию, раз в 2 часа.
Иногда нужно при создании счета в TS сразу отправить его в 1С.
Подскажите, пожалуйста, можно ли как-то запустить интеграцию для конкретной записи, чтобы остальные счета не трогать?
Добрый день!
Анна, еще немного уточню вопрос. Можно ли запускать настроенную интеграцию из скрипта, например чтобы при при нажатии на кнопку в разделе "Счета" выбранный счет уходил в 1С?
Да, можно, но тогда без wnd_Autorun1C. Следует вызвать функцию ExportObject и передать в нее идентификатор записи. К скрипту, откуда мы ее вызываем, нужно будет подключить scr_Dataflow1CUtils
var Attr = GetNewDictionary();
Attr('#ID#')= RecordID;
ExportObject(null, DataflowID, ObjectID, Attr);
DataflowID - идентификатор синхронизации в разделе Интеграции;
ObjectID - идентификатор настроенной интеграции с определенной сущностью в конкретной интеграции;
RecordID - идентификатор создаваемой записи.
Подскажите пожалуйста, можно ли как-нибудь реализовать экспорт одной текущей записи в 1С V77 по событию? (Например: при сохранении нового документа, этот документ автоматически экспортируется в 1С). Если можно, буду рад примерам.
Необходимо настроить автоматический запуск БП по событию создания новой записи в разделе "Документы".
В этом БП на элементе Start получаем ID созданного документа, и далее в элементе скрипт получаем все необходимые данные по этому документу, и далее пишем напрямую в 1С:
Интересно, в чем-нибудь еще может быть проблема, кроме неправильного пути/пользователя/пароля? (перепроверил несколько раз, ввожу все правильно; процесс в диспетчере задач появляется).
В Path ведь полный путь к exe файлу 1С прописывается?
Функция Generate1CParamString(Path, Login, Password, IsExclusive) отсюда.
Разобрался с подключением, коннект проходит. Все поля прописываются кроме перечислений.
Как записать в поле значение, если это перечисление?
Для справочников делал так:
var Firm1C = v77.CreateObject('Справочник.Фирмы');
Invoice1C.Фирма = Firm1C.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_Account', Dataset('FirmID'), 'Name'));
Аналогично для перечислений делаю:
var State1C = v77.CreateObject('Перечисление.СостояниеЗаказНаряда');
Invoice1C.Состояние = State1C.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_DocumentState', Dataset('StateID'), 'Name'));
Не работает. Пишет: "Неудачная попытка создания объекта"
Для сравнения значений агрегатных типов данных в базе, открытой через Оле, использовать стандартный алгоритм с использование знаков равно и неравно (=,<>) не получается. Выход простой. Необходимо перейти от сравнения агрегатных типов данных к простым типам данных - дата, строка и число.
Отсюда вывод: мы сравниваем не сами элементы, а их уникальные атрибуты. Например, для элементов справочника - это код (если он есть), либо наименование. Для перечисления используется метод Идентификатор(). Вот два примера://Сравнение реквизита номенклатуры с Константой БазоваяВалюта
Если дТовар.ВалютаУчета.Код<>Другая.Константа.БазоваяВалюта.Код Тогда
дТовар.ВалютаУчета=Другая.Константа.БазоваяВалюта;
КонецЕсли;//Сравнение реквизита номенклатуры с перечислением
Если дТовар.ТипТовара.Идентификатор()<>Другая.Перечисление.ТипыТоваров.Штучный.Идентификатор() Тогда
дТовар.ТипТовара=Другая.Перечисление.ТипыТоваров.Штучный;
КонецЕсли;
if(Dataset('StateID')){try{
var State1C = v77.CreateObject('Перечисление.СостояниеЗаказНаряда.'+ GetDatasetFieldValueByID('ds_DocumentState', Dataset('StateID'), 'Code1C'));
Invoice1C.УстановитьАтрибут('Состояние', State1C);}catch(e){Dialog +='"Состояние" нет совпадений в базе 1С'+'\r\n';} finally {}}
2) Справочник:
if(Dataset('FirmID')){
InsertDictionaryFieldTo1C(v77, Invoice1C, 'Справочник.Фирмы', 'Фирма', 'ds_Account', Dataset('FirmID'));}
function InsertDictionaryFieldTo1C(v77, Invoice1C, Object1CName, Field1CName, DatasetUSI, ValueID){
var Object1C = v77.CreateObject(Object1CName);
var Object1CIsFound = Object1C.НайтиПоКоду(GetDatasetFieldValueByID(DatasetUSI, ValueID, 'Code1C'), 0, 0);if(Object1CIsFound !=0){
Invoice1C.УстановитьАтрибут(Field1CName, Object1C.ТекущийЭлемент());}else{
Dialog +='"'+ Field1CName +'" нет совпадений в базе 1С'+'\r\n';}}
Подскажите, пожалуйста, в стандартной интеграции при экспорте счетов в 1С существует ли возможность ввода на основании этого счета других документов, например Актов (автоматическое создание актов во время перекидки счетов)?
Здравствуйте Иван,
Автоматическое создание актов не предусмотрено.
Все зависит от конфигурации 1С и поставленных модулей
Пример создания Документа при экспорте счета:
function OnAfterRecordImport(Param, Dataset, Select1C){
var DocObj = GetScriptObjectByVersion(Param).GetObject(Param.Obj1C, 'Документ.Акт1…');
DocObj.CreateDocument();
DocObj.Number=1234;
DocObj.Счет = Select1C;
DocObj.Write();}
Необходимо создать подчиненную запись при синхронизации, и установить соответствие [Продукт в группе].[Название] (Террасофт) - [Номенклатура].[Номенклатурная группа] (1C)