helpf.pro
Регистрация

v8: График работы

Bell
30.07.2013 12:20Прочитано: 1259
Здравствуйте
Что то не могу увязать Данные азпроса и заполнение ТЧ справочника
Данный запрос заполняет месяца(прописью и номер месяца)
Как увязать месяца и данные с запроса по месяца Параметр( это дни),ПараметрЧасы и т.д. по строке ТЧ
Что бы получилось в строку

Месяц День Часы и т.д.


З
Код 1C v 8.х
 апрос = Новый Запрос;
Запрос.УстановитьПараметр("НачалоПериода",НачалоГода(Дата(НомерТекущегоГода,01,01,00,00,00)));
Запрос.УстановитьПараметр("КонецПериода",КонецГода(Дата(НомерТекущегоГода,01,01,00,00,00)));
Запрос.Текст = "ВЫБРАТЬ
| &НачалоПериода КАК НачалоПериода,
| &КонецПериода КАК КонецПериода,
| График.ДеньНеделиПрописью,
| График.Дата КАК Дата,
| МЕСЯЦ(График.Дата) КАК НомерМесяца,
| График.ГрафикРаботы,
| График.Смена,
| График.Параметр,
| График.ПараметрЧасы,
| График.ПараметрЧасыДневные,
| График.ПараметрЧасыВечерние,
| График.ПараметрЧасыНочные,
| График.Статус
|ИЗ
| РегистрСведений.РС_ГрафикРаботы КАК График
|ГДЕ
| График.ГрафикРаботы = &ГрафикРаботы
| И График.Дата >= &НачалоПериода
| И График.Дата <= &КонецПериода
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);


РезультатМесяц = Запрос.Выполнить().Выгрузить();
РезультатМесяц.Свернуть("НомерМесяца");
Для каждого СтрокаТЗ Из РезультатМесяц Цикл

НВС = ГрафикРаботыПоМесяцам.Добавить();
НВС.Месяц = ОбщегоНазначения.ПолучитьМесяцПрописьюПоНомеру(СтрокаТЗ.НомерМесяца, Истина)+ " " + Формат(НомерТекущегоГода,"ЧГ=") + " г." ;
НВС.НомерМесяца = СтрокаТЗ.НомерМесяца;

КонецЦикла;
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
30.07.2013 13:16Ответ № 1
(0) Bell, так судя по запросу он у тебя и так выводит все одной строкой. или надо что-то другое?
Bell
30.07.2013 18:06Ответ № 2
Запрос получает все что надо , к нему нет вопросов. Результат запроса не могу вывести в одну строку ТЧ спровочника.(Как в ЗУПЕ график работы, но там в таблицузначения выходят попроще.). Синхронизировать все.

Месяц НомерМесяца День ЧасыДневные ЧасыВечиние ЧасыНочные
Январь 1
Февраль 2
...
Декабрь 12

ТЧ справочника состав:

Месяц (Выходится)
НомерМесяца (Выходитя)
День1
День2
по ...
День31
ВЧ1
ВЧ2
по..
ВЧ31
и т.д
Все остальное не могу вывести в строку
Изменено 30.07.13 18:10:41
E_Migachev
31.07.2013 14:39Ответ № 3
(2) Bell, что-то не догоняю, почему не можешь вывести, если у тебя из запроса 1-на строка и грузишь в одну строку
Bell
31.07.2013 17:23Ответ № 4
Нежного передалал

// Здесь полный результат запроса
Код 1C v 8.х
 Результат = Запрос.Выполнить().Выгрузить();   


// Здесь результат запроса сворачаваем что бы получть месяц числом (1 по 12) по ним потом получаем месяц прописью
Код 1C v 8.х
   РезультатМесяц = Запрос.Выполнить().Выгрузить();
РезультатМесяц.Свернуть("НомерМесяца");

// Обход месяцев
Код 1C v 8.х
  Для каждого СтрокаМесяц Из РезультатМесяц Цикл   

// сравниваес номермесяца и если он равен определенному числу добавляем в ТЧ
Код 1C v 8.х
  Если СтрокаМесяц.НомерМесяца = 1 Тогда

НВС = ГрафикРаботыПоМесяцам.Добавить();
НВС.Месяц = ОбщегоНазначения.ПолучитьМесяцПрописьюПоНомеру(СтрокаМесяц.НомерМесяца, Истина)+ " " + Формат(НомерТекущегоГода,"ЧГ=") + " г." ;
НВС.НомерМесяца = СтрокаМесяц.НомерМесяца;

/// ???????????
// Как зациклить полный результат запроса (РЕЗУЛЬТАТ) что бы заполнить Дни , Вечерние часы, Ночные часы по строке по своему месяцу??
// [Брожу где то радом что то не пойму, наверное большая жара *17

Код 1C v 8.х
  Для А = 1 По 31 Цикл

//НВС["День"+А] = СтрокаРезультат.ПараметрЧасыДневные;
//НВС["ВЧ"+А] = СтрокаРезультат.ПараметрЧасыВечерние;
//НВС["НЧ"+А] = СтрокаРезультат.ПараметрЧасыНочные;

КонецЦикла;

// и так 12 месяцев
ИначеЕсли СтрокаМесяц.НомерМесяца = 2 Тогда
ИначеЕсли СтрокаМесяц.НомерМесяца = 3 Тогда
......
ИначеЕсли СтрокаМесяц.НомерМесяца = 12 Тогда
КонецЦикл;

Изменено 31.07.13 17:30:55
E_Migachev
31.07.2013 18:40Ответ № 5
приложи пример результат запроса, так не могу прикинуть(
Bell
01.08.2013 11:02Ответ № 6
График в регистре сведений
title
Результат по коду
title

1. График в регистре сведений.
Январь 2013 начинается со вторника (пятидневка).( На цифры (ЧаСЫ) не обращайте внимания это что бы посмотреть что все заполняется правильно)


2. Сам запрос (Получение только января, что бы меньше было)

Код 1C v 8.х
   Процедура КоманднаяПанельГрафикРаботыПоМесяцамДействие(Кнопка)


ГрафикРаботыПоМесяцам.Очистить();

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НачалоПериода",НачалоГода(Дата(НомерТекущегоГода,01,01,00,00,00)));
Запрос.УстановитьПараметр("КонецПериода",КонецГода(Дата(НомерТекущегоГода,01,01,00,00,00)));
Запрос.Текст = "ВЫБРАТЬ
| &НачалоПериода КАК НачалоПериода,
| &КонецПериода КАК КонецПериода,
| График.ДеньНеделиПрописью,
| График.Дата КАК Дата,
| МЕСЯЦ(График.Дата) КАК НомерМесяца,
| График.ГрафикРаботы,
| График.Смена,
| График.Параметр,
| График.ПараметрЧасы,
| График.ПараметрЧасыДневные,
| График.ПараметрЧасыВечерние,
| График.ПараметрЧасыНочные,
| График.Статус
|ИЗ
| РегистрСведений.РС_ГрафикРаботы КАК График
|ГДЕ
| График.ГрафикРаботы = &ГрафикРаботы
| И График.Дата >= &НачалоПериода
| И График.Дата <= &КонецПериода
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);

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

РезультатМесяц = Запрос.Выполнить().Выгрузить();
РезультатМесяц.Свернуть("НомерМесяца");[/left]

Для каждого СтрокаМесяц Из РезультатМесяц Цикл

Если СтрокаМесяц.НомерМесяца = 1 Тогда

НВС = ГрафикРаботыПоМесяцам.Добавить();
НВС.Месяц = ОбщегоНазначения.ПолучитьМесяцПрописьюПоНомеру(СтрокаМесяц.НомерМесяца, Истина)+ " " + Формат(НомерТекущегоГода,"ЧГ=") + " г." ;
НВС.НомерМесяца = СтрокаМесяц.НомерМесяца;

Для каждого СтрокаРезультат Из Результат Цикл

Для А = 1 По 31 Цикл

НВС["День"+А] = СтрокаРезультат.ПараметрЧасыДневные;


КонецЦикла;

КонецЦикла;

КонецЕсли;

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


3. Результат который должен быть выведень в ТЧ по строке

Январь 22-23-24-25-вых-вых-21-22-23-24-25 и т.д. до конца месяца


4. Результат который получается (Их много есть по колонке , есть наискосок) к этой конструкции[/img]
Изменено 01.08.13 11:11:07
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.