|
Автоматический подсчет даты. | ☑ | ||
---|---|---|---|---|
0
Novichok2020
13.06.20
✎
19:05
|
Здравствуйте. 1С начал изучать сравнительно недавно, и поэтому нуждаюсь в помощи) Имеется документ проведение медосмотра. В нем есть табличная часть медосмотр, а в ней соответственно реквизиты ФИО, Дата медосмотра, Дата следующего медосмотра. Мне необходимо, чтобы при заполнении реквизита Дата медосмотра, реквизит Дата Следующего медосмотра заполнялся автоматически и прибавлял еще год. Т.е. Дата следующего медосмотра = Дата медосмотра + год. (Оба реквизита имеют тип Дата)
|
|||
1
МихаилМ
13.06.20
✎
19:11
|
почему в сентябре и июне нашествие дебилов в этот форум ?
|
|||
2
Novichok2020
13.06.20
✎
19:13
|
Извиняюсь конечно, если я дебил, но мои текущие знания не позволяют это сделать.
|
|||
3
NorthWind
13.06.20
✎
19:18
|
(2) с такими вопросами проще всего гуглить. Например, "добавить год к дате 1С". И оно вам моментально найдет
Дата2 = ДобавитьМесяц (Дата1, 12) |
|||
4
МихаилМ
13.06.20
✎
19:30
|
(2) "Извиняюсь" - когда ВЫ себя извиняете. учите русский. пригодится.
|
|||
5
Novichok2020
13.06.20
✎
19:38
|
Ну так я себя и извинил за дебила. Извиняюсь = Извиняю себя, правильно. Извинил себя за то, что по вашим словам я дебил. Я задал вопрос, получил оскорбление, если так хочется, идите оскорбляйте родных и близких, и не обращайте внимание, на так называемых дебилов. (4)
|
|||
6
Novichok2020
13.06.20
✎
19:43
|
(3) Я Гуглил получилось вот такое.
&НаКлиенте Процедура МедосмотрДатаСледующегоМедосмотраПриИзменении(Элемент) Дата1 = Объект.Медосмотр.ДатаМедосмотра; Дата2 = ДобавитьМесяц(Дата1,12); Объект.Медосмотр.ДатаСледующегоМедосмотра = Дата2; КонецПроцедуры Но так как я совсем зеленый в этом вопросе, при попытке изменить дату следующего, мне пишет что поле объекта ДатаМедосмотра не найдено. Возможно я обратился как-то неправильно? |
|||
7
hhhh
13.06.20
✎
20:01
|
(6) да, на клиенте через 2 точки невозможно получить. Поэтому сделайте еще одну функцию на сервере, которая вытаскивает этк дату.
|
|||
8
hhhh
13.06.20
✎
20:06
|
(6) и вот тут у вас невероятная хрень.
Процедура МедосмотрДатаСледующегоМедосмотраПриИзменении(Элемент) Человек вводит с клавитуры дату следующего медосмотра, а вы тут же эту дату стираете и подсовываете ему свою дату. |
|||
9
Novichok2020
13.06.20
✎
20:25
|
(8) Это я для тестирования работы процедуры. А так сделал на АвтоПодбор, так ведь лучше?
&НаКлиенте Процедура МедосмотрДатаСледующегоМедосмотраАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) Дата1 = Объект.Медосмотр.ДатаМедосмотра; Дата2 = ДобавитьМесяц(Дата1,12); Объект.Медосмотр.ДатаСледующегоМедосмотра = Дата2; КонецПроцедуры Не могли бы Вы подсказать, как получить через функцию на сервере эту дату? |
|||
10
Злопчинский
13.06.20
✎
20:30
|
(9) написать серверную функцию. и из клиента обратиться к ней. функция выполнится на сервер, выдернет данные нужные и вернет нужный результат на клиент.
|
|||
11
Злопчинский
13.06.20
✎
20:30
|
функция выполнится на серверЕ
|
|||
12
Мимохожий Однако
13.06.20
✎
20:31
|
И не забудь серверную функцию сделать экспортный, а общий модуль должен иметь признак вызова.
|
|||
13
Novichok2020
13.06.20
✎
21:01
|
Попробывал так:
&НаКлиенте Процедура МедосмотрДатаСледующегоМедосмотраАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) Дата1 = ПолучитьДатуНаСервере(ПроведениеМедосмотра); Дата2 = ДобавитьМесяц(Дата1,12); Объект.Медосмотр.ДатаСледующегоМедосмотра = Дата2; КонецПроцедуры &НаСервере Функция ПолучитьДатуНаСервере(ПроведениеМедосмотра) Возврат ПроведениеМедосмотра.Медосмотр.ДатаМедосмотра; КонецФункции Но пишет, что не удается присвоить переменную. Опять же, я очень зеленый и не знаю всех тонкостей. |
|||
14
Ёпрст
13.06.20
✎
21:33
|
(13)Объект.Медосмотр.ДатаСледующегоМедосмотра = Дата2
Эту хрень перенеси на сервер и усё |
|||
15
Ёпрст
13.06.20
✎
21:35
|
И это..один хрен не заработает. Ты не совсем верно обращаешься к реквизитам табличной части
|
|||
16
Novichok2020
13.06.20
✎
23:29
|
(14) Зачем мне эту "хрень" переносить на сервер, что она в таком случае будет считывать?
Мне нужно получить данные из ДатаМедосмотра, как я понял с сервера, а затем внести их в ДатуСледующегоМедсмотра. Но махинация с сервером не работает. Процедура МедосмотрДатаСледующегоМедосмотраАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) Дата1 = ПолучитьДатуНаСервере(ПроведениеМедосмотра); Дата2 = ДобавитьМесяц(Дата1,12); Объект.Медосмотр.ДатаСледующегоМедосмотра = Дата2; КонецПроцедуры &НаСервере Функция ПолучитьДатуНаСервере(ПроведениеМедосмотра) // Данный способ получения информации из реквизита табл части я где-то загуглил, но он не работает. Возврат ПроведениеМедосмотра.Медосмотр.ДатаМедосмотра;//Тут я как понял должно вернутся значение реквизита табл. части Ругается в первую очередь сюда Дата1 = ПолучитьДатуНаСервере(ПроведениеМедосмотра) Пишет что переменная не определена. |
|||
17
Ёпрст
13.06.20
✎
23:54
|
(16) короче, у колонки с твоей датой назначь обработчик ПриИзменении .. в нём ужо пропиши
|
|||
18
Novichok2020
13.06.20
✎
23:58
|
(17) Сработало. Премного благодарен)
|
|||
19
Novichok2020
14.06.20
✎
00:02
|
Еще такой вопрос, а если у меня допустим есть справочник Должности. И если предположим должность водитель то +6 месяцев, а если все остальные +12 месяцев. Как это можно вклинить туда?(17)
Что-то вроде &НаКлиенте Процедура ДатаМедосмотраПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Медосмотр.ТекущиеДанные; Если Справочники.Должность.Реквизит = Водитель То СтрокаТабличнойЧасти.ДатаСледующегоМедосмотра = ДобавитьМесяц(СтрокаТабличнойЧасти.ДатаМедосмотра,6); Если Справочники.Должность.Реквизит = Все кроме Водитель То СтрокаТабличнойЧасти.ДатаСледующегоМедосмотра = ДобавитьМесяц(СтрокаТабличнойЧасти.ДатаМедосмотра,12); КонецПроцедуры |
|||
20
Novichok2020
14.06.20
✎
00:11
|
Хотя я даже неправильно поставил вопрос. Есть Справочник Сотрудники, в нем у каждого сотрудника есть реквизит табличной часть должность. И есть этот документ проведение медосмотра. В нем реквизит ФИО связан с этим справочником.
|
|||
21
Ёпрст
14.06.20
✎
07:49
|
(20) ФИО - тип какой? Справочник.Сотрудники ?
Если реквизит должность в табличной части, то если их несколько, какую братьтдля условия твоего? |
|||
22
hhhh
14.06.20
✎
08:48
|
(21) так он и выполняет процедуру для конкретной строки табличной части. С этим всё в порядке у него.
|
|||
23
ЕслиЧе
14.06.20
✎
14:35
|
(1) Ай маладэц!!!!
Самоутвердился? Что, на работе старшие товарищи задолбали, забегался кофе с печенюшками им подносить да ИТС развозить и решил таким образом ЧСВ свое приподнять на спичечный коробок? Хотел что-то умное сотворить, а получилось как обычно - гуано. Кажется что ТС неадекват - так пройди мимо, ничего не пиши. Сам когда начинал все знал? Вспомни себя! |
|||
24
Novichok2020
14.06.20
✎
16:21
|
(21) ФИО - СправочникСсылка.Сотрудники. Мне необходимо чтобы по этой получается связи происходил поиск фамилии в самом справочнике, и считывал из него данные т.е Табличная часть - ДолжностиСотрудников, реквизит табличной части - должность, а затем вот та часть, через если.
|
|||
25
Ёпрст
14.06.20
✎
17:58
|
(24) если должностей несколько, какую брать для услоыия?
|
|||
26
Novichok2020
14.06.20
✎
18:06
|
Водитель. (25) Только он проходит допустим 2 раза в год,а остальные раз в год
|
|||
27
Ёпрст
14.06.20
✎
20:38
|
&НаКлиенте
Процедура ДатаМедосмотраПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Медосмотр.ТекущиеДанные; СтрокаТабличнойЧасти.ДатаСледующегоМедосмотра = ДобавитьМесяц(СтрокаТабличнойЧасти.ДатаМедосмотра,ВернутьКоличествоМесяцев(СтрокаТабличнойЧасти.ФИО)); КонецПроцедуры &НаСервере Функция ВернутьКоличествоМесяцев(Сотрудник) Запрос=Новый Запрос(" |Выбрать |
|||
28
Ёпрст
14.06.20
✎
22:57
|
|
|||
29
D_E_S_131
15.06.20
✎
11:51
|
+ к (27) - ИМХО лучше добавить в таблицу на форме реквизит для хранения КолМесяцев, а заполнять его при изменении реквизита ФИО (при пустой ссылке в ФИО - обнулять). И тогда уже при расчете следующей даты осмотра брать данные из текущей строки.
|
|||
30
maxipunchik
15.06.20
✎
12:31
|
(23) Поддерживаю. Миха с катушек слетел
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |