Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 19:52

Не работает обработка помогите. Не могу понять по чему. УТ11

Автор Vladimir19901, 23 фев 2015, 15:15

0 Пользователей и 1 гость просматривают эту тему.

Vladimir19901

вод код:

&НаКлиенте
Перем ТаблНом;


&НаКлиенте

Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
       //    Размещение    =    Справочники.Склады.ПустаяСсылка();

    //Объект[ИмяТабличнойЧасти].Очистить();

    //Если не ТипЗнч(Объект.СкладГруппа)= Тип("СправочникСсылка.Склады") Тогда

    //    Сообщить("Не выбран склад. Размещение не будет заполнео");

    //ИначеЕсли Объект.СкладГруппа=Справочники.Склады.ПустаяСсылка() Тогда

    //    Сообщить("Не выбран склад. Размещение не будет заполнео");

    //Иначе

    //    Размещение=Объект.СкладГруппа.ссылка;

    //КонецЕсли;   


    //ПолучитьВсюНоменклатуру();

    Попытка
        Эксель = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
   
   
    //Теперь используя переменную Эксель можно управлять приложением Excel.

   
    //    Внимание! Microsoft Excel должен быть установлен на компьютере!

   
   
    //Следующая команда откроет книгу:

   
    // Выбор файла с просмотром

    ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    //ДиалогФыбораФайла.Фильтр = "Картинка (*.bmp)|*.bmp|Картинка формата jpg (*.jpg)|*.jpg";

    ДиалогФыбораФайла.Заголовок = "Выберите файл";
    ДиалогФыбораФайла.ПредварительныйПросмотр = ложь;
    ДиалогФыбораФайла.ИндексФильтра = 0;
    Если ДиалогФыбораФайла.Выбрать() Тогда
        ПутьКФайлу=ДиалогФыбораФайла.ПолноеИмяФайла;
        Сообщить(ПутьКФайлу);
    КонецЕсли;
    ЗаполнитьТабл();
    НомерПервойСтроки=10;
    НомерЛиста=1;
    //НомерКолонки0=1;  //номер строки

    НомерКолонки1=2;  // штрихкод

    //НомерКолонки2=5;  //кол

    НомерКолонки3=2;  //наименование

    НомерКолонки4=3; //Количество

    //***

   
   
   
    Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
   
   
    //Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:

   
    Лист = Книга.WorkSheets(НомерЛиста);
   
   
    //Нумерация листов книги начинается с 1. Общее количество листов можно получить, используя следующую команду:

   
    КоличествоЛистов = Книга.Sheets.Count;
   
   
    //Лист можно выбрать по имени листа в книге:

   
    //Лист = Книга.WorkSheets(ИмяЛиста);

   
   
    //Имя листа в книге можно получить по номеру:

   
    //ИмяЛиста = Книга.Sheets(НомерЛиста).Name;

   
   
    //Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:

   
    //ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;

    ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
    Для НомерСтроки=НомерПервойСтроки по ВсегоСтрок Цикл
        // Значение1=СокрЛп(Лист.Cells(НомерСтроки, НомерКолонки1).Value);

        // Значение2=СокрЛп(Лист.Cells(НомерСтроки, НомерКолонки2).Value);

        //Значение0=Лист.Cells(НомерСтроки, НомерКолонки0).Value; //номер строки

        Значение0=НомерСтроки;
        Значение1=Сокрлп(Лист.Cells(НомерСтроки, НомерКолонки3).Value);// штрихкод

        Значение2=Лист.Cells(НомерСтроки, НомерКолонки4).Value; //кол

        Значение4=Сокрлп(Лист.Cells(НомерСтроки, НомерКолонки1).Value);
        Значение3=Лист.Cells(НомерСтроки, НомерКолонки3).Value; //наименование

       
        Если Значение1 = "" Тогда
            Значение1= ""
        КонецЕсли;
             
        Попытка
            Значение1=Строка(СокрЛП(Значение1));
            Значение2=Строка(СокрЛП(Значение2));
        Исключение
            Продолжить;
        КонецПопытки;
        Значение1= СтрЗаменить(Значение1," ","");
        Значение1= Строка(Значение1);
        //Если значение1=0 Тогда

        //    Сообщить("Строка "+Значение0+" не обработана в файлене заполнен Штрихкодом "+Значение1+". "+значение3);

        //    Продолжить;

        //КонецЕсли;   

        //Если значение2=0 Тогда

        //    //Сообщить("Строка "+Значение0+" не обработана в файлене заполнен КодУникальности "+Значение1+". "+значение3);

        //    Продолжить;

        //КонецЕсли;       

        ////Сообщить(" "+ Значение0 + " "+ Значение1 + " == " + Значение2);

        //

        ////НайденнаяСсылка = ТаблНом.найти(Значение1,"КодУникальности");

        НайденнаяСсылка    = НайтиВТЧ(Значение1);
        Если НайденнаяСсылка = Неопределено Тогда
            НайденнаяСсылка  = "";
        Иначе
            //Сообщить("найдена");

            НайденнаяСсылка  = НайденнаяСсылка.ССылка;
        КонецЕсли;   
        //Для Каждого Стр Из ИсходныйФайл Цикл

            //СтрокаТабличнойЧасти  = ИсходныйФайл.Добавить();

            //СтрокаТабличнойЧасти.Номенклатура =  НайденнаяСсылка;

            //СтрокаТабличнойЧасти.Количество              = Значение2;

            //СтрокаТабличнойЧасти.НаименованиеИзЕкселя = Значение3;

            //СтрокаТабличнойЧасти.ШтрихКод             = Значение4;

            //СтрокаТабличнойЧасти.Коэффициент              = 1;

            //СтрокаТабличнойЧасти.ЕдиницаИзмерения      = "";   

        //КонецЦикла;

       
       
       
        //СтрокаТабличнойЧасти.СтавкаНДС=Перечисления.СтавкиНДС.НДС20;

        //СтрокаТабличнойЧасти.Размещение=Размещение;

       
        //Если СтрокаТабличнойЧасти.КлючСтроки=0 Тогда

        //    СтрокаТабличнойЧасти.КлючСтроки=УправлениеЗапасами.ПолучитьНовыйКлючСтроки(Объект);

        //КонецЕсли;   

        //Если СтрокаТабличнойЧасти.Номенклатура.Комплект Тогда

        //    //Сообщить(" "+СтрокаТабличнойЧасти.НомерСтроки+" "+СтрокаТабличнойЧасти.Номенклатура);

        //    УправлениеЗапасами.ДобавитьСоставНабора(СтрокаТабличнойЧасти, Объект);

        //КонецЕсли;

       
       
    КонецЦикла;
    //Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:

   
    //Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;

   
   
    //Ниже приведен отрывок кода, запустив который мы прочитаем все данные с первой страницы:

   
    //Эксель = СоздатьОбъект("Excel.Application");

    //Книга = Эксель.WorkBooks.Open(ПутьКФайлу);

    //Лист = Книга.WorkSheets(1);

   
    //ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;

    //ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;

   
    //для Строка = 1 по ВсегоСтрок цикл

    //   

    //    для Колонка = 1 по ВсегоКолонок цикл

    //        Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value);

    //    КонецЦикла;

    //       

    //КонецЦикла;

   
   
    //Где ПутьКФайлу - полный путь к файлу книги Excel (включая имя).

   
    //После выполнения действий необходимо закрыть книгу:

   
    Эксель.Application.Quit();
    //ПроверкаЗаполненияТоваров();

    //ПолучитьВсюНоменклатуру();

    //SI.ЗаполнитьИсходныйЗаказ(Ссылка);

   
КонецПроцедуры
&НаКлиенте

Функция НайтиВТЧ(КодУникальности)
    Для каждого Стр из ТаблНом    цикл
        Если Строка(Стр.Наименование)=КодУникальности Тогда
            Возврат стр;
        КонецЕсли;
    КонецЦикла;
    Возврат Неопределено;
КонецФункции

Процедура ЗаполнитьТабл()
    Запрос = Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ
                 |    Номенклатура.Код,
                 |    Номенклатура.КодСоответствия,
                 |    Номенклатура.Наименование,
                 |    Номенклатура.Артикул
                 |ИЗ
                 |    Справочник.Номенклатура КАК Номенклатура";
    ТаблНом =Запрос.Выполнить().Выгрузить();
    Для каждого стр из ТаблНом цикл
        //Стр.КодУникальности=СтрЗаменить(Стр.КодУникальности," ","");

        //Стр.КодУникальности=СокрЛП(Стр.КодУникальности);

        Попытка
            Стр.КодУникальности=Строка(Стр.Наименование);
        Исключение
            Сообщить(""+ стр.Наименование+ "  содержит штрихкод со значением ["+Стр.Наименование+"] "+ ОписаниеОшибки());
        КонецПопытки;   
    КонецЦикла;
    //ТаблНом.ВыбратьСтроку();

КонецПроцедуры



Ошибка в том что ТаблНом не заполнен. И не могу реализовать проверку. Куда нужно кидать данную процедуру на серв или на клиента. Но с клиента не фурычит

дфтын


Vladimir19901


дфтын

Отладчег в помощь...
Добавлено: 23 фев 2015, 15:28


хыхы/ а как вы проверяете отработало оно или нет? у вас сообщение выпадет только если ошибка будет. а если нет ошибки?

Vladimir19901

Цитата: дфтын от 23 фев 2015, 15:27
Отладчег в помощь...
Добавлено: 23 фев 2015, 15:28


хыхы/ а как вы проверяете отработало оно или нет? у вас сообщение выпадет только если ошибка будет. а если нет ошибки?
Так я и пытаюсь отладчигом а он игнорит)

дфтын

ну если у вас сикульная версия \нужно перевести сервер в режим дэбаг

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск