12 октября 2016 в 12:51:35
(8 лет 3 недели 5 дней 13 часов назад)
12.10.2016 12:50:41
Текст задания
Разработать внешнюю обработку загрузки элементов справочника "Номенклатура" из файла Эксель (MS Excel 2003) формата xls для конфигурации УТ11.2 (платформа 8.3 управляемый режим, тонкий клиент).
Обработка должна выбирать файл Excel и передавать его на сервер 1С. Т.е. в ней должен быть элемент формы "Имя файла" с кнопкой выбора на нем, и ниже кнопка "Загрузить" по которой производится загрузка ранее выбранного файла.
В Файле находится один лист с данными (таблицей), первая строка таблицы содержит строковые наименования колонок с данными - "Имена Колонок". Наименования соответствуют правилам описания имен переменных - без пробелов и спецсимволов. Нет пустых строк и колонок. Если в первой строке встретилась пустая ячейка - больше колонок нет. Если в первом столбце встретилась пустая ячейка - больше строк нет. Это считать условием выхода из циклов.
Обработка должна на первом этапе передать файл на сервер в качестве временного файла (стандарт для управляемого режима).
На втором этапе должен быть создан массив структур данных МассивСтрокФайлаДанных. Количество элементов массива равного количеству_строк_в_файле-1 (т.е. минус строка с наименованиями). Структура должна содержать значения с ключами, имена ключей должны совпадать с Именами Колонок. На этом этапе файл должен быть обработан и закрыт. Значения допускаются быть строковыми.
На третьем этапе в цикле "Для Каждого ЭлементДанных ИЗ МассивСтрокФайлаДанных" перебирается полученный массив и вызывается функция СоздатьЭлементНоменклатуры(ЭлементДанных ) который и создает элементы номенклатуры. Создание номенклатуры производится в транзакциях по 200 элементов.
Характеристики, Качество, серийные номера, Партии, ГТД и т.п. не используются. Не должно быть "черного треугольника" в списке номенклатуры.
Описание полей данных файла:
Производитель - строка справочника "Производители". Создавать ненайденных по наименованию.
Артикул - уникальный артикул товара, Перед загрузкой товара искать в базе товары с таким же артикулом и если такой артикул уже есть - элемент не создавать, сообщить пользователю о наличие дубля. Если поле артикул пустое -элемент так же не создавать - выдавать ошибку.
Наименование - Наименование Элемента справочника
НаименованиеДляПечати - Наименование Элемента справочника для печати
Прайс - цена товара, в данной обработке не используется
Картинки -длинная текстовая строка, не используется.
ТекстовоеОписание - Текстовое описание, может быть пустым
ВидНоменклатуры - поле заполняется для всех товаров одинаково. На форме загрузки должен присутствовать реквизит "Вид номенклатуры" и он должен быть заполнен.
ТипНоменклатуры - так же как и Вид номенклатуры.
Единица - Текстовое описание единицы. Должны совпадать с элементами классификатора. При отсутствии элемента в классификаторе - выдавать ошибку, номенклатуру не загружать.
Вес - вес в кг
Ставка НДС - строка вида "18", "18%" или "10","10%"
Группа1,Группа2,Группа3,Группа4 - текстовые описания групп товаров. Группа1 соответствует корневой группе товаров. Поиск производится по наименованию. Если группа не найдена - она создается. Группа2 - если заполнена, то так же ищется и по необходимости создается внутри созданной группы1. Написать Процедуру НайтиИлиСоздатьГруппуСправочника(Родитель,ИмяГруппы) с параметрами Родитель - ссылка на элемент группы-родителя (пустая ссылка для Группы1) ИмяГруппы - строка, описывающая имя группы дочерней к Родителю. Элемент номенклатуры записываются в последнюю указанную группу (Группа 2,3,4 могут быть не указаны)
Еще раз уточняю: нет кодов товаров, нет кодов групп, нет признака "ЭтоГруппа" - одна строка - один товар. Если у нас 10 товаров в одной группе "пылесосы" , то будет 10 строк с полем Группа1="Пылесосы" в каждой. А может будет 4 строки Группа1="Пылесосы", Группа2="Запчасти для пылесосов" - тогда эти 4 товара попадут в подгруппу Пылесосы/ Запчасти для пылесосов.
В Процедуре ПриСозданииНаСЕрвере() написать модуль заполнения полей формы "Вид номенклатуры" и "тип номенклатуры" с поиском по кодуили наименованию. (это будет переделано у клиента под его требования)
Предусмотреть галку "Заменять товары с тем же артикулом" - при установленной галке товар с тем же артикулом все же создается.
Вывод ошибок производить не через "Сообщить" а путем создания текстового файла на сервере с именем c:temperrors.txt
Готов выполнить
от Вас - пример файла Ексель, выгрузка БД или доступ к тестовой базе для проверки
e-mail: vladimirbil@mail.ru
skype: va_bil (доступен после 18-00 сегодня, в следующие дни - в течении дня)