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

счетчик строк в журнале документов

Автор mikel10, 27 авг 2013, 09:32

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

mikel10

подскажите пожалуйста как сделать счетчик строк в журнале документов Заказыокупателей.

mixqn

а подробнее? что за счетчик и зачем он нужен (как будет использоваться)?

mikel10

счетчик активируется и становиться видимым только при включенном отборе. Зачем он нужен мне не сказали.
Используется таким образом, например в верхней части журнала отображается цифра . Это все.
Добавлено: 27 авг 2013, 10:55


Есть такое решение
Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
колво = 0;
Для Каждого стр Из ОформленияСтрок Цикл
  колво = колво + 1;
КонецЦикла;

Сообщить(колво);

КонецПроцедуры

Встает вопрос: Я добавил эту процедуру в форму списка журнала. Процедура не вызывается???
Подкажите в чем проблема

mixqn

Цитата: mikel10 от 27 авг 2013, 10:12Зачем он нужен мне не сказали.
напрасно вы не спросили.

Цитата: mikel10 от 27 авг 2013, 10:12стает вопрос: Я добавил эту процедуру в форму списка журнала. Процедура не вызывается???
Подкажите в чем пробле
процедура указана в свойствах табличного поля в качестве обработчика события ПриПолученииДанных?

судя по вашему коду, счетчик - имеется ввиду просто вывод количества строк, так?
если да, то ПриПолученииДанных не подойдет, во всяком случае в том виде, как вы написали точно не подойдет. суть в том, что это событие отрабатывает 2 раза - сначала для первой строки и потом для всех остальных.
т.е. как вариант можно оставить ваш код, только перед выводом увеличить количество еще на 1 (учесть первую строку)

mikel10

последний вопрос : Эта процедура (см выше ) расчитывает кол-во строк, которое уместилось на мониторе, но не кол-во строк журнала. У меня на мониторе уместилось 34 строки, а в журнале строк намного больше. А нужна именно цифра - кол-во строк всего журнала.

mixqn

ну так с этого же и надо было начинать.
общее количество строк можно получить запросом:

ВЫБРАТЬ
   КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
ИЗ
   Документ.ЗаказПокупателя КАК ЗаказПокупателя

mikel10

нет, не общее количество, а кол-во строк которое отображается в открытом журнале, оно отличается от общего количества, например мы задали в журнале интервал, или условия отбора

mixqn

вот все ж из вас клещами вытаскивать приходится.
сформулировали бы задачу сразу четко, ответ был бы быстрее.

в вашем случае надо обработать отбор и добавить указанные в нем условия в запрос. подробнее см. синтаксис-помощник ЖурналДокументовСписок.<Имя журнала документов>.Отбор

с периодом должно быть примерно то же самое, хотя не уверен - надо во-первых проверить, не содержатся ли настройки периода в свойстве Отбор, а во-вторых, если не содержатся, то покопаться в синтаксис-помощнике и поискать.
Добавлено: 27 авг 2013, 15:09


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

таким образом ваша задача заключается в том, чтобы программно пройтись по всем полям отбора и на их основе добавить условия в текст запроса.
Добавлено: 27 авг 2013, 15:36


потратил время, написал код под вашу задачу.

ТекстЗапроса =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
|ИЗ
| ЖурналДокументов.ЗаказыПокупателей КАК ЗаказыПокупателей
|{ГДЕ
| ЗаказыПокупателей.Ссылка.*,
| ЗаказыПокупателей.Дата,
| ЗаказыПокупателей.ПометкаУдаления,
| ЗаказыПокупателей.Номер,
| ЗаказыПокупателей.Проведен,
| ЗаказыПокупателей.ВидОперации.*,
| ЗаказыПокупателей.Сумма,
| ЗаказыПокупателей.Валюта.*,
| ЗаказыПокупателей.Информация.*,
| ЗаказыПокупателей.Организация.*,
| ЗаказыПокупателей.Подразделение.*,
| ЗаказыПокупателей.Ответственный.*,
| ЗаказыПокупателей.Комментарий,
| ЗаказыПокупателей.ДатаОплаты,
| ЗаказыПокупателей.ДатаОтгрузки,
| ЗаказыПокупателей.Тип}";

ПостроительОтчета = Новый ПостроительОтчета(ТекстЗапроса);

Для каждого ЭлементОтбора Из ЗаказыПокупателей.Отбор Цикл
Если ЭлементОтбора.Использование Тогда
ЭлементОтбораПостроителя = ПостроительОтчета.Отбор.Найти(ЭлементОтбора.Имя);
Если ЭлементОтбораПостроителя = Неопределено Тогда
Попытка
ЭлементОтбораПостроителя = ПостроительОтчета.Отбор.Добавить(ЭлементОтбора.Имя);
Исключение
Продолжить;
КонецПопытки;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭлементОтбораПостроителя, ЭлементОтбора);
КонецЕсли;
КонецЦикла;

ПостроительОтчета.Выполнить();

Запрос = ПостроительОтчета.ПолучитьЗапрос();

Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Сообщить(Выборка.КоличествоЗаписей);

mikel10

подскажите как программным способом например в форме списка журнала документов ЗаказыПокупателей получить значения Произвольного интервала С ...  По

mikel10

Спасибо огромное , написал запрос. Все работает! :)

Теги:

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

Рейтинг@Mail.ru

Поиск