8.х ОБМЕН Выгрузить количество из табл. части документа "план закупок" в excel

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем wary, 11 окт 2010.

  1. TopicStarter Overlay
    wary
    Offline

    wary Опытный в 1С

    Регистрация:
    5 авг 2009
    Сообщения:
    139
    Симпатии:
    1
    Баллы:
    26
    ень добрый!

    В обработке настроена выгрузка количества из документа "Заказ на производство" в файлик Excel, вот код

    Код:
    Процедура ЗаказыНаПроизводство_ОБРАБОТАТЬ(РЕЖИМ)
    
    ВыбФайл = Новый Файл(ИмяФайлаДанных);
    Если НЕ ВыбФайл.Существует() Тогда
    Сообщить("Файл не существует!");
    Возврат;
    КонецЕсли;
    
    НачМомент = СокрЛП(ПолучитьОперативнуюОтметкуВремени());
    
    Попытка
    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open(ИмяФайлаДанных);
    Состояние("Обработка файла Microsoft Excel...");
    Исключение
    Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
    Excel.WorkBooks.Close();
    Excel = 0;    
    Возврат;
    КонецПопытки;
    
    
    //таб. заказав производства
    ТабЗАК = Новый ТаблицаЗначений;
    ТабЗАК.Колонки.Добавить("Код");
    ТабЗАК.Колонки.Добавить("Количество");
    
    Для Каждого Заказ Из СписокЗаказовНаПроизводство Цикл
    
    Если НЕ Заказ.Пометка Тогда
    Продолжить;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(Заказ.ЗаказНапроизводство) Тогда
    Продолжить;
    КонецЕсли;
    
    Для Каждого СоставЗаказ Из Заказ.ЗаказНапроизводство.Продукция Цикл 
    
    Если НЕ ЗначениеЗаполнено(СоставЗаказ.Спецификация) Тогда
    Продолжить;
    КонецЕсли;  
    
    КолПродукции = СоставЗаказ.Количество;
    
    Для Каждого Комплектующие Из СоставЗаказ.Спецификация.ИсходныеКомплектующие Цикл
    
    Если НЕ ЗначениеЗаполнено(Комплектующие.Номенклатура) Тогда
    Продолжить;
    КонецЕсли;  
    
    НовСтрЗАК = ТабЗАК.Добавить();
    НовСтрЗАК.Код = СокрЛП(Комплектующие.Номенклатура.Код);
    НовСтрЗАК.Количество = КолПродукции*Комплектующие.Количество;
    
    
    КонецЦикла;     
    КонецЦикла;
    КонецЦикла;
    
    //ТабЗАК.ВыбратьСтроку();
    ТабЗАК.Свернуть("Код","Количество");
    ТабЗАК.Сортировать("Код Возр");
    //ТабЗАК.ВыбратьСтроку();
    
    Для Каждого Лист Из СписокЛистов Цикл
    
    Если НЕ Лист.Пометка Тогда
    Продолжить;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(СокрЛП(Лист.ИмяЛиста)) Тогда
    Продолжить;
    КонецЕсли;
    
    Попытка
    ExcelЛист = Excel.Sheets(СокрЛП(Лист.ИмяЛиста));
    Исключение
    Сообщить("НЕУДАЧНА попытка открыть лист - "+СокрЛП(Лист.ИмяЛиста),СтатусСообщения.ОченьВажное);
    Продолжить;
    КонецПопытки;
    
    Для RowCount=Начало ПО КолСтр Цикл
    
    Состояние("Обработка листа - "+СокрЛП(Лист.ИмяЛиста)+", строка "+СокрЛП(RowCount));
    
    КодЭлемента = СокрЛП(ExcelЛист.Cells(RowCount,1).Value);
    
    Если НЕ ЗначениеЗаполнено(КодЭлемента) Тогда
    Продолжить;
    КонецЕсли;
    
    //"4 270"
    НайденнаяСтрокаЗАК = ТабЗАК.Найти(СтрЗаменить(КодЭлемента," ",""), "Код");
    Если НайденнаяСтрокаЗАК = Неопределено Тогда
    //Предупреждение("Товар не найден!");
    ОстатокЗАК = 0;
    Иначе
    ОстатокЗАК = НайденнаяСтрокаЗАК.Количество;
    КонецЕсли;
    
    Если ОстатокЗАК <> 0 Тогда
    
    Попытка
    ТекущОстаток = Число(ExcelЛист.Cells(RowCount,9).Value);
    Исключение
    ТекущОстаток = 0;
    КонецПопытки;
    
    
    Если РЕЖИМ Тогда
    ExcelЛист.Cells(RowCount,11).Value = ТекущОстаток + ОстатокЗАК;
    Иначе
    ExcelЛист.Cells(RowCount,11).Value = ТекущОстаток - ОстатокЗАК;
    КонецЕсли;
    
    КонецЕсли;
    
    КонецЦикла;    
    КонецЦикла;    
    
    Excel.WorkBooks.Close();
    Excel = 0;    
    
    Сигнал();
    Предупреждение("Выгрузка завершена! "+НачМомент+" - "+СокрЛП(ПолучитьОперативнуюОтметкуВремени()));   
    
    КонецПроцедуры
    
    
    Не получается по аналогии настроить выгрузку из документа План закупок в котором нет спецификаций, а просто табличная часть в которой номенклатура с количеством....

Поделиться этой страницей