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

Вывести список сотрудников при начале работы системы

Автор Алексей_1985_06, 14 июл 2020, 18:31

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

Алексей_1985_06

Ребята подскажите как можно "улучшить" процесс вывода информации (ФИО) сотрудников у которых сегодня ДР. Процедура экспортная из общего модуля, запускается  в модуле приложения при начале работы системы, сейчас просто выходит список сотрудников у которых сегодня ДР, а хочется это реализовать как-то в виде таблички или списка. Можете подсказать как лучше это реализовать?

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

Запрос.УстановитьПараметр("Месяц", Месяц(ТекущаяДата()));
Запрос.УстановитьПараметр("День", День(ТекущаяДата()));

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если РезультатЗапроса.Пустой() Тогда
Возврат;   

Иначе
Пока Выборка.Следующий() Цикл

Сообщить( "Сегодня родились: " + Строка (Выборка.ФИО)); // Вот тут хотелось бы улучшить
    КонецЦикла;
КонецЕсли;

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


temrmal

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

Алексей_1985_06

Цитата: temrmal от 14 июл 2020, 23:56
На мой взгляд создать общую форму, подключить обработчик ожидания открытия формы при запуске системы (по стандарту так и делается кстати, смотри открытия новостей или формы, где новое в версии показывается), при открытии формы заполнять таблицу , которая разумеется на этой форме. Там и украсить можешь хоть яркими gif картинками)))
Извините, можете подсказать как реализовать заполнение таблицы на форме?
В объекте "Общие формы" я создал форму "Дни рождения" реквизит с типом "ТаблицаЗначений" в ней колонка ФИО,
в модуле приложения вызываю экспортную процедуру:
Процедура ПриНачалеРаботыСистемы()


Процедура ПриНачалеРаботыСистемы()
ВызовСервера.ДеньРождения(); // Процедура "ДеньРождения" которая вызывается из ОбщегоМодуля "ВызовСервера"

ФормаДР = ОткрытьФорму("ОбщаяФорма.ДниРождения");

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



LexaK

Алексей_1985_06, прямо в самой общей форме,
в событии при СозданииНаСервере
вызывайте вашу процедуру, и заполняйте реквизиты формы.

вам остается только получить и открыть эту общую форму, а заполнится она сама.
если помогло нажмите: Спасибо!

Алексей_1985_06

Цитата: temrmal от 14 июл 2020, 23:56
На мой взгляд создать общую форму, подключить обработчик ожидания открытия формы при запуске системы (по стандарту так и делается кстати, смотри открытия новостей или формы, где новое в версии показывается), при открытии формы заполнять таблицу , которая разумеется на этой форме. Там и украсить можешь хоть яркими gif картинками)))

Вот так пробую, но при запуске ТЗ не выводится....
Можете подсказать как показать ТЗ при запуске системы? Что нужно в коде дописать?
.......................
Если РезультатЗапроса.Пустой() Тогда
Возврат;   

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


LexaK

ЦитироватьТаблица = Новый ТаблицаЗначений; // создаем ТЗ
        Таблица.Колонки.Добавить("ФИО"); // Колонка ФИО
что за Г...?
в конструкторе, создайте Реквизит формы (ТаблицаЗначений) - это коллекция формы
там-же нужные колонки
мышкой перетащите на форму

используйте запрос для получения данных,
затем одну команду

ТаблицаДР.Загрузить(Запрос.Выполнить().Выгрузить());

и все!!! вот любители Г..кодить!


если помогло нажмите: Спасибо!

Алексей_1985_06

Цитата: LexaK от 15 июл 2020, 19:08
Алексей_1985_06, прямо в самой общей форме,
в событии при СозданииНаСервере
вызывайте вашу процедуру, и заполняйте реквизиты формы.

вам остается только получить и открыть эту общую форму, а заполнится она сама.

LexaK Что-то я туплю! Подскажите не получается: в общем модуле код:

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

Запрос.УстановитьПараметр("Месяц", Месяц(ТекущаяДата()));
Запрос.УстановитьПараметр("День", День(ТекущаяДата()));

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если РезультатЗапроса.Пустой() Тогда
Возврат;   

Иначе
Сообщить("Сегодня день рождения отмечает: ");
Пока Выборка.Следующий() Цикл
 
Сообщить(Строка (Выборка.ФИО));
КонецЦикла;
КонецЕсли;

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


В общей форме вызываю процедуру:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
ВызовСервера.ДеньРождения();
// Не могу додумать как заполнить ТЗ данными?

НоваяСтрока = СписокСотрудников.Добавить(); // добавляю строку в реквизит ТЗ "СписокСотрудников"
НоваяСтрока.ФамилияИинициалы = ....

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


В модуле приложения открываю форму:

Процедура ПриНачалеРаботыСистемы()
    ОткрытьФорму("ОбщаяФорма.ДниРождения");
КонецПроцедуры

Помогите пожалуйста!!!

Добавлено: 15 июл 2020, 20:08


Цитата: LexaK от 15 июл 2020, 19:45
ЦитироватьТаблица = Новый ТаблицаЗначений; // создаем ТЗ
        Таблица.Колонки.Добавить("ФИО"); // Колонка ФИО
что за Г...?
в конструкторе, создайте Реквизит формы (ТаблицаЗначений) - это коллекция формы
там-же нужные колонки
мышкой перетащите на форму

используйте запрос для получения данных,
затем одну команду

ТаблицаДР.Загрузить(Запрос.Выполнить().Выгрузить());

и все!!! вот любители Г..кодить!

Большое спасибо! Допёр...
Добавлено: 15 июл 2020, 20:29


Цитата: Алексей_1985_06 от 15 июл 2020, 19:49
Цитата: LexaK от 15 июл 2020, 19:08
Алексей_1985_06, прямо в самой общей форме,
в событии при СозданииНаСервере
вызывайте вашу процедуру, и заполняйте реквизиты формы.

вам остается только получить и открыть эту общую форму, а заполнится она сама.

LexaK Что-то я туплю! Подскажите не получается: в общем модуле код:

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

Запрос.УстановитьПараметр("Месяц", Месяц(ТекущаяДата()));
Запрос.УстановитьПараметр("День", День(ТекущаяДата()));

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если РезультатЗапроса.Пустой() Тогда
Возврат;   

Иначе
Сообщить("Сегодня день рождения отмечает: ");
Пока Выборка.Следующий() Цикл
 
Сообщить(Строка (Выборка.ФИО));
КонецЦикла;
КонецЕсли;

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


В общей форме вызываю процедуру:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
ВызовСервера.ДеньРождения();
// Не могу додумать как заполнить ТЗ данными?

НоваяСтрока = СписокСотрудников.Добавить(); // добавляю строку в реквизит ТЗ "СписокСотрудников"
НоваяСтрока.ФамилияИинициалы = ....

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


В модуле приложения открываю форму:

Процедура ПриНачалеРаботыСистемы()
    ОткрытьФорму("ОбщаяФорма.ДниРождения");
КонецПроцедуры

Помогите пожалуйста!!!

Добавлено: 15 июл 2020, 20:08


Цитата: LexaK от 15 июл 2020, 19:45
ЦитироватьТаблица = Новый ТаблицаЗначений; // создаем ТЗ
        Таблица.Колонки.Добавить("ФИО"); // Колонка ФИО
что за Г...?
в конструкторе, создайте Реквизит формы (ТаблицаЗначений) - это коллекция формы
там-же нужные колонки
мышкой перетащите на форму

используйте запрос для получения данных,
затем одну команду

ТаблицаДР.Загрузить(Запрос.Выполнить().Выгрузить());

и все!!! вот любители Г..кодить!

Большое спасибо! Допёр...

LexaK подскажите, как реализовать чтоб если результат запроса пустой, то форма не открывалась при начале работы системы, а то сейчас вне зависимости от того есть ДР или нет, форма при запуске открывается, метод "закрыть" - тут не работает
LexaK
Добавлено: 15 июл 2020, 20:53


Цитата: Алексей_1985_06 от 15 июл 2020, 19:49
Цитата: LexaK от 15 июл 2020, 19:08
Алексей_1985_06, прямо в самой общей форме,
в событии при СозданииНаСервере
вызывайте вашу процедуру, и заполняйте реквизиты формы.

вам остается только получить и открыть эту общую форму, а заполнится она сама.

LexaK Что-то я туплю! Подскажите не получается: в общем модуле код:

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

Запрос.УстановитьПараметр("Месяц", Месяц(ТекущаяДата()));
Запрос.УстановитьПараметр("День", День(ТекущаяДата()));

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если РезультатЗапроса.Пустой() Тогда
Возврат;   

Иначе
Сообщить("Сегодня день рождения отмечает: ");
Пока Выборка.Следующий() Цикл
 
Сообщить(Строка (Выборка.ФИО));
КонецЦикла;
КонецЕсли;

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


В общей форме вызываю процедуру:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
ВызовСервера.ДеньРождения();
// Не могу додумать как заполнить ТЗ данными?

НоваяСтрока = СписокСотрудников.Добавить(); // добавляю строку в реквизит ТЗ "СписокСотрудников"
НоваяСтрока.ФамилияИинициалы = ....

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


В модуле приложения открываю форму:

Процедура ПриНачалеРаботыСистемы()
    ОткрытьФорму("ОбщаяФорма.ДниРождения");
КонецПроцедуры

Помогите пожалуйста!!!

Добавлено: 15 июл 2020, 20:08


Цитата: LexaK от 15 июл 2020, 19:45
ЦитироватьТаблица = Новый ТаблицаЗначений; // создаем ТЗ
        Таблица.Колонки.Добавить("ФИО"); // Колонка ФИО
что за Г...?
в конструкторе, создайте Реквизит формы (ТаблицаЗначений) - это коллекция формы
там-же нужные колонки
мышкой перетащите на форму

используйте запрос для получения данных,
затем одну команду

ТаблицаДР.Загрузить(Запрос.Выполнить().Выгрузить());

и все!!! вот любители Г..кодить!

Большое спасибо! Допёр...
Добавлено: 15 июл 2020, 20:29


Цитата: Алексей_1985_06 от 15 июл 2020, 19:49
Цитата: LexaK от 15 июл 2020, 19:08
Алексей_1985_06, прямо в самой общей форме,
в событии при СозданииНаСервере
вызывайте вашу процедуру, и заполняйте реквизиты формы.

вам остается только получить и открыть эту общую форму, а заполнится она сама.

LexaK Что-то я туплю! Подскажите не получается: в общем модуле код:

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

Запрос.УстановитьПараметр("Месяц", Месяц(ТекущаяДата()));
Запрос.УстановитьПараметр("День", День(ТекущаяДата()));

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если РезультатЗапроса.Пустой() Тогда
Возврат;   

Иначе
Сообщить("Сегодня день рождения отмечает: ");
Пока Выборка.Следующий() Цикл
 
Сообщить(Строка (Выборка.ФИО));
КонецЦикла;
КонецЕсли;

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


В общей форме вызываю процедуру:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
ВызовСервера.ДеньРождения();
// Не могу додумать как заполнить ТЗ данными?

НоваяСтрока = СписокСотрудников.Добавить(); // добавляю строку в реквизит ТЗ "СписокСотрудников"
НоваяСтрока.ФамилияИинициалы = ....

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


В модуле приложения открываю форму:

Процедура ПриНачалеРаботыСистемы()
    ОткрытьФорму("ОбщаяФорма.ДниРождения");
КонецПроцедуры

Помогите пожалуйста!!!

Добавлено: 15 июл 2020, 20:08


Цитата: LexaK от 15 июл 2020, 19:45
ЦитироватьТаблица = Новый ТаблицаЗначений; // создаем ТЗ
        Таблица.Колонки.Добавить("ФИО"); // Колонка ФИО
что за Г...?
в конструкторе, создайте Реквизит формы (ТаблицаЗначений) - это коллекция формы
там-же нужные колонки
мышкой перетащите на форму

используйте запрос для получения данных,
затем одну команду

ТаблицаДР.Загрузить(Запрос.Выполнить().Выгрузить());

и все!!! вот любители Г..кодить!

Большое спасибо! Допёр...

LexaK подскажите, как реализовать чтоб если результат запроса пустой, то форма не открывалась при начале работы системы, а то сейчас вне зависимости от того есть ДР или нет, форма при запуске открывается, метод "закрыть" - тут не работает
LexaK

Вопрос решен! Тема закрыта. Всем большое спасибо за помощь!!!!

Теги:

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

Рейтинг@Mail.ru

Поиск