Выпуск № 1040 от 27.06.2009, 10:05
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 522, экспертов - 114
В номере: вопросов - 1, ответов - 2
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 169705: Уважаемые эксперты! Подскажите, пожалуйста, как в 1С-7.7-Торговля и Склад-944 сделать так, чтобы избранные пользователи могли редактировать документы ранее установленной в системе даты запрета редактирования документов без изменения этой даты. Т.е. ч...
Вопрос № 169705:
Уважаемые эксперты! Подскажите, пожалуйста, как в 1С-7.7-Торговля и Склад-944 сделать так, чтобы избранные пользователи могли редактировать документы ранее установленной в системе даты запрета редактирования документов без изменения этой даты. Т.е. чтобы запрет редактирования документов не распространялся на этих избранных. Спасибо
Необходимо в глобальную процедуру глПроверкаРазрешенияРедактирования() вставить следующие строки. Вариант 1 - работать будет, если у данных пользователей один и тот же набор прав, дающий разрешение на редактирование необходимых документов. Вариант 2 - через имя пользователя, но тоже должно соблюдаться условие, что данному пользователю в настройках прав доступа стоит разрешение на редактирование документов.
Оценка ответа: 5 Комментарий к оценке: Спасибо за быстрый и конкретный ответ. Всё работает!
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251308
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Игорь К., Студент :
Здравствуйте, VladimirNick. Предлагаю кардинальное решение проблемы. Заводим справочник "ЗапретРедактирования" с полем "ДатаЗапрета" типа "Дата" В процедуре "ПриНачалеРаботыСистемы" проверяем этот справочник на наличие записи о текущем пользователе. Если нет то добавляем: *** Найден=0; Спр=СоздатьОбъект("Справочник.ЗапретРедактирования"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл Если Спр.Наименование=ИмяПользователя()
Тогда Найден=1; КонецЕсли; КонецЦикла; Если Найден=0 Тогда Спр.Новый(); Спр.Наименование=ИмяПользователя(); Спр.Дата=Константа.ДатаЗапретаРедактирования; Спр.Записать(); КонецЕсли; *** Во всех документах ставим проверку на эту дату:
В глобальном модуле: *** Функция глМожноЗаписатьДокумент(Конт) Экспорт Найден=0; Спр=СоздатьОбъект("Справочник.ЗапретРедактирования"); Спр.Выбр
атьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл Если Спр.Наименование=ИмяПользователя() Тогда Найден=1; Если (Конт.ДатаДок <= Спр.ДатаЗапрета) Тогда Предупреждение("Нельзя записывать документы с датой, более ранней, чем дата запрета редактирования документов!"); Возврат 0; Иначе Возврат 1; КонецЕсли; КонецЕсли; КонецЦикла; Если Найден=0 Тогда //для совместимости оставлено Если НазваниеНабораПрав()<>"Администратор"
Тогда //админам можно Если Конт.ДатаДок <= Константа.ДатаЗапретаРедактирования Тогда Предупреждение("Нельзя записывать документы с датой, более ранней, чем дата запрета редактирования документов!"); Возврат 0; Иначе Возврат 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецФункции
*** Аналогично дополнить другие функции:
глПроверкаРазрешенияРедактирования() ПриУдаленииДокумента()
ПриОтменеУдаленияДокумента() и т.д. Во всех документах в процедуре "ПриЗаписи" должны быть строки: *** Процедура ПриЗаписи() // Предопределенная процедура Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; КонецПроцедуры // ПриЗаписи *** Тогда у каждого пользователя будет своя дата запрета редактирования документов. Для удобства в справочнике "ЗапретРедактирования" можно сделать кнопку "Сбросить дату запрета
у всех на" и поле типа дата.
Если писать строки на обработку конкретного пользователя, то при смене пользователей (одни увольняются, другие приходят, меняются обязанности) нужно будет переделывать программный код. А это не совсем удобно.
----- Если хорошенько подумать, - можно разобраться в чем угодно. Даже в устройстве летающей тарелки.
Ответ отправил: Игорь К., Студент
Ответ отправлен: 25.06.2009, 08:08
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251450
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.