Загрузка в 1C из Excel
В этой статье я расскажу как с помощью универсальной обработки “Загрузка данных из табличного документа” с диска ИТС загрузить данные в справочник номенклатура в конфигурацию Управление торговлей 10.3. Загрузка производится из файлов с расширением xls (формат excel 97-2003) в несколько этапов.
Если ваша конфигурация основана на управляемых формах 1С 8.3 или 8.2, рекомендуем к просмотру данное видео:
Мы для примера загрузим небольшой прайс в котором содержится следующая информация: наименование, артикул, единица измерения, два типа цен, штрих-код.
- Для начала перепишем обработку ЗагрузкаДанныхИзТабличногоДокумента.epf с диска ИТС. Если диска под рукой нет — скачайте её по ссылке. Для этого на диске заходим Технологическая поддержка =>1С Предприятие 8:
Далее Универсальные отчеты и обработки => Загрузка данных из табличного документа => Описание и установка внешней обработки “Загрузка данных из табличного документа”:
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!
Нажимаем Копировать:
Выбираем путь для копирования кнопкой искать(в моем случае я копирую на рабочий стол) и нажимаем Копировать:
Получите понятные самоучители по 1С бесплатно:
Ждем окончания копирования и нажимаем ОК:
Закрываем ИТС,больше нам диск не понадобится.
Подробнее о том как добавить внешнюю обработку, отчет или печатную форму написано здесь.
2.Запустим конфигурацию 1С Управление торговлей 10.3 в режиме Предприятие. Для начала добавим нашу обработку в состав внешних обработок базы для удобства использования и чтобы в следующий раз не искать ее на диске ИТС. Заходим Сервис => Внешние печатные формы и обработки => Внешние обработки:
Открывается список внешних обработок вашей базы. Нажимаем Добавить:
Выбираем кнопкой “Открыть” скопированный ранее с диска ИТС файл ЗагрузкаДанныхИзТабличногоДокумента.epf:
Нажимаем ОК для сохранения обработки в базе 1С Управление торговлей:
Теперь двойным щелчком мыши можем запустить обработку из списка доступных внешних обработок:
- Мой прайс-лист выглядит следующим образом:
Убедитесь что ваш прайс-лист сохранен в формате xls, если нет, то сохраните именно в этом формате. Чтобы элементы номенклатуры попали в нужные группы (столбец А) нам необходимо предварительно создать их в справочнике Номенклатура вручную.
Следите за тем чтобы после названия группы не было лишних пробелов, так как название группы в 1С в результате не будет соответствовать названию группы в прайс-листе Excel. Создаем группы:
Запускаем внешнюю обработку как показано выше, либо через меню Файл=>Открыть и выбрав файл ЗагрузкаДанныхИзТабличногоДокумента.epf. Выбираем Режим загрузки — Загрузка в справочник, Вид справочника — Номенклатура. Нажимаем значок Открыть:
Выбираем файл вашего прайс-листа, предварительно изменив Тип файлов на Лист Excel (*.xls) и нажимаем Открыть:
Видим загруженный в обработку прайс лист:
Если у вас очень большой прайс-лист, его открытие займет продолжительное время, следует подождать. Я рекомендую такой прайс-лист сохранить из самой обработки в формате mxl после открытия, такой файл открывается очень быстро. Для этого нажимаем значок Сохранить, пишем название файла и нажимаем Сохранить:
Переходим во вкладку Настройка. Ставим номер первой строки данных табличного документа, в моем случае первая строка это шапка с названиями реквизитов а сами данные начинаются со второй. Далее выбираем ручную нумерацию колонок, это нужно чтобы указать в какой колонке табличного документа находится реквизит из списка:
Настраиваем реквизиты для загрузки:
Наименование:
Режим загрузки — Искать
№ Колонки табличного документа — 5 (ставите свое значение)
Родитель (имеется в виду группа номенклатуры):
Режим загрузки — Искать
№ Колонки табличного документа — 1 (ставите свое значение)
Артикул:
Ставим галочку поле поиска. Это означает что с уже имеющейся в вашей базе номенклатурой обработка будет сравнить по артикулу, и если найдется элемент с таким же артикулом,то обработка заменит его реквизиты на реквизиты из данной настройки.
Режим загрузки — Искать
№ Колонки табличного документа — 4 (ставите свое значение)
Базовая единица измерения:
Режим загрузки — Вычислять.
В поле Выражение пишем формулу:
Результат = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекстыЯчеек[6]);
Это выражение означает,что обработка будет сравнить наименование из 6-ой колонки прайс-листа с наименованием в справочнике Классификатор единиц измерения и при совпадение названий присваивать соответствующую единицу из справочника.
Вам необходимо убедиться что все наименования единиц измерения из прайса есть в соотвествующем справочнике 1С. Если их нет,то следует предварительно создать.
Весовой:
Режим загрузки — Устанавливать
Значение по умолчанию — Нет
Полное наименование:
Режим загрузки — Искать
№ Колонки табличного документа — 5 (ставите свое значение)
В моем случае полное и сокращенное наименование совпадают. Напомню что полное наименование используется в программе в печатных формах документов, а сокращенное для удобства поиска в самой программе.
Ставка НДС:
Режим загрузки — Устанавливать
Значение по умолчанию — 18%
Вид номенклатуры:
Режим загрузки — Устанавливать
Значение по умолчанию — Товар
После заполнения всех настроек необходимо произвести контроль заполнения. И если ошибок нет, нажимаем Загрузить.
Ждем окончания загрузки и смотрим как загрузились элементы. Я открыл один из них:
Здесь видим что не хватает обязательных для заполнения полей: единицы хранения остатков и единицы для отчетов. Мы загрузим их следующим этапом.
Если все загрузилось в соответствии с настройками то мы можем сохранить настройки в файл, чтобы в следующий раз не производить настройку заново.Нажимаем значок сохранить во вкладке Настройка:
Пишем название файла и сохраняем. Формат файла будет *.mxlz:
Примечание:
Если в какой либо строке настройки стоит Режим загрузки “вычислять” или “устанавливать” то обработка не будет учитывать значение в колонке настроек “№ Колонки табличного документа” этой же строки настройки.
Если вы загрузили настройку из ранее сохраненной то вам придется заново вводить значения в колонку настроек “№ Колонки табличного документа”.
Чтобы загрузить эту настройку нажмите сюда
- Приступим к загрузке единиц хранения остатков и единиц для отчетов. Убираем все галочки с реквизитов кроме Артикул, Единица хранения остатков и Единица для отчетов. Ставим галочку не создавать новых элементов.
Артикул:
Ставим галочку поле поиска.
Режим загрузки — Искать
№ Колонки табличного документа — 4 (ставите свое значение)
Единица хранения остатков:
Режим загрузки — Вычислять
В поле выражение вставляем код на встроенном языке программирования 1С:
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ТекущиеДанные["Артикул"]);
БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекстыЯчеек[6]);
ТекСпр=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",БазоваяЕдиницаИзмерения,,СсылкаНоменклатуры);
Если ТекСпр.Пустая() Тогда НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
НайденнаяЕдиницаОбъект.Наименование = СокрЛП(БазоваяЕдиницаИзмерения);
НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения;
НайденнаяЕдиницаОбъект.Коэффициент = 1;
НайденнаяЕдиницаОбъект.Владелец = СсылкаНоменклатуры;
Попытка НайденнаяЕдиницаОбъект.Записать();
Результат = НайденнаяЕдиницаОбъект.Ссылка;
Исключение Сообщить("Не удалось записать");
КонецПопытки; Иначе Результат =ТекСпр.Ссылка;
КонецЕсли;
Далее Единица для отчетов аналогично Единице хранения остатков.
После заполнения настроек, нажимаем контроль заполнения и если нет ошибок нажимаем Загрузить:
Открываем любой из загруженных элементов номенклатуры и проверяем загрузились ли единицы измерений:
Сохраним настройки в файл и приступим к следующему этапу.
Чтобы загрузить эту настройку нажмите сюда
- Загрузим 2-типа цен: Цена Розница 1 и Цена Розница 2. Заходим Справочники => Номенклатура => Типы цен номенклатуры:
Добавляем новый тип цен:
Заполняем необходимые реквизиты и сохраняем:
Аналогично добавляем еще один тип цен.
После сохранения типов цен, создадим два пустых документа Установка цен номенклатуры, так как загрузка производится с помощью заполнения обработкой табличной части документа “Установка цен номенклатуры”.
Заходим Документы => Ценообразование => Установка цен номенклатуры:
Добавляем новый документ:
В документе выбираем один из двух созданных типов цен и сохраняем его пустым:
Аналогично создаем второй документ.
В итоге должно получиться следующим образом:
Заходим в нашу обработку. В обработке выбираем Режим загрузки — Загрузка в табличную часть, Ссылка выбираем тип данных документ Установка цен номенклатуры,заново Ссылка выбираем созданный документ Установка цен номенклатуры для первой цены,Табличная часть выбираем Товары.
Переходим во вкладку табличный документ и загружаем ваш прайс. Снова перейдем во вкладку настройки для ввода настроек:
Вводим настройки:
Нумерация колонок — Ручная нумерация колонок.
Номенклатура:
Режим загрузки — Искать
№ Колонки табличного документа — 5 (ставите свое значение).
Цена:
Режим загрузки — Искать
№ Колонки табличного документа — 8 (ставите свое значение для первого типа цен).
Валюта:
Режим загрузки — Устанавливать
Значение по умолчанию — руб. (ставите свое значение)
Единица измерения:
Режим загрузки — Вычислять
В поле выражение вводим код на встроенном языке программирования 1С:
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ТекущиеДанные["Номенклатура"]);
Результат=СсылкаНоменклатуры.ЕдиницаХраненияОстатков;
Тип цен:
Режим загрузки — Устанавливать
Значение по умолчанию — Цена Розница 1 (выбираете свое значение)
После того как ввели все настройки, нажимаем контроль заполнения во вкладке табличный документ. Если все правильно нажимаем Загрузить:
После окончания загрузки заходим в заранее созданный документ Установка цен номенклатуры, проверяем все ли правильно загрузилось и нажимаем ОК:
Для второго типа цен выбираем по Ссылке второй документ Установка цен номенклатуры, меняем номер колонки реквизита цена,меняем тип цен на Цена Розница 2 и нажимаем Загрузить:
Аналогичным образом открываем второй документ Установка цен номенклатуры и нажимаем ОК для перепроведения.
Результат загрузки можно увидеть если зайти в элемент номенклатуры и во вкладку Цены номенклатуры.Там видим два созданных типа цен и по нажатию кнопки Перечитать текущие цены мы увидим загруженные нами цены:
Примечание: в один документ Установка цен номенклатуры с помощью данной обработки можно загрузить только один тип цен, т.е. для каждого типа цен создается отдельный документ.
Сохраняем наши настройки в файл и переходим к следующему этапу.
Чтобы загрузить эту настройку нажмите сюда
- Загрузим штрих-коды для нашей номенклатуры. Штрих-коды хранятся в регистре сведений, поэтому выбираем Режим загрузки — В регистр сведений, Вид регистра — Штрих-коды.Загружаем наш прайс во вкладке табличный документ.
Для реквизита Владелец заходим в описание типов и оставляем галочку только напротив номенклатура:
Для реквизита Владелец в поле Искать по выбираем Артикул:
Далее убираем галочки с тех реквизитов с которых возможно. Выбираем ручную нумерацию колонок.
Вводим настройки:
Штрих-код:
Режим загрузки — Искать
№ Колонки табличного документа — 7 (ставите свое значение).
Владелец:
Режим загрузки — Искать
№ Колонки табличного документа — 4 (ставите свое значение для колонки с артикулом).
Тип штрих-кода:
Режим загрузки — Устанавливать
Значение по умолчанию — EAN13 (ставите свое значение)
Единица измерения:
Режим загрузки — Вычислять
В поле выражение вводим код на встроенном языке программирования 1С:
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ТекстыЯчеек[4]);
БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекстыЯчеек[6]);
ТекСпр=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",БазоваяЕдиницаИзмерения,,СсылкаНоменклатуры);
Если ТекСпр.Пустая() Тогда НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
НайденнаяЕдиницаОбъект.Наименование = СокрЛП(БазоваяЕдиницаИзмерения);
НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения;
НайденнаяЕдиницаОбъект.Коэффициент = 1;
НайденнаяЕдиницаОбъект.Владелец = СсылкаНоменклатуры;
Попытка НайденнаяЕдиницаОбъект.Записать();
Результат = НайденнаяЕдиницаОбъект.Ссылка;
Исключение Сообщить("Не удалось записать");
КонецПопытки; Иначе Результат =ТекСпр.Ссылка;
КонецЕсли;
Качество:
Режим загрузки — Устанавливать
Значение по умолчанию — Новый
Остальные реквизиты:
Режим загрузки — Устанавливать
Значение по умолчанию — оставляем пустым
После заполнения выполняем контроль заполнения во вкладке табличный документ и нажимаем Загрузить.
После успешной загрузки сохраняем настройки в файл.
Чтобы загрузить эту настройку нажмите сюда.
Комментарии
Как вас загрузить на комп ?
?
Это у людей юмор такой. В смысле чтобы это все сделать правильно, нужно быть вами.
Очень мало можно нарыть по работе с этой обработкой, да еще и с примерами, а тут прям ВСЁ и сразу. СПАСИБО за статью!
Присоединяюсь к anykey .
Даже мне понятно! Спасибо!!!!!!
Большое спасибо, за сделанный труд
Как быть, если папка (Родитель) повторяется несколько раз. Как создать новую позицию не в «Брюки => Man», а в «Куртки => Man», может выход из положения это использование кода папки (Родитель). 1С 8,2.
Спасибо за ответ!
А как с картинками выгрузить?
А как загрузить расходные и приходные кассовые ордера из эксель в 1С?
Да помогла данная статья. СПАСИБО за статью!
Только у меня почему то при заполнении единиц хранения остатков и единиц для отчетов (будь они не ладны) вместо штут килограммы прописываются. Ну что удали килограммы из базы ))) вроде заработало.
Подскажите пожалуйста. При загрузке номенклатуры в справочник номенклатуры обработка игнорирует код номенклатуры. Ситуация нужно из одной конфигурации в другую перебросить номенклатуру. Настройки все сделал номенклатура загружается но код у загруженной номенклатуры другой не тот что стоит в экселевском файле. Подскажите как с этим быть. Заранее спасибо.