mihast писал(а) 05. Августа 2008 :: 08:11:В документе в МногострочнойЧасти есть вычисляемые поля, которые нельзя получить через ЗагрузитьТабличнуюЧасть. Как мне их считать в ТЗ ?
Сразу говорю я не читал код который ты написал но вот тебе путь к нахождению выхода:
1. Понадобиться 1С++ (желательно 3.х я сам его юзаю и всем советую)
2. FormEx последний (91 вроде???)
3. Немного смекалки и знаний 1С++, 1С и т.д.
И так порядок действий:
1. Через Получить атрибут получаешь объект "АтрибутФормы"
Для НомерАтрибута = 1 По РасшФормы.КоличествоАтрибутов() - 1 Цикл
АтрФормы = РасшФормы.ПолучитьАтрибут(НомерАтрибута);
2. У атрибута спрашиваешь кто он:
АтрФормы.Тип = 5 - реквизит документа, смело марш в метаданные чтобы узнать Тип, Вид и т.д.
АтрФормы.Тип = 9 - реквизит - вычисляемая колонка, через объект АтрибутФормы узнаешь его Идентификатор, Формулу. Если Идентификатор пуст тогда смотри сам я просто присваиваю ему какой нить типа Строка("Идентификатор_"+НомерАтрибута)
3. Все что узнал выше записываешь на всякий случай в ИТЗСтруктураМногострочнойЧасти (и формулу и вообще все что можно узнать), добавь флаг ИнформационноеПоле и если тип = 9, ставь 1, потом пригодится
4. В ИТЗ добавь индекс по идентификатору чтобы быстрее искать было
5. Отдельно в АссоциативныйВектор (или хоть в СЗ) добавь Идентификатор колонок с типом = 9 (чтобы информационные колонки отдельно были)
6. Далее создаешь ТЗ в которую будешь выгружать многострочную часть, ТОЛЬКО НЕ ВЫГРУЗКОЙ
7. Через Контекст или напрямую (если не КОП) перебираешь строки (так лучше не совсем быстрее но достаточно чтобы не париться Выгружать или перебирать)
8. В каждой полученной строке заполняешь ТЗ по атрибутам с типом 5 (вот тут по ИТЗСтруктура перебираешь колонки и соответственно просто пропускаешь те которые Информационные), не переходя на следующую строку через объект ВыполняемыйМодуль рассчитываешь значение это ячейки и вставляешь ее в ТЗ
9. Собственно все... если все верно сделаешь будет тебе счастье
Кстати в репозитории в свое время создавал тему про подмену многострочной части на табличное поле, вот туда тыркнись там есть и КОП и приведенный выше механизм там полностью реализован. Правда не помню используется ли там ИТЗ и Вектор, давно не обновлял... да наверное если никому не надо и не буду обновлять