База данных была перемещена из 1с 7.7 в 1с 8.2 Комплексная автоматизация 1.1 (1.1.16.1). В справочнике Контрагенты были перемещены все контрагенты, но теперь у каждого отсутствуют контакты в том числе и юридический адрес. Отдельно есть список юридических адресов в Excel. Вопрос как переместить контактную информацию из Excel?
(1) Daniil2011, Где то так
ЮрАдрес=Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
ФактАдрес=Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
ТипАдрес=Перечисления.ТипыКонтактнойИнформации.Адрес;
Телефон=Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
ТипТелефон=Перечисления.ТипыКонтактнойИнформации.Телефон;
Набор=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
//Открываем цикл перебора Excel файла
//Ищем контрагента
Набор.Отбор.Объект.Использование=Истина;
Набор.Отбор.Объект.Значение=<Найденная ссылка Контрагент>;
Набор.Отбор.Тип.Использование=Истина;
Набор.Отбор.Тип.Значение=ТипАдрес;
Набор.Отбор.Вид.Использование=Истина;
Набор.Отбор.Вид.Значение=ЮрАдрес;
Набор.Прочитать();
Если Набор.Количество()=0 Тогда
Запись=Набор.Добавить();
Запись.Объект= <Найденная ссылка Контрагент>;
Запись.Тип=ТипАдрес;
Запись.Вид=ЮрАдрес;
Запись.Представление=<Значение адреса>;
КонецЕсли;
Набор.Записать();
//Закрываем цикл перебора Excel файла
Функция ЗагрузкаИзExcel(ИмяФайла)
ЮрАдрес=Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
ФактАдрес=Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
ТипАдрес=Перечисления.ТипыКонтактнойИнформации.Адрес;
//Номер листа в книге Excel для получения данных
НомерЛиста = 1;
//Пытаемся подключиться к Excel
Попытка
Excel = новый COMОбъект("Excel.Application");
Сообщить("Похоже, всё хорошо.");
Исключение
Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
Возврат Ложь;
КонецПопытки;
//Подключились удачно, открываем файл
Excel.Workbooks.Open(ИмяФайла);
//Открываем необходимый лист
Excel.Sheets(1).select();
Лист1 = Excel.Worksheets(1);
//Получим количество строк и колонок.
//В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
Если Версия = "8" тогда
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
Конецесли;
//Открываем цикл перебора Excel файла
//Ищем контрагента
Контрагент = Справочники.Контрагенты ;
Для i=1 По ФайлСтрок
Цикл
Контр = Контрагент.НайтиПоНаименованию( Лист1.Cells(i,1).Value);
Если Контр = Контрагент.ПустаяСсылка()
Тогда
Сообщить("Контрагента " + Лист1.Cells(i,1).Value + " нет");
Иначе
Набор.Отбор.Объект.Использование=Истина;
Набор.Отбор.Объект.Значение=Контр;
Набор.Прочитать();
Если Набор.Количество()=0 Тогда
Запись=Набор.Добавить();
Запись.Объект= Контр;
Запись.Тип=ТипАдрес;
Запись.Вид=ЮрАдрес;
Запись.Представление = Лист1.Cells(i,2).Value;
Запись=Набор.Добавить();
Запись.Объект = Контр;
Запись.Тип=ТипАдрес;
Запись.Вид=ФактАдрес;
Запись.Представление= Лист1.Cells(i,3).Value;
Запись=Набор.Добавить();
Запись.Объект= Контр;
Запись.Тип=ТипТелефон;
Запись.Вид=Телефон;
Запись.Представление= Лист1.Cells(i,4).Value;
Запись=Набор.Добавить();
Запись.Объект= Контр;
Запись.Тип=ТипТелефон;
Запись.Вид=ФаксТелефон;
Запись.Представление= Лист1.Cells(i,5).Value;
КонецЕсли;
//Закрываем цикл перебора Excel файла
КонецЕсли;
КонецЦикла;
//Закрываем Excel
Excel.ActiveWorkbook.Close();
КонецФункции
Соответственно Excel файл находится "C:\1с\" и называется Адреса.xls. Где столбцы: 1. Название, 2. ЮрАдрес, 3. ФактАдрес, 4.Телефон, 5.Факс.
Кстати, адреса записываются как за пределами РФ.
(2) Daniil2011, я в подобной ситуации в Excelе формировала адрес с помощью строковых функций в формат для 1С. Затем в 1с создавала новый справочник, куда импортировала данные из Excel стандартной процедурой импорта справочников.И далее с помощью несложной обработки дополняла рабочий справочник данными из нового справочника. По окночании удалила из конфигурации уже ненужный справочник.
Можно конечно реализовать что-то более изящное Здесь на Инфостарте втречала обработку, объединяющую/разъединяющую адрес на составляющие, может она вам окажется нужной:
http://infostart.ru/public/91732/
"с помощью несложной обработки дополняла рабочий справочник данными". Вот отсюда подробнее. Несложная обработка это какая? И вполне возможно, если понять код этой обработки, то дополнив её можно пропустить этап "создание доп.справочника"
(4) Daniil2011, Обработка такая - перебор строк исходного справочник справочника, поиск по реквизиту "Наименование" в доп.справочнике, присвоение значения реквизиту адрес исходного справочника, если найдено значение в доп.справочнике.
ula1c, В Контрагентах нет реквизита "адрес" и вообще что-то подобное (в Комплексная автоматизация 1.1 ). В форме, где должен быть адрес "СправочникСсылка.ВидыКонтактнойИнформации, Строка". В этом и проблема.