Как экспортировать из Terrasoft контрагентов в конкретные группы 1С
Добрый день!
Подскажите, пожалуйста как экспортировать в 1С контрагента в конкретную группу. Например, есть такая иерархия в 1С: 1 уровень: Клиенты, Поставщики, Банки ..., 2 уровень: Киев, Донецк, Харьков.
Ранее обсуждался вопрос по продуктам, но для Контрагентов не нашел таблицу групп.
Заранее благодарен.
Нравится
Вы правы - данный вопрос обсуждался:http://www.community.terrasoft.ua/forum/topic/7083
Укажите версию 1С используемую Вами.
Как происходит определение принадлежности контрагента к той или инной группе в Вашей конфигурации 1С? (должна быть таблица, в которой утанавливается соответсвие групп и контактов)
Здравствуйте, Николай.
Версия 1С УПП 8.2.
Пример структуры
Контрагенты - иерархический справочник, связь с группой устанавливается через поле Группа контрагентов: данные - поле Родитель, Тип значения: СправочникСсылка.Контрагенты.
Кроме того, у данного справочника в наборе данных есть параметр ЭтоГруппа, т.е. это один справочник, где записи разделяются на элементы и группы и для элементов указывается родитель.
Пример таблицы для аналогичного справочника Физические лица.
Поля: _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С?