Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 19:04
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Кол-во рабочих дней за определенный месяц  (Прочитано 7953 раз)

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

Оффлайн JoeButcher

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 2
  • КПД: 5%
  • Регистрация: 2010-12-28
  • Сайт: 
  • Профессия: Ученик 1С
Доброго времени суток! Подскажите пожалуйста, как для конкретного работника в запросе получить количество дней, которое он отработал в заданном месяце? Заранее спасибо!


конфигурация: ЗиУП 8.2, редакция 2.5


Оффлайн LordWizard

  • "Иди учи бухгалтерский учет и не беспокой просьбами господа Бога!"
  • *****
  • Сообщений: 1463
  • РЕПУТАЦИЯ: 221
  • КПД: 15%
  • Пишу, консультирую, да и так - по клавишам...
  • Регистрация: 2011-07-25
    • Skype: warlock02121968
  • Сайт: 
  • Профессия: Консультант 1С
Регистр расчета "ОсновныеНачисленияРаботниковОрганизаций" - Измерения: Сотрудник, Ресуры: (ОтработаноДней, ОтработаноЧасов) тут наверное забери.
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Оффлайн JoeButcher

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 2
  • КПД: 5%
  • Регистрация: 2010-12-28
  • Сайт: 
  • Профессия: Ученик 1С
Регистр расчета "ОсновныеНачисленияРаботниковОрганизаций" - Измерения: Сотрудник, Ресуры: (ОтработаноДней, ОтработаноЧасов) тут наверное забери.
Благодарю, пошел смотреть :)

Оффлайн JoeButcher

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 2
  • КПД: 5%
  • Регистрация: 2010-12-28
  • Сайт: 
  • Профессия: Ученик 1С
Доброго времени суток! Подскажите пожалуйста, в чем может быть ошибка.
В виде функции оформил следующий запрос:
Функция ЗапросПоСменам()
ЗапросПоСменам = Новый Запрос();
ТекстЗапроса = "
|ВЫБРАТЬ
|ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо.Наименование КАК ФизЛицо,
|ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней,
|ОсновныеНачисленияРаботниковОрганизаций.НормаДней,
|ОсновныеНачисленияРаботниковОрганизаций.БазовыйПериодНачало,
|ОсновныеНачисленияРаботниковОрганизаций.ГрафикРаботы.Наименование КАК ГрафикРаботы
|ИЗ
|РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций ";
ЗапросПоСменам.Текст = ТекстЗапроса;
Возврат ЗапросПоСменам.Выполнить();
КонецФункции

Далее, в процедуре формирования отчета, делаю выборку по запросу
ч = 0; 
Результат = ЗапросПоСменам();
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.Прямой);

Далее, пытаюсь поместить в созданные массивы значения кол-ва рабочих дней по норме и по факту, однако на выходе не получаю ничего. Значение "ч" после завершения цикла равно 0, следовательно по запросу не нашлось данных, удовлетворяющих условию, однако в Регистре ОсновныеНачисленияРаботниковОрганизаций есть данные по указанному работнику и с указанным значением "ТекДата"
Пока Выборка.Следующий() Цикл
 Если (Выборка.ФизЛицо = Строка(ТекстРаботник))И(Выборка.БазовыйПериодНачало = ТекДата) Тогда
МассивСменФакт[ч] = Выборка.ОтработаноДней;
МассивСменНорма[ч] = Выборка.НормаДней;
ч = ч + 1;
КонецЕсли;
КонецЦикла;

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

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
1. запрос у вас вообще без каких-либо отборов, т.е. выбирается полностью весь регистр - это нормально? может быть следовало бы установить отбор по периоду (вероятно, текущий месяц) и работнику (особенно, учитывая, что именно эти 2 условия используются потом в цикле, то есть все данные запроса не нужны изначально, нужны только по определенному работнику за определенный период)?
2. почему физ.лицо ищите по наименованию? по ссылке надо искать.
3. чтобы получить массивы из колонок выборки запроса можно использовать методы Выгрузить() для результата запроса и затем ВыгрузитьКолонку() для колонки таблицы значений.
примерно так:
Результат = ЗапросПоСменам();
ТаблицаРезультата = Результат.Выгрузить();
МассивСменФакт = ТаблицаРезультата.ВыгрузитьКолонку("ОтработаноДней");
МассивСменНорма= ТаблицаРезультата.ВыгрузитьКолонку("НормаДней");

Оффлайн JoeButcher

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 2
  • КПД: 5%
  • Регистрация: 2010-12-28
  • Сайт: 
  • Профессия: Ученик 1С
1. запрос у вас вообще без каких-либо отборов, т.е. выбирается полностью весь регистр - это нормально? может быть следовало бы установить отбор по периоду (вероятно, текущий месяц) и работнику (особенно, учитывая, что именно эти 2 условия используются потом в цикле, то есть все данные запроса не нужны изначально, нужны только по определенному работнику за определенный период)?
2. почему физ.лицо ищите по наименованию? по ссылке надо искать.
3. чтобы получить массивы из колонок выборки запроса можно использовать методы Выгрузить() для результата запроса и затем ВыгрузитьКолонку() для колонки таблицы значений.
примерно так:
Результат = ЗапросПоСменам();
ТаблицаРезультата = Результат.Выгрузить();
МассивСменФакт = ТаблицаРезультата.ВыгрузитьКолонку("ОтработаноДней");
МассивСменНорма= ТаблицаРезультата.ВыгрузитьКолонку("НормаДней");

Большое спасибо! Насчет первого пункта - согласен, доработаю. Но, в данный момент, меня интересует, почему не находятся результаты запроса по условию. Из-за того, что я ищу сотрудника по наименованию, а не по ссылке?

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Из-за того, что я ищу сотрудника по наименованию, а не по ссылке?
вполне вероятно.
Но, в данный момент, меня интересует, почему не находятся результаты запроса по условию
лучше не пытайтесь решить сиюминутную неправильно поставленную задачу, а сделайте все правильно изначально. тогда не придется выяснять, почему не отрабатывают условия.

а вообще, если все таки есть желание разобраться, то выведите результат запроса любым удобным способом - либо в отладчике (поставьте точку остановка, нажмите "рассчитать выражение" для Результат.Выгрузить(), затем F2 на строке со значением, затем из контекстного меню "вывести список"), либо кодом; короче цель в том, чтобы посмотреть, что получилось в результате запроса и есть ли там строки, удовлетворяющие условиям (особенно внимательно смотрим на строки - если где-то лишний пробел, то строки уже будут не равны: "Иванов Иван Иванович" не равно "Иванов Иван Иванович ")

Оффлайн JoeButcher

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 2
  • КПД: 5%
  • Регистрация: 2010-12-28
  • Сайт: 
  • Профессия: Ученик 1С
Из-за того, что я ищу сотрудника по наименованию, а не по ссылке?
вполне вероятно.
Но, в данный момент, меня интересует, почему не находятся результаты запроса по условию
лучше не пытайтесь решить сиюминутную неправильно поставленную задачу, а сделайте все правильно изначально. тогда не придется выяснять, почему не отрабатывают условия.

а вообще, если все таки есть желание разобраться, то выведите результат запроса любым удобным способом - либо в отладчике (поставьте точку остановка, нажмите "рассчитать выражение" для Результат.Выгрузить(), затем F2 на строке со значением, затем из контекстного меню "вывести список"), либо кодом; короче цель в том, чтобы посмотреть, что получилось в результате запроса и есть ли там строки, удовлетворяющие условиям (особенно внимательно смотрим на строки - если где-то лишний пробел, то строки уже будут не равны: "Иванов Иван Иванович" не равно "Иванов Иван Иванович ")

Еще раз большое спасибо :) Пошел разбираться.
Добавлено: 09 Сен 2013, 12:09

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

Как пример, задаваемые на форме значения: Работник = "Сазонов Александр Юрьевич", ДатаНач = 01.05.2011 0:00:00, ДатаКон = 30.09.2013 0:00:00
И подходящие данные из регистра ОсновныеНачисленияРаботниковОрганизаций:

Почему выборка получается пустая, ума не приложу...
Добавлено: 09 Сен 2013, 12:14

up

Последний раз редактировалось: JoeButcher; 09 Сен 2013, 12:14. Причина: Объединение сообщений

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Типы то верны?

Процедура ПроверитьВсеЛиЯТипыУказалПравильно()
   Сообщить("Тип передаваемого параметра - "+ТипЗнч(Работник));

   МетаРегистр = Метаданные.РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций;
   Измерения = МетаРегистр.Измерения;
   Измерение = Измерения.Найти("ФизЛицо");
   Сообщить("Тип поля условия - "+Строка(Измерение.Тип));
КонецПроцедуры
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн JoeButcher

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 2
  • КПД: 5%
  • Регистрация: 2010-12-28
  • Сайт: 
  • Профессия: Ученик 1С
Типы то верны?

Процедура ПроверитьВсеЛиЯТипыУказалПравильно()
   Сообщить("Тип передаваемого параметра - "+ТипЗнч(Работник));

   МетаРегистр = Метаданные.РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций;
   Измерения = МетаРегистр.Измерения;
   Измерение = Измерения.Найти("ФизЛицо");
   Сообщить("Тип поля условия - "+Строка(Измерение.Тип));
КонецПроцедуры

С типами вроде все в порядке. Запрос заработал, после того как поменял поле "БазовыйПериодНачало" на "ДатаНачалаСобытия"...
Однако, оказалось, что по каждому месяцу в регистре идет несколько записей, а что с ними делать непонятно: то ли просто просуммировать по каждому месяцу, то ли что...
Кстати, еще вопрос: а можно ли выгрузить ТаблицуРезультата в многомерный массив?


Теги:
 

Как рассчитать данные за текущий месяц этого года и за прошлые года ?

Автор Viktoria GusakovaРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 7
Просмотров: 1098
Последний ответ 14 Июл 2016, 14:03
от LexaK
выводит ошибку при проведении документа "Оплаты праздничных и выходных дней"

Автор bannovРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 2558
Последний ответ 06 Июл 2010, 14:46
от bannov
Повторное формирование документа "Оплата праздничных и выходных дней организаций"

Автор Waka-WakaРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 1109
Последний ответ 29 Янв 2015, 17:37
от дфтын
УТ 10.3 Допустимое число дней задолженности: .., дата самой старой задолженности: ..

Автор Татьяна БыковаРаздел Беседка

Ответов: 2
Просмотров: 247
Последний ответ 07 Сен 2017, 13:51
от Татьяна Быкова
Как сделать простой отчет "Отработано выходных дней за период"

Автор NewbieDinaРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 261
Последний ответ 06 Окт 2017, 12:25
от alex0402

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
63 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
alexandr_ll
24 Сообщений

* Кто онлайн

  • Точка Гостей: 260
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal