Как изменить данные только в одной колонке ТЧ ?
Добрый день, Всем! Покажите пример, как применить метод "ЗагрузитьКолонку" в табличную часть. В контекстной подсказке выпадает только метод "Загрузить".
ТЗ_ВсеСтроки = Объект.ТЧДанныеJS.Выгрузить();
Для Каждого СтрокаТЗ Из ТЗ_ВсеСтроки Цикл
Если СтрокаТЗ.БуферКоличество = 0 Тогда
СтрокаТЗ.БуферКоличество = СтрокаТЗ.СкладКоличество;
КонецЕсли;
КонецЦикла;
Объект.ТЧДанныеJS.Загрузить(ТЗ_ВсеСтроки);
ПоказатьПо теме из базы знаний
- Универсальный конструктор отчетов (Новейший отчет) для 1C 7.7
- Как читать чужой код? Часть 1. Общие вопросы. Доработка чужого кода. Code review
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
- Пользовательские настройки отчетов 1С. Часть 2. Группировки и варианты
- История одного админа в мире 1С. Как поиски причины тормозов 1С привели к созданию нового продукта
Найденные решения
(11)
1. Алгоритм твоего примера, в модуле формы. Перезагрузки не требует вообще.
2. Перезагрузка всей колонки в модуле формы через таблицу значений
3. Перезагрузка всей колонки в модуле формы через объект основного реквизита. Вместо явной выгрузки в таблицу значений используется неявная при преобразовании реквизита формы в объект и обратно.
4. Перезагрузка всей колонки из модуля формы вызовом модуля объекта. Реквизит формы всё также перезаполнятеся целиком при неявном преобразовании реквизита формы в объект и обратно.
В модуле формы:
И в модуле объекта:
Производительность разная.
Сложно
1. Алгоритм твоего примера, в модуле формы. Перезагрузки не требует вообще.
Для Каждого Строка Из Объект.ТЧДанныеJS Цикл
Если Строка.БуферКоличество = 0 Тогда
Строка.БуферКоличество = Строка.СкладКоличество;
КонецЕсли;
КонецЦикла;
2. Перезагрузка всей колонки в модуле формы через таблицу значений
Таблица = Объект.ТЧДанныеJS.Выгрузить();
ЗначенияКолонки = Таблица.ВыгрузитьКолонку("СкладКоличество");
Таблица.ЗагрузитьКолонку("БуферКоличество ", ЗначенияКолонки)
Объект.ТЧДанныеJS.Загрузить(Таблица);
3. Перезагрузка всей колонки в модуле формы через объект основного реквизита. Вместо явной выгрузки в таблицу значений используется неявная при преобразовании реквизита формы в объект и обратно.
ОсновнойОбъект = РеквизитФормыВЗначение("Объект");
ЗначенияКолонки = ОсновнойОбъект.ТЧДанныеJS.ВыгрузитьКолонку("СкладКоличество");
ОсновнойОбъект.ЗагрузитьКолонку("БуферКоличество ", ЗначенияКолонки);
ЗначениеВРеквизитФормы(ОсновнойОбъект, "Объект");
4. Перезагрузка всей колонки из модуля формы вызовом модуля объекта. Реквизит формы всё также перезаполнятеся целиком при неявном преобразовании реквизита формы в объект и обратно.
В модуле формы:
ОсновнойОбъект = РеквизитФормыВЗначение("Объект");
ОсновнойОбъект.ПерезаполнитьКолонки();
ЗначениеВРеквизитФормы(ОсновнойОбъект, "Объект");
Процедура ПерезаполнитьКолонки() Экспорт
ЗначенияКолонки = ТЧДанныеJS.ВыгрузитьКолонку("СкладКоличество");
ЗагрузитьКолонку("БуферКоличество ", ЗначенияКолонки);
КонецПроцедуры
Производительность разная.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(11)
1. Алгоритм твоего примера, в модуле формы. Перезагрузки не требует вообще.
2. Перезагрузка всей колонки в модуле формы через таблицу значений
3. Перезагрузка всей колонки в модуле формы через объект основного реквизита. Вместо явной выгрузки в таблицу значений используется неявная при преобразовании реквизита формы в объект и обратно.
4. Перезагрузка всей колонки из модуля формы вызовом модуля объекта. Реквизит формы всё также перезаполнятеся целиком при неявном преобразовании реквизита формы в объект и обратно.
В модуле формы:
И в модуле объекта:
Производительность разная.
Сложно
1. Алгоритм твоего примера, в модуле формы. Перезагрузки не требует вообще.
Для Каждого Строка Из Объект.ТЧДанныеJS Цикл
Если Строка.БуферКоличество = 0 Тогда
Строка.БуферКоличество = Строка.СкладКоличество;
КонецЕсли;
КонецЦикла;
2. Перезагрузка всей колонки в модуле формы через таблицу значений
Таблица = Объект.ТЧДанныеJS.Выгрузить();
ЗначенияКолонки = Таблица.ВыгрузитьКолонку("СкладКоличество");
Таблица.ЗагрузитьКолонку("БуферКоличество ", ЗначенияКолонки)
Объект.ТЧДанныеJS.Загрузить(Таблица);
3. Перезагрузка всей колонки в модуле формы через объект основного реквизита. Вместо явной выгрузки в таблицу значений используется неявная при преобразовании реквизита формы в объект и обратно.
ОсновнойОбъект = РеквизитФормыВЗначение("Объект");
ЗначенияКолонки = ОсновнойОбъект.ТЧДанныеJS.ВыгрузитьКолонку("СкладКоличество");
ОсновнойОбъект.ЗагрузитьКолонку("БуферКоличество ", ЗначенияКолонки);
ЗначениеВРеквизитФормы(ОсновнойОбъект, "Объект");
4. Перезагрузка всей колонки из модуля формы вызовом модуля объекта. Реквизит формы всё также перезаполнятеся целиком при неявном преобразовании реквизита формы в объект и обратно.
В модуле формы:
ОсновнойОбъект = РеквизитФормыВЗначение("Объект");
ОсновнойОбъект.ПерезаполнитьКолонки();
ЗначениеВРеквизитФормы(ОсновнойОбъект, "Объект");
Процедура ПерезаполнитьКолонки() Экспорт
ЗначенияКолонки = ТЧДанныеJS.ВыгрузитьКолонку("СкладКоличество");
ЗагрузитьКолонку("БуферКоличество ", ЗначенияКолонки);
КонецПроцедуры
Производительность разная.
(13) Зависит от размеров таблицы. Если там десяток строчек, то проще перебрать их в цикле, как в варианте 1. Если там много, то через явную выгрузку варианта 2. Варианты 3 и 4 используют дополнительно преобразование реквизита формы в объект, это дорогая операция, ведущая к компиляции модуля объекта и выполнения кода в его секции инициализации.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот