В типовой конфигурации 1С Управление торговлей 11 для документов "пересчет товаров", "заказ на перемещение", "перемещение товаров" и "установка цен номенклатуры" нет возможности загрузить из Excel данные в табличную часть "Товары".
Данная обработка табличных частей позволяет загрузить эти данные.
Подключение обработки необходимо выполнять через "Дополнительные отчеты и обработки".
Для загрузки в табличную часть необходимо в документе нажать "Заполнить" - "Загрузка из Excel". Появится диалог открытия файла xlsx и после выбора файла данные будут загружены в табличную часть документа.
Для работы обработки не требуется установленного Microsoft Excel. Файл xlsx не должен быть открыт в Excel'е.
Правила оформления файла:
- Первая колонка содержит "Артикул" товара. Заголовок колонки должен быть равен "Артикул". По данному тексту ищется начало таблицы для загрузки.
- Далее в зависимости от типа документа колонки должны содержать:
- Для документа "Установка цен номенклатуры": Колонка 2 - Наименование товара, Колонка 3 - наименование вида цены, Колонка 4 - цена.
- Для документов "Заказ на перемещение" и "Перемещение товаров": Колонка 2 - количество.
- Для документа "Пересчет товаров": Колонка 2 - количество, Колонка 3 - Имя склада (загружаться будут только позиции со складом, совпадающим со складом в документе "Пересчет товаров").
- Загрузка из файла останавливается при первом пустом значении в колонке "Артикул".
Для загрузки в документ "Пересчет товаров" прописан определенный алгоритм:
- В документе очищаются значения фактического количества.
- Из файла получаются только строки со складом, указанным в шапке документа.
- По строке из Excel получается фактическое количество остатка на складе («количество»).
- В документе получаются все строки с артикулом по строке Excel (свободный остаток и обособленное назначение).
- Если количество полученных строк = 1, тогда заполняем в эту строку количество равным «количество» из п.3.
- Если количество полученных строк <> 1, тогда получаем сумму количества обособленного назначения («резерв») и сумму количества свободного остатка («свободный») из таблицы документа.
- Если «резерв» + «свободный» = «количество», тогда один в один заполняем «по факту», как в поле количество «по учету».
- Если «резерв» + «свободный» < «количество», тогда излишек кидаем на «свободный» остаток (увеличиваем на дельту).
- В остальных случаях выполняются следующие операции:
- Если «резерв»>= «количество», тогда не заполняем вообще «свободный» остаток, а распределяем в пропорции остаток по всем строкам с обособленным обеспечением с округлением до целого значения.
- Иначе недостачу кидаем на «свободный» остаток.
- Если не найдена ни одна строка в таблице документа - добавляется новая строка в табличную часть и выводится соответствующее сообщение.
Легко дописать алгоритм загрузки и добавить любой другой тип документа для загрузки.
Писалась обработка под свои нужды. Тестировалась на Управление торговлей 11.3.
Все предложения по доработке принимаются и вполне вероятно, что будут реализованы в следующих версиях.