Показать сообщение отдельно
Старый 08.02.2006, 22:39   #10  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Ну, что, коллеги, всем – спасибо, респект и уважуха!

Подытоживаю сформировавшийся в ходе обсуждения алгоритм, который я выбрал (процесс уже трудится физически на рабочей базе).

Выбран вариант с автоотчетами (с выводом в файл) и с временным разрывом связи между таблицами на форме.

Изменения нужно будет внести в две таблицы и в одну форму. Табличные модификации возвращать в исходное состояние потом необязательно, а вот форму по окончании всего нашего процесса необходимо будет восстановить.

Итак, по шагам (для благодарных потомков):

Вначале разбираемся с полями автоотчетов: мы хотим, чтобы в файл вывелись значения всех полей каждой таблицы, поэтому необходимо поместить в группу полей AutoReport каждой таблицы все ее поля (точнее, вначале проверить и если это не так, то подкорректировать).

1. Выбираем в репозитарии первую (главную) таблицу TmpPurchBookVATProcessLogTrans_RU, т.е. AOT -> Data Dictionary -> Tables -> TmpPurchBookVATProcessLogTrans_RU.
2. В узле этой таблицы раскрываем узел //Field Groups/AutoReport.
3. Удаляем все поля из списка полей AutoReport: выделяем все поля в списке (кликаем на первом поле, потом - с Shift на последнем), далее правокликаем на этом выделении и выбираем "Удалить из проекта".
4. Помещаем заново все поля таблицы из узла //Fields в узел //Field Groups/AutoReport: выделяем все поля и копируем перетаскиванием.

Реорганизуем вновь созданный список полей так, чтобы связующие поля были самыми первыми (или самыми последними). Это исключительно для удобства последующей обработки данных, чтобы не искать эти ключевые поля среди множества других в будущем файле. Из узла //Relations второй (ПОДЧИНЕННОЙ) таблицы TmpPurchBookVATProcessLogTransOper_RU нам становится ясно, что наши таблицы связаны следующим образом по двум полям:
подчиненная.LogTableRefRecId == главная.LogTableRefRecId
подчиненная.RefRecId == главная.BatchRecId

5. Поскольку мы сейчас оформляем главную таблицу, то находим в ее списке полей узла //Field Groups/AutoReport поля LogTableRefRecId и BatchRecId и при помощи клавиш Alt+СтрелкаВверх и Alt+СтрелкаВниз выводим эти поля соответственно на первое и второе место сверху.
6. Сохраняем первую (главную) таблицу TmpPurchBookVATProcessLogTrans_RU
7. Проводим аналогичные манипуляции со второй (подчиненной) таблицей TmpPurchBookVATProcessLogTransOper_RU (уф! какие же длинные названия... где ты, dBase III, c твоими 10-тисимвольными именами? )

С таблицами двумя разобрались. Переходим к форме "Книга покупок (Обработка входящего НДС)": делаем ее резервную копию (на всякий пожарный), после чего временно курочим основной экземпляр.

8. Нашли форму: AOT -> Forms -> PurchBookProcessVAT_RU (репозитарное имя формы нам известно ранее из правоклика на ней в пользовательском интерфейсе и последующей "Настройки").
9. Создали копию: правоклик -> Дублировать. Создалась форма c именем "CopyOf<имя нашей формы>".
10. Вернулись к узлу основного экземпляра (который без префикса "CopyOf") и открыли узел //Data Sources/<узел ПОДЧИНЕННОЙ таблицы>.
11. Стоя на датасорсе подчиненной таблицы открыли "Свойства" (по Alt+Enter или по правоклик -> Свойства).
12. Стерли значение в свойстве JoinSource, тем самым разорвав связь между таблицами на форме. Перед стрианием в этом свойстве было прописано имя ГЛАВНОГО датасорса, которое, кстати, может отличаться от имени главной таблицы, которая этому датасорсу соответствует! - но не переживайте, у нас есть копия формы, в которую мы всегда сможем при необходимости заглянуть, чтобы в будущем правильно восстановить измененное свойство).
13. Сохраняем измененную форму (т.е. основной экземляр).

Подготовительные мероприятия закончены. Покидаем репозитарий, идём запускать расчетный процесс: "Расчеты с поставщиками -> Периодические операции -> Книга покупок -> Обработка входящего НДС -> кнопка "Выбрать" -> задаем параметры -> OK. Дожидаемся окончания процесса расчета и переходим к выводу данных в текстовый файл.

Форму "Книга покупок (Обработка входящего НДС)" пока ни в коем случае не закрываем, иначе расчет придется запускать заново!

14. Встаем на верхнюю (главную) таблицу формы и далее: Файл -> Печать -> Выберите отчет: Автоотчет -> кнопка "Опции" -> Канал вывода: Файл -> Формат вывода: ASCII -> Имя файла: задаем -> OK. Данные главной таблицы выводятся в текстовый файл.
15. Встаем на нижнюю (подчиненную) таблицу формы и повторяем операции по аналогии, задав другое (отличное от первого) имя файла. Данные подчиненной таблицы выводятся во второй текстовый файл.

Цель достигнута - данные для последующего анализа вне Аксапты получены. Переходим к заключительным мероприятиям.

16. Возвращаемся в репозитарий и находим нашу форму PurchBookProcessVAT_RU.
17. Восстанавливаем значение свойства JoinSource в подчиненном датасорсе, при необходимости подсмотрев его значение в копии формы "CopyOf...".
18. Сохраняем форму.
19. Удаляем из репозитария копию формы c именем "CopyOf<имя нашей формы>" (убедившись, что она нам больше не нужна, например, для каких-то других экспериментов).
20. Говорим: "Спасибо, Аксапта!" и переключаемся на свои драгоценные текстовые файлы.
За это сообщение автора поблагодарили: Lemming (2).