Как экспортировать из Terrasoft контрагентов в конкретные группы 1С

Добрый день!

Подскажите, пожалуйста как экспортировать в 1С контрагента в конкретную группу. Например, есть такая иерархия в 1С: 1 уровень: Клиенты, Поставщики, Банки ..., 2 уровень: Киев, Донецк, Харьков.

Ранее обсуждался вопрос по продуктам, но для Контрагентов не нашел таблицу групп.

Заранее благодарен.

Нравится

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

Вы правы - данный вопрос обсуждался:http://www.community.terrasoft.ua/forum/topic/7083

Укажите версию 1С используемую Вами.
Как происходит определение принадлежности контрагента к той или инной группе в Вашей конфигурации 1С? (должна быть таблица, в которой утанавливается соответсвие групп и контактов)

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

Версия 1С УПП 8.2.

Пример структуры
str

Контрагенты - иерархический справочник, связь с группой устанавливается через поле Группа контрагентов: данные - поле Родитель, Тип значения: СправочникСсылка.Контрагенты.

sprav

Кроме того, у данного справочника в наборе данных есть параметр ЭтоГруппа, т.е. это один справочник, где записи разделяются на элементы и группы и для элементов указывается родитель.

data

Пример таблицы для аналогичного справочника Физические лица.
Поля: _IDRRef - id записи
_IDParentRRef - родительский id
_Folder - 1 - элемент, 0 - группа

Вы можете заполнять поле "Родитель" в скрипте.

function OnBeforeRecordExport(Param, Dataset, Select1C) {
      Select1C.Родитель = Param.Obj1C.Справочники.Контрагенты.НайтиПоКоду(Dataset("Group1CCode"));
}

Предварительно в карточку контрагента добавить поле "Код группы в 1С" (Group1CCode)
или второй вариант:
хранить код в поле "Описание" статической группы раздела Контрагенты

и в sq_Account добавить колонку подзапроса, которая бы вытягивала этот код

Александр, уточните, пожалуйста, как называется справочник, в котором хранятся группы?

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

var Group = 'ДОНЕЦК'; //группа, в которую необходимо экспортировать 
Select1C.Родитель = Param.Obj1C.Справочники.Контрагенты.НайтиПоНаименованию(Dataset.ValAsStr(Group)).Ref;

Спасибо за коментарии

И группы и элементы групп находятся в одной таблице и каждая запись имеет свой _IDRRef. Различие между группой и элементом в поле _Folder - 1 - элемент, 0 - группа. В какой группе находится тот или иной элемент определяется значением _IDParentRRef, где указывается _IDRRef группы. (пример таблицы в файле).

Т.е. задача фактически в зависимости от типа контрагента присваивать ему тот или иной _IDParentRRef в таблице. По умолчанию при экспорте он равен 0 и записи попадают в корень.

Если это сделать в виде Update хранимой процедуры, которая будет присваивать этот _IDParentRRef и вызывать её из скрипта интеграции?

Спасибо всем за помощь.

Не совсем понятна постановка задачи. Как тип контрагента определяет принадлежность контрагента к той или иной группе?
Изначально стояла задача: как экспортировать в 1С контрагента в конкретную группу.

Соответственно Вам необходимо:
По наименованию группы (взятому из таблицы AccountInGroup в Terrasoft для конкретной записи контрагента) найти ее в таблице
Убедится что найденная запись - группа (_Folder = 0)
Присвоить значение найденной группы - записи контакта (в поле Группа контрагентов).

В данной схеме есть один нюанс - Соотношение контрагентов и групп в Terrasoft определено как один ко многим(контрагент может состоять в нескольких группах). На сколько я понимаю из Вашего описания - в 1С 1:1 (тоесть контрагент может принадлежать только одной группе)
Каким образом Вы собираетесь определять какую именно группу вписывать в 1С?

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