[РЕШЕНО] Загрузка реализации из Excel

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем Umptek, 17 фев 2014.

  1. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Добрый день, уважаемые профессионалы.
    Я еще новичок и вопрос у меня достаточно глупый, поэтому прошу не судить строго.
    1с Предприятие 7.7
    Торговля+Склад 9.2

    В документ РеализацияРозница делал загрузка из эксель.
    В эксель имеем таблицы в два столбца: наименование товара и сколько продано.
    Соответсвенно в документе РеализацияРозница добавление кнопка "Загрузить из Excel" и на нее повешена функция Загрузка()

    Вот текст функция для работы с эксель, который я добавил:

    Код:
    Процедура ВыбратьФайл();
        Файл=СоздатьОбъект("ФС");
        Если Файл.ВыбратьФайл(0,ИмяФайла,ИмяКаталога,
            "Выберите файл, содержащий загрузку",
            "Файлы Microsoft Excel|*.xls|Все файлы|*.*", "xls") <> 1 тогда Возврат;
        КонецЕсли;
        ИмяФайла=ИмяКаталога+ИмяФайла;
    КонецПроцедуры //ВыбратьФайл()
    
    //****************************************************************************
    Функция ПолучитьЗначение(Excel,y,x)
        Cell=Excel.Cells(y,x);
        Возврат Cell.Value;
    КонецФункции  //ПолучитьЗначение()
    //*****************************************************************************
    Процедура Загрузка()
        Спр=СоздатьОбъект("Справочник.Номенклатура");   //создаем объект справочник Номенклатура
        ВыбратьФайл();                                  // найдем файл с документом эксель
        Excel=СоздатьОбъект("Excel.Application");       //создадим объект Рабочая книга Эксель
        РабочаяКнига=Excel.Workbooks;             
        РабочаяКнига.Open(ИмяФайла,0,1);               //откроем рабочую книгу - выбранный файл эксель
        i=1;                                           // с первой строки начинаются данные в файле
        Стр=(СокрЛП(Строка(ПолучитьЗначение(Excel,i,1))));
        Пока ПустаяСтрока(Стр)=0 Цикл             // пока непустые значения в ячейках - загружаем
            Стр=(СокрЛП(Строка(ПолучитьЗначение(Excel,i,1))));
            Если ПустаяСтрока(Стр)=1 Тогда
                Сообщить("Загрузка закончена ",i);
                Прервать;
            КонецЕсли;
            НоваяСтрока();   // Добавляем строку в наш документ реализации
            НомерСтроки=i;   // номер строки соответсвует номеру строки в экселе
            ТоварСпр=(СокрЛП(Строка(ПолучитьЗначение(Excel,i,1))));    //получаем наименование из Эксель
            Если Спр.НайтиПоНаименованию(ТоварСпр,0)=0 Тогда           // Если товара нет в справочнике, то сообщим об этом
                Сообщить("Наименование в строке "+i+" нет в нашей базе");
            КонецЕсли;
            Спр.НайтиПоНаименованию(ТоварСпр,0); //найдем товар в справочнике номенклатуры
            тов=Спр.Наименование;
            Номенклатура=Спр.ТекущийЭлемент();  //занесем его в строку документа реализации
            Количество=Число(ПолучитьЗначение(Excel,i,2));  // занесем количество из строки экселя в документ реализации
            Единица=Спр.БазоваяЕдиница;            // заносим единицу измерения (берем из справочника)
            i=i+1;                        //увеличиваем номер строки
        КонецЦикла;
        ОбновлениеРозничныхЦен();        // Обновляем колонку цена и сумма (2-ой вариант)
    КонецПроцедуры   //Загрузка()
    Как видно из процедуры из Экселевского файла грузится только наименование товара и проданное количество. А цена подставляется из реальной розничной цены, с помощью функции базовой ОбновлениеРозничныхЦен(), которая уже есть в конфигурации.
    В итоге, табличная часть документа реализации заполняется, нажимаем записать, провести, закрыть.
    Документ проведен (отметка-галочка в журнале стоит), а товар со склада не списался (проверяю Отчет->Ведомость по остаткам ТМЦ).
    То есть движение товара не произошло....
    Не могу никак понять, что не так, ведь табличная часть документа заполнена полностью и правильно.
    Последнее редактирование модератором: 17 фев 2014
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Значит нужно смотреть модуль самого документа (модуль проведения).
    Так же в журнале документов можно посмотреть, какие движения сделал сам документ (правой кнопкой, пункт "Движения документа").
  3. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Модуль проведения стандартный. Конфигурация типовая. Табличная часть заполняется корректно.
  4. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Проверил движение документа (журнал документов, правая клавиша мышки).
    Показывает, что мой проведенный документ никаких движений не имеет. Что, блин, такое...
  5. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Скорее всего не все реквизиты заполнены...
  6. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    В типовой ТиС, на сколько я помню, есть колонка тип(вид) номенклатуры. Проверь, заполнена ли она. От этого могут зависеть выполняемые движения.
  7. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    А коэффициент кто будет заполнять? ;)
  8. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Который коэффициент. Если то что в валюте, то разве он не заполняется вместе с указанием типа валюты?
  9. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    Тот, что в табличной части документа. У Номенклатуры может быть несколько единиц измерения: "шт.", "упак." и т.д. С помощью коэффициента и идет пересчет в базовые единицы измерения. И движения делаются в количестве "Количество*Коэффициент". А так, как вы его не заполняете (равен 0), то и двигаете 0 шт. товара.
  10. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Код:
    Коэффициент = 1; //добавьте в цикле

    Вложения:

    • 1.PNG
      1.PNG
      Размер файла:
      5,6 КБ
      Просмотров:
      5
    Последнее редактирование: 17 фев 2014
    Umptek нравится это.
  11. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Хм-м-м....
    Вроде помнил про него.
    Мне просто казалось, что если я заполняю столбец единица ("шт"), то коэффициент потом исходя из этого параметра берется.
    Возможно, я ошибался. Пойду проверять.
  12. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Уважаемый rshakiro, вы были полностью правы.
    Дело было в коэффициенте.
    Только я добавли в цикле не просто Коэффициент=1, а ссылку на коэффициент в элементе справочника "Базовая Единица", соответствующий
    элементу справочника "Номенклатура", который добавляем в данный момент в таблицу, то есть код получился следующий:

    Код:
    Спр.НайтиПоНаименованию(ТоварСпр,0);
    тов=Спр.Наименование;
    Номенклатура=Спр.ТекущийЭлемент();
    Количество=Число(ПолучитьЗначение(Excel,i,2)); 
    Единица=Спр.БазоваяЕдиница;       
    Коэффициент=Спр.БазоваяЕдиница.Коэффициент; 
    В результате все заработало.
Похожие темы
  1. bolonka
    Ответов:
    2
    Просмотров:
    755
  2. Ivan2014
    Ответов:
    12
    Просмотров:
    1.945
Загрузка...

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