Имя: Пароль:
1C
1C 7.7
v7: Установить время документа при записи (у существующего документа)
0 mastodont
 
08.12.16
09:06
Подскажите, кто еще помнит 7-ку.
Надо что бы у документа устанавливалось определенное время.
Сейчас сделано так, при записи:
Если Выбран()=0 Тогда
    АвтоВремяОтключить();
    УстановитьВремя(18,0,0);
КонецЕсли;

Но иногда пользователь меняет дату у уже существующего документа.
Как делать в этом случае?
1 Масянька
 
08.12.16
09:08
(0) Делать просто при записи (без условия Выбран). Не?
2 mastodont
 
08.12.16
09:09
(1) Не. В том то и дело, что ошибку выдает. Для того и условие.
3 Масянька
 
08.12.16
09:12
(2) А как пользователь меняет дату? У существующего.
4 пипец
 
08.12.16
09:14
через обработку  аля переоткрытие закрытие , у существующего - из формы документа - дату время не изменишь
5 mastodont
 
08.12.16
09:14
(3) Отменяет проведение. Открывает документ. Ставит дату. Проводит.
6 пипец
 
08.12.16
09:16
ваще у существующего есть кнопка в журнале - "изменить время документа" ессно у не проведенного
7 пипец
 
08.12.16
09:17
(5) обработкой не проще ? 5-ть срочек основных
8 Масянька
 
08.12.16
09:17
(5) На поле даты повесить ПриИзмененииДаты - не?
9 пипец
 
08.12.16
09:19
хм проще уж тогда на журнал кнопку повесить и из нее диалог обработки которая и отменить проведение и датувремя установит и проведет обратно
10 mastodont
 
08.12.16
09:19
(7) в смысле в журнале сделать кнопку "изменить дату"?
Может и проще, но хотелось универсальности...
11 mastodont
 
08.12.16
09:20
(7) (9)
5 строчек это слишком оптимистично. Документ же может не провестись, например...
12 Масянька
 
08.12.16
09:25
(2) И это - на что ругается-то?
13 mastodont
 
08.12.16
09:30
В общем пока оставил вот так:
АвтоВремяОтключить();
Если Выбран()=0 Тогда
    УстановитьВремя(18,0,0);
КонецЕсли;

У нового устанавливается нужное время, и при изменении даты оно остается.
14 Ёпрст
 
гуру
08.12.16
09:31
(4) изменишь.
Как минимум, есть 3 способа, как из открытой формы поменять дату уже записанного/проведенного
15 пипец
 
08.12.16
09:31
(11) и чо ? все сообщения из модуля так и так сообщаться - а уж если он по кнопке не проводится то из формы и подавно не проведется
ЗЫ чо там оптимистичного - универсаьено пишу с колен

ПеремДок=лялятекущаястрокаМойдок

Док=СоздатьОбъект("Документ."+ПеремДок.Вид())
Док.НайтиДокумент(ПеремДок)
Если Док.Проведен()>0 тогда

Док.Сделатьнепроведенным()

Док.ДатаДок

Док.Установитьвремя

запесать провести
16 пипец
 
08.12.16
09:32
(14) переоткрытием - если форма открыта для редактирования то в самой форме дату поменять ? не закрывая ?
17 пипец
 
08.12.16
09:33
(16) + у проведенного
18 Ёпрст
 
гуру
08.12.16
09:35
(16)
1.переоткрытие из формы обработки
2.фокус с копией документа - пример на синьоре валяется
3.прямым запросом
4.обработкой ожидания
19 Ёпрст
 
гуру
08.12.16
09:35
красивее всего - 2.
20 Ёпрст
 
гуру
08.12.16
09:35
таким способом, хоть владельца у подч. справочника меняй из открытой формы.
21 Ёпрст
 
гуру
08.12.16
09:36
ну и любой реквизит дока, в том числе, дату.
22 Ёпрст
 
гуру
08.12.16
09:37
23 пипец
 
08.12.16
09:44
(18) именно - абсолютно однофигственные способы - только переоткрытием ... что программно , что как ... уже обсуждалось стопиццот раз
24 Ёпрст
 
гуру
08.12.16
09:46
(23) если прямой запрос - нет переоткрытия, если способом с синьоры - тоже нет никакого переоткрытия
25 пипец
 
08.12.16
09:51
(24) есть - фактически это не из модуля формы ... это через другие объекты
ЗЫ спорить принципиальные нюансы не буду - для мну - это переоткрытие
26 Ёпрст
 
гуру
08.12.16
09:55
(25) открой (22) и посмотри - там нет переоткрытия. Если делать update - тоже нет переоткрытия.
27 пипец
 
08.12.16
10:00
Если Проведен()=1 Тогда
        ОткрытьФорму("Документ."+Вид(),ТекущийДокумент());
        СтатусВозврата(0);    Возврат;
    КонецЕсли;
    Если ПустоеЗначение(Форма.Параметр)=0 Тогда
        ИсхДок.НайтиДокумент(Форма.Параметр);
        КопироватьДокумент(Контекст,ИсхДок);
        Форма.Заголовок(Метаданные.Документ(Вид()).Представление()+" - "+СокрЛП(Строка(ИсхДок.НомерДок))+". "+?(ИсхДок.Проведен()=1,"Проведен.","Не проведен."),0);
    КонецЕсли;

Это чо тогда ? просто буковки ?)))))
28 Ёпрст
 
гуру
08.12.16
10:07
(27) Ладно, ты просто не догоняешь
29 Ёпрст
 
гуру
08.12.16
10:09
+ и если че, в этом коде нет ПЕРЕоткрытия.
30 Ёпрст
 
гуру
08.12.16
10:10
просто всегда открывается копия для экранной правки, сам объект при этом, не открывается вообще, тем самым, он не заблокирован никем и его можно править как угодно