Имя: Пароль:
1C
1С v8
Вопрос про ввод на основании
0 Valiant
 
15.03.12
12:58
Как при вводе на основании перед вводом проверить документ основания на изменения или принудительно записывать перед этим ?
1 Grusswelle
 
15.03.12
12:59
Основание = ссылка, не объект. Так что imho лучше записывать, разумеется.
2 Fish
 
15.03.12
13:00
Вынос мозга какой-то. А запятые никак не расставить?
3 Wobland
 
15.03.12
13:02
(2) хм.. а не нужны. слова переставить надо бы, да
4 Reset
 
15.03.12
13:04
Явно говорит про открытую форму с изменениями, из которой жмут на основании.
Я как-то предлагал предлагал через ссылку получать форму и проверять модифицировнность, но меня обкакали, поэтому не буду второй раз ;)
5 Fish
 
15.03.12
13:08
(3) парочку я бы поставил.

По теме. А не проще это оставить на совести вводящего? Или написать инструкцию для пользователей, чтобы они знали, что перед вводом на основании надо жмакнуть кнопочку "Записать", чем извращаться с разного рода проверками? Всё равно найдется дурак, который поменяет что-нибудь уже после ввода на основании. Ведь на все случаи жизни проверки всё равно не напишешь.
6 Valiant
 
15.03.12
13:10
Открыл документ, поменял цену, ввожу на основании этого документа другой документ, как проверить что форма изменена ? У формы нету события "При вводе на основании" ), в том подчиненном документе я уже не могу проверить на модифицированность.
7 Valiant
 
15.03.12
13:11
Вот как раз и надо поставить защиту от дураков )
8 Reset
 
15.03.12
13:12
Fish правильно говорит, ну заставишь ты го записать, создаст он, а потом он возьмет и опять поменяет. Он же "дурак" (с).
Будешь добавлять проверку, а не создан ли на основании, и не давать менять цену? :)
9 Valiant
 
15.03.12
13:13
Это уже отмазки )))
10 Valiant
 
15.03.12
13:14
Задача все равно осталась не решенной )
11 fisher
 
15.03.12
13:14
Можно так попробовать исхитриться - по ссылке получить форму. Это будет открытая форма документа основания (можно для очистки совести проверить на Открыта()).
После этого проверяешь модифицированность и делаешь что хочешь. Или грозно ругаешься или принудительно записываешь.
12 Fish
 
15.03.12
13:16
(7) Опыт показывает, что на любую защиту найдётся дурак, который эту защиту обойдёт, либо не заметит :)). А загромождать конфу лишними проверками - только тормозить работу базы.

Я не против каких-то примитивных проверок, но, имхо, не зря в типовых такая проверка не реализована. Человек, работающий с документами должен понимать что он делает. И нести ответственность за неправильный ввод данных.

А твой вопрос - это попытка решить административные вопросы техническими методами.
13 fisher
 
15.03.12
13:17
(11) + Я недавно подобным макаром одну хотелку реализовывал - чтобы после проведения дока на основании автоматом закрывалась форма документа-основания :)
14 Valiant
 
15.03.12
13:19
Форма = Основание.ПолучитьФорму("ФормаДокумента");
Форма.Модифицированность() //говорит правду
15 mikecool
 
15.03.12
13:20
проверять в ПередОткрытием формы
16 Valiant
 
15.03.12
13:20
а если несколько открыто форм )))
17 Fish
 
15.03.12
13:21
(9) Это не отмазки, это реальный опыт. Видел я конфы, в которых были попытки внедрить подобные "защиты от дурака". Документы там открывались и записывались по 5 минут. И всё равно находились идиоты, которые умудрялись сделать что-то, не предусмотренное этими защитами. Так что правильнее просто написать инструкции по вводу на основании и всем пользователям раздать её под подпись.
18 Лирик
 
15.03.12
13:21
(6) Зато у документа вводимого на основании есть событие "ОбработкаЗаполнения", а в типовых конфигурациях есть пример как организовать процедуру проверки модифицированности: при печати из формы проверяет и записывает.
(14) Можешь получить другую форму. Ответ "нет".
19 fisher
 
15.03.12
13:22
(14) Лучше еще Открыта() проверяй на всякий случай.
(16) Несколько форм одного дока можно открыть только спецом задавая ключ уникальности.
20 Valiant
 
15.03.12
13:23
а несколько форм не может быть открыто, в общем:


Процедура ОбработкаЗаполнения(Основание)


       
       Форма = Основание.ПолучитьФорму("ФормаДокумента");
       Форма.Модифицированность();
   

КонецПроцедуры // ОбработкаЗаполнения()

будем считать что работает )
всем спасиба
21 Reset
 
15.03.12
13:23
(18) "Можешь получить другую форму. Ответ "нет"."
Подумал, СП почитал, прежде чем отвечать?
22 Valiant
 
15.03.12
13:23
согласен с (19)
23 Лирик
 
15.03.12
13:24
(21) и подумал и почитал
24 Fish
 
15.03.12
13:25
(20) Что будешь делать, чтобы запретить менять цену уже после ввода на основании? Допустим я записал док, ввел на основании другой, и в первом поменял цену. Что тогда?
25 Valiant
 
15.03.12
13:27
(24) это уже их дело, мне главное что б в подчиненный документ вышло с учетом изменений основания )
26 Fish
 
15.03.12
13:28
(25) Так ты не понял. Я меняю основание СРАЗУ ПОСЛЕ создания подчинённого дока. И в чём смысл твоей проверки тогда? Она никак косяк не исключает.
27 fisher
 
15.03.12
13:28
(24) А в чем сложность? Элементарно же делается.
28 Reset
 
15.03.12
13:29
(25) Отмазки. Естьт возможность создать документы с разной ценой? Есть. Задача осталась не решенной ;)
29 Fish
 
15.03.12
13:29
(27) Напиши как?
30 fisher
 
15.03.12
13:31
(29) Проблема, как я понял - залочить данные еще открытого документа-основания после проведения документа на основании? Мы об этом говорим?
31 Fish
 
15.03.12
13:37
(30) Не совсем. Проблема немного глубже. Как исключить возможность различных данных в документе-основании и подчинённом. поверь мне, она конечно, решаема, но требует кучи проверок как при открытии, так и при вводе на основании и записи. Мы как-то такое реализовывали. И всё равно находились умники, которые умудрялись накосячить.
простой пример: Есть док основание. Я его записываю, нажимаю кнопку "ввести на основании". НЕ записывая подчинённый документ, меняю док-основание и после этого записываю подчинённый. Есть и другие варианты обхода. Как ты их все разрулишь и предусмотришь?
32 Reset
 
15.03.12
13:38
(30) А если поменяет До проведения ? -) Ну нажал, открылась вторая форма - переключился назад, поменял. Опа.
Лочить сразу при вводе на основании? А если он окажется от ввода (закроет окно)? При закрытии разлочивать, если без проведения? А если создаст на основании, закроет пред окно, снова откроет? Открыто будет доступны (введннного на основании еще нет(не записан)) И тд, и тп
33 Fish
 
15.03.12
13:39
+(31) В результате мы пришли к выводу, что гораздо проще издать инструкции и бить по рукам нерадивых сотрудников, чем городить сотню ненужных проверок. Тем более, что такие косяки выявляются элементарным отчётом.
34 fisher
 
15.03.12
13:39
(31) Количество вариантов которые нужно "зарезать" вполне себе конечно. Ничего военного на самом деле. Назови "незарезываемый".
35 Fish
 
15.03.12
13:42
(34) Никто не говорит, что оно бесконечно. Но если у тебя на основании одного дока может быть введено 10 подчинённых, тогда все эти проверки "на дурака" начинают серьёзно тормозить процедуры проведения. Особенно когда работает 150 человек и одновременно проводит кучу документов.
36 Конфигуратор1с
 
15.03.12
13:43
(31) (33) +100500. Когда работал с 1с еше как пользователь, сломал нечаянно хитромудрую защиту на доступ к папке, потому что не знал, что там есть защита)))
37 fisher
 
15.03.12
13:44
(33) Это совершенно отдельная тема. Ессно любая система должна быть разумно сбалансирована в плане защиты от дурака. Далеко не всегда имеет большой смысл резать все ошибочные варианты, если результат ошибки несложно и своевременно выкупается. Но относительно частые промашки пользователей всегда имеет смысл нейтрализовать программно.
38 fisher
 
15.03.12
13:45
(37) к (35)
39 Fish
 
15.03.12
13:46
(37) Вот поэтому ТС и надо подумать, а стоит ли делать эту проверку в принципе :)))
40 Fish
 
15.03.12
13:49
З.Ы. Как резюме: чем проще система, и чем меньше в ней подобного рода "проверок", тем более безглючно и надёжно она работает. Гораздо эффективнее учить пользователей правильно пользоваться программой.
41 fisher
 
15.03.12
13:50
Это уже его проблемы. Мне было интересно чисто технические моменты обсудить :)
А защита от дурака часто слишком завязана на конкретную специфику, чтобы можно было общие рекомендации плотно задвигать...
42 DS
 
15.03.12
13:51
(40) щетаю, защита от дурака должна присутствовать.
43 Fish
 
15.03.12
14:06
(41) Это были общие рекомендации применительно к конкретному случаю. Задача в (0) решаема, конечно, но очень долгим, громоздким и затратным с точки зрения производительности способом. А все те способы, которые здесь предлагались, проблему в (0) не решают.
44 DS
 
15.03.12
14:12
(43) "защита от дурака" всегда громоздка, затратна и объемна как по времени так и по коду.
45 Лирик
 
15.03.12
14:18
А вся то байда - запретить одновременно открывать более одной формы документа основания, и при создании подчиненного документа запретить изменение основания. Блокировать объект при СозданииНаСервере. Перед этим проверять мож кто другой его заблокировал. В обработкезаполнения подчиненных теже проверки. (ИМХО)
46 Fish
 
15.03.12
14:23
(45) Почитай внимательно (32). Подумай ещё :))
47 Лирик
 
15.03.12
15:22
(46) Подумал. Ввожу на основании, при заполнении подчиненного беру объект который принадлежит вызвавшей форме (она, как помним, одна в этот момент времени), проверяю модифицированность, записываю (провожу) основание, взвожу флаг запрещающий менять объект основание. Все, вопросы "Вы хотите записать/провести основание" добавить по вкусу.
48 Лирик
 
15.03.12
15:24
+(47) вернулся он в форму основания, а ему "фиг поменяешь".
49 Лирик
 
15.03.12
15:24
Задача вполне решаемая, причем малой кровью.
50 fisher
 
15.03.12
17:03
Я тоже не вижу ничего особо военного с точки зрения сложности и ресурсоемкости.
Но и горожу подобные огороды редко. Скорее не в качестве защиты от дурака, а когда не совсем стандартные механизмы приходится реализовывать и при этом гарантировать целостность данных.
51 Fish
 
15.03.12
17:14
(50) Тут дело не в том, что это так уж сложно реализовать (хотя и не так просто, как кажется на первый взгляд :). Просто когда начинается такая практика программных "защит от дураков", одним документом это не ограничивается. Руководство понимает, что проще напрячь программиста, чем дать по рукам нерадивым сотрудникам, и постепенно эти "защиты" накладываются друг на друга, и можно такие проблемы поиметь, что не дай бог. Я согласен, что пара тройка примитивных проверок "на дурака" должна быть, но главное, этим сильно не увлекаться.