У меня стоит вопрос: как сделать Выбор операций из документов по элеме

Тема в разделе "1C и всё что с ней связано", создана пользователем mirvel, 15 апр 2008.

  1. mirvel

    mirvel Гость

    У меня стоит вопрос: как сделать Выбор операций из документов по элементу справочника?

    Более детально:

    Имеются однотипные документы... В этих документах есть шапка и табличная часть...в табличной части в поле "Наименование" подставляется значение из справочника "Клиенты"....
    Например:

    ДОКУМЕНТ №1
    Наименование: Кол-во: Цена: Сумма:
    --------------------|------------|----------|-------------|-
    Вова 20 3 60
    Миша 5 3 15
    Сережа 10 6 60
    --------------------|------------|----------|-------------|-




    ДОКУМЕНТ №2
    Наименование: Кол-во: Цена: Сумма:
    --------------------|------------|----------|-------------|-
    Сережа 1 6 6
    Вова 5 5 25
    Аня 20 3 60
    Алексей 4 30 120
    --------------------|------------|----------|-------------|-

    ДОКУМЕНТ №3
    Наименование: Кол-во: Цена: Сумма:
    --------------------|------------|----------|-------------|-
    Вова 5 5 25
    Аня 2 3 6
    Миша 5 3 15
    --------------------|------------|----------|-------------|-

    ===================================================================

    Задача №1: Необходимо сделать так....чтобы я смог посмотреть операции по "Клиенту" - Вова во всех документах....т.е. должен получить следующее....

    Клиент - Вова
    Вова 20 3 60 Документ №1
    Вова 5 5 25 Документ №2
    Вова 5 5 25 Документ №3


    ====================================================================
    Задача №2: Чтобы я мог получить целый список по движениям Клиентов......
    Вова 20 3 60 Документ №1
    Вова 5 5 25 Документ №2
    Вова 5 5 25 Документ №3
    Миша 5 3 15 Документ №...
    Миша 5 3 15 Документ №...
    Аня 2 3 6 Документ №...
    Аня 20 3 60 Документ №...
    Сережа 10 6 60 Документ №...
    Сережа 1 6 6 Документ №...
    ====================================================================
    А вообще было бы очень удобно нажать на элементе справочника....и сразу же получить данные по этому элементу.....
    ====================================================================
     
  2. jcnby

    jcnby Гость

    Делай запросом.
    Чтобы было очень удобно, сделай процедуры, которая при нажатии на элементе справочника выводила данные.

    Делай запросом.
    Чтобы было очень удобно, сделай процедуры, которая при нажатии на элементе справочника выводила данные.
     
  3. mirvel

    mirvel Гость

    Спасибо за ответ ... и совет....
    Я на самом деле только начинаю программировать на 1С...(но с программированием знаком)
    подозревал...что задача эта решается через запрос....и соотвественно процедурой вызова со справочника....
    Просто я полагал есть другой способ...возможно встроенный...типа обычной утилиты 1С.....
    Значить только через запрос?


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

    Или я заблуждаюсь?...............
    Заранее благодарен!!!!!!!!

    Кстати свою же задачу я решил...не знаю лучший ли это способ через Отчеты и Регистры....Так ли это всегда делается?
     
  4. IngWar2008

    IngWar2008 Гость

    можно двумя способами:
    1. простой перебор документов с помощью цикла.
    2. с помощью запроса.
    С помощью запроса грамотнее, но может чуть сложнее, зато работает быстро. Если большое кол-во обрабатываемых данных, то лучше запрос.
    Вот пример как сделать с помощью запроса.
    если не порнавится, то можно цыклом выбрать без запроса.


    Процедура ЗапросЗаполнениеКлиентов()
    Перем Запрос, ТекстЗапроса, Таб, имяСотр;

    //Создание объекта типа Запрос


    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ЗапросЗаполнениеСотр)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Клиент = Документ.ИМяДокумента.Клиент;
    |Количество = Документ.ИМяДокумента.Клиент;
    |Цена = Документ.ИМяДокумента.Цена;
    |Сумма = Документ.ИМяДокумента.Сумма;
    |Группировка Клиент;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

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

    осуществляется группировка всех твоих клиентов и данных по ним.

    ну или если не хочешь замарачиваться с запросом, то можно цыклом перебирать и сверять элементы:
    процедура ПереборКлиентов()

    докКлиенты = СоздатьОбъект("Документ.ИМяТвоегоДокумента");
    докКлиенты.ВыбратьДокументы();
    Пока докКлиенты.ПолучитьДокумент() = 1 Цикл
    //здесь осужествляется перебор всех довументов и доступ к реквезитам до-ов:
    //можешь их передавать, обрабатывать, в данном случаее они просто выводятся:

    сообщить(докКлиенты.Клиент) //это к примеру твой "Вовочка"

    //здесь перебор в выбранном документу его табличной части(это если она есть, если нет- то просто перебираешь реквизиты до-та)
    ДокКлиенты.ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    //также любые действия мож делать

    сообщть(докКлиент.колво);
    сообщть(докКлиент.Цена);
    сообщть(докКлиент.Сумма);

    КонецЦикла;

    конецПроцедуры
     
  5. jcnby

    jcnby Гость

    И запросом можно управлять(ток писать побольше придется))) главное представлять себе то - что именно ты хочешь получить. Пусть это будет крайне не логично - но многие проблеммы в 1с решаются именно применением нестондартной логики). Особенно если в конфе много-много всего).
     
Загрузка...

Поделиться этой страницей