|
Как прочитать таблицу обработки? | ☑ | ||
---|---|---|---|---|
0
falselight
19.03.19
✎
15:12
|
Есть обработка. У неё есть табличная часть, она расположена на форме.
Как мне к ней получать доступ что бы её перебрать? |
|||
1
Ёпрст
19.03.19
✎
15:13
|
(0) Спросить разрешения у взрослых
|
|||
2
falselight
19.03.19
✎
15:15
|
(1) Подскажите по коду пожалуйста.
|
|||
3
OldCondom
19.03.19
✎
15:15
|
(1) если это только элементы формы, не все так тривиально
|
|||
4
elCust
19.03.19
✎
15:16
|
(0) Кнопочку на форму добавь! Назови ее "Перебрать ТЧ".
|
|||
5
Mankubus
19.03.19
✎
15:16
|
(2) объект.моятабчасть
|
|||
6
falselight
19.03.19
✎
15:17
|
Управляемое приложение. Интерфейс такси.
У обработки табличная часть, я ё добавил на форму. Как мне её прочитать в коде. Не получается. |
|||
7
Fish
19.03.19
✎
15:18
|
(6) Показывай пример кода. Как делал, что не получается.
|
|||
8
elCust
19.03.19
✎
15:18
|
А что не получается? Покажи что уже пробовал.
|
|||
9
Chameleon1980
19.03.19
✎
15:26
|
Для Каждого СтрокаТЧ Из Объект.ТвояТЧ Цикл
КонецЦикла |
|||
10
falselight
19.03.19
✎
15:49
|
В обработке, в функции на клиенте заполняю табличную часть.
Но при выходе из функции идет такая ошибка. Почему? {ВнешняяОбработка.ЗагрузкаСXLSТабличнойЧастиЗаказНаПеремещение_0_2.Форма.Форма.Форма(30)}: Ошибка при установке значения атрибута контекста (ЗаказНаПеремещение) РезультатЗагрузки = ВыполнитьЗагрузкуНаСервере(АдресХранения, по причине: Нельзя изменять поле, содержащее объект данных формы |
|||
11
falselight
19.03.19
✎
15:50
|
&НаСервере
Функция ВыполнитьЗагрузкуНаСервере(АдресХранения, ПерваяСтрока, КолонкаКодСтроки, КолонкаНаименование, КолонкаХарактеристика, КолонкаСерия, КолонкаУпаковка, КолонкаКоличество, КолонкаКоличествоУпаковок, КолонкаОтменено, КолонкаНачалоОтгрузки, КолонкаОкончаниеПоступления, КолонкаВариантОбеспечения, КолонкаНазначение, КолонкаСтатусУказанияСерий, ДокЗаказНаПеремещение, ТчЗаказНаПеремещение) Путь = КаталогВременныхФайлов() + "temp.xls"; Файл = ПолучитьИзВременногоХранилища(АдресХранения); Файл.Записать(Путь); Попытка ОбъектExcel = Новый COMОбъект("Excel.Application"); Исключение Возврат "Ошибка открытия MS Excel"; КонецПопытки; Попытка ОбъектExcel.WorkBooks.Open(Путь); Исключение ОбъектExcel.DisplayAlerts = 0; ОбъектExcel.Quit(); ОбъектExcel.DisplayAlerts = 1; Возврат "Ошибка открытия файла для чтения: " + Путь; КонецПопытки; Попытка ОбъектExcel.Sheets(1).Select(); Исключение ОбъектExcel.ActiveWorkbook.Close(); ОбъектExcel = 0; Возврат "Ошибка при чтении файла: " + Путь; КонецПопытки; Version = ОбъектExcel.Version; Версия = Лев(Version, Найти(Version,".") - 1 ); Если Версия = "8" тогда ФайлСтрок = ОбъектExcel.Cells.CurrentRegion.Rows.Count; ФайлКолонок = Макс(ОбъектExcel.Cells.CurrentRegion.Columns.Count, 13); Иначе ФайлСтрок = ОбъектExcel.Cells(1,1).SpecialCells(11).Row; ФайлКолонок = ОбъектExcel.Cells(1,1).SpecialCells(11).Column; Конецесли; Для НС = ПерваяСтрока по ФайлСтрок Цикл НоваяСтрока = ТчЗаказНаПеремещение.Добавить(); НоваяСтрока.КодСтроки = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКодСтроки).Text); // 1. НоваяСтрока.Номенклатура = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНаименование).Text); // 2. НоваяСтрока.Характеристика = СокрЛП(ОбъектExcel.Cells(НС, КолонкаХарактеристика).Text); // 3. НоваяСтрока.Серия = СокрЛП(ОбъектExcel.Cells(НС, КолонкаСерия).Text); // 4. НоваяСтрока.Упаковка = СокрЛП(ОбъектExcel.Cells(НС, КолонкаУпаковка).Text); // 5. НоваяСтрока.Количество = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКоличество).Text); // 6. НоваяСтрока.КоличествоУпаковок = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКоличествоУпаковок).Text); // 7. НоваяСтрока.Отменено = СокрЛП(ОбъектExcel.Cells(НС, КолонкаОтменено).Text); // 8. НоваяСтрока.НачалоОтгрузки = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНачалоОтгрузки).Text); // 9. НоваяСтрока.ОкончаниеПоступления = СокрЛП(ОбъектExcel.Cells(НС, КолонкаОкончаниеПоступления).Text); // 10. НоваяСтрока.ВариантОбеспечения = СокрЛП(ОбъектExcel.Cells(НС, КолонкаВариантОбеспечения).Text); // 11. НоваяСтрока.Назначение = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНазначение).Text); // 12. НоваяСтрока.СтатусУказанияСерий = СокрЛП(ОбъектExcel.Cells(НС, КолонкаСтатусУказанияСерий).Text); // 13. КонецЦикла; Возврат ""; |
|||
12
falselight
19.03.19
✎
15:52
|
&НаКлиенте
Процедура НачатьВыполнениеЗагрузки(Результат, Параметры) Экспорт Если НЕ Результат = КодВозвратаДиалога.Да Тогда Возврат; КонецЕсли; //РеквизитИзФормыВЗначение("Объект.ЗаказНаПеремещение"); РезультатЗагрузки = ВыполнитьЗагрузкуНаСервере(АдресХранения, ПерваяСтрока, КолонкаКодСтроки, КолонкаНаименование, КолонкаХарактеристика, КолонкаСерия, КолонкаУпаковка, КолонкаКоличество, КолонкаКоличествоУпаковок, КолонкаОтменено, КолонкаНачалоОтгрузки, КолонкаОкончаниеПоступления, КолонкаВариантОбеспечения, КолонкаНазначение, КолонкаСтатусУказанияСерий, ДокЗаказНаПеремещение, Объект.ЗаказНаПеремещение); Если ТипЗнч(РезультатЗагрузки) = Тип("Строка") Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = РезультатЗагрузки; Сообщение.Поле = "ИмяФайла"; Сообщение.Сообщить(); КонецЕсли; КонецПроцедуры |
|||
13
falselight
19.03.19
✎
15:56
|
Чтобы не было ошибки (10) что нужно подправить?
|
|||
14
Fish
19.03.19
✎
15:58
|
(13) Не изменять поле, содержащее объект данных формы.
|
|||
15
falselight
19.03.19
✎
16:01
|
(14) А где эта ошибка в коде? (11) (12)
|
|||
16
falselight
19.03.19
✎
16:02
|
(14) Что не так я делаю? Как что бы все прошло без ошибок?
|
|||
17
Fish
19.03.19
✎
16:04
|
(15) В строке 30 модуля формы, судя по тексту ошибки.
|
|||
18
falselight
19.03.19
✎
16:07
|
(17) Строка 30, курсор на первой строке
РезультатЗагрузки = ВыполнитьЗагрузкуНаСервере(АдресХранения, ПерваяСтрока, |
|||
19
falselight
19.03.19
✎
16:08
|
(17) При открытии первая строка устанавливается в 3
&НаКлиенте Процедура ПриОткрытии(Отказ) ПерваяСтрока = 3; |
|||
20
falselight
19.03.19
✎
16:09
|
Что может быть не так?
|
|||
21
falselight
19.03.19
✎
16:12
|
Что нужно исправить подскажите пожалуйста?
ПерваяСтрока - это реквизит формы. |
|||
22
falselight
19.03.19
✎
16:16
|
Смотрю по коду не пойму вроде все нормально ((( Подскажите пожалуйста.
Весь код: // &НаКлиенте Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Описание = Новый ОписаниеОповещения("ЗакончитьВыборФайла", ЭтотОбъект); НачатьПомещениеФайла(Описание,,,Истина, УникальныйИдентификатор); КонецПроцедуры // &НаКлиенте Процедура ЗакончитьВыборФайла(Результат, Адрес, Имя, ДопПараметры) Экспорт Если Результат Тогда ИмяФайла = Имя; АдресХранения = Адрес; КонецЕсли; КонецПроцедуры // &НаКлиенте Процедура ВыполнитьЗагрузку(Команда) Оповещение = Новый ОписаниеОповещения("НачатьВыполнениеЗагрузки", ЭтаФорма); ПоказатьВопрос(Оповещение, "Выполнить загрузку данных из файла """ + ИмяФайла + """ ?", РежимДиалогаВопрос.ДаНет, , , "Начало загрузки"); КонецПроцедуры // &НаКлиенте Процедура НачатьВыполнениеЗагрузки(Результат, Параметры) Экспорт Если НЕ Результат = КодВозвратаДиалога.Да Тогда Возврат; КонецЕсли; РезультатЗагрузки = ВыполнитьЗагрузкуНаСервере(АдресХранения, ПерваяСтрока, КолонкаКодСтроки, КолонкаНаименование, КолонкаХарактеристика, КолонкаСерия, КолонкаУпаковка, КолонкаКоличество, КолонкаКоличествоУпаковок, КолонкаОтменено, КолонкаНачалоОтгрузки, КолонкаОкончаниеПоступления, КолонкаВариантОбеспечения, КолонкаНазначение, КолонкаСтатусУказанияСерий, ДокЗаказНаПеремещение, Объект.ЗаказНаПеремещение); Если ТипЗнч(РезультатЗагрузки) = Тип("Строка") Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = РезультатЗагрузки; Сообщение.Поле = "ИмяФайла"; Сообщение.Сообщить(); КонецЕсли; КонецПроцедуры // &НаСервере Функция ВыполнитьЗагрузкуНаСервере(АдресХранения, ПерваяСтрока, КолонкаКодСтроки, КолонкаНаименование, КолонкаХарактеристика, КолонкаСерия, КолонкаУпаковка, КолонкаКоличество, КолонкаКоличествоУпаковок, КолонкаОтменено, КолонкаНачалоОтгрузки, КолонкаОкончаниеПоступления, КолонкаВариантОбеспечения, КолонкаНазначение, КолонкаСтатусУказанияСерий, ДокЗаказНаПеремещение, ТчЗаказНаПеремещение) Путь = КаталогВременныхФайлов() + "temp.xls"; Файл = ПолучитьИзВременногоХранилища(АдресХранения); Файл.Записать(Путь); Попытка ОбъектExcel = Новый COMОбъект("Excel.Application"); Исключение Возврат "Ошибка открытия MS Excel"; КонецПопытки; Попытка ОбъектExcel.WorkBooks.Open(Путь); Исключение ОбъектExcel.DisplayAlerts = 0; ОбъектExcel.Quit(); ОбъектExcel.DisplayAlerts = 1; Возврат "Ошибка открытия файла для чтения: " + Путь; КонецПопытки; Попытка ОбъектExcel.Sheets(1).Select(); Исключение ОбъектExcel.ActiveWorkbook.Close(); ОбъектExcel = 0; Возврат "Ошибка при чтении файла: " + Путь; КонецПопытки; Version = ОбъектExcel.Version; Версия = Лев(Version, Найти(Version,".") - 1 ); Если Версия = "8" тогда ФайлСтрок = ОбъектExcel.Cells.CurrentRegion.Rows.Count; ФайлКолонок = Макс(ОбъектExcel.Cells.CurrentRegion.Columns.Count, 13); Иначе ФайлСтрок = ОбъектExcel.Cells(1,1).SpecialCells(11).Row; ФайлКолонок = ОбъектExcel.Cells(1,1).SpecialCells(11).Column; Конецесли; Для НС = ПерваяСтрока по ФайлСтрок Цикл НоваяСтрока = ТчЗаказНаПеремещение.Добавить(); НоваяСтрока.КодСтроки = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКодСтроки).Text); // 1. НоваяСтрока.Номенклатура = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНаименование).Text); // 2. НоваяСтрока.Характеристика = СокрЛП(ОбъектExcel.Cells(НС, КолонкаХарактеристика).Text); // 3. НоваяСтрока.Серия = СокрЛП(ОбъектExcel.Cells(НС, КолонкаСерия).Text); // 4. НоваяСтрока.Упаковка = СокрЛП(ОбъектExcel.Cells(НС, КолонкаУпаковка).Text); // 5. НоваяСтрока.Количество = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКоличество).Text); // 6. НоваяСтрока.КоличествоУпаковок = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКоличествоУпаковок).Text); // 7. НоваяСтрока.Отменено = СокрЛП(ОбъектExcel.Cells(НС, КолонкаОтменено).Text); // 8. НоваяСтрока.НачалоОтгрузки = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНачалоОтгрузки).Text); // 9. НоваяСтрока.ОкончаниеПоступления = СокрЛП(ОбъектExcel.Cells(НС, КолонкаОкончаниеПоступления).Text); // 10. НоваяСтрока.ВариантОбеспечения = СокрЛП(ОбъектExcel.Cells(НС, КолонкаВариантОбеспечения).Text); // 11. НоваяСтрока.Назначение = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНазначение).Text); // 12. НоваяСтрока.СтатусУказанияСерий = СокрЛП(ОбъектExcel.Cells(НС, КолонкаСтатусУказанияСерий).Text); // 13. КонецЦикла; Возврат ""; // Для каждого СтрТз Из ТчЗаказНаПеремещение Цикл //НомерCтроки // 4. //НаименованиеНоменклатуры *** СПРАВОЧНИК *** НаименованиеНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ОбъектExcel.Cells(НС, КолонкаНаименование).Text), 1); Если НаименованиеНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Сообщить("Номенклатура " + СокрЛП(ОбъектExcel.Cells(НС, КолонкаНаименование).Text) + " не найдена в справочнике номенклатура!"); // НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); НоваяНоменклатура.Наименование = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНаименование).Text); НоваяНоменклатура.Записать(); ДокНоваяМСтрока = ДокЗаказНаПеремещение.Товары.Добавить(); ДокНоваяМСтрока.Номенклатура = НоваяНоменклатура.Ссылка; // //Продолжить; Иначе //ДокЗаказНаПеремещение = Документы.ЗаказНаПеремещение.СоздатьДокумент(); ДокНоваяМСтрока = ДокЗаказНаПеремещение.Товары.Добавить(); ДокНоваяМСтрока.Номенклатура = НаименованиеНоменклатуры; КонецЕсли; // 3. //КодСтроки КодСтроки = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКодСтроки).Text); ДокНоваяМСтрока.КодСтроки = ЧИСЛО(КодСтроки); // 5. //Характеристика *** СПРАВОЧНИК *** Характеристика = СокрЛП(ОбъектExcel.Cells(НС, КолонкаХарактеристика).Text); НайденнаяХарактеристика = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(Характеристика, 1); Если Не НайденнаяХарактеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка() Тогда ДокНоваяМСтрока.Характеристика = НайденнаяХарактеристика; Иначе Сообщить("Характеристика " + Характеристика + " не найдена в справочнике характеристики номенклатуры!"); КонецЕсли; // 6. //Серия *** СПРАВОЧНИК *** Серия = СокрЛП(ОбъектExcel.Cells(НС, КолонкаСерия).Text); НайденнаяСерия = Справочники.СерииНоменклатуры.НайтиПоНаименованию(Серия, 1); Если Не НайденнаяСерия = Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда ДокНоваяМСтрока.Серия = НайденнаяСерия; Иначе Сообщить("Серия " + Серия + " не найдена в справочнике серии номенклатуры!"); КонецЕсли; // 7. //Упаковка *** СПРАВОЧНИК *** Упаковка = СокрЛП(ОбъектExcel.Cells(НС, КолонкаУпаковка).Text); НайденнаяУпаковка = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(Упаковка, 1); Если Не НайденнаяУпаковка = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка() Тогда ДокНоваяМСтрока.Упаковка = НайденнаяУпаковка; Иначе Сообщить("Упаковка " + Упаковка + " не найдена в справочнике упаковки !"); КонецЕсли; // 8. //Количество Количество = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКоличество).Text); ДокНоваяМСтрока.Количество = ЧИСЛО(Количество); // 9. //КоличествоУпаковок КоличествоУпаковок = СокрЛП(ОбъектExcel.Cells(НС, КолонкаКоличествоУпаковок).Text); ДокНоваяМСтрока.КоличествоУпаковок = ЧИСЛО(КоличествоУпаковок); // 10. //Отменено Отменено = СокрЛП(ОбъектExcel.Cells(НС, КолонкаОтменено).Text); Если Отменено = "Истина" Тогда ДокНоваяМСтрока.Отменено = Истина; ИначеЕсли Отменено = "Ложь" Тогда ДокНоваяМСтрока.Отменено = Ложь; КонецЕсли; // 11. //НачалоОтгрузки НачалоОтгрузки = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНачалоОтгрузки).Text); ДокНоваяМСтрока.НачалоОтгрузки = ДАТА(НачалоОтгрузки); // 12. //ОкончаниеПоступления ОкончаниеПоступления = СокрЛП(ОбъектExcel.Cells(НС, КолонкаОкончаниеПоступления).Text); ДокНоваяМСтрока.ОкончаниеПоступления = ДАТА(ОкончаниеПоступления); // 13. //ВариантОбеспечения ВариантОбеспечения = СокрЛП(ОбъектExcel.Cells(НС, КолонкаВариантОбеспечения).Text); Если ВариантОбеспечения = "ОтгрузитьОбособленно" Тогда ДокНоваяМСтрока.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.ОтгрузитьОбособленно; ИначеЕсли ВариантОбеспечения = "Отгрузить" Тогда ДокНоваяМСтрока.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить; ИначеЕсли ВариантОбеспечения = "СоСклада" Тогда ДокНоваяМСтрока.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.СоСклада; ИначеЕсли ВариантОбеспечения = "ИзЗаказов" Тогда ДокНоваяМСтрока.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.ИзЗаказов; ИначеЕсли ВариантОбеспечения = "Обособленно" Тогда ДокНоваяМСтрока.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Обособленно; ИначеЕсли ВариантОбеспечения = "Требуется" Тогда ДокНоваяМСтрока.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Требуется; ИначеЕсли ВариантОбеспечения = "НеТребуется" Тогда ДокНоваяМСтрока.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.НеТребуется; КонецЕсли; // 14. //Назначение *** СПРАВОЧНИК *** Назначение = СокрЛП(ОбъектExcel.Cells(НС, КолонкаНазначение).Text); НайденноеНазначение = Справочники.Назначения.НайтиПоНаименованию(Назначение, 1); Если Не НайденноеНазначение = Справочники.Назначения.ПустаяСсылка() Тогда ДокНоваяМСтрока.Назначение = НайденноеНазначение; Иначе Сообщить("Назначение " + Назначение + " не найдено в справочнике назначения!"); КонецЕсли; // 15. //СтатусУказанияСерий СтатусУказанияСерий = СокрЛП(ОбъектExcel.Cells(НС, КолонкаСтатусУказанияСерий).Text); ДокНоваяМСтрока.СтатусУказанияСерий = ЧИСЛО(СтатусУказанияСерий); // ДокЗаказНаПеремещение.Записать(); КонецЦикла; ОбъектExcel.DisplayAlerts = 0; ОбъектExcel.Quit(); ОбъектExcel.DisplayAlerts = 1; КонецФункции // &НаКлиенте Процедура ПриОткрытии(Отказ) ПерваяСтрока = 3; КолонкаКодСтроки = 3; КолонкаНаименование = 4; КолонкаХарактеристика = 5; КолонкаСерия = 6; КолонкаУпаковка = 7; КолонкаКоличество = 8; КолонкаКоличествоУпаковок = 9; КолонкаОтменено = 10; КолонкаНачалоОтгрузки = 11; КолонкаОкончаниеПоступления = 12; КолонкаВариантОбеспечения = 13; КолонкаНазначение = 14; КолонкаСтатусУказанияСерий = 15; КонецПроцедуры // |
|||
23
Ёпрст
19.03.19
✎
16:24
|
(0) выкинуть последний параметр в функции, в самой функции просто написать
ТчЗаказНаПеремещение = Объект.ТчЗаказНаПеремещение; кушать печенки |
|||
24
Ёпрст
19.03.19
✎
16:25
|
предпоследний параметр тоже выкинуть
|
|||
25
Ёпрст
19.03.19
✎
16:25
|
и бе с записью
|
|||
26
Ёпрст
19.03.19
✎
16:25
|
бред (не Пит)
|
|||
27
sqr4
19.03.19
✎
16:27
|
(23) у меня тоже раньше на работе были бесплатные печеньки, а теперь нет...
|
|||
28
falselight
19.03.19
✎
16:30
|
Понял! Счас займусь!!!!
|
|||
29
falselight
19.03.19
✎
16:31
|
(25) А это где? С записью?
|
|||
30
Ёпрст
19.03.19
✎
16:40
|
(29) ДокЗаказНаПеремещение.. врят ли ты на сервер объект передаешь. Максимум, ссылку, а объект еще и получиь надо,для записи
|
|||
31
falselight
19.03.19
✎
16:44
|
СПАСИБО!!!!
(30) Пока мне нужно было заполнить табличную часть на форме. Заполнил. Далее буду дальше обрабатывать. Там будет заполнение табличной части документа. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |