Имя: Пароль:
1C
1C 7.7
v7: Выборка по справочнику.
0 JuixyJes
 
25.12.19
09:03
Доброго утра, программисты! Помогите пожалуйста. Мне нужно сделать выборку по справочнику для внешнего отчета. Выборка должна происходить по группировкам по реквизиту.
1 ДенисЧ
 
25.12.19
09:05
Мы... Как бы не против..
2 piter3
 
25.12.19
09:06
Ну так пишите код,в чем проблема?
3 Kigo_Kigo
 
25.12.19
09:30
"Выборка должна происходить по группировкам по реквизиту."
А это как?
Выбирай - суй в ТЗ сортируй аназизуруй
Колонка1 товар
Колонка2 Реквизиттовара
Тз.Сортировать("Реквизиттовара+")
4 johnnik
 
25.12.19
09:34
(0) Указывайте в запросе группировку этого реквизита. Рекв1 = Справочник.Номенклатура.Реквизит1 и все
Или в самом цикле перебора элементов сортируйте по реквизиту, а для этого в конфигурации на реквизите должен стоять флаг "Сортировать по реквизиту"
5 JuixyJes
 
25.12.19
09:38
Так, другой вопрос.
6 JuixyJes
 
25.12.19
09:39
Как мне сделать выборку из справочника по определенному реквизиту?
7 Bigbro
 
25.12.19
09:39
запрос с соответствующей группировкой?
8 JuixyJes
 
25.12.19
09:43
Я просто в семерке не очень разумна:D
9 JuixyJes
 
25.12.19
09:44
И как написать запрос не вкуррррсе. Привыкла пользоваться консолью в 8ке
10 Bigbro
 
25.12.19
09:45
(9) там есть конструктор запросов, все достаточно просто.
11 Bigbro
 
25.12.19
09:47
Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |Сотрудники = Справочник.Сотрудники.ТекущийЭлемент;
    |Должность = Справочник.Сотрудники.Должность;
    |Группировка Должность;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

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

вот из конструктора, 1 минута времени.
12 JuixyJes
 
25.12.19
10:00
Так, а если у меня в справочнике есть табличное поле, как посчитать в нем количество строк?
13 JuixyJes
 
25.12.19
10:01
//*******************************************
Процедура Сформировать()
    ТабДок = СоздатьОбъект("Таблица");
    ТабДок.ИсходнаяТаблица("СведенияПоОбращениюСТвердымиКом");
    ТабДок.ВывестиСекцию("Шапка");
    Спр = СоздатьОбъект("Справочник.Клиенты");
    СпрД = СоздатьОбъект("Справочник.Клиенты");
    СпрД.ИспользоватьВладельца(Спр);
    Спр.ПорядокРеквизита("Дом");
    Спр.ВыбратьЭлементы();
    ДомДляТаблицы = "";    
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
        Если ДомДляТаблицы <> Спр.Дом Тогда
            Если (Спр.ЭтоГруппа()=1) ИЛИ (Спр.ПометкаУдаления()=1) ИЛИ (Спр.ПринадлежитГруппе(ВЫБЫВШИЕ) = 1) Тогда
                Продолжить;
            КонецЕсли;    
            ДомДляТаблицы = Спр.Дом;
            ДомТаб = ДомДляТаблицы;
            ТабДок.ВывестиСекцию("ШапкаДом");
            СпрД.ВыбратьЭлементы();
            ФИО = Спр.ФизЛицо.ПолнНаименование;
            ДатаРождения = Спр.ФизЛицо.ДатаРождения;
            МестоРождения= Спр.ФизЛицо.МестоРождения;
            Документ = Спр.ФизЛицо.ДокументУдЛичность;
            Адрес = Спр.Дом.Наименование+?(ПустаяСтрока(Спр.Кв)=0, " кв."+Спр.Кв, "");
            ОбщаяПлощадь = Спр.ОбщПл;
            ЖилаяПлощадь = Спр.ЖилПл;
            Колво= Спр.Ж.КоличествоСтрок();
            ТабДок.ВывестиСекцию("СтрокаДом");
        КонецЕсли;
    КонецЦикла;
    
    ТабДок.Показать();
КонецПроцедуры
14 JuixyJes
 
25.12.19
10:01
Там вот Ж.КоличествоСтрок(), не помогает.
15 JuixyJes
 
25.12.19
10:02
Ибо через вот это Ж я так полагаю обратиться возможно только из формы справочника того
16 Kigo_Kigo
 
25.12.19
10:05
Что такое "Ж"?
17 JuixyJes
 
25.12.19
10:08
Это Идентификатор табличного поля
18 Kigo_Kigo
 
25.12.19
10:10
(17) откуда у вас в семерке в справочнике табличное поле?
Если это ТаблицаЗначений , то она заполняется при окрытии справочника и в состоянии "покоя" там КоличествоСтрок() =0
19 Bigbro
 
25.12.19
10:11
табличное поле - оно на форме.
а где оно в справочнике хранится - нужно посмотреть в при открытии заполнение этого поля.
20 Bigbro
 
25.12.19
10:12
оно может вообще в другом справочнике быть
или вообще не в справочнике)
21 uno-group
 
25.12.19
10:14
Открой подчиненные справочники скорее всего в них хранится твоя таблица
22 Kigo_Kigo
 
25.12.19
10:17
(21) Один фиг в семерке нельзя подчиненый справочник положить на форму как таблицу штатными средствами, сто пудово там ТЗ
23 JuixyJes
 
25.12.19
10:18
Так, это я решила:D Там оказался реквизит.
24 Карст
 
25.12.19
10:33
некоторые подменяют справочники документами ))) и тогда там есть табличное поле
25 Смотрящий
 
25.12.19
10:41
(22) Можно
26 Kigo_Kigo
 
25.12.19
11:01
(25) Раскажи, я то я что то за 19 лет работы такого не освоил
27 Смотрящий
 
25.12.19
12:33
(26) Эмулировать форму элемента справочника-владельца на форме списка подчиненного справочника
28 Salimbek
 
25.12.19
12:44
(27) Мусье большой оригинал! :-)
29 Смотрящий
 
25.12.19
12:58
(28) "Как? Как ты сделал??!!" и выпученные пешки стоят того ;)
30 Kigo_Kigo
 
25.12.19
15:04
(27) О дааа
31 Злопчинский
 
25.12.19
15:39
(12) в справочнике блин, нет табличного поля.
32 Kigo_Kigo
 
25.12.19
15:58
(31) Смотрящий говорит есть в эмуляции, Бгггг
33 Злопчинский
 
25.12.19
16:03
(0) надо было в Мисс Миста-2019 участвовать - уже б все давно порешали...
.
ну, если что - стучись в районе 20:30 в скайп Zlopun если надо будет
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан