При вводе адреса надо зайти на закладку Классификаторы и выбрать 2003 г.
В релизах после 495 надо установить галку "Показывать только значимые адреса" дабы не задваивались города в списке выбора. Так же желательно открыть в конфигураторе обработку ВводАдреса, найти строки и изменить значение
Если ПустоеЗначение(ФорматКлассификатора) = 1 Тогда
ФорматКлассификатора = 2;//яИзменил, было 1
КонецЕсли;
Если ПустоеЗначение(ПоказыватьТолькоЗначимые) = 1 Тогда
ПоказыватьТолькоЗначимые = 1;//яИзменил, было 0
КонецЕсли;
В противном случае в каждой новой базе при выборе 2003 г. взводится флаг изменения формата и при открытии региона и проч. в первый раз будет предложено переиндексировать классификатор, а это пустая трата времени.
Всё... Наслаждайтесь. И не надо грузить в каждую базу по 100 мб кладра, и с обновлениями проблем нет.
Поражает, что одинэсчики уже давно заложили и реализовали функционал подключения Кладра через эту константу, но почему-то не дают им воспользоваться, т.е. не включают константу в конфигурации. Изобрели, понимаешь, велосипед, но ездить на нём не дают, да и сами не ездят :))) И почему студенты из 1С до сих пор этого не сделали?! :)))
Ну, что ж, сделаем это за них...
Для ЗиК и Налогоплательщик всё несколько сложнее... Ибо одинэсчики решили грузить Кладр в справочники, а не считывать с диска. В результате объем базы возрастает несоизмеримо с самими данными, вводимыми в базу. И мы вынуждены ждать пока переиндексируестя справочник street да kladr после сбоя, да и при архивации эта справочная инфа ни к чему :)))
Далее предложу переделать механизм работы с Кладром как в бухии.
Если кто готов к внесению незначительных изменений в МД и поддержке последующих обновлений, пожалуйста, прочтите нижеследующее. Переделка займет не более 15 мин., а при обновлениях и того меньше.
Итак, после добавления константы делаем:
1. Копипастим обработку ВводАдреса и ИмпортАдресныхКлассификаторов из Бухии в ЗиК. Они появятся в ЗиКе под именем ВводАдреса1 и ИмпортАдресныхКлассификаторов1.
Открываем обработку ВводАдреса1, ищем поиском строку "Справочник("STREET")" и строки
ИначеЕсли Метаданные.Обработка("ВыборИзКлассификатораАдресов").Выбран() = 1 Тогда
ОткрытьФорму("Обработка.ВыборИзКлассификатораАдресов", Параметры);
переносим в начало условия Если... (там всего 2 вхождения).
2. Из Бухии обработку ВыборИзКлассификатораАдресов сохраняем как внешний отчет (это связано с наличием картинок на форме. При простом копипасте картинки не сохраняются). В ЗиКе создаем новую обработку, обзываем её ВыборИзКлассификатораАдресов и заменяем на сохранённый внешний отчет.
3.Добавляем в начало ГМ
//яИзменил взял из Бухии
Перем глСписокУлиц Экспорт;
Перем глВладелецСпискаУлиц Экспорт;
//яИзменил
4.Копируем из ГМ бухии процедуру глВводАдреса и вставляем её над (перед)аналогичной процедурой в ЗиК и обзываем её глВводАдреса1.
Да вот он, этот кусок кода:
//******************************************************************************
//яИзменил{ взял из бухии
//
// глВводАдреса1(Адрес, ФорматАдреса = 0)
//
// Параметры:
// Адрес (строка), адрес который необходимо отредактировать.
// ФорматАдреса (число) 1 - адрес может только вводится в формате МНС,
// 0 - адрес может вводится в формате МНС и произвольном формат.
// иначе - адрес может вводится только в произвольном формат.
//
// Возвращаемое значение:
// Нет
//
// Описание:
// Процедура открывает форму ввода (редактирования адреса).
Процедура глВводАдреса1(Адрес, ФорматАдреса = 0) Экспорт
Если ТипЗначенияСтр(Адрес) <> "Строка" Тогда
Адрес = "";
КонецЕсли;
Если ФорматАдреса = 0 Тогда
ОткрытьФормуМодально("Обработка.ВводАдреса1", Адрес);
Иначе
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.Установить("Адрес", Адрес);
Параметры.Установить("Формат адреса", ФорматАдреса);
ОткрытьФормуМодально("Обработка.ВводАдреса1", Параметры);
Если ТипЗначенияСтр(Параметры) = "СписокЗначений" Тогда
Если Адрес <> Параметры.Получить("Адрес") Тогда
Адрес = Параметры.Получить("Адрес");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры // глВводАдреса1()
//яИзменил
Родную функцию ЗиК глВводАдреса также заменяем на вот эту немного измененную:
//******************************************************************************
// глВводАдреса(Форма,Реквизит)
//
// Параметры:
// Форма - контекст формы в которой отражается адрес
// Реквизит - реквизит формы (либо переменная), строка в формате "9 запятых"
//
// Возвращаемое значение
// строка - адрес
//
// Описание:
// Предназначена для ввода адреса
// Вызывается по кнопке формы
//
Функция глВводАдреса(Форма,Реквизит) Экспорт
АдресИзБД=1;
Если Метаданные.Константа("КаталогКлассификаторов").Выбран() = 1 Тогда
пКаталог = СокрЛП(Константа.ПолучитьАтрибут("КаталогКлассификаторов"));
Если ПустоеЗначение(пКаталог)=0 Тогда
АдресИзБД=0;
Если ФС.СуществуетФайл(пКаталог)=0 Тогда
Если ФС.СуществуетФайл(пКаталог+"\")=0 Тогда //для 98
АдресИзБД=1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Попытка
ВидФормы = Форма.Вид();
Исключение
ВидФормы = ""; // из обработки Настройка - реквизитов нет, есть только переменные
КонецПопытки;
Параметры = СоздатьОбъект("СписокЗначений");
Если ВидФормы = "" Тогда
Параметры.ДобавитьЗначение(Реквизит);
Иначе
Параметры.ДобавитьЗначение(Форма.ПолучитьАтрибут(Реквизит));
КонецЕсли;
Если ВидФормы = "Сотрудники" тогда
// НЕ использование слоя произвольного формата
Параметры.ДобавитьЗначение(0);
Иначе
// использование слоя произвольного формата
Параметры.ДобавитьЗначение(1);
КонецЕсли;
Если Реквизит="АдресВСтранеПроживания" Тогда
ОткрытьФормуМодально("Обработка.ВводАдресаПроживания",Параметры)
Иначе
Если АдресИзБД=0 Тогда
Попытка
Адрес=Форма.ПолучитьАтрибут(Реквизит);
Исключение
Адрес=Реквизит;//из обработки передается переменная
КонецПопытки;
Если Реквизит="АдресВСтранеПроживания" Тогда
ОткрытьФормуМодально("Обработка.ВводАдресаПроживания",Параметры);
Иначе
глВводАдреса1(Адрес);
Попытка
Форма.УстановитьАтрибут(Реквизит,Адрес);
Исключение
Возврат Адрес;
КонецПопытки;
Возврат "";
КонецЕсли;
Иначе
ОткрытьФормуМодально("Обработка.ВводАдреса",Параметры)
КонецЕсли;
КонецЕсли;
Если ВидФормы = "" Тогда
Если Параметры <> "Отмена" тогда
Возврат Параметры
Иначе
Возврат Реквизит
КонецЕсли;
ИначеЕсли Параметры <> "Отмена" тогда
Если СокрЛП(Форма.ПолучитьАтрибут(Реквизит))<>СокрЛП(Параметры) Тогда
Форма.УстановитьАтрибут(Реквизит,Параметры);
КонецЕсли;
Возврат Параметры
КонецЕсли;
Возврат ""
КонецФункции // глВводАдреса
//яИзменил}
Теперь, если в константе указать путь для Кладра - Кладр будет считываться с диска, если же константу очистить, можно будет грузить Кладр в справочник как и было раньше (ну, это для тех неверующих, кто хочет откатиться к прежнему варианту).
Вот собссно и всё...
При обновлениях нужно будет выполнить пункт 3 и 4.
Я думаю это займет не более 2-х минут.
ЗЫ: Можно (или даже нужно) удалить файл справочника street из базы. У меня в ред. 273 он называтся SC551.dbf и SC551.cdx - у вас может называться по-другому, хотя, маловероятно. Откройте *.dd файл на просмотр и поиском по "street" найдите строки:
#==TABLE no 10 : Справочник STREET
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=SC551 |Справочник STREET |A |SC551 |1
SC551 - это и есть имя файла, который нужно удалить.
Затем, следует запустить программу монопольно.
Спасибо за внимание. Всем Удачи!
ЗЫ: Актуальный на сегодня КЛАДР берём здесь: http://www.gnivc.ru/inf_provision/classifiers_reference/kladr/