Имя: Пароль:
1C
1C 7.7
v7: Объединение справочников
0 AL CAPONE
 
27.02.12
13:39
Дано:
Есть 2 базы.
В обеих есть справочники стран и улиц.
Справочник улиц подчиняется справочнику стран.
Справочник стран содержит 4 вложенных уровня.

Необходимо:
Корректное объединение 2-х справочников между собой. Под корректностью понимается проверка всех уровней до последнего на предмет существования и совпадения названий. Если уровень не найден, или уровень существует, но вложенные названия не совпадают, необходимо создание новых групп и вложенных элементов.

Пробовалось:
Стандартные обработки Export771 и Import77. Работа не устроила, т.к. несмотря на существующие уровни всё задваивается.

Как можно аккуратно выкрутиться в данной ситуации ?
1 Wobland
 
27.02.12
13:40
а куда города и сёла пропали? реально видел на этикетке: "Адрес: Россия, ул. Сосновая, 16"
2 Злопчинский
 
27.02.12
13:43
(1) т.е. Россия, ул.Сосновая - тебя удивляет, а "Россия, Кремль" или "дедушке морозу на СП" - нет..? 4-)
3 AL CAPONE
 
27.02.12
13:43
(1)
в справочнике стран все элементы в формате СТРАНА / ОБЛАСТЬ / РАЙОН / ГОРОД
4 AL CAPONE
 
27.02.12
13:44
(3)
4 ВЛОЖЕННЫХ УРОВНЯ
5 BlackSeaCat
 
27.02.12
13:46
Аккуратно - написать НЕстандартную обработку.
6 AL CAPONE
 
27.02.12
13:47
(5)
это-то понятно, просто ещё никогда такого не делал, вот и хотелось бы, чтобы хоть как-то натолкнули на мысль создания выгрузки и загрузчика
7 Amra
 
27.02.12
13:50
(6) В КД делается за 2 минуты
8 AL CAPONE
 
27.02.12
13:51
(7)
КД - это что ?
9 155153144627
 
27.02.12
13:52
Из одной базы выгрузить в файлик:
<Страна><Область><Район><Город><Улица>

Во второй открыть и свериться по названиям.
10 Гость2
 
27.02.12
13:53
(3) "СТРАНА / ОБЛАСТЬ / РАЙОН / ГОРОД"
За такую "нетленку" полагается яйца ТУПЫМ серпом резать.
11 Amra
 
27.02.12
13:54
(8) Конвертация данных
12 AL CAPONE
 
27.02.12
13:56
(9)
А каким образом это аккуратно выгрузить по всем уровням ? Можно попросить хоть пару строк кода ?

(10)
Себе можешь хоть молотом отбить, мне не жалко ;)

(11)
это внешний отчёт какой-то ?
13 PuhUfa
 
27.02.12
13:57
(12)
выбратьэлементы/получитьэлемент/записатьвфайл/записатьсамфайл
17 155153144627
 
27.02.12
14:07
(12)
   Спр = СоздатьОбъект("Справочник.Страны");
   СпрУлиц = СоздатьОбъект("Справочник.Улицы");
   Спр.ВыбратьЭлементы();
   Текст = СоздатьОбъект("Текст");
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
       Если Спр.ЭтоГруппа() = 1 Тогда
           Продолжить;
       КонецЕсли;
       Стр = "<"+Спр.Наименование+">";
       Сч = Спр.Уровень();
       Группа = Спр.Родитель;
       Пока Группа.Уровень() <> 1 Цикл
           Стр = "<" + Группа.Наименование + ">" + Стр;
           Группа = Группа.Родитель;
       КонецЦикла;
       Стр = "<" + Группа.Наименование + ">" + Стр;
       СпрУлиц.ИспользоватьВладельца(Спр.ТекущийЭлемент());
       СпрУлиц.ВыбратьЭлементы();
       Пока СпрУлиц.ПолучитьЭлемент() = 1 Цикл
           Текст.ДобавитьСтроку(Стр+"<"+СпрУлиц.Наименование+">");
       КонецЦикла;
   КонецЦикла;
   Текст.Записать("c:\СпрСтранУлиц.txt");
18 dk
 
27.02.12
14:21
если с кд не получится, то можно через ТЗ и ЗначениеВФайл решить вопрос
я, обычно,
1. база1: скидываю справочник с нужными реквизитами в ТЗ
2. база1: ТЗ1 в файл
3. база2: ТЗ1 из файла
4. база2: спраовчникв ТЗ2 загоняю
5. база2: сравниваю ТЗ1 и ТЗ2, если нахожу совпадения, то сохраняю ссылку, если не нахожу, то создаю новый элемент и сохраняю ссылку на новый
19 Amra
 
27.02.12
14:27
(18) Чего там может не получится? Там несколько кликов мышкой
20 AL CAPONE
 
27.02.12
14:49
(16)
о, ещё 1 тролль нарисовался )
21 AL CAPONE
 
27.02.12
14:50
(17)
спасибо большое, сейчас опробую
Программист всегда исправляет последнюю ошибку.