1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Подскажите как сделать отбор из табличной части

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

  1. midif

    midif Member

    Регистрация:
    16 авг 2007
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте... Подскажите как сделать отбор по значению
    пример:
    есть документ "Люди", в нём есть табличная часть с некоторыми полями, к примеру "Прививка" и "Дата прививки". Как правильно сделать отбор по названию прививки(допустим "Корь") и по диапазону дат. (1С v7.7)
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Правильней всего будет сделать запросом.
     
  3. jcnby

    jcnby Гость

    Выгружай табличную часть документа в ТаблицуЗначений. А дальше уже получай что тебе необходимо.
    Док.ВыгрузитьТабличнуюЧасть(НашаТЗ,(тут колонки которые выгружаем));
    Дальше делаешь Цикл на ТЗ
    Код (Text):
    Для Ы=1 По ТЗ.КоличествоСтрок() Цикл
    Если Прививка=ПривикаКакая-то Тогда
    Если (датаНаша=>какая-тоДатаНачало) И (какая-тоДатаКонец=<ДатаНаша) Тогда
    чета-тама с ней
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Либо как говарит Вит
     
  4. midif

    midif Member

    Регистрация:
    16 авг 2007
    Сообщения:
    6
    Симпатии:
    0
    [codebox]
    Процедура Г()
    Перем а;
    Перем счётчик;
    Перем прививка1;
    Перем НашаТЗ;
    счётчик=0;
    дЛюди=СоздатьОбъект("Документ.Люди");
    ТЗ=дЛюди.ВыгрузитьТабличнуюЧасть(НашаТЗ);
    Для а=1 По ТЗ.КоличествоСтрок() Цикл
    Если НашаТЗ.Прививка="Корь" Тогда
    Сообщить("привет");
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    [/codebox]
    :) как я понял, так сделал, но по моему я чего то не понимаю
     
  5. jcnby

    jcnby Гость

    Похзиционироваться на документ конкретный нада

    ну во превых переменные пишутся в модуле а не в процедуре!
    во вторых:
    Код (Text):
    дЛюди=СоздатьОбъект("Документ.Люди");
    - ТУТ МЫ ЕЩЕ НЕ ВЫБРАЛИ НАШ ДОКУМЕНТ! Поетому нада выбрать, дописываем:
    если не из модуля документа дЛюди, То:

    Код (Text):
    дЛюди.Выбрать(,"Журнал.имяЖурнала.дЛюди",);
    и не забудем про ТЗ!
    Код (Text):
    НашаТЗ=СоздатьОбъект("ТаблицаЗначений");
    - либо на форму кидаем!

    делаем там колонки соотвествующие колонкам табличной части:

    Код (Text):
    НашаТЗ.НоваяКолонка("прививка");
    нашаТЗ.НоваяКолонка("ДатаПрививки");
    далее

    Код (Text):
    если дЛюди.Выбран()=1 Тогда
    дЛюди.ВыгрузитьТабличнуюЧасть(НашаТЗ,);
    а вот теперь уже:
    Код (Text):
    Для Ы=1 По НашаТЗ.КоличествоСтрок() Цикл
    Если НашаТЗ.Прививка="Корь"Тогда
    Если (НашаТЗ.ДатаПрививки=>какая-тоДатаНачало) И (какая-тоДатаКонец=<НашаТЗ.датаПрививки) Тогда
    что-то тама-тама
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Проще сделать ЗАПРОСОМ ( для тебя)
     
  6. kaa

    kaa Гость

    ПерПрививка = //или с формы или найти
    ПерДатаПрививки = //или с формы или найти
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса ="
    |Период с НачДата по КонДата;
    |Док = Документ.Люди.ТекущийДокумент;
    |Прививка = Документ.Люди.Прививка;
    |ДатаПрививки = Документ.Люди.ДатаПрививки;
    |Группировка Док;
    |Условие (Прививка = ПерПрививка );//или в если по группам
    |Условие (ДатаПрививки = ПерДатаПривики);
    |";

    и т.д.
     
  7. midif

    midif Member

    Регистрация:
    16 авг 2007
    Сообщения:
    6
    Симпатии:
    0
    БОЛЬШОЕ СПАСИБО за ответы ...
     
Загрузка...

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