Имя: Пароль:
1C
1C 7.7
v7: Выборка значений периодического реквизита
0 PiotrLoginov
 
30.10.12
10:39
Пытаюсь в специально созданный для этого регистр извлечь все значения периодического реквизита Глубина справочника Контрагенты (для использования в дальнейшем при переносе).

Набросал по Бояркину:

ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Контрагент",,,,,);
ВыборкаДанных.НоваяКолонка("Период","Дата",,,,);
ВыборкаДанных.НоваяКолонка("СрокПокупателю","Число",3,0,,);

СправочникКонтрагенты = СоздатьОбъект("Справочник.Контрагенты");
СправочникКонтрагенты.ВыбратьЭлементы();
Пока СправочникКонтрагенты.ПолучитьЭлемент() > 0 Цикл
   СрокПокуп = СоздатьОбъект("Периодический");
   СрокПокуп.ИспользоватьОбъект("Глубина",СправочникКонтрагенты.ТекущийЭлемент());
   СрокПокуп.ВыбратьЗначения();    
   Пока СрокПокуп.ПолучитьЗначение() > 0 Цикл
       ВыборкаДанных.НоваяСтрока();
       ВыборкаДанных.Контрагент = СправочникКонтрагенты.ТекущийЭлемент();
       ВыборкаДанных.Период = СрокПокуп.ДатаЗнач;
       ВыборкаДанных.СрокПокупателю = СрокПокуп.Значение;
   КонецЦикла;
КонецЦикла;


При попытке использования сего кода получаю ошибку о том, что реквизит Глубина - не периодический. Хотя стандартным способом (по F5) из интерфейса без проблем получаю историю значений этого реквизита. При попытке получить тип реквизита с помощью ТипЗначенияСтр получаю сообщение "НеизвестныйОбъект".

Подскажите, пожалуйста, как вынуть все значения реквизита. Буду рад любым вариантам.
1 Mikeware
 
30.10.12
10:40
А у групп контрагентов тоже есть периодическая глубина? :-)
2 1Сергей
 
30.10.12
10:41
в конфигураторе, в дереве посмотри свойства этого реквизита. Стоит ли там галка периодический?
3 Guk
 
30.10.12
10:41
на группы проверяешь?...
4 G-Re
 
30.10.12
10:42
Проверь текущий элемент справочника на группу, должен быть не группа!
5 Ёпрст
 
гуру
30.10.12
10:43
или воткни использовать для обоих в свойствах реквизита
6 PiotrLoginov
 
30.10.12
10:54
На группы не проверяю...

(2) да, стоит
7 cw014
 
30.10.12
10:55
(6) Как начнешь проверять - думаю проблема решится
8 PiotrLoginov
 
30.10.12
11:01
Вставил в начале цикла

Если СправочникКонтрагенты.ТекущийЭлемент() = ЭтоГруппа() Тогда

пишет "Функция не обнаружена (ЭтоГруппа)"

Знаю, что торможу. Практически ночь не спал - сроки поджимают.
9 Mikeware
 
30.10.12
11:04
(8) а ты не тормози. а читай СП. там ВСЕ написано..
10 osa1C
 
30.10.12
11:06
(8)
Если СправочникКонтрагенты.ТекущийЭлемент().ЭтоГруппа() =1 Тогда
Продолжить:
КонецЕсли;
11 PiotrLoginov
 
30.10.12
11:06
переправил на Если СправочникКонтрагенты.ТекущийЭлемент().ЭтоГруппа() = 0 Тогда
12 1Сергей
 
30.10.12
11:06
(10) восьмёрошник?
13 PiotrLoginov
 
30.10.12
11:07
А, все, вижу, уже подсказали...

(9) да уж это-то .. элементарные вещи, уж если об этом читать...
14 PiotrLoginov
 
30.10.12
11:07
(12)  типа того
15 PiotrLoginov
 
30.10.12
11:08
кажись сработало .. как мало человеку для счастья надо...  спасибо, добрые люди.
16 1Сергей
 
30.10.12
11:08
(14) я не тебя спрашивал, с тобой и так ясно :)
17 cw014
 
30.10.12
11:09
СправочникКонтрагенты.ТекущийЭлемент() = ЭтоГруппа()

Зачетно. Функция определяет у любого элемента признак того, что он является группой. Надо такое замутить :)
18 osa1C
 
30.10.12
11:09
(12) И 7.7 и 8 всего понемногу
19 cw014
 
30.10.12
11:09
Тут даже он наверное все элементы всех иерархических объектов хранит :)
20 PiotrLoginov
 
30.10.12
11:10
(16) тада сори
21 osa1C
 
30.10.12
11:10
(10) И 7.7 и 8 всего понемногу
22 PiotrLoginov
 
30.10.12
11:11
(17) дык сам же сразу и исправил, еще не прочитав (10)
23 1Сергей
 
30.10.12
11:11
вот так правильно
Если СправочникКонтрагенты.ЭтоГруппа() =1 Тогда
24 osa1C
 
30.10.12
11:12
(23) точно, лажанулся
25 PiotrLoginov
 
30.10.12
11:21
Если СправочникКонтрагенты.ТекущийЭлемент().ЭтоГруппа() = 0  прокатило - и слава Богу. Еще ВыборкаДанных.Контрагент = СправочникКонтрагенты.ТекущийЭлемент(); переправил на ВыборкаДанных.Контрагент = СправочникКонтрагенты.ТекущийЭлемент().Наименование;  - и дело пошло.
26 1Сергей
 
30.10.12
11:44
(25) Зачем тебе наименование в ТЗ?
27 G-Re
 
30.10.12
14:46
(25)C Наименованием явно погорячился... только .ТекущийЭлемент() и не иначе!