Имя: Пароль:
1C
1С v8
Ограничение изменения по дате
,
0 GaikA_13rus
 
01.04.13
13:28
Всем добрый день.
Прошу Вашей помощи, потому что вообще не представляю как это сделать. ((
1с 8.1 ут 10.3
Есть справочник контрагенты, в нем создана надпись: "Месяц" с типом значения - произвольный, в коде указано:


Дата = НачалоМесяца(ТекущаяДата());        
ЭлементыФормы.Месяц.Заголовок = Формат(Дата,"ДФ=""ММММ""");


Так же там есть поле ввода "ПоКонтрагенту", в которое выставляется план на месяц на контрагента. Мне паставили задачу, чтобы пользователь мог менять план только до 5-го числа текщего месяца. Т.е. если у нас сегодня первое апреля, то за апрель, май, июнь и.д. есть доступ на изменение поля "ПоКонтрагенту", а за март и предыдущие месяца уже нет такого доступа. И за апрель он сможет изменять только до 5-го числа включительно.

Есть какие-нибудь идеи как это сделать?
1 Ювелир
 
01.04.13
13:30
пиши обработку перед записью там проверяй условие
2 GaikA_13rus
 
01.04.13
13:33
Я смогла только запретить изменять уже заполненный план:

Если РольДоступна ("ИгорьОлегович") Тогда
       Если ЗначениеЗаполнено(ПоКонтрагенту) Тогда
           ЭлементыФормы.ПоКонтрагенту.ТолькоПросмотр = Истина;
       Иначе
           ЭлементыФормы.ПоКонтрагенту.ТолькоПросмотр = Ложь;
       КонецЕсли;
КонецЕсли;






А вот как с месяцем быть вообще не представляю. Да еще и 5-е число месяца (((
3 Wobland
 
01.04.13
13:40
Доступность=(ТекущаяДата()-НачалоМесяца())>5*86400 ? //не читал
4 Wobland
 
01.04.13
13:44
я бы даже сказал Отказ=..., ибо (1)
5 GaikA_13rus
 
01.04.13
13:45
(3) Ну это я так понимаю будет только до 5-го числа текущего месяца? Т.е. если я открою прошлый месяц, то смогу редактировать.

Реквизита "ПоКонтрагенту" в самом справочнике нет. Он записывается в регистр сведений при нажатии кнопки. И даже если у пользователя нет права на изменение/добавление самого справочника, но есть права на изменение регистра сведения, то он может изменить это число.
6 GaikA_13rus
 
01.04.13
13:51
(3) Что-то я вообще не поняла ((( И куда это подставлять?
7 GaikA_13rus
 
01.04.13
13:52
(3) Что означает число 86400?
8 Wobland
 
01.04.13
13:53
я что-то в структуре данных потерялся.. кого не нужно записывать? условие для ненужности вон - (КонтрольнаяДата-НачалоМесяца)>5*86400
9 Wobland
 
01.04.13
13:53
(7) 60*60*24
10 GaikA_13rus
 
01.04.13
13:56
Блин, там в условии должно быть что-то типа:

Если ЭлементыФормы.Месяц > НачалоМесяца(ТекущаяДата()) Тогда
           ЭлементыФормы.ПоКонтрагенту.ТолькоПросмотр = Ложь;
       Иначе
           ЭлементыФормы.ПоКонтрагенту.ТолькоПросмотр = Истина;
КонецЕсли;



Только вот как правильно все это написать, я не знаю и с 5м числом тем более (((
11 GaikA_13rus
 
01.04.13
13:58
Только если я так ставлю условие, то у меня при открытии элемента справочника выходит сообщение: "Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)"
12 Wobland
 
01.04.13
13:59
с текущей датой некошерно сравнивать. можно открыть 1Ску, уйти курить на неделю, вернуться и получить разрешённое состояние доступности
13 Wobland
 
01.04.13
14:00
что не нужно записывать? какую дату применять для контроля?
14 Ювелир
 
01.04.13
14:04
В ограничении на доступ к элементу напиши условие где текущая дата < 5 числа текущего месяца текущего года

ТекущаяДата()< Началомесяца(текущаяДата()) - 5*86400)

Это в принципе тоже, что в (3)

(10) ЭлементыФормы.Месяц использовать так нельзя ибо это текст( тип данных строка).
15 Ювелир
 
01.04.13
14:05
(14) Прошу прщения
   
В ограничении на доступ к элементу напиши условие где текущая дата < 5 числа текущего месяца текущего года

ТекущаяДата()< Началомесяца(текущаяДата()) + 5*86400)
16 Wobland
 
01.04.13
14:05
(14) это есть едит-бокс ваще-то ;)
17 GaikA_13rus
 
01.04.13
14:07
Дата для контроля - это текущая дата. Компы каждый вечер выключаются офис небольшой, начальник экономный ))) А вот вопрос про то что записывать не поняла. Если имеете ввиду изменение реквизита "ПоКонтрагенту", то его можно изменять только до 5-го числа месяца. Т.е. прошлые месяца менять вообще нельзя, текущий месяц только до 5-го чила, а не наступившие месяца менять в любое время
18 GaikA_13rus
 
01.04.13
14:08
(14) Если я поставлю такое ограничение, то он за прошлые месяца может изменять. Навсякий случай скину скриншот формы, чтобы понятней было...
19 GaikA_13rus
 
01.04.13
14:11
20 GaikA_13rus
 
01.04.13
14:13
(14) Это не тип строка. Он произвольный. И в коде задается:


Дата = НачалоМесяца(ТекущаяДата());        
ЭлементыФормы.Месяц.Заголовок = Формат(Дата,"ДФ=""ММММ""");
21 zladenuw
 
01.04.13
14:15
(20) и смысл вот этой строки. у тебя значение не хранится в разрезе месяцев. а сугубо последние которое изменил пользователь. создай РС периодичность месяц, измерение контрагент. ресурс значение плана. наверное как то так.
22 Wobland
 
01.04.13
14:16
чую тут какую-то методологическую ересь (это из-за текущей даты), но сформулировать не могу..
23 GaikA_13rus
 
01.04.13
14:18
(21) Что такое РС?
24 zladenuw
 
01.04.13
14:19
(23) Регистр Сведений
25 GaikA_13rus
 
01.04.13
14:23
(24) Так он уже есть. И данные записываются в него. В самом справочнике нет такого реквизита как "ПоКонтрагенты", "Месяц". Эти реквизиты сохраняются в регистре сведений и при открытии (а так же переключении месяцев) берутся из этого регистра.
26 MSII
 
01.04.13
14:34
(20) При изменении месяца у тебя дата начала этого месяца определяется. Проверяй ее как написано в (3) и меняй доступность элементов формы на этой вкладке. Элементарная же задача.
27 GaikA_13rus
 
01.04.13
14:48
(26) Я запуталась окончательно (((

На какой вкладке?
28 MSII
 
01.04.13
15:11
(27) На вкладке План продаж.
29 GaikA_13rus
 
01.04.13
15:45
Ну вот так вроде работает...
Только вот я дату на компьютере меняю на 6-е и все равно за апрель план меняется (((

Если РольДоступна ("ИгорьОлегович") Тогда
       Если Дата < (НачалоМесяца(ТекущаяДата()) - 5*86400)
           Тогда
           ЭлементыФормы.ПоКонтрагенту.Доступность = Ложь;
       Иначе
           ЭлементыФормы.ПоКонтрагенту.Доступность = Истина;
       КонецЕсли;
КонецЕсли;
30 MSII
 
01.04.13
15:55
Если РольДоступна ("ИгорьОлегович") Тогда
ЭлементыФормы.ПоКонтрагенту.Доступность = ДатаНачалаВыбранногоМесяца + 5*86400 >= ТекущаяДата();
КонецЕсли;
31 Fish
 
01.04.13
15:58
(29) Роль прикольно называется :)
32 GaikA_13rus
 
01.04.13
15:58
(30) А Дата начала выбранного месяца - это что?
33 GaikA_13rus
 
01.04.13
15:59
(31) Ага, у нас просто директор Кузьмин Игорь Вячеславович, а его зам - Кузьмин Игорь Олегович. (Говорят что не родственники)
34 Fish
 
01.04.13
16:02
(33) У вас в конфе роли по имени-отчеству сотрудников называются? Прикольно.
35 GaikA_13rus
 
01.04.13
16:03
(34) А он вообще по должности непонятно кто. Поэтому так...
36 GaikA_13rus
 
01.04.13
16:04
+(35) Это еще не самое прикольное. Вот до меня программер создал роль "ЖенаДиректора" ^_^
37 GaikA_13rus
 
01.04.13
16:06
Я вот если ставлю + 5 * 86400, то он мне вообще за апрель менять не дает. (Дата на компе 01.04.13)
38 MSII
 
01.04.13
16:09
(32) Начало выбранного месяца.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший