Имя: Пароль:
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) Тема не отражает суть сообщения. Вопрос не сформулирован. Приведенный код расцениваю как вандализм на форуме.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn