Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 июл 2022, 09:16

Вывод списка именинников(Массив)

Автор Dmitry Qwe, 23 сен 2017, 19:54

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

Dmitry Qwe

Хочу вывести именинников при старте конфигурации

Функция ПолучитьСписокИменинников()Экспорт
Выборка = Справочники.Сотрудники.Выбрать();
Тек_День = День(ТекущаяДата());
Тек_Мес  = Месяц(ТекущаяДата());
Пока Выборка.Следующий() цикл
День_ДР = День(Выборка.ДатаРождения);
Мес_ДР = Месяц(Выборка.ДатаРождения);
Если Тек_День = День_ДР И Тек_Мес = Мес_ДР Тогда
Массив = Новый Массив;
Массив.Добавить(Выборка.Наименование);
КонецЕсли;

КонецЦикла;
Возврат Массив;
КонецФункции

Именинников помещаю в массив. С этим и проблема если у нас больше 1 именинника.
При обходе элементов массива Сообщается почему то только один сотрудник у которого ДР второго не сообщает, смотрел через отладку что в массиве происходит: при первом обходе он нашел одного именинника, при втором обходе если он нашел еще одного он заменяет первого. Почему это происходит?
[/code]
СписокИменинников  = ОбщиеМеханизмы.ПолучитьСписокИменинников();
   
   Для каждого элемент из СписокИменинников цикл
      Сообщить(Элемент);
      КонецЦикла;

[/code]

Если сделать вот так то все работает...

Функция ПолучитьСписокИменинников()Экспорт
Выборка = Справочники.Сотрудники.Выбрать();
Тек_День = День(ТекущаяДата());
Тек_Мес  = Месяц(ТекущаяДата());
Пока Выборка.Следующий() цикл
День_ДР = День(Выборка.ДатаРождения);
Мес_ДР = Месяц(Выборка.ДатаРождения);
Если Тек_День = День_ДР И Тек_Мес = Мес_ДР Тогда
Сообщить("У " + Выборка.Наименование + " Сегодня День Рождения")
КонецЕсли;

КонецЦикла;
Возврат Выборка.Наименование;
КонецФункции


Golickoff

Что-то вы там нагородили так, что я ничего не понял.
Делай раз:
Функция ПолучитьСписокИменинников()Экспорт
    Запрос = Новый Запрос("ВЫБРАТЬ
| Сотрудники.Наименование
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| МЕСЯЦ(Сотрудники.ДатаРождения) = &Месяц
| И ДЕНЬ(Сотрудники.ДатаРождения) = &День");   
    Запрос.УстановитьПараметр("День", День(ТекущаяДата()));
    Запрос.УстановитьПараметр("Месяц", Месяц(ТекущаяДата()));
    ТЗИменинников = Запрос.Выполнить().Выгрузить();
    Возврат ТЗИменинников;
КонецФункции

Делай два:
СписокИменинников  = ОбщиеМеханизмы.ПолучитьСписокИменинников();
   
   Для каждого элемент из СписокИменинников цикл
      Сообщить(Элемент.Наименование);
   КонецЦикла;

Делай три: Учите язык запросов.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

alex0402

Цитата: Dmitry Qwe от 23 сен 2017, 19:54Почему это происходит?

каждый раз создается новый массив и добавляется один элемент.

Цитата: Dmitry Qwe от 23 сен 2017, 19:54Если Тек_День = День_ДР И Тек_Мес = Мес_ДР Тогда
Массив = Новый Массив;
Массив.Добавить(Выборка.Наименование);
КонецЕсли;


Спасибо за Сказать спасибо

Samouchka

Цитата: Golickoff от 25 сен 2017, 10:30
Что-то вы там нагородили так, что я ничего не понял.
Делай раз:
Функция ПолучитьСписокИменинников()Экспорт
    Запрос = Новый Запрос("ВЫБРАТЬ
| Сотрудники.Наименование
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| МЕСЯЦ(Сотрудники.ДатаРождения) = &Месяц
| И ДЕНЬ(Сотрудники.ДатаРождения) = &День");   
    Запрос.УстановитьПараметр("День", День(ТекущаяДата()));
    Запрос.УстановитьПараметр("Месяц", Месяц(ТекущаяДата()));
    ТЗИменинников = Запрос.Выполнить().Выгрузить();
    Возврат ТЗИменинников;
КонецФункции

Делай два:
СписокИменинников  = ОбщиеМеханизмы.ПолучитьСписокИменинников();
   
   Для каждого элемент из СписокИменинников цикл
      Сообщить(Элемент.Наименование);
   КонецЦикла;

Делай три: Учите язык запросов.

Здравствуйте. Делаю все так, как вы написали.
Делай раз (пишу в Общем модуле). Делай два (пишу в Модуле Управляемого приложения). Но у меня выдает ошибку:

{ОбщийМодуль.ОбщиеМеханизмы.Модуль(31,17)}: Тип не определен (Запрос)
   Запрос = Новый <<?>>Запрос("ВЫБРАТЬ  (Проверка: Тонкий клиент)

alex0402

Цитата: Samouchka от 19 окт 2017, 10:52Запрос = Новый <<?>>Запрос("ВЫБРАТЬ  (Проверка: Тонкий клиент)
запросы на тонком клиенте не доступны. Нужен вызов сервера. Через общий модуль.
Спасибо за Сказать спасибо

Samouchka

Цитата: alex0402 от 19 окт 2017, 11:05
Цитата: Samouchka от 19 окт 2017, 10:52Запрос = Новый <<?>>Запрос("ВЫБРАТЬ  (Проверка: Тонкий клиент)
запросы на тонком клиенте не доступны. Нужен вызов сервера. Через общий модуль.

Теперь понятно. Спасибо

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск