January 13
На память 1С Спец
*В модуле объекта документа Операция* Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) НаборЗаписей = Движения.Управленческий; Если Не ЭтоНовый() И Не НаборЗаписей.Модифицированность() Тогда НаборЗаписей.Прочитать(); КонецЕсли; Если НаборЗаписей.Количество() > 0 Тогда НаборЗаписей.УстановитьАктивность(Не ПометкаУдаления); КонецЕсли; НаборЗаписей.Записывать = Истина; КонецПроцедуры
11) Привязка сообщения к элементу форму:
Прикрепление сообщения о нехватке товара при списании к столбцу Количество ТЧ Товары. Рекомендуется делать во всех случаях для доведения приема до автоматизма(одна из задач на УФ):
Сообщение. Текст = " Не хватает" + Выборка.Представление + " в количестве " + Число(Выборка.Количество - Выборка.КоличествоОстаток) ; Сообщение. Поле = "Товары[" + (Выборка.НомерСтроки -1) + "].Количество"; Сообщение.УстановитьДанные(ЭтотОбъект);
*В модуле объекта обработки ЗаполнениеГрафика*
Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни) Экспорт Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей(); Набор.Отбор.Подразделение.Установить(Подразделение); ЧислоСекундВСутках = 86400; Дат = ДатаНачала; Пока Дат <= ДатаОкончания Цикл Запись = Набор.Добавить(); Запись.Дата = Дат; Запись.Подразделение = Подразделение; Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда Запись.КоличествоЧасов = 0; Иначе Запись.КоличествоЧасов = 8; КонецЕсли; Дат = Дат + ЧислоСекундВСутках; КонецЦикла; Набор.Записать(); КонецПроцедуры
*В модуле объекта обработки ЗаполнениеГрафика при Сверхурочных часах*
Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни, ОтражатьСверхурочные) Экспорт Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей(); Набор.Отбор.Подразделение.Установить(Подразделение); Набор.Прочитать(); ЧислоСекундВСутках = 86400; Дат = ДатаНачала; Пока Дат <= ДатаОкончания Цикл Запись = Набор.Добавить(); Запись.Дата = Дат; Запись.Подразделение = Подразделение; ДеньНедели = ДеньНедели(Дат); Если Найти(ВыходныеДни, Строка(ДеньНедели)) Тогда Запись.РабочихЧасов = 0; Иначе Запись.РабочихЧасов = 8; КонецЕсли; Если ОтражатьСверхурочные И (ДеньНедели =2 ИЛИ ДеньНедели = 4) Тогда Запись.СверхурочныхЧасов = 3; КонецЕсли; Дат = Дат + ЧислоСекундВСутках; КонецЦикла; Набор.Записать(); КонецПроцедуры
*В модуле объекта обработки ЗаполнениеГрафика при смене 1 через 3*
Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни) Экспорт Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей(); Набор.Отбор.График.Установить(График); Набор.Прочитать(); ЧислоСекундВСутках = 8640Текуща ТекущаяДата = ДатаНачала; Пока ТекущаяДата <= ДатаОкончания Цикл Запись = Набор.Добавить(); Запись.Дата = ТекущаяДата; Запись.График = График; Запись.КоличествоЧасов = 24; ТекущаяДата = ТекущаяДата + 3 * 86400; КонецЦикла; Набор.Записать(); КонецПроцедуры
*В модуле объекта обработки ЗаполнениеГрафика при обмене Автомобилми и дополнительному графику по пятидневки для расчета отпуска*
Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни) Экспорт Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей(); Набор.Отбор.Автомобиль.Установить(Автомобиль); ЧислоСекундВСутках = 86400; Дат = ДатаНачала; Пока Дат <= ДатаОкончания Цикл Запись = Набор.Добавить(); Запись.Дата = Дат; Запись.Автомобиль = Автомобиль; Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда Запись.РабочихДней = 0; Иначе Запись.РабочихДней = 1; КонецЕсли; Если ДеньНедели(Дат) < 6 Тогда Запись.ДнейПятидневки = 1; Иначе Запись.ДнейПятидневки = 0; КонецЕсли; Дат = Дат + ЧислоСекундВСутках; КонецЦикла; Набор.Записать(); КонецПроцедуры