Обработка делится на 3 этапа:
- Создание иерархического справочника номенклатуры с загрузкой основной информации по товару
- Создание документа с ценами товаров
- Создание документа ввода начальных остатков
При заполнении номенклатуры строится трехуровневая иерархия, товар может лежать в последней или предпоследней папке, зависит от исходного файла, в моем случае товары и последний уровень были в одном столбце, поэтому вводилась колонка с дополнительным признаком группы. Для полного заполнения нужно создать вид номенклатуры.
В карточку товара записываются:
- Наименование
- Код по складу
- Артикул
- Штрихкод
- Сертификат
- Вес
- НДС
- Страна
Далее создается документ УстановкаЦенНоменклатуры, перед загрузкой нужно создать виды цен, в моем случае были Закупочная и Оптовая цены.
В конце заполняются остатки в документ ВводОстатков, ему надо создать склад и организацию.
Для использования обработки ее нужно загрузить через конфигуратор в раздел обработки и добавить в подсистему. Обработка не является универсальной, поэтому все настройки происходят в коде. Чтобы открыть код нужно, открыть обработку, зайти на вкладку формы, тыкнуть в одну форму и перейти внизу на вкладку модуль.
Блок с переменными для экселя
//-------------------------------ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ--------------------------------------------
перем ExcelLastCell;
перем Excel;
перем ExcelList;
...
функция подключения эксель
//-------------------------------ПОДКЛЮЧЕНИЕ К EXCEL--------------------------------------------
Функция ПодключениеКЭксель(ПутьКФайлу)
ExcelLastCell = 11;
НомерЛистаExcel = 1;
ИмяФайла = ПутьКФайлу;
...
процедура загрузки данных, тестировалась с файлом формата xls
//-------------------------------ЗАГРУЗИТЬ НОМЕНКЛАТУРУ--------------------------------------------
&НаКлиенте
Процедура ЗагрузитьНоменклатуру(Команда)
ЗагрузитьНоменклатуруНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьНоменклатуруНаСервере()
//в файле должен быть 1 лист!
//путь к файлу excel
ПодключениеКЭксель("C:\\ФайлыДляЗагрузки\Номенклатура.xls");
Сообщить("Загрузка номенклатуры...");
//входные данные из таблицы
//цифра - номер колонки в экселе
СкладИзЭкселя = 1;
ГруппаИзЭкселя = 2;
ПроизводительИзЭкселя = 3;
ПризнакПодгруппыИзЭкселя = 5;
...
//-------------------------//
// для работы с данными используется конструкция
// ExcelList.Cells(а,б).Text, где
// а - номер строки в цикле
// б - колонка из таблицы
// ExcelList.Cells(5,НаименованиеТовараИзЭкселя).Text - вернет название товара в 5ой строке типа строка
// Число(ExcelList.Cells(16,ЦенаЗакупкиИзЭкселя).Text) - вернет цену закупки типа число
//-------------------------//
...
Далее в цикле создается иерархия и заполняются реквизиты справочника, после заполняются цены и остатки по товарам.
Чтобы загруженные цены стали актуальными их необходимо загрузить в документ Прайс-лист через Изменить цены - Загрузить из документов установки цен и выбрать созданный файл. Для применения цен нужно изменить цены на процент и нажать применить цены. В остатках все просто, только номенклатура не привязана к контрагенту.
Еще раз повторюсь, что это не универсальная вещь. Целью было собрать в одном модуле максимум инфы которую можно загружать. Если есть идеи по улучшению обработки буду рад выслушать, далее планирую выложить обработку по загрузке контрагентов и поставщиков. За код просьба не пинать, занимаюсь 1С полгода)