v7: перебор всех дат и поиск в таблице значений #641587


#0 by PiotrLoginov
Здравствуйте всем. Сформирована ТаблицаЗначений (есть колонка "Дата"). Необходимо перебрать даты определенного периода и для каждого дня выбрать те строки из ТаблицыЗначений, в которых "Дата" - этот день (если, конечно, таковые имеются). Проще говоря для первого числа вынимаем из таблицы все строки, где в колонке Дата - 1, для второго числа - все со значением 2 и т.д. Подскажите, пожалуйста, на какие методы языка опереться.
#1 by Нуф-Нуф
Нихера не понял
#2 by PiotrLoginov
Как будет правильнее - отсортировать таблицу по колонке Дата и затем в переборе проверять каждую новую строку на предмет увеличения значения даты или же перебирать массив дат и для каждой даты искать в ТаблицеЗначений строки с нужным значением?
#3 by Darky
Откуда ТЗ сформирована? Модет проще при заполнении таблицы накладывать условие на период?
#4 by H A D G E H O G s
Груды хлама, снопы света Полусонные глаза Не хватило до рассвета Где-то 22 часа Было холодно и тихо, Мысли медленно ушли По стене и по паркету Потекли мои мозги
#5 by szhukov
Если нужны все данные из таблицы, то быстрее, наверное, будет перебор со сменой даты. Если данные из таблицы нужны не все, а интересует какая-то часть, то лучше отбором по нужным строкам (НайтиСтроки). Еще вариант - запрос, таблицу в запрос и все что угодно...
#6 by PiotrLoginov
ТЗ сформирована из справочника с периодическим реквизитом. По формированию ТЗ вопросов нет. "проще при заполнении таблицы накладывать условие на период?" Гм... неужели перебор дат в 1С настолько сложен? сильные строки. В данный момент я в порядке.. в сон не клонит. Помогите лучше советом; уверен, для Вас вопрос яйца выеденного не стоит.
#7 by PiotrLoginov
"Если данные из таблицы нужны не все..." нет-нет, в итоге нужны все строки. Вот только надо их выбирать не все сразу, а сначала те, где дата - начало периода (если такие есть), затем те, где дата - начало периода + 1 и т.д.
#8 by szhukov
Отсортируй и перебери
#9 by France
определи для даты день..
#10 by PiotrLoginov
Тогда начину так: ... Что-то не выходит каменный цветок ... :(
#11 by PiotrLoginov
*начну
#12 by France
можно начать с исходной задачи.. и, для развлекухи проверь, с ТЗ Дата или Дата+время. и, самое правильное - научи себя запросам - в 8.2 их можно везде и всегда использовать... и нужно..
#13 by PiotrLoginov
Если перебирать отсортированную таблицу, то надо при получении новой строки как-то определять, новая там дата или прежняя... и если новая, то на сколько дней она сменилась. Если честно, я надеялся, что в 1С как-то можно тупо перебрать все даты определенного периода и для каждой даты проверить наличие подходящих строк в ТаблицеЗначений.
#14 by PiotrLoginov
В данном случае пишу код для 7.7
#15 by PiotrLoginov
Гм.. странно, вроде создавал тему в v7 ....  Капец.
#16 by PiotrLoginov
Сори, господа, помогите, пожалуйста, с поправкой на язык седьмой версии, а завтра я попытаюсь найти модератора с правами переноса веток.
#17 by PiotrLoginov
Сейчас набросаю код использования сортированной таблицы поконкретней. Цель будет - создание табличных частей из строк с одниаковой датой. Мне это понадобится потом для программного создания документов с табличными частями.. Ну не суть. Итак:
#18 by PiotrLoginov
Ну вот, я получил для одного дня (одной даты) одну строку результирующей таблицы со вложенной табличной частью. А как получить такие строки для остальных дней периода?
#19 by France
правлю раздел
#20 by PiotrLoginov
спасибо... у меня тем временем кажется формируется решение... как всегда простое до безобразия... или я ошибаюсь...
#21 by Ganiev
Можно попробовать так, если я все правильно понял!
#22 by Voronve
Собстна метода 2, первый - поиск в плоской таблице нужной даты и выборка строк пока дата не кончиться или не кончиться таблица. Второй (ты правильно ухватил идею) - превратить плоскую таблицу в двумерную (табица в таблице). Пример 1 (плоская таблица): .... твои телодвижения ... Пример 2 (таблица в таблице): ... твои телодвижения .... КонецЦикла;
#23 by PiotrLoginov
Вчера после завершения работы уже не хватило сил отписаться о найденном решении. В конечном итоге вопрос решается, имхо, организацией цикла перебора искомых строк внутри цикла перебора дат. Спасибо Большое. Создать вспомогательную таблицу, свернуть ее и организовать цикл с перебором ее строк - просто гениальная идея, ибо все гениальное просто. Вот и я вчера не мудрствуя лукаво попросту перебрал все даты требуемого периода: День = '01.11.2012'; Как и подозревалось, вопрос яйца выеденного не стоил, и все же для меня это было несколько потерянных часов :( ................................... Вопрос решен, но да здравствуют новые вопросы. В основном благодаря . Не знаю, стоит ли в них копаться... Честно говоря, мне не удалось до конца въехать в смысл предложенного в первом примере, так как я плохо представляю себе работу метода НайтиЗначение . В третий параметр метод возвращает номер найденной строки? А если найденных строк несколько? Тогда видимо для первой найденной строки? Т.е. только для одной? Гм...  как, для начала, организован перебор дат? Мне показалось так мы получим данные только для одной даты - '01.02.03' ... __________ Во втором примере, видимо, предлагается заполнить ТЗ в рамках одного цикла (а не цикла внутри цикла) перебора строк <ТвояТаблица>. Это конечно невероятно круто... Если бы я еще понимал, как этим пользоваться :D Просто скопировать код нет смысла - мне надо его модифицировать под свои нужды... Ну вот: ... ...
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С