Код 77:
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Состояние("Обработка запроса...");
Пока Запрос.Группировка() = 1 Цикл
Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Имя = СокрЛП(Запрос.Номенклатура.Наименование);
Если ПустаяСтрока(Имя)=1 Тогда
Продолжить;
КонецЕсли;
Категория = СокрЛП(Запрос.КатегорияТовара.Наименование);
Если (ПустаяСтрока(Категория)=1) Тогда
Продолжить;
КонецЕсли;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Состояние("Сохранение результата...");
Таб.Записать("c:\Т_и_Н.mxl");
Код 8.2
&НаКлиенте
Процедура Загрузить_(Команда)
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные("c:\Т_и_Н.mxl"));
Предупреждение(ЗагрузитьСервер(Адрес));
КонецПроцедуры
&НаСервере
Функция ЗагрузитьСервер(Адрес)
СвКатегория = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Категория товара");
Если СвКатегория.Пустая() Тогда
Возврат "Не нашли доп св-во ''";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| Номенклатура.Ссылка,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа
| И НЕ Номенклатура.ПометкаУдаления";
ТзНом = Запрос.Выполнить().Выгрузить();
ТзНом.Индексы.Добавить("Наименование");
Дв = ПолучитьИзВременногоХранилища(Адрес);
Врем = ПолучитьИмяВременногоФайла("mxl");
Дв.Записать(Врем);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(Врем);
Для инд = 1 по ТабДок.ВысотаТаблицы Цикл
Имя = ТабДок.Область(инд,1).Текст;
Категория = ТабДок.Область(инд,2).Текст;
НашлиНом = ТзНом.НайтиСтроки(Новый Структура("Наименование",Имя));
Если НашлиНом.Количество()<>1 Тогда
Продолжить;
КонецЕсли;
Номенклатура = НашлиНом[0].Ссылка;
Если не ПустаяСтрока(Категория) Тогда
НашлиЗн = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(Категория,Истина,,СвКатегория);
Если НашлиЗн.Пустая() Тогда
НовЗн = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
НовЗн.Наименование = Категория;
НовЗн.Владелец = СвКатегория;
НовЗн.Записать();
НашлиЗн = НовЗн.Ссылка;
КонецЕсли;
_З = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
_З.Объект=Номенклатура;
_З.Свойство=СвКатегория;
_З.Значение=НашлиЗн;
_З.Записать();
КонецЕсли;
КонецЦикла;
Возврат "Готово";
КонецФункции // ()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Состояние("Обработка запроса...");
Пока Запрос.Группировка() = 1 Цикл
Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Имя = СокрЛП(Запрос.Номенклатура.Наименование);
Если ПустаяСтрока(Имя)=1 Тогда
Продолжить;
КонецЕсли;
Категория = СокрЛП(Запрос.КатегорияТовара.Наименование);
Если (ПустаяСтрока(Категория)=1) Тогда
Продолжить;
КонецЕсли;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Состояние("Сохранение результата...");
Таб.Записать("c:\Т_и_Н.mxl");
Код 8.2
&НаКлиенте
Процедура Загрузить_(Команда)
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные("c:\Т_и_Н.mxl"));
Предупреждение(ЗагрузитьСервер(Адрес));
КонецПроцедуры
&НаСервере
Функция ЗагрузитьСервер(Адрес)
СвКатегория = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Категория товара");
Если СвКатегория.Пустая() Тогда
Возврат "Не нашли доп св-во ''";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| Номенклатура.Ссылка,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа
| И НЕ Номенклатура.ПометкаУдаления";
ТзНом = Запрос.Выполнить().Выгрузить();
ТзНом.Индексы.Добавить("Наименование");
Дв = ПолучитьИзВременногоХранилища(Адрес);
Врем = ПолучитьИмяВременногоФайла("mxl");
Дв.Записать(Врем);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(Врем);
Для инд = 1 по ТабДок.ВысотаТаблицы Цикл
Имя = ТабДок.Область(инд,1).Текст;
Категория = ТабДок.Область(инд,2).Текст;
НашлиНом = ТзНом.НайтиСтроки(Новый Структура("Наименование",Имя));
Если НашлиНом.Количество()<>1 Тогда
Продолжить;
КонецЕсли;
Номенклатура = НашлиНом[0].Ссылка;
Если не ПустаяСтрока(Категория) Тогда
НашлиЗн = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(Категория,Истина,,СвКатегория);
Если НашлиЗн.Пустая() Тогда
НовЗн = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
НовЗн.Наименование = Категория;
НовЗн.Владелец = СвКатегория;
НовЗн.Записать();
НашлиЗн = НовЗн.Ссылка;
КонецЕсли;
_З = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
_З.Объект=Номенклатура;
_З.Свойство=СвКатегория;
_З.Значение=НашлиЗн;
_З.Записать();
КонецЕсли;
КонецЦикла;
Возврат "Готово";
КонецФункции // ()