Имя: Пароль:
1C
1C 7.7
v7: Обход справочников циклом и вывод их количества
0 Ayvengo
 
01.05.14
18:35
Ребят, подскажите как это сделать в 7ке? А-то мышление 8е, не сообразить никак без знаний
1 ДенисЧ
 
01.05.14
18:37
Чо?
Кого куда обойти и вывести?
2 Ork
 
01.05.14
18:37
(0) Чего нужно конкретно? Посчитать количество справочников или число элементов в справочнике?
3 Ayvengo
 
01.05.14
18:38
Что-то в этом роде, но на 7ке
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    СУММА(1) КАК Количество
    |ИЗ
    |    Справочник."+Строчка.Имя+" КАК Список");
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        Сообщить(Строчка.Имя + ". Количество элементов: " + Выборка.Количество);
    КонецЕсли;
4 vcv
 
01.05.14
18:38
Сообщить(Метаданные.Справочник()) - количество справочников
5 Ayvengo
 
01.05.14
18:39
упс, вот так
Для каждого Строчка Из Метаданные.Справочники Цикл
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    СУММА(1) КАК Количество
    |ИЗ
    |    Справочник."+Строчка.Имя+" КАК Список");
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        Сообщить(Строчка.Имя + ". Количество элементов: " + Выборка.Количество);
    КонецЕсли;
    
КонецЦикла;
6 Ork
 
01.05.14
18:42
//В Метаданные.Справочник() сидит количество
Для поз=1 По Метаданные.Справочник() Цикл
    Спр = Метаданные.Справочник(поз);
    Сообщить(Спр.Идентификатор);
КонецЦикла;
7 Torquader
 
01.05.14
18:45
Ой какая интересная задача ^_^
Макс=Метаданные.Справочник();
Для лч=1 По Макс Цикл
лмс=Метаданные.Справочник(лч);
лз=СоздатьОбъект("Запрос");
лр=лз.Выполнить("Выбирать Все;Функция Кол1=КОЛИЧЕСТВО(Справочник."+лмс.Идентификатор+");");
кол=лр.Получить();
КонецЦикла;
8 Torquader
 
01.05.14
18:45
Только не выбирать, а Обрабатывать Все;
9 Ayvengo
 
01.05.14
18:51
(7) не работает :(
(6) не понял где там сидит количество элементов.
10 Torquader
 
01.05.14
18:53
(9) Там запрос на количество элементов по памяти написан - так что - не взлетит без напильника.
11 Ayvengo
 
01.05.14
18:54
Эх, знать бы еще как допиливать :(
12 Ayvengo
 
01.05.14
18:55
Пишет про неожиданное выражение "Количество"
13 Torquader
 
01.05.14
18:57
(12) Блин, функцию зовут счетчик.
14 Ayvengo
 
01.05.14
19:06
Вот так взлетело
    МаксСправочников=Метаданные.Справочник();
    Для лч=1 По МаксСправочников Цикл
        лмс=Метаданные.Справочник(лч);
        Запрос=СоздатьОбъект("Запрос");
        
        Запрос.Выполнить("
        |ТекЭлемент = Справочник."+лмс.Идентификатор+".ТекущийЭлемент;
        |Функция Сч = Счётчик();");         
        Сообщить(лмс.Представление() + " " + Запрос.Сч);
    КонецЦикла;

Всем спасибо.
15 Torquader
 
01.05.14
19:22
(14) Я никогда не был силён в семёрочных запросах, так как там никакого подобия SQL не было.
16 Злопчинский
 
02.05.14
00:05
внезапный вопрос - а как считать группы? и надо ли их считать?
17 ДенисЧ
 
02.05.14
00:06
(16) Группы по осени считают :-)
Делай запрос ко всему и фильтруй
18 Torquader
 
02.05.14
00:36
(16) А разве запрос не считает группы ?
19 Torquader
 
02.05.14
00:37
Можно, конечно, простым перебором - в него попадут все элементы, которые есть. А можно считать заголовок dbf-файла и посмотреть, сколько там записей (но попадут и недавно удалённые).
20 Мигало
 
02.05.14
00:39
Очучаешь себя суперстаром ...
21 КонецЦикла
 
02.05.14
01:16
"А-то мышление 8е"

СП пропил?
22 Torquader
 
02.05.14
01:27
(21) Нужно ещё определённое умение, чтобы читать СП, так как они достаточно различаются.
23 Злопчинский
 
02.05.14
01:33
однозначно, клюшки и снеговика писали люди рахных политических формаций. Снеговик - он как Жириновский, клюшки - как Зюганов
24 Torquader
 
02.05.14
01:35
(23) А как Сталин у вас ничего нет - чтобы работало как часы и за всём следило ?
Ошибка? Это не ошибка, это системная функция.