Вопрос № 176337: Здравствуйте. 1с 7.7 ЗиК 2.3 В справочнике Сотрудник при нажатии отчетность в форме Т2 не отображается приказ и дата увольнения. Происходит это у тех кто увольнялся и вновь приходил, у остальных нормально. у них при нажатии отчетность появляется в...
Вопрос № 176337:
Здравствуйте. 1с 7.7 ЗиК 2.3 В справочнике Сотрудник при нажатии отчетность в форме Т2 не отображается приказ и дата увольнения. Происходит это у тех кто увольнялся и вновь приходил, у остальных нормально. у них при нажатии отчетность появляется выбор периода работы. как и где это нужно исправить?Чтоб отображал дату выбранного периода.
Отвечает Сайко Владимир Владимирович, 2-й класс :
Здравствуйте, DavidKuch. Сразу говорю что с ЗиК не работал. Но исходя из вопроса могу предположить, что при формировании отчета идет проверка даты увольнения и скорее всего она сравнивается с датой приема. А если человек вновь принят на работу то проверку и не проходит.
Это можно отследить с помощью отладчика. Открываем в конфигураторе интересующий нас отчет. Открываем его форму. Кнопка, которая формирует отчет - свойства - закладка "дополнительно" - поле формула - название процедуры. Затем
открываем модуль формы - находим нужную процедуру - устанавливаем курсор на первой строке процедуры, затем меню "действие - открыть в отладчике". Когда отладчик открылся на первой строке процедуры нажимаем F9 (т.е. устанавливаем точку останова программы).
Затем запускаем программу в режиме Предприятие и запускаем отчет на интересующем нас человеке. Программа должна сразу попасть в отладчик. В отладчике начинаете нажимать F8 (шагнуть в) и прог
рамма начнет выполнятся построчно (т.е. при каждом нажатии F8 выполняется следующая строка). И так пока не найдете проверку на дату приема. Затем запоминаете место, где проходит проверка и в конфигураторе настраиваете модуль как вам нужно.
В общем если что еще нужно будет обращайтесь, уточню.
С учетом мини-форума
-----
∙ Отредактировал: Владимир Лазурко, Профессионал
∙ Дата редактирования: 28.01.2010, 12:57 (время московское)
Ответ отправил: Сайко Владимир Владимирович, 2-й класс
Ответ отправлен: 27.01.2010, 23:36
Номер ответа: 259017
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 259017
на номер 1151 (Россия) |
Еще номера »
Отвечает Владимир Лазурко, Профессионал :
Здравствуйте, DavidKuch.
По кнопке Отчетность из элемента справочника Сотрудники формируется список доступных форм отчетности в зависимости от состояния этого элемента - записан/не записан и т.д. При выборе отчета "Форма Т2" вычисляется текущая дата использования периодических реквизитов для этого сотрудника (обычно это рабочая дата) и по ней вычисляется текущий период работы сотрудника:
Код:
ДатаОтчета = ИспользоватьДату(); ПериодыРаботы = глПолучитьПериодыРаботы(ТекущийЭлемент()); Если ПериодыРаботы.РазмерСписка()>1 Тогда Период = ""; ПериодыРаботы.ВыбратьЗначение(Период,,,,1); ДатаОтчета = Дата(Прав(Период,8)); КонецЕсли;
И если в полученном списке оказываются более одного периодов
работы этого сотрудника, то выдается запрос на выбор нужного периода для отчета.
Форма Т-2 при открытии получает параметры - Сотрудник, дату актуальности отчета (дата окончания выбранного в списке периода) и флаг режима таблицы - ввод данных или просмотр.
В самом отчете Т-2 в процедуре ПриОткрытии() по дате периода ищется последний приказ о приеме на работу и дата найденного приказа является началом периода отчета.
Чтобы Вы могли самостоятельно изменить период отчета в форме, поместите
на форму 2 поля ввода рядом с кнопками Сохранить и Закрыть. Идентификаторы этих ролей будут как и у переменных в этом модуле: ДатаНачала, и ДатаОкончания тип Дата и для удобства выбора периода кнопку, в формуле которой пропишем ВвестиПериод(ДатаНачала,ДатаОкончания). Поместим текстовые метки для описания этих реквизитов: "Период с:" и "по".
Но этого недостаточно - нужно еще и обновить отчет. Далее добавим кнопку Сформировать, в формулу которой поместим следующее: ПериодЗаданВручную=1; ПриОткрытии(). В модуле обработки добавим переменную модуля, они находяятся в самом начале (добавленная строка выделена цветом)
Код:
Перем Сотрудник; Перем СтарыеЗначенияТаблицы; Перем ТолькоПросмотр; // флаг, если форму открыли только для просмотра Перем ПериодЗаданВручную; // флаг того, что период отчета выбран в форме диалога
После этого в конце модуля, после описания процедур и функция добавим такую строку:
ПериодЗаданВручную=0;,
а в процедуре ПриОткрытии() изменим код на следующий (цветом вы
делены добавленные строки):
Код:
Процедура ПриОткрытии()
Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда ТекущийСотрудник = Форма.Параметр.Получить("Сотрудник"); Если ПериодЗаданВручную=0 Тогда ДатаОкончания
= Форма.Параметр.Получить("ДатаАктуальности"); ТолькоПросмотр = Число(Форма.Параметр.Получить("ТолькоПросмотр")); Если (Форма.МодальныйРежим()=1) или (ПустоеЗначение(ТекущийСотрудник)=1) или (ПустоеЗначение(ДатаОкончания)=1) Тогда СтатусВозврата(0); Возврат КонецЕсли; Сотрудник = СоздатьОбъект("Справочник.Сотрудники"); Сотрудник.НайтиЭлемент(ТекущийСотрудник); // найдем приказ о приеме с
отрудника, если он отсутствует, то этот сотрудник // на дату ДатаОкончания не был принят на работу, поэтому Форма Т-2 не должна откр
ываться Приказ = глПриказПоСотруднику(Сотрудник,ДатаОкончания,"ПриказОПриемеНаРаботу",-1); Если ПустоеЗначение(Приказ)=1 Тогда СтатусВозврата(0); Возврат КонецЕсли; ДатаНачала = Приказ.ДатаПриема; Иначе // Приказ используется в дальнейшем, его нужно найти Приказ = глПриказПоСотруднику(Сотрудник,ДатаОкончания,"ПриказОПриемеНаРаботу",-1); Если ПустоеЗначение(Приказ)=1 Тогда Предупреждение("За указанный период
нет приказа о приемена работу"); Возврат; КонецЕсли; КонецЕсли; //ПериодЗаданВручную=0
... // далее по тексту
Прокомментирую. При открытии формы переменной ПериодЗаданВручную присваивается нулевое значение, а при нажатии кнопки Сформировать они принимает значение 1. Это нужно для того, чтобы разделять способ получения периода отчета - по переданным параметрам или введенным вручную на форм
е отчета.
Успехов! С уважением, Владимир.
Ответ отправил: Владимир Лазурко, Профессионал
Ответ отправлен: 30.01.2010, 09:11
Номер ответа: 259068
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 259068
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.