Приветствую всех!
Прислали мне прайс (см. картинку)
Я доработал свою же обработку по загрузке номенклатуры в 1с из эксель (для документов Поступление товаров и услуг) //infostart.ru/public/666516/
И получилось так, что не сложно было обучить менеджера загружать прайс в дальнейшем самостоятельно (см. картинку).
В дальнейшем на проекте автоматизации салона красок воспользовался данной обработкой для загрузки прайса пигментов разных цветов: каждый пигмент имеет название и номер цвета, цена зависит как от названия цвета, так и от номера цвета (см. картинку).
Для загрузки подобных прайсов (к слову сказать, в этой отрасли все прайсы двумерные) я доработал обработку следующим образом: обхожу табличный документ по горизонтали и вертикали - цикл в цикле - и для каждого сочетания НазваниеЦвета-НомерЦвета определяю и записываю цену (см. картинку)
Макет = ЭлементыФормы.ПолеТабличногоДокумента1;
Для К = 2 По Макет.ВысотаТаблицы Цикл
Для Н = 2 По Макет.ШиринаТаблицы Цикл
НазваниеЦвета = СокрЛП(Макет.Область(1,Н,1,Н).Текст);
НомерЦвета = СокрЛП(Макет.Область(К,1,К,1).Текст);
Цена = СокрЛП(Макет.Область(К,Н,К,Н).Текст);
Если Цена = "нет" Тогда
Продолжить;
КонецЕсли;
НайденныйЦвет = Справочники.НазваниеЦвета.НайтиПоНаименованию(НазваниеЦвета,Истина);
Если НЕ ЗначениеЗаполнено(НайденныйЦвет) Тогда
Об = Справочники.НазваниеЦвета.СоздатьЭлемент();
Об.Родитель = ГруппаЦветов;
Об.Наименование = НазваниеЦвета;
Об.Записать();
НайденныйЦвет = Об.Ссылка;
КонецЕсли;
НайденныйНомерЦвета = Справочники.НомерЦвета.НайтиПоНаименованию(НомерЦвета,Истина);
Если НЕ ЗначениеЗаполнено(НайденныйНомерЦвета) Тогда
Об = Справочники.НомерЦвета.СоздатьЭлемент();
Об.Родитель = ГруппаНомерЦвета;
Об.Наименование = НомерЦвета;
Об.Записать();
НайденныйНомерЦвета = Об.Ссылка;
КонецЕсли;
Попытка
Цена = Число(Цена);
Исключение
Продолжить;
Сообщить("Возникла ошибка строка " + К + " колонка " + Н);
КонецПопытки;
НЗ = РегистрыСведений.ЦеныЦветов.СоздатьНаборЗаписей();
НЗ.Отбор.НазваниеЦвета.Установить(НайденныйЦвет);
НЗ.Отбор.НомерЦвета.Установить(НайденныйНомерЦвета);
НЗ.Отбор.Период.Установить(Период);
Запись = НЗ.Добавить();
Запись.НазваниеЦвета = НайденныйЦвет;
Запись.НомерЦвета = НайденныйНомерЦвета;
Запись.Период = Период;
Запись.Цена = Цена;
НЗ.Записать();
КонецЦикла;
КонецЦикла;
К сожалению, на демо-УТ этот алгоритм не воспроизвести, поэтому выкладываю листинг алгоритма, который не включен в предлагаемую обработку. Просто, имея некоторый шаблон для работы с экселевскими данными, можно решать разнообразные задачи - в том числе загружать двумерные прайсы пигментов.
Представленная обработка тестировалась перед публикацией на платформе 8.3.11.3034 на демо-УТ 10.3.46.2.
1) [Расширение] УНФ. Список заказов + Структура подчиненности
2) [Расширение] УТ 11.4. Счет на оплату с факсимиле
3) [Расширение] БП 3.0. Список счетов/ Список реализаций + Связанные документы
Внешние обработки (не расширения!):
2) Список заказов поставщикам + структура подчиненности
3) Список заказов покупателей + структура подчиненности
4) Список реализаций со структурой подчиненности + реестр документов
5) Список заказов покупателей (Расширенная версия)
Другие публикации:
1) Удаление справочников для любых баз на управляемых формах
2) Удаление документов для любых баз на управляемых формах
3) Удаление чеков ККМ в Рознице 2.2
4) Загрузка товаров, штрихкодов, цен и остатков на УФ - Розница 2.2
5) Отчет Остатки и цены (прайс с остатками)
7) [ЦФшник] Доработка конфигурации Конвертация Данных