Модераторы: stron
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отбор записей в справочнике по интервалу дат, 1с v7.7 Отбор записей по датам 
V
    Опции темы
sergey_85
Дата 23.7.2009, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



Привет!

Работаю с 1C v7.7

В конфигурации создал свой справочник, в нем есть поле ДатаСоздания. 
Вопрос такой, как программно вытащить все записи из этого справочника за определенный период дат (от и до).

Спасибо за помощь!


--------------------
A good design always pays off.
PM MAIL   Вверх
SaschaL
Дата 23.7.2009, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 880
Регистрация: 13.12.2006
Где: Челябинская обл г .Нязепетровcк

Репутация: 8
Всего: 9



Добрый день!
Не претендую на Ноу хау , но я бы сделал так:
Цитата

Спр = СоздатьОбъект("Справочник.МойСправочник");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 цикл
       Если (Спр.ДатаСоздания <= ДатаОкончания) и (Спр.ДатаСоздания>=ДатаНачала) тогда
       Сообщить(Спр.ТекущийЭлемент());
       КонецЕсли;
КонецЦикла;


Вот примерно так можно это сделать
PM MAIL ICQ   Вверх
sergey_85
Дата 23.7.2009, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



да, но в этом случае придется перебирать все записи, их там много.
А если использовать язык запросов, в нем такое возможно?

Код

Спр = СоздатьОбъект("Справочник.МойСправочник");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 цикл
       Если (Спр.ДатаСоздания <= ДатаОкончания) и (Спр.ДатаСоздания>=ДатаНачала) тогда
       Сообщить(Спр.ТекущийЭлемент());
       КонецЕсли;
КонецЦикла;


Мне кажется  в 1с программировании этот способ очень часто применяется. как это повлияет на производительность программы (записей много)? 

Может лучше использовать объект запрос?

Добавлено через 10 минут и 16 секунд
Во! Точно запрос надо юзать, там и несколько критериев выборки можно указать
Код

НашЗапрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|СКЛАД = Регистр.ТоварныйЗапас.Склад;
|ТОВАР = Регистр.ТоварныйЗапас.Товар;
|КОЛИЧЕСТВО = Регистр.ТоварныйЗапас.Количество;
|Группировка ТОВАР Упорядочить По ТОВАР.Код;
|Группировка СКЛАД Упорядочить По СКЛАД.Код;
|Функция КОЛ = КонОст(КОЛИЧЕСТВО);
|"//}}ЗАПРОС
;



Это сообщение отредактировал(а) sergey_85 - 23.7.2009, 08:19


--------------------
A good design always pays off.
PM MAIL   Вверх
SaschaL
Дата 23.7.2009, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 880
Регистрация: 13.12.2006
Где: Челябинская обл г .Нязепетровcк

Репутация: 8
Всего: 9



В запросе тоже можно сделать. На маленьком объеме справочника запрос будет отрабатывать дольше чем простой перебор.
Если вы предполагаете, что количество элементов справочника будет большим, например свыше 1000 элементов то лучше используйте запрос
правда тут немного по другому нужно будет перестроить логику, а так проблем нет ни каких 
PM MAIL ICQ   Вверх
Itsys
Дата 24.7.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Если период не очень большой, то проще поставить отбор на реквизит с датой, и перебирая даты из периода, делать отбор из справочника. Работать будет на порядок быстрее, чем полный перебор или же запрос.
PM MAIL WWW Skype   Вверх
sergey_85
Дата 24.7.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



нее, все-таки запрос больше возможностей даёт, например выбор не только по периоду дат, но и по другим условиям сразу.


--------------------
A good design always pays off.
PM MAIL   Вверх
Itsys
Дата 24.7.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Кто ж спорит... в задании был только интервал дат....
PM MAIL WWW Skype   Вверх
SaschaL
Дата 24.7.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 880
Регистрация: 13.12.2006
Где: Челябинская обл г .Нязепетровcк

Репутация: 8
Всего: 9



конечно, вопрос был про даты, мы лишь предложили варианты, а решать самому.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "1C: Предприятие, SAP, ERP и учётные системы"
stron

Запрещается!

1. Обсуждение крэков, кейгенов и других подобных программ

Пробуйте искать сами или обращайтесь в приват к участникам форума.

Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.

Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...)

2. Давать ссылки на взломанные продукты

  • Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
  • Название темы должно отражать её суть
  • Действия модераторов можно обсудить здесь

С уважением, stron, Pegas.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема »


 




[ Время генерации скрипта: 0.0833 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.