![]() |
![]() |
![]() |
|
Запретить интерактивную запись Контрагента если не выбран основной договор | ☑ | ||
---|---|---|---|---|
0
1Сергей
17.04.13
✎
07:34
|
Т.е. у пользователя не должно быть возможности записать элемент справочника Контрагенты, если не указан основной договор. С другой стороны Договора контрагента - это подчиненный справочник. Значит невозможно добавить договор в незаписанного контрагента.
Как сделать? интересуют и управляемая и обычная формы элемента |
|||
1
чувак
17.04.13
✎
07:35
|
Разве основной договор не реквизит контрагента?
|
|||
2
IamAlexy
17.04.13
✎
07:36
|
(0) проверяй заполненность реквизита "Основной договор"
отсечь новые элементы можно через параметры.ключ.пустая() |
|||
3
shuhard
17.04.13
✎
07:37
|
(1) в 1С Бордель это не так
|
|||
4
1Сергей
17.04.13
✎
07:37
|
(2) и? у пользователя будет возможность создать контрагента без договоров, закрыть и забыть
|
|||
5
a_alenkin
17.04.13
✎
07:38
|
Делай в транзакции
|
|||
6
1Сергей
17.04.13
✎
07:39
|
(5) в какие моменты создавать транзакцию, фиксировать/отменять?
|
|||
7
Godofsin
17.04.13
✎
07:39
|
(5) +
|
|||
8
Sammo
17.04.13
✎
07:39
|
Создавай основной договор автоматически и привязывай его сразу.
|
|||
9
cw014
17.04.13
✎
07:40
|
Сам понимаешь абсурдность своего вопроса? В типовых конфах основной договор создается автоматически, после записи нового контрагента, и проставляется так же. Если же элемент не новый - тогда программно запрещай записывать элемент, если реквизит незаполнен.
|
|||
10
1Сергей
17.04.13
✎
07:40
|
(9) >> В типовых конфах основной договор создается автоматически
Это в БП? |
|||
11
IamAlexy
17.04.13
✎
07:41
|
(10) это где то в паралельной вселенной...
|
|||
12
MSII
17.04.13
✎
07:42
|
(10) И в УТ 10 тоже, в 11 не помню.
|
|||
13
1Сергей
17.04.13
✎
07:43
|
да, ладно...
|
|||
14
Рэйв
17.04.13
✎
07:44
|
Процедура ПередЗаписью()
Если Не ЗначениеЗаполнено(ОсновнойДоговорКонтрагента) Тогда Сообщить("Не выбран основной договор.") Отказ=Истина; Возврат; КонецЕсли; КонецПроцедуры; |
|||
15
MSII
17.04.13
✎
07:45
|
(13) В УТ точно.
|
|||
16
1Сергей
17.04.13
✎
07:46
|
(14) умный, да?
|
|||
17
1Сергей
17.04.13
✎
07:47
|
(15) В БП для Казахстана нет. А они очень похожи с российской
|
|||
18
Sammo
17.04.13
✎
07:48
|
(14) А если новый?
|
|||
19
MSII
17.04.13
✎
07:53
|
(18) А нечего базу засорять новыми контрагентами, хватит и имеющихся.
|
|||
20
1Сергей
17.04.13
✎
07:54
|
Вот если бы можно было как-то узнать, записывается элемент с закрытием формы или без, в процедуре ПередЗаписью, то проблема бы решилась.
|
|||
21
Лефмихалыч
17.04.13
✎
07:54
|
(0) невозможное возможно, если правильно кастовать кровавый спелл ПолучитьСсылкуНового()
|
|||
22
1Сергей
17.04.13
✎
07:55
|
(21) думал об этом, но пока не придумаю как реализовать
|
|||
23
Лефмихалыч
17.04.13
✎
07:57
|
(22) в чем проблема-то?
|
|||
24
1Сергей
17.04.13
✎
07:59
|
(23) сама логика какая?
там пока ЭтоНовый() = Истина, закладка "Счета и договоры" вообще не активна |
|||
25
IamAlexy
17.04.13
✎
07:59
|
(23) боязно.. слишком могуча сила... а ну как она вырвется на свободу и начнет причинять боль и унижение всем вокруг ?
|
|||
26
Рэйв
17.04.13
✎
08:00
|
(18)Ну..Тогда добавить услови
Если НЕ Ссылка.Пустая() Тогда |
|||
27
1Сергей
17.04.13
✎
08:00
|
(26) см (4)
Кароче, читай ветку, не тупи |
|||
28
dmpl
17.04.13
✎
08:00
|
(20) Ну дык обработай событие формы, будь мужиком!
(22) Дык ты владельца договора на эту ссылку регистрируй и записывай перед записью контрагента, а потом уже контрагента записывай. Правда, придется регулярно проверять на договоры без контрагентов... (24) Дык сделай активной, всего 1 строчка кода, причем, скорее всего, ее просто надо закомментировать... |
|||
29
Рэйв
17.04.13
✎
08:03
|
(27)
форму тогда не давай закрывать пока не выберет договор |
|||
30
Рэйв
17.04.13
✎
08:03
|
а больше никак
|
|||
31
Лефмихалыч
17.04.13
✎
08:04
|
(25) ну дык... чтобы быть одинэсником, надо иметь яйцы
|
|||
32
Рэйв
17.04.13
✎
08:04
|
только создавать стандартный "Основной договор" самому при записи
|
|||
33
1Сергей
17.04.13
✎
08:05
|
(29) как тогда интерактивно закрыть форму без записи?
|
|||
34
Лефмихалыч
17.04.13
✎
08:05
|
(29) при таком раскладе надо еще в форму договора чо-нить наговнокодить, чтобы создать новый было категорически нельзя, а потом наблюдать, как юзер бьется в вечном цикле рекурсивного ада
|
|||
35
Рэйв
17.04.13
✎
08:07
|
(33)А никак. Пусть делают договор, записывают и тогда могут закрыть
А ты проверяй пока Ссылка.ОсновнойДоговор не заполнено - флаг в руки и наразворот |
|||
36
Рэйв
17.04.13
✎
08:08
|
ну, только надо как то обработать отказ от ввода ..А то навечно зависнут)
|
|||
37
Лефмихалыч
17.04.13
✎
08:08
|
Я вообще не понимаю смысла в задаче. Зачем создавать контрагента, если договора с ним нет? Если договор есть, то достаточно организационных мер - назначить персонально ответственных за создание контрагентов и им в инструкцию прописать, что создавать меют право только, по подписанному договору и при создании контрагента создавать обязаны еще и договор.
|
|||
38
shuhard
17.04.13
✎
08:09
|
(37) окстись
|
|||
39
1Сергей
17.04.13
✎
08:10
|
(37) казалось бы, простая задача, а упирается в банальные особенности платформы :)
|
|||
40
Лефмихалыч
17.04.13
✎
08:10
|
(38) аргументы?
|
|||
41
shuhard
17.04.13
✎
08:14
|
(39) плохому танцору платформа мешает (с)
|
|||
42
ОбычныйЧеловек
17.04.13
✎
08:15
|
(39) И каким боком тут особенности платформы? В том, что ты не можешь решить элементарную задачу - платформа не виновата... Кто тебе мешает сделать свою форму ввода нового контрагента (довольно простую форму где будет наименование контрагента (+осн.параметры), наименование договора(+осн.параметры) и при записи создавать и контрагента и осн.доровор)
|
|||
43
Sammo
17.04.13
✎
08:15
|
Либо сделай отдельную общую форму, которая будет содержать данные по контрагенту и договору. И при закрытии (записи) из этой формы создавай/записывай сразу и контрагента и договор.
А форма контрагента вообще чтобы не открывалась |
|||
44
Лефмихалыч
17.04.13
✎
08:18
|
(39) дело в тебе, а не в платформе
|
|||
45
dmpl
17.04.13
✎
09:01
|
(39) Да ни во что она не упирается.
|
|||
46
В тылу врага
17.04.13
✎
09:03
|
да никак, запрещать юзать в документах единственный и правильный выход
|
|||
47
В тылу врага
17.04.13
✎
09:04
|
(44) давай без личностей, это не решаемая задача, а он не виноват
|
|||
48
1Сергей
17.04.13
✎
09:05
|
Сделал так
Процедура ПриЗаписи(Отказ) Если Не ЗначениеЗаполнено(ОсновнойДоговорКонтрагента) Тогда ВыборкаДоговоров = Справочники.ДоговорыКонтрагентов.ВыбратьИерархически( , Ссылка); Если ВыборкаДоговоров.Следующий() Тогда Сообщить("Не выбран Основной договор"); Отказ = Истина; Возврат; КонецЕсли; Если Вопрос("У контрагента нет договоров. Создать новый?", РежимДиалогаВопрос.ДаНет) <> КодВозвратаДиалога.Да Тогда Отказ = Истина; Возврат; КонецЕсли; ФормаЭлементаДоговор = Справочники.ДоговорыКонтрагентов.ПолучитьФормуНовогоЭлемента(); ФормаЭлементаДоговор.Владелец = Ссылка; ФормаЭлементаДоговор.ОткрытьМодально(); Если ЗначениеЗаполнено(ФормаЭлементаДоговор.Ссылка) Тогда ОсновнойДоговорКонтрагента = ФормаЭлементаДоговор.Ссылка; Записать(); Иначе Отказ = Истина; Возврат; КонецЕсли; КонецЕсли; |
|||
49
butterbean
17.04.13
✎
09:05
|
(47) толсто
|
|||
50
butterbean
17.04.13
✎
09:07
|
(48) кошмар
|
|||
51
1Сергей
17.04.13
✎
09:07
|
(50) это ты из-за диалогов в транзакции?
|
|||
52
dmpl
17.04.13
✎
09:13
|
(51) Не только. Надо еще на ОбменДанными.Загрузка = Истина проверять, как минимум. И директивы препроцессора расставить.
|
|||
53
1Сергей
17.04.13
✎
09:18
|
про обмен данными согласен. Но, про какие директивы ты говоришь? это обычная форма
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |