Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 17:41

Самописная, 1c8.2, Список значений

Автор asdfr1, 28 фев 2012, 14:43

0 Пользователей и 1 гость просматривают эту тему.

asdfr1

В список значений добавил время с восьмиУтра до восьмиВечера, тудаже впихнул занятое время из запроса к таблице.Теперь как бы из спискаЗначений удалить дубль вместе с дублем, по индексу только одно значение удаляет :(

СписокЗначений = Новый СписокЗначений;
Пока ВосемьУтра <= ВосемьВечера Цикл
       ВосемьУтра = ВосемьУтра + 1800;
      СписокЗначений.Добавить(ВосемьУтра - 1800);
       
КонецЦикла;
////////////////////////////
Для Каждого ТекущаяСтрокаТЗ Из ТЗ Цикл   
//Таблица1.Добавить(ТекущаяСтрокаТЗ.ВремяНачала);      
СписокЗначений.Добавить(ТекущаяСтрокаТЗ.ВремяНачала);
//Список.СортироватьПоЗначению();

КонецЦикла;


asdfr1

Цитата: asdfr1 от 28 фев 2012, 14:43
В список значений добавил время с восьмиУтра до восьмиВечера, тудаже впихнул занятое время из запроса к таблице.Теперь как бы из спискаЗначений удалить дубль вместе с дублем, по индексу только одно значение удаляет :(

СписокЗначений = Новый СписокЗначений;
Пока ВосемьУтра <= ВосемьВечера Цикл
       ВосемьУтра = ВосемьУтра + 1800;
      СписокЗначений.Добавить(ВосемьУтра - 1800);
       
КонецЦикла;
////////////////////////////
Для Каждого ТекущаяСтрокаТЗ Из ТЗ Цикл   
//Таблица1.Добавить(ТекущаяСтрокаТЗ.ВремяНачала);      
СписокЗначений.Добавить(ТекущаяСтрокаТЗ.ВремяНачала);
//Список.СортироватьПоЗначению();

КонецЦикла;


например: время - 9:30 повторяется два раза их оба и нужно удалить

asdfr1

Цитата: asdfr1 от 28 фев 2012, 15:02
Цитата: asdfr1 от 28 фев 2012, 14:43
В список значений добавил время с восьмиУтра до восьмиВечера, тудаже впихнул занятое время из запроса к таблице.Теперь как бы из спискаЗначений удалить дубль вместе с дублем, по индексу только одно значение удаляет :(

СписокЗначений = Новый СписокЗначений;
Пока ВосемьУтра <= ВосемьВечера Цикл
       ВосемьУтра = ВосемьУтра + 1800;
      СписокЗначений.Добавить(ВосемьУтра - 1800);
       
КонецЦикла;
////////////////////////////
Для Каждого ТекущаяСтрокаТЗ Из ТЗ Цикл   
//Таблица1.Добавить(ТекущаяСтрокаТЗ.ВремяНачала);      
СписокЗначений.Добавить(ТекущаяСтрокаТЗ.ВремяНачала);
//Список.СортироватьПоЗначению();

КонецЦикла;


например: время - 9:30 повторяется два раза их оба и нужно удалить
СписокЗначений = Новый СписокЗначений;

  ВремТЗ = Новый ТаблицаЗначений;
Список = Новый Массив;
////////////////////////////////////*****
Пока ВосемьУтра <= ВосемьВечера Цикл
       ВосемьУтра = ВосемьУтра + 1800;
      СписокЗначений.Добавить(ВосемьУтра - 1800);
         
КонецЦикла;

////////////////////////////
Для Каждого ТекущаяСтрокаТЗ Из ТЗ Цикл   
//Таблица1.Добавить(ТекущаяСтрокаТЗ.ВремяНачала);      
СписокЗначений.Добавить(ТекущаяСтрокаТЗ.ВремяНачала);

ЗначениеТЗ = ТекущаяСтрокаТЗ.ВремяНачала;

КонецЦикла;

Структура = Новый Структура ();

Для Каждого ТекущаяСтрока Из СписокЗначений Цикл

ЗначениеСпискаЗначений = ТекущаяСтрока.Значение
КонецЦикла;

Найденное = СписокЗначений.НайтиПоЗначению(ЗначениеСпискаЗначений);

стрОтбор = Новый Структура("ВремяНачала",ЗначениеСпискаЗначений);

МассивСтрок = ТЗ.НайтиСтроки(стрОтбор);

ВремТЗ = ТЗ.Скопировать(МассивСтрок);

ТЗ.Очистить();

ТЗ = ВремТЗ.Скопировать();

Так не хочет :(

Klyacksa

Стоп-стоп, а зачем удалять из списка значений?
И зачем занятое время туда добавлять из запроса? Опишите задачу поподробнее, сдается мне, можно все сделать намного проще.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

asdfr1

Цитата: Klyacksa от 28 фев 2012, 16:16
Стоп-стоп, а зачем удалять из списка значений?
И зачем занятое время туда добавлять из запроса? Опишите задачу поподробнее, сдается мне, можно все сделать намного проще.
Есть Интервал времени, например, с восьми утра до восьми вечера
СписокЗначений = Новый СписокЗначений;
Пока ВосемьУтра <= ВосемьВечера Цикл
       ВосемьУтра = ВосемьУтра + 1800;
      СписокЗначений.Добавить(ВосемьУтра - 1800);
КонецЦикла;
Из некоего списка запросом получили людей у которых время приёма начинается со стольки то - ВремяНачала. Задача: где нибуть с боку в отдельной колонке, например, исключить из интервала ВосемьУтра по ВосемьВечера ВремяНачала.

Klyacksa

Это можно сделать в Вашем же запросе, и ничего потом не перебирать построчно
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

asdfr1

Цитата: Klyacksa от 28 фев 2012, 17:40
Это можно сделать в Вашем же запросе, и ничего потом не перебирать построчно
интересно... не подумал... маленький намёк можно :)?..

Klyacksa

Если запрос нужен только для получения дат, которые нужно вычеркнуть, то можно сделать наоборот - отправить в запрос список значений, и чтобы он вернул их уже с вычетом вычеркнутых. В принципе, можно и еще один запрос написать, которому скормить два списка (исходный список и список, который надо вычеркнуть), и опять же вернуть нужное соединение...
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

asdfr1

Цитата: Klyacksa от 28 фев 2012, 20:21
Если запрос нужен только для получения дат, которые нужно вычеркнуть, то можно сделать наоборот - отправить в запрос список значений, и чтобы он вернул их уже с вычетом вычеркнутых. В принципе, можно и еще один запрос написать, которому скормить два списка (исходный список и список, который надо вычеркнуть), и опять же вернуть нужное соединение...
ОгромноеСпасибо

asdfr1

Усё,  тему можно закрыть  :xfbnsdfb: закончик задачу перебором

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск