Отрывок из условия задачи: "а на пересечении сотрудника и дня месяца ОДИН ИЗ ТРЕХ ВАРИАНТОВ вариантов: «8», «8К» либо пустое поле". Значит можно просто проверку на эти три значения сделать и все, и не париться какие другие значения может ввести пользователь
Добрый день. В данной конструкции при проведении документа Табель Отказ = Истина после Продолжить; Соответственно документ в отказ не уйдет при некорректном вводе данных. Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = СтрШаблон("Некорректный ввод данных (строка %1, день %2)", Строка.НомерСтроки, НомерДня); Сообщение.Сообщить(); Продолжить; Отказ = Истина; КонецПопытки;
обычно заведение справочника обосновывают тем что если хранить строки то мол опечататься можно, а тут выходит что в док пишем строки а потом их парсить чтобы достать значения справочника, вообще не логично. тогда в табеле нужно чтобы вид времени выбирался.
Спасибо за стрим, весьма познавательно. Все-таки имеет смысл создать справочник ЗначенияТабеля в котором указывать виды работы и цифровые значения часов. А вот плодить сущности не стоит, ВидыРабочегоВремени это по сути начисления, их и стоит указывать в РН. Если так сделать, то цикл в обработке проведения мог бы выглядеть как-то так: Для Каждого Строка Из ДанныеТабеля Цикл Для НомерДня = 1 По День(КонецМесяца(Дата)) Цикл Если ЗначениеЗаполнено(Строка["День" + НомерДня]) Тогда Движение = Движения.ОтработанноеВремяСотрудников.Добавить(); Движение.Период = НачалоМесяца + (НомерДня - 1) * СекундВДне; Движение.Сотрудник = Строка.Сотрудник; Движение.Подразделение = Подразделение; Движение.ВидРабочегоВремени = Строка["День" + НомерДня].ВидРабочегоВремени; Движение.ЗначениеЧасов = Строка["День" + НомерДня].ЗначениеЧасов; КонецЕсли; КонецЦикла; КонецЦикла;
Отрывок из условия задачи: "а на пересечении сотрудника и дня месяца ОДИН ИЗ ТРЕХ ВАРИАНТОВ вариантов: «8», «8К» либо пустое поле". Значит можно просто проверку на эти три значения сделать и все, и не париться какие другие значения может ввести пользователь
Добрый день.
В данной конструкции при проведении документа Табель Отказ = Истина после Продолжить; Соответственно документ в отказ не уйдет при некорректном вводе данных.
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("Некорректный ввод данных (строка %1, день %2)", Строка.НомерСтроки, НомерДня);
Сообщение.Сообщить();
Продолжить;
Отказ = Истина;
КонецПопытки;
все понятно
Это 7 билет СПР
обычно заведение справочника обосновывают тем что если хранить строки то мол опечататься можно, а тут выходит что в док пишем строки а потом их парсить чтобы достать значения справочника, вообще не логично. тогда в табеле нужно чтобы вид времени выбирался.
Я считаю, что все логично.
Вид времени в табеле делать не надо - в задании представлен скриншот документа, и наш документ должен ему соответствовать.
@@IlyaLeontyev Создаем в справочнике элементы "8" и "8К" и все как на картинке.
Видела решение, где проверяется если день командировки суббота или воскресенье, то в регистр идет 0 часов, иначе - 8
Спасибо за стрим, весьма познавательно.
Все-таки имеет смысл создать справочник ЗначенияТабеля в котором указывать виды работы и цифровые значения часов. А вот плодить сущности не стоит, ВидыРабочегоВремени это по сути начисления, их и стоит указывать в РН. Если так сделать, то цикл в обработке проведения мог бы выглядеть как-то так:
Для Каждого Строка Из ДанныеТабеля Цикл
Для НомерДня = 1 По День(КонецМесяца(Дата)) Цикл
Если ЗначениеЗаполнено(Строка["День" + НомерДня]) Тогда
Движение = Движения.ОтработанноеВремяСотрудников.Добавить();
Движение.Период = НачалоМесяца + (НомерДня - 1) * СекундВДне;
Движение.Сотрудник = Строка.Сотрудник;
Движение.Подразделение = Подразделение;
Движение.ВидРабочегоВремени = Строка["День" + НомерДня].ВидРабочегоВремени;
Движение.ЗначениеЧасов = Строка["День" + НомерДня].ЗначениеЧасов;
КонецЕсли;
КонецЦикла;
КонецЦикла;
всем привет)
Илья, почему ПоследнийДеньМесяца = День(КонецМесяца(Дата)) определяется в цикле по Строкам!? Разве нельзя это сделать до циклов вообще!?
Ну ты же понимаешь, что можно )
Ошибся я.