Имя: Пароль:
1C
1С v8
Конвертация строки в справочник
0 Lohmatiy
 
02.11.11
23:06
Люди добрые, не откажите в помощи!

У меня ситуация такая:

В базе Источник есть Справочник А. В базе Приемник есть Справочник А, но с реквизитом ДопРеквизит типа Справочник Б (причем, в Источнике справочника Б нет вообще). Мне нужно сделать следующее: перед выгрузкой данных из Источника выскакивает диалог, в котором вводится некий Текст. Затем при загрузке по этому Тексту ищется по наименованию элемент справочника Б. Если находится, подставляется в загружаемый справочник А, если не находится, то сначала создаётся, а потом подставляется.

Вот никак не могу такие правила сочинить...
1 Lohmatiy
 
02.11.11
23:08
*Если находится, подставляется в загружаемый справочник А, если не находится, то сначала создаётся, а потом подставляется.

- Здесь имеется в виду, что подставляется в реквизит ДопРеквизит Справочника А, а не вместо Справочника А.
2 Lohmatiy
 
02.11.11
23:21
.
3 acsent
 
02.11.11
23:24
Значение = Новый Структура("Наименование", ТутТвояСтрока)
4 Armando
 
02.11.11
23:26
Крайне не надежная схема.
Что мешает доработать источник? И иметь человеческий обмен.
5 Lohmatiy
 
02.11.11
23:33
Ну, история долгая... Источник должен быть полностью типовым. Это обязательно.
6 Lohmatiy
 
02.11.11
23:34
(3) Это при выгрузке объекта Справочник А должно быть, да?
7 Armando
 
02.11.11
23:41
(5) Справочник А в источнике не поддерживает свойства и категории?
8 Lohmatiy
 
02.11.11
23:48
(7) Нет, не поддерживает. Сейчас объясню. Этот обмен не будет постоянно работать. Его нужно будет провести один-два раза. Поэтому ненадёжность схемы здесь не критична. Можно предложить другие варианты, но это сейчас не так важно. Я видел, как обрабатывается конвертация строки в перечисление. Там всё просто. Настраивается синхронизация значений и всё. Но здесь так не получится, к сожалению. И вот я и думаю, как бы сделать...
9 Сияющий Асинхраль
 
02.11.11
23:49
Ну и добавь строковый параметр
10 Lohmatiy
 
02.11.11
23:51
(9) Я просто не совсем представляю, куда его добавить и как потом при загрузке отыскать. Везде по-разному пишут, а у меня ни так, ни эдак не получается...
11 Сияющий Асинхраль
 
02.11.11
23:55
У тебя для каждого элемента основного справочника это наименование различно, или одно на все элементы?
12 Lohmatiy
 
03.11.11
00:00
Одно на все.
13 Сияющий Асинхраль
 
03.11.11
00:07
Тогда действительно либо строковым параметром, вводимым при выгрузке, либо просто и тупо добавить конвертацию конкретной строки в справочник с поиском по наименованию
14 Lohmatiy
 
03.11.11
00:18
Написал в правиле конвертации Справочника А

ПередВыгрузкой:

Параметры.Вставить("мСтрока", "АБВ");


ПередЗагрузкой:

Сообщить(Параметры.Количество());

Он мне при загрузке пишет, что 0. Вот в этом и весь вопрос. Как его попросить передать параметр нормально?
15 Lohmatiy
 
03.11.11
00:21
(13) Там совсем конкретной нельзя, т.к. она может быть какая угодно. Но для текущей выгрузки одинаковой для всех элементов справочника.
16 Lohmatiy
 
03.11.11
00:30
Ладно, утро вечера мудренее. Всем спасибо за ответы, если до завтра никто ничего не предложит, ещё раз тему подниму.
17 Lohmatiy
 
03.11.11
09:34
Всем привет ещё раз!

Проблема пока остаётся нерешенной. Буду благодарен за советы!
18 Defender aka LINN
 
03.11.11
09:39
(17) "Проблему" решили еще в (3)
19 FIXXXL
 
03.11.11
09:44
(17) большой справочник-то?

а то выгрузи его в эксель, пусть там сразу проставят твои строки, потом с экселя грузи-ищи-записывай
если работа единоразовая...
20 Lohmatiy
 
03.11.11
10:33
(18) Можно сколько угодно умничать и отвечать односложными фразами, только это вряд ли поможет кому-то.

(19) Нет. Через Эксель нельзя, к сожалению. Нужно через конвертацию.
21 Lohmatiy
 
03.11.11
11:12
Значит, сделал в итоге так:

1. В справочнике Конвертации на закладке Параметры создаём НашПараметр, заполняем все колонки, кроме Правил конвертации.
2. Создаем правило конвертации объекта. Источник пустой, Приемник - Справочник Б.
3. В правиле конвертации свойств объекта:
Источник - пустой
Приемник - Наименование (реквизит справочника Б)

Перед выгрузкой пишем код:
Значение = Параметры.НашПараметр;

Вот и всё.