8.х Проверка при заполнении табличной части

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Alex_Staf, 31 май 2011.

  1. TopicStarter Overlay
    Alex_Staf
    Offline

    Alex_Staf

    Регистрация:
    8 мар 2010
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Добрый день, не могу сообразить как при заполнении столбцов "Время начала" и "Время окончания" получить значение текущей (заполненной ячейки) и как это значение сравнить со всеми значениями в столбце.
    Пример ТабЧасти:

    ФИО Время начала Время окончания
    Иванов 9-00 10-00
    Сидоров 12-30 14-00
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Отбираете существующие строки в ТЧ методом НайтиСтроки() и сравниваете
  3. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    смотрите событие ПриИзменении ячейки табличного поля.

    вот так получите строку, которую только что изменили. и из этой строки можно вытянуть значение, которое только что ввели..
    Код:
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    
    
  4. TopicStarter Overlay
    Alex_Staf
    Offline

    Alex_Staf

    Регистрация:
    8 мар 2010
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Посмотрел справку, не получается "прикрутить" метод НайтиСтроки().
    Можно пример.
    Заранее спасибо.
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
  6. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    не пойму зачем метод НайтиСтроки(). как только получили введеное значение, то делаете простой перебор табличной части с дополнительным условием.

    Код:
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    ТекущееВремяНачала = СтрокаТабличнойЧасти.ВремяНачала;
    
    Для Каждого СтрокаТабличнойЧасти Из ТабличнаяЧасть Цикл
    
    // тут какое-то ваше условие на сравнение дат, например 
    Если СтрокаТабличнойЧасти.ВремяНачала<ТекущееВремяНачала Тогда
    сообщить("ура! мы нашли строку с меньшим временем начала!");
    КонецЕсли;
    
    КонецЦикла;
    
    
    
    а вообще непонятно, что вы хотите сделать. задачу опишите более полно, а не выдерайте её из контекста.
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    строк в ТЧ - 10 тыс, вводим строку и идем пить чай....
  8. Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    Можно выгрузить ТЧ в таблицу значений, сортировать, затем сравнить:
    Код:
    ВремТовары	 = Товары.Выгрузить(, "ВремяНачала");
    Минимум		 = ВремТовары.Сортировать("ВремяНачала Возр")[0];
    
    Можно с помощью временной таблицы:
    Код:
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    Запрос.Текст = "ВЫБРАТЬ
    |	Таблица.ФИО,
    |	Таблица.ВремяНачала
    |ПОМЕСТИТЬ ВремяНачалаРабот
    |ИЗ
    |	&Таблица КАК Таблица";
    Запрос.УстановитьПараметр("Таблица", Таблица.Выгрузить());
    Запрос.Выполнить();
    
    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
    |	ВремяНачалаРабот.ФИО,
    |	ВремяНачалаРабот.ВремяНачала КАК ВремяНачала
    |ИЗ
    |	ВремяНачалаРабот КАК ВремяНачалаРабот
    |
    |УПОРЯДОЧИТЬ ПО
    |	ВремяНачала
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ ВремяНачалаРабот";
    РезультатЗапроса = Запрос.Выполнить();
    
    как быстрее будет, не знаю. Скажите, как попробуете - интересно
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    быстрее будет через Найти(), если значение уникально, или через НайтиСтроки()
  10. Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    И как Вы найдете строку по условию сравнения "больше - меньше" с помощью Найти() или НайтиСтроки()? )
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    на больше-меньше - никак, но в условии задачи не сказано как именно необходимо сравнивать.

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