Имя: Пароль:
1C
1С v8
Не работает обработка помогите. Не могу понять по чему. УТ11
Ø (GROOVY 23.02.2015 16:34)
, ,
0 volodimir1990
 
23.02.15
15:09
вод код:
&НаКлиенте
Перем ТаблНом;


&НаКлиенте

Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
       //    Размещение    =    Справочники.Склады.ПустаяСсылка();
    //Объект[ИмяТабличнойЧасти].Очистить();
    //Если не ТипЗнч(Объект.СкладГруппа)= Тип("СправочникСсылка.Склады") Тогда
    //    Сообщить("Не выбран склад. Размещение не будет заполнео");
    //ИначеЕсли Объект.СкладГруппа=Справочники.Склады.ПустаяСсылка() Тогда
    //    Сообщить("Не выбран склад. Размещение не будет заполнео");
    //Иначе
    //    Размещение=Объект.СкладГруппа.ссылка;
    //КонецЕсли;    

    //ПолучитьВсюНоменклатуру();
    Попытка
        Эксель = Новый 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.ЗаполнитьИсходныйЗаказ(Ссылка);
    
КонецПроцедуры
&НаКлиенте

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

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

Скрыть

Ошибка в том что ТаблНом не заполнен. И не могу реализовать проверку. Куда нужно кидать данную процедуру на серв или на клиента. Но с клиента не фурычит
1 Explorer1c
 
23.02.15
15:18
(0)скажи в какой строчке ошибка
2 volodimir1990
 
23.02.15
15:24
Ошибка при выводе ТаблНом он не заполнин и не заполняеться не могу сообразить куда его нужно тыкнуть в клиента или в сервер. Так как на клиенте не фуричыть думал в сервер. А сервер не отрабатывает.( Потому не могу понять...
3 Explorer1c
 
23.02.15
15:36
(2) может ты что-то неправильно делаешь?
4 intglass
 
23.02.15
15:43
(2) ТаблНом - у тебя таблица значений? Она не передаётся с сервера на клиент.
5 palpetrovich
 
23.02.15
15:45
(0) Запрос живет "наСервере", ТЗ - "наКлиенте". Для передачи данных используются методы ЗначениеВРеквизитФормы, РеквизитФормыВЗначение... как-то так, в обще почитай к примеру здесь: http://bilbo.com.ua/tablitsa-znacheniy-v-upravlyaemoy-forme.html
6 DrShust
 
23.02.15
15:46
(5) ТЗ - тоже на сервере или в толстом клиенте.
7 DrShust
 
23.02.15
15:47
(0) Точку р=останова поставь в
ТаблНом =Запрос.Выполнить().Выгрузить(); и открой обработку.
8 DrShust
 
23.02.15
15:49
Понял вроде в чём ошибка:
&НаКлиенте
Перем ТаблНом;
Нужно
&НаСервере
Перем ТаблНом;
9 DrShust
 
23.02.15
15:50
(8) Иначе ТаблНом =Запрос.Выполнить().Выгрузить() воспринимается как другая переменная.
10 palpetrovich
 
23.02.15
15:54
(6) и че, на УФ ТЗ откроется?
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПолучитьТЗ();    
КонецПроцедуры

&НаСервере
Процедура ПолучитьТЗ();
    Запрос = Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |    Номенклатура.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура";
    ТЗ = Запрос.Выполнить().Выгрузить();
    ТЗ.ВыбратьСтроку();
КонецПроцедуры
11 DrShust
 
23.02.15
15:58
(10) Не откроется, а заполнится.
12 palpetrovich
 
23.02.15
16:01
(11) и что надо сделать, что-бы визиулизировать ее для пользователя?
13 DrShust
 
23.02.15
16:02
(10) Есть, например у обработки Табличная часть Товары.
Тогда  ТЗ = Запрос.Выполнить().Выгрузить();
Объект.Товары.Загрузить(ТЗ). И это на сервере. Но в данном случае ошибка именно в том, что ТЗ определена как переменная на клиенте, на сервере её не видно. И ТЗ - на сервере это уже другая переменная, которая определена не через Перем, а на прямую. Если бы ещё автор написал результат...
14 DrShust
 
23.02.15
16:03
(12) Объект.Товары.Загрузить(ТЗ) - ну вот это визуализация. Либо определить ТЗ как реквизит Объекта (обработки).
15 Dmitry1c
 
23.02.15
16:32
Охренеть, хоть бы код заремаренный удалил.
16 GROOVY
 
модератор
23.02.15
16:34
(0) Тема не отражает суть сообщения. Вопрос не сформулирован. Приведенный код расцениваю как вандализм на форуме.