Имя: Пароль:
1C
1С v8
Конвертация данных 2 (из справочника в строку и обратно)
, ,
0 smoant
 
27.02.23
12:49
Доброго времени суток)

Такой вопрос по КД 2.1:

Конфигурация - источник = конфигурация - приёмник.

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

Справочник - РегламентированныеОтчеты, Бухгалтерия.
Регистры нетиповые, измерение РегламентированныйОтчет - составное, строка и ссылка на РегОтчеты.

Задача в контексте работы в облачном сервисе.
Регистры заполняются в эталонной базе, потом грузятся в сервис.
Справочник РегОтчеты - неразделенный, а загрузка выполняется в разделении данных. При попытке переписать элемент неразделенного справочника - громко падает.

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

Можете подсказать, какие настройки нужно поставить, и где именно прописать обработчики?
Если не затрудни, прямо как для отсталых, с КД у нас натянутые отношения, не профиль)

Заранее спасибо, добра, улыбок, счастья и хорошего рабочего дня)
2 Йохохо
 
27.02.23
12:55
заполните поля поиска и сами обработчик поиска напишите по полям поиска. Про разделение хз
3 KJlag
 
27.02.23
12:57
а в чем проблема сделать отдельное пко для справочника, а там уже во вкладке "поля поиска" искать как нравиться,
и в пко регистра для этого поля указать это пко?
4 smoant
 
27.02.23
23:33
Никак не получается выгрузить записи регистра так, чтобы измерения из ссылок стали строками.

ПКС справочника "Регламентированные отчёты", перед выгрузкой:
Если ТипЗнч(Источник) = Тип("СправочникСсылка.РегламентированныеОтчеты") Тогда
    Значение = Источник.РегламентированныйОтчет.Наименование;
Иначе
    Значение = Источник.РегламентированныйОтчет;
КонецЕсли;

ПКО регистра, при загрузке:

РегОтчетСсылка = Справочники.РегламентированныеОтчеты.НайтиПоНаименованию(Источник);    
Если РегОтчетСсылка <> Справочники.РегламентированныеОтчеты.ПустаяСсылка() Тогда
    Объект.РегламентированныйОтчет = РегОтчетСсылка;
КонецЕсли;

Но измерения регистра в строки не конвертируются(
5 timurhv
 
28.02.23
00:46
(4)
Если ТипЗнч(ИСТОЧНИК) = Тип("СправочникСсылка.РегламентированныеОтчеты") Тогда
...
Значение = ИСТОЧНИК.РЕГЛАМЕНТИРОВАННЫЙОТЧЕТ;
6 mikecool
 
28.02.23
09:15
(0) это что за дикое требование?
настрой ПКО для справочников и не лохмать бабушку
7 smoant
 
28.02.23
12:09
так в том и проблема, что я не знаю как их настроить :D
пока все только говорят, что это легко и просто, но ткнуть носом не хотят
8 mikecool
 
28.02.23
12:11
(7) слева Справочник 1, справа Справочник 2
сопоставь реквизиты и настрой поля поиска, профит
9 mistеr
 
28.02.23
12:44
(0) я так и не понял в чем исходная проблема. В перезаписи справочника РегламентированныеОтчеты? Ну так не перезаписывай его! Флаг в  ПКО "не замещать".

Зачем понадобился составной тип для измерения регистров? В эталонной базе нет типовых рег. отчетов? Так загрузи!
10 smoant
 
28.02.23
13:37
Проблема в перезаписи справочника рег. отчётов, да.
Казалось, что конвертация в строку и обратно в ссылку поможет.
Но судя по ответам, это велосипед.

Гении зачастую бывают не признаны обществом :D

У элементов справочников разные идентификаторы.
После выгрузки с прода в эталонную справочника и сравнивания идентификаторов, пошла загрузка.
Костылёво, но временно пашет.

С полями поиска получилось разобраться по статье https://infostart.ru/1c/articles/978498/

В справке написано:
Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их * - флаг определяет нужно ли выполнять изменение реквизитов объекта в информационной базе приемнике, если объект был успешно найден по уникальному идентификатору или по полям поиска.
Получается, мне он нужен в комплекте с "Не создавать новый объект в приемнике, если он НЕ найден"

По архитектуре - легаси, сказано не трогать.

Всем спасибо за участие и потраченное время)