• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы midif
  • Дата начала
M

midif

Здравствуйте... Подскажите как сделать отбор по значению
пример:
есть документ "Люди", в нём есть табличная часть с некоторыми полями, к примеру "Прививка" и "Дата прививки". Как правильно сделать отбор по названию прививки(допустим "Корь") и по диапазону дат. (1С v7.7)
 
V

vitfil

Правильней всего будет сделать запросом.
 
J

jcnby

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

Либо как говарит Вит
 
M

midif

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

jcnby

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

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

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

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

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

Код:
если дЛюди.Выбран()=1 Тогда
дЛюди.ВыгрузитьТабличнуюЧасть(НашаТЗ,);

а вот теперь уже:
Код:
Для Ы=1 По НашаТЗ.КоличествоСтрок() Цикл
Если НашаТЗ.Прививка="Корь"Тогда
Если (НашаТЗ.ДатаПрививки=>какая-тоДатаНачало) И (какая-тоДатаКонец=<НашаТЗ.датаПрививки) Тогда
что-то тама-тама
КонецЕсли;
КонецЕсли;
КонецЦикла;

Проще сделать ЗАПРОСОМ ( для тебя)
 
K

kaa

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

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

и т.д.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!