|
Не работает обработка помогите. Не могу понять по чему. УТ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) Тема не отражает суть сообщения. Вопрос не сформулирован. Приведенный код расцениваю как вандализм на форуме.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |