Вставить значение реквизита в табличную часть
Привет всем.
Есть Документ пересчет товара в УТ 11
Есть Внешняя обработка заполнения табличной части
Там я читаю EXCEL файл получаю ячейки КодТовара и КоличествоОстаток
В Обработке доступ к документу ЭтотОбъект.ВладелецФормы
Все телодвижения делаю &НаКлиенте
Номенклатуру получаю НаСервере и возвращаю НаКлиент
А теперь сам вопрос:
Как в табличной части найти строку с номенклатурой и проставить в этой строке КоличествоФакт
Вот часть кода внешней обработки:
Но получаю ошибку:
Номенклатуру находит, а вот строку непонятно, не могу отладить внешнюю обработку
Реквизит на форме владельца есть КоличествоУпаковокФакт
Есть Документ пересчет товара в УТ 11
Есть Внешняя обработка заполнения табличной части
Там я читаю EXCEL файл получаю ячейки КодТовара и КоличествоОстаток
В Обработке доступ к документу ЭтотОбъект.ВладелецФормы
Все телодвижения делаю &НаКлиенте
Номенклатуру получаю НаСервере и возвращаю НаКлиент
А теперь сам вопрос:
Как в табличной части найти строку с номенклатурой и проставить в этой строке КоличествоФакт
Вот часть кода внешней обработки:
Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
КодТовара = Excel.Cells(СтрокаОтсчета, 4).Text;
Номенклатура = ПолучитьНоменклатуруПоКоду(КодТовара);
ВладелецФормы.Модифицированность = Истина;
Отбор = Новый Структура();
Отбор.Вставить("Номенклатура", Номенклатура);
Сообщить(Номенклатура);
НайденноеЗначение = ВладелецФормы.Объект.Товары.НайтиСтроки(Отбор);
Сообщить(НайденноеЗначение);
НайденноеЗначение.КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
КонецЦикла;
Excel.DisplayAlerts = 0;
Excel.Quit();
Excel.DisplayAlerts = 1;
ПоказатьНо получаю ошибку:
Поле объекта не обнаружено (КоличествоУпаковокФакт)
{ВнешняяОбработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма.Форма(2567)}: НайденноеЗначение.КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
{ВнешняяОбработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма.Форма(2567)}: НайденноеЗначение.КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
Номенклатуру находит, а вот строку непонятно, не могу отладить внешнюю обработку
Реквизит на форме владельца есть КоличествоУпаковокФакт
По теме из базы знаний
- Создание подключаемой обработки табличной части с диалогом запроса параметров заполнения (управляемые формы)
- Работа с контактной информацией. Часть 1
- Альтернативная загрузка из файла в табличную часть или использование подсистемы БСП "Загрузка данных из файла"
- 1С:БСП Дополнительные реквизиты и сведения
- Снизу вверх по табличной части. Разбираемся в понятиях Идентификатор-индекс-номер строки управляемых форм
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Так все таки как называется реквизит табличной части? КоличестоФакт или КоличествоУпаковокФакт ?
Как в табличной части найти строку с номенклатурой и проставить в этой строке КоличествоФакт
НайденноеЗначение.КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
Так все таки как называется реквизит табличной части? КоличестоФакт или КоличествоУпаковокФакт ?
Добавил ВладелецФормы.Прочитать(); Всеравно не показывает что заполнил
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытия.ПолноеИмяФайла = "";
Фильтр = "XLS (*.xls)|*.xls|XLSX (*.xlsx)|*.xlsx";
ДиалогОткрытия.Фильтр = Фильтр;
ДиалогОткрытия.МножественныйВыбор = Ложь;
ДиалогОткрытия.Заголовок = "Выберите файлы EXEL";
Если ДиалогОткрытия.Выбрать() Тогда
ПутьКФайлу = ДиалогОткрытия.ПолноеИмяФайла;
Иначе
Предупреждение("Нет выбранных файлов!");
КонецЕсли;
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ПутьКФайлу);
Исключение
Сообщить("При открытии файла произошла ошибка! Операция прервана!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
// Попытка выбрать первый лист
// Можно указать любой другой
Попытка
Excel.Sheets(1).Select();
Исключение
// Закрытие файла в том случае, если первый лист не найден
Excel.ActiveWorkbook.Close();
Excel = 0;
Сообщить("Первый лист не найден!");
Возврат;
КонецПопытки;
// Вычисление количества строк и колонок в зависимости от версии Excel
vExcel = Лев(Excel.Version, Найти(Excel.Version,".")-1);
Если vExcel = "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;
Конецесли;
Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
Если СтрокаОтсчета = 15 Тогда Прервать КонецЕсли;
КодТовара = Excel.Cells(СтрокаОтсчета, 4).Text;
Номенклатура = ПолучитьНоменклатуруПоКоду(КодТовара);
Состояние("Загружаем таблицу", СтрокаОтсчета * 100 / КоличествоСтрок,Номенклатура);
ВладелецФормы.Модифицированность = Истина;
Отбор = Новый Структура();
Отбор.Вставить("Номенклатура", Номенклатура);
Сообщить(Номенклатура);
НайденноеЗначение = ВладелецФормы.Объект.Товары.НайтиСтроки(Отбор);
//Сообщить(НайденноеЗначение);
Если НайденноеЗначение.Количество() >0 тогда
НайденноеЗначение[0].КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
Сообщить("Найден");
Иначе
Сообщить("НЕНайден");
КонецЕсли;
КонецЦикла;
Excel.DisplayAlerts = 0;
Excel.Quit();
Excel.DisplayAlerts = 1;
ЭтаФорма.Закрыть();
ВладелецФормы.Прочитать();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот