|
УФ и проведение документа 8.3 интерфейс "Такси" | ☑ | ||
---|---|---|---|---|
0
GhostAnton
16.10.13
✎
12:48
|
Суть проблемы в следующем,есть самописная конфигурация на уф 8.2, столкнулся с проблемой при переделке на уф 8.3 с интерфейсом такси. В старых уф было организовано следующее, если не заполнено поле "сумма задатка" то перед записью выдавался вопрос "Провести документ без задатка?" в режиме да/нет, если нажимаешь да то документ проводится если нет то отказ от записи и проведения и показывался документ для корректировки.
В режиме такси отсутствуют модальные окна и модуль продолжает выполняться когда организуешь вопрос пользователю, все бы ничего только вот этот нюанс, на вопрос еще не ответили а документ провелся уже, пробовал делать так чтоб только после ответа документ сохранялся и закрывался но провести документ не получается выдает ошибку параметра записи. Помогите правильно организовать алгоритм чтоб не делать это через одно место. &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Если Объект.ДатаПараметра < НачалоДня(ТекущаяДата()) И Объект.Проведен = Ложь Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Исправьте дату состояния заказа!"; Сообщение.Поле = "ДатаПараметра"; //Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.ПутьКДанным = "Объект"; Сообщение.Сообщить(); //Сообщение = Новый СообщениеПользователю; //Сообщение.УстановитьДанные(Объект); //Сообщение.ИдентификаторНазначения = УникальныйИдентификатор; //Сообщение.Текст = "Исправьте дату состояния заказа!"; //Сообщение.Поле = "Объект.ДатаПараметра"; //Сообщение.Сообщить(); Отказ = Истина; Возврат; КонецЕсли; //если не введен задаток то спросить чтоно ввести документ без задатка, //если да то тогда распечатать иначе вернуться в форму и заставить ввести задаток!!! //при печати сразу проводить документ чтоб он не потерялся и вести взаиморасчеты с клиентами //в части должников на которых можно отдельно давать заказы Если Объект.Задаток = 0 И Объект.БезЗадатка = Ложь И Объект.Проведен = Ложь Тогда ТекстВопроса = НСтр("ru = 'Сохранить документ без задатка?'", "ru"); Оповещение = Новый ОписаниеОповещения( "ВопросЗакрытияДокумента", ЭтотОбъект, Отказ); ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет); Иначе //распечатаем квитанцию и пометим документ что квитанцию отпечатали на него КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВопросЗакрытияДокумента(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда Объект.БезЗадатка = Истина; Записать(РежимЗаписиДокумента.Проведение); //КАК СДЕЛАТЬ ПРАВИЛЬНО!!!!!!! :( Закрыть(); //ЭтотОбъект.Записать(РежимЗаписиДокумента.Проведение); //Закрыть(); //Возврат; Иначе Объект.БезЗадатка = Ложь; Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Введите сумму задатка!"; Сообщение.Поле = "Задатки"; //Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.ПутьКДанным = "Объект.Задатки[0].Сумма"; Сообщение.Сообщить(); //Возврат; КонецЕсли; КонецПроцедуры |
|||
1
GhostAnton
16.10.13
✎
14:29
|
Никто не сталкивался еще с этим?
|
|||
2
hhhh
16.10.13
✎
14:41
|
(1) ну как-то так
Если ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда Отказ = Истина; |
|||
3
banco
16.10.13
✎
14:42
|
(0) После ПоказатьВопрос Отказ = Истина;
|
|||
4
GhostAnton
16.10.13
✎
14:45
|
В этом то все и дело что так к сожалению нельзя насколько я правильно понял
{Документ.ЗаказТМЦ.Форма.ФормаДокументаУФ.Форма(122,8)}: Обращение к процедуре как к функции (ПоказатьВопрос) Если <<?>>ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда (Проверка: Тонкий клиент) |
|||
5
banco
16.10.13
✎
14:51
|
(4) не надо условие, просто после ПоказатьВопрос, Отказ =Истина; ты же в обработчике записываешь
|
|||
6
GhostAnton
16.10.13
✎
14:52
|
(3) да я пишу отказ истина, но дело в том что при ответе да не могу автоматом провести документ, только после второго нажатия на кнопку провести документ проводится: первый раз нажимаешь он спрашивает и устанавливает параметр а второй раз нажимаешь и он проводится и закрывается, если делаю сохранить() с режимом записи проведение, то выдает ошибку, если просто сохранить то документ записывается но не проведенный.
|
|||
7
MrStomak
16.10.13
✎
14:53
|
определить на форме реквизит "РезультатОтвета", перед записью если реквизит не заполнен показывать немодальный вопрос и отказываться от записи, в обработке события ответа на вопрос вызывать еще раз проведение.
|
|||
8
GhostAnton
16.10.13
✎
14:53
|
(5) так и делаю, но чтоб провести документ приходится второй раз нажимать на провести и закрыть после вопроса, а нужно чтоб после положительного ответа документ провелся и закрылся :(
|
|||
9
GhostAnton
16.10.13
✎
14:55
|
(7) У меня в модуле так и сделано и реквизит документа заведен для этого специально, как вызвать проведение программно открытого документа если Записать(РежимЗаписиДокумента.Проведение) выдает ошибку параметра :(
|
|||
10
banco
16.10.13
✎
14:57
|
(8) через дополнительные параметры в показатьвопрос передаешь параметрызаписи, в обработчике в ВопросЗакрытияДокумента ставишь в эту структуру флаг,что уже проверил и в ПередЗаписью проверяешь если есть этот флаг, то уже не задаешь вопрос
|
|||
11
GhostAnton
16.10.13
✎
14:59
|
Выдает конкретно вот это когда я пытаюсь провести, хотя синтаксис верный
{Документ.ЗаказТМЦ.Форма.ФормаДокументаУФ.Форма(138)}: Ошибка при вызове метода контекста (Записать) Записать(РежимЗаписиДокумента.Проведение); по причине: Несоответствие типов (параметр номер '1') |
|||
12
MrStomak
16.10.13
✎
14:59
|
Расширение управляемой формы для документа (Managed form extension for documents)
Записать (Write) Синтаксис: Записать(<ПараметрыЗаписи>) Параметры: <ПараметрыЗаписи> (необязательный) Тип: Структура. Структура параметров записи, которые могут быть обработаны в обработчиках событий записи. Состав параметров произвольный. Содержит предопределенные параметры записи РежимЗаписи и РежимПроведения. Предопределенные параметры передаются в метод объекта Записать. Параметры записи можно обработать в событиях формы ПередЗаписью, ПередЗаписьюНаСервере, ПриЗаписиНаСервере, ПослеЗаписиНаСервере, ПослеЗаписи. Возвращаемое значение: Тип: Булево. Истина - успешно записан; Ложь - в противном случае. Описание: Записывает объект. |
|||
13
GhostAnton
16.10.13
✎
15:03
|
(12) Вот то-то и оно что просто Записать() записывает документ, а вот с параметрами что его нужно провести не проводит а выдает ошибку из (11)
|
|||
14
Зойч
16.10.13
✎
15:04
|
делать не передзаписью, а в отдельной процедуре из которой вызывать записать()
|
|||
15
Зойч
16.10.13
✎
15:06
|
(13) параметры другие присмотрись
|
|||
16
GhostAnton
16.10.13
✎
15:07
|
(14) ответ на вопрос возвращается вообще в отдельную процедуру в которой я и пытаюсь записать сама логика у них теперь в "такси" такая
|
|||
17
banco
16.10.13
✎
15:09
|
(13) так передай правильный параметр
|
|||
18
GhostAnton
16.10.13
✎
15:13
|
(13) Не понимаю как его описать, в предыдущих версиях было Записать(РежимЗаписиДокумента.Проведение)
|
|||
19
GhostAnton
16.10.13
✎
15:14
|
(13) Блин что получается теперь структуру надо передавать вместо конкретно параметра???
|
|||
20
GhostAnton
16.10.13
✎
15:19
|
(13) Огромное спасибо, все получилось действительно теперь это пишется через структуру с параметром и в конечном итоге все заработало как я хотел
&НаКлиенте Процедура ВопросЗакрытияДокумента(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда Объект.БезЗадатка = Истина; ПарЗап = Новый Структура; ПарЗап.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение); Записать(ПарЗап); //КАК СДЕЛАТЬ ПРАВИЛЬНО!!!!!!! Закрыть(); //Возврат; Иначе Объект.БезЗадатка = Ложь; Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Введите сумму задатка!"; Сообщение.Поле = "Задатки"; //Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.ПутьКДанным = "Объект.Задатки[0].Сумма"; Сообщение.Сообщить(); //Возврат; КонецЕсли; КонецПроцедуры |
|||
21
Поросенок Петр
16.10.13
✎
15:25
|
В командах с галкой "изменяет данные" тоже подобная хрень.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |