|
v7: ПолучитьЭлемент в произвольном алгоритме ПВД из 1С v7 | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
31.10.12
✎
11:48
|
Здравствуйте всем. Набросал алгоритм для выборки данных из справочника. Запихнул в ПВД, сформировал внешнюю обработку, запустил. Ошибок не выскочило, но и данные никакие не выгрузились. Надо бы отладчиком проверить, какие данные в какой момент куда помещаются.. мб и нашлась бы причина, но я не знаком с механизмом отладки внешних обработок в семерке.
Мб уже взглянув на код, гуру скажут, в чем причина? Аналогичный код в другом ПВД работал без проблем. Сообщения понатыканы в начале чтобы понять,в какой момент прекращается выполнение. В итоге "получен элемент" не сообщается: Начало выгрузки: 31.10.12 11:45:56 Запущено ПВД Создана ТЗ Создан объект справочника Выбраны элементы Выгружено объектов: 0 Окончание выгрузки: 31.10.12 11:45:56 Сообщить("Запущено ПВД");
|
|||
1
1Сергей
31.10.12
✎
11:50
|
Полиэтилен высокого давления?
|
|||
2
viktor_vv
31.10.12
✎
11:51
|
Договоры.ВыбратьЭлементы(0);
|
|||
3
viktor_vv
31.10.12
✎
11:51
|
Я так понимаю Договоры это подчиненный справочник, надо выбирать без учета иерархии.
|
|||
4
Скользящий
31.10.12
✎
11:56
|
>>но я не знаком с механизмом отладки внешних обработок в семерке.
Открываешь отладчик, ставишь замер производительности. запускаешь выгрузку. Отжимаешь кнопочку замера производительности. Получишь окно замера производительности, по щелчку в которой отроется отработавщий код в отладчике. Ну и потом можно стоп поставить где надо по F9 |
|||
5
Скользящий
31.10.12
✎
11:57
|
Я так делаю, потому что у меня весь код выгрузки загрузки во внешний файл вынесен, чтобы из 8ки сделать в текстовик выгрузку и семерка ее сразу подцепила.
|
|||
6
viktor_vv
31.10.12
✎
12:00
|
(5) Можно проще. Ставишь курсор в коде в нужном месте, нажимаешь кнопочку внизу на панеле Открыть модуль в отладчике.
Для текстовиков в модуле ставишь курсор перед #ЗагрузитьИзФайла и жмешь ту же кнопочку. |
|||
7
PiotrLoginov
31.10.12
✎
12:02
|
(3) да, подчиненный. а как выбрать "без учета иерархии"?
|
|||
8
1Сергей
31.10.12
✎
12:02
|
(7) см (2)
|
|||
9
viktor_vv
31.10.12
✎
12:03
|
Уже и иконку к нику купил соотвествующую, все равно не помогает :).
|
|||
10
Скользящий
31.10.12
✎
12:07
|
(6) Про фичу установки курсора перед Загрузить из файла не знал, хотя мне с замером все равно проще, я сразу вижу отработавший код.
|
|||
11
PiotrLoginov
31.10.12
✎
12:11
|
попытался следовать (4) . С ходу не въехал. Сейчас еще покумекаю.
Скопировал из (2). Дело пошло :) . Спасибо за подсказку. Теперь пишет "Ошибка исполнения обработчика: ПВД_ПередОбработкойПравила_ДоговорыКонтрагентов - Поле агрегатного объекта не обнаружено (ПометкаУдаления)" Что, в подчиненных справочниках не бывает пометки удаления? |
|||
12
Voronve
31.10.12
✎
12:12
|
.ПометкаУдаления()
|
|||
13
1Сергей
31.10.12
✎
12:12
|
(11) бывает, но это функция
|
|||
14
PiotrLoginov
31.10.12
✎
12:13
|
(12) Аа-а, блин, совсем я плох. Спасибо.
|
|||
15
Ёпрст
31.10.12
✎
12:14
|
(11) ПометкаУдаления - это функция ПометкаУдаления(), а не свойство объекта.
|
|||
16
PiotrLoginov
31.10.12
✎
12:17
|
Так. поставил курсор в модуле внешней обработки. Нажал "Открыть модуль в отладчике". Выскочил отладчик с деревом модулей, в том числе "Внешние отчеты(обработки) и текст модуля внешки. Далее выбрать в меню "отладка - замер производительности" ?
|
|||
17
PiotrLoginov
31.10.12
✎
12:17
|
(15) да, да , я понял.
|
|||
18
viktor_vv
31.10.12
✎
12:18
|
Далее ставишь точку останова где тебе надо и выполняешь обработку.
|
|||
19
PiotrLoginov
31.10.12
✎
12:20
|
(18) да, получилось. гениально.
|
|||
20
PiotrLoginov
31.10.12
✎
12:24
|
Если можно еще такой вопрос. То, что выборка происходит "без учета иерархии", накладывает какие-то ограничения? Например, там я обращаюсь к владельцу текущего элемента:
ИсторияЛимитов.ИспользоватьОбъект("СуммаКредита",Договоры.ТекущийЭлемент().Владелец); или даже Договоры.ТекущийЭлемент().Владелец.СуммаКредита.Получить("2011-11-01T00:00:00"); Нормально? |
|||
21
PiotrLoginov
31.10.12
✎
12:25
|
Т.е. у владельца текущего элемента есть периодический реквизит, и я пытаюсь получить его значение на определенную дату. Такое возможно?
|
|||
22
viktor_vv
31.10.12
✎
12:27
|
Нормально. Многова-то обращений через точку правда.
ТекущийКонтрагент = Договоры.Владелец ; ИсторияЛимитов.ИспользоватьОбъект("СуммаКредита",ТекущийКонтрагент); // Вот здесь с датой че-то фигня ТекущийКонтрагент.СуммаКредита.Получить('01.11.2011'); |
|||
23
1Сергей
31.10.12
✎
12:29
|
Откройте уже секрет. Что такое ПВД?
|
|||
24
PiotrLoginov
31.10.12
✎
12:30
|
ок, огромное спасибо. Попробую. Еще раз спасибо. Долго бы я без помощи кумекал.
(23) ну правило выгрузки данных в КД ... |
|||
25
Simod
31.10.12
✎
12:31
|
(20) В 7.7 дата не содержит времени.
|
|||
26
PiotrLoginov
31.10.12
✎
12:32
|
(25) не знал )
|
|||
27
PiotrLoginov
01.11.12
✎
13:43
|
Сегодня вернулся к этой теме. Код работает. По выполнению кода в ПВД формируется ВыборкаДанных (ТаблицаЗначений), каждая строка которой должна по идее передаваться в ПКО для конвертации и записи в файл. Так вот, судя по логу таблица значений формируется, но в файл записывается только один элемент. По итогам процесса проверяю сформированный файл - и действительно там только одна запись.
Упростил код, стер лишние ПКО, удалил часть ПКС в текущем ПКО. Не помогло. Надеюсь, мож подскажет кто, куда копать. |
|||
28
PiotrLoginov
01.11.12
✎
13:49
|
Повторюсь, перенос данных с формированием выгрузки по произвольному алгоритму реализую не первый раз. Но то лди реквизитов в этот раз болшьше, то ли что... не выходит каменный цветок.
Вписал в конец кода ПВД строку "ВыборкаДанных.ВыбратьСтроку();" Сформировал внешнюю обработку, запустил выполнение - в конце на экран выскочила таблица значений. В ней больше десятка строк. Выбрал первую попавшуюся (кажется пятую), нажал ОК. Процесс завершился с формированием файла, в котором опять лишь один элемент - из первой строки таблицы значений. |
|||
29
Ёпрст
01.11.12
✎
13:50
|
Жуколов - наше всё.
|
|||
30
PiotrLoginov
01.11.12
✎
14:06
|
Потыкался еще немного. Выяснил и без жуколова, что сначала выполняется код в ПВД, затем показывается на экране сформированная таблица значений, затем по нажатии "ОК" на экран выводится строка:
Выгрузка объекта выборки: ТаблицаЗначений (ТаблицаЗначений) Конвертация объекта или получение ссылки: ТаблицаЗначений (ТаблицаЗначений) - в количестве, соответствующем количеству строк сформированной таблицы - видимо выгрузка - передача в ПКО, а конвертация - конвертация данных в текущей строке и запись результата в файл. У меня в логе несколько таких строк. Почему же запись в файле лишь одна? Жуколов пригодился бы, если б проблема была в коде, который я написал в ПВД, а в данном случае надо копаться в остальном коде внешки, сформированной автоматически... мне это не по зубам, да и не нужно, проще знать правила настройки ПКО наверное... |
|||
31
PiotrLoginov
01.11.12
✎
14:48
|
удалил те ПКС, что были отключены. Заработало - перенеслось 15 объектов... Охо-хо, не первый раз замечаю: в КД отключить объект не значит изъять его из процесса. Ну будем искать потихоньку, какое ПКС виновато... :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |