Подскажите, пожалуйста, как запретить открытие формы, если открыта другая форма. Например, запретить открытие справочник по коду "32", если открыт документ "32". Что то в таком роде... Ну или как переловить, открыта ли форма документа "32", тогда можно будет вписать в справочник ПриОткрытии запрет
Подскажите, пожалуйста, как запретить открытие формы, если открыта другая форма. Например, запретить открытие справочник по коду "32", если открыт документ "32". Что то в таком роде... Ну или как переловить, открыта ли форма документа "32", тогда можно будет вписать в справочник ПриОткрытии запрет
А надо ли открывать документ или справочник с кодом 33? если нет, тогда открыть форму модально надо
Вы станете богаче, лишь став умнее... Чем дальше в лес, тем толще партизаны. Нельзя недооценивать, не предсказуемость тупизны...
А надо ли открывать документ или справочник с кодом 33?
простите, не понял вопрос... если я открою документ 33 модально, так я тогда вообще ничего открыть не смогу, а мне нужно запрет именно на соответствующий элемент справочника
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Цитата(ZhenyaYa @ 21.11.12, 17:57)
Что то в таком роде...
Так не пойдет, давайте конкретнее. Какая связь между доком "32" и справочником "32*. В чем вообще смысл такой блокировки? Может просто слегка развить много где имеющийся механизм, блокирующий изменение некоторых реквизитов справочника при наличиии в системе документов определенного вида?
Какая связь между доком "32" и справочником "32*. В чем вообще смысл такой блокировки?
В доке есть реквизит, ссылаемый на справочник, и наоборот При открытии, как и при записи, справочника происходит изменение документа соответствующего ему документа, и наоборот. Может получится неразбериха...
Цитата
блокирующий изменение некоторых реквизитов справочника при наличиии в системе документов определенного вида?
Это уже неразбериха. При открытии ничего меняться не должно в принципе
Согласен, погорячился Не при открытии, а во время работы, запустили процедуру в доке, в справочнике поменялась информация, плюс при записи дока информация меняется... Реальный пример очееень долго нужно будет объяснять) Просто подскажите можно ли это сделать каким то способом? Если нет, буду искать как обойти...
Подскажите, пожалуйста, как запретить открытие формы, если открыта другая форма. Например, запретить открытие справочник по коду "32", если открыт документ "32". Что то в таком роде... Ну или как переловить, открыта ли форма документа "32", тогда можно будет вписать в справочник ПриОткрытии запрет
Ну, как вариант, завести глобальную переменную - флаг, в которую при открытии документа "32" будет записываться какая-то инфа. А при октрытии элемента справочника - анализировать оную инфу и, в случае необходимости, блокировать открытие формы элемента. Как-то так.
Ну, как вариант, завести глобальную переменную - флаг, в которую при открытии документа "32" будет записываться какая-то инфа. А при октрытии элемента справочника - анализировать оную инфу и, в случае необходимости, блокировать открытие формы элемента. Как-то так.
Группа: Основатель
Сообщений: 13983
Из: Киев
Спасибо сказали: 4553 раз
Рейтинг: 3682.7
ZhenyaYa, храните не просто глобальную переменную, а глобальную переменную в виде таблицы значений с 2 колонками: Документ, Справочник. При открытии документа туда будет добавляться строка какой документ какой элемент справочника блокирует. Так же при открытии проверяйте есть ли в таблице элемент справочника, который в данном документе. Если есть - значит документ не открываем и пишем, что элемент заблокирован таким-то документом. При закрытии, соответственно, удаляем соответствующую строку из таблицы.
ZhenyaYa, храните не просто глобальную переменную, а глобальную переменную в виде таблицы значений с 2 колонками: Документ, Справочник. При открытии документа туда будет добавляться строка какой документ какой элемент справочника блокирует. Так же при открытии проверяйте есть ли в таблице элемент справочника, который в данном документе. Если есть - значит документ не открываем и пишем, что элемент заблокирован таким-то документом. При закрытии, соответственно, удаляем соответствующую строку из таблицы.
Спасибо Работает как надо
Еще один вопрос, я в глобальном переменной глВозвр делаю таблицей значений в процедуре ПриНачалеРаботыСистемы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0
кхм. а что, если один пользователь открыл документ "ЫЫЫ" (который будет пытаться откорректировать элемент справочника "ыыы") - а другой пользователь в это время открыл элемент справочника "ыыы" (который будет пытаться откорректировать документ "ЫЫЫ", котороый открыт у первого пользователя), ммм?..
Цитата(ZhenyaYa @ 21.11.12, 18:48)
В доке есть реквизит, ссылаемый на справочник, и наоборот При открытии, как и при записи, справочника происходит изменение документа соответствующего ему документа, и наоборот. Может получится неразбериха...
Допустим, что. Документ нельзя открывать на редактирование, если кто-то (кто угодно!) в это время редактирует элемент справочника, который прописан в реквизите, допустим, "ыыы" этого документа. Тогда достаточно в модуле формы такого документа, в предопределенной процедуре "ПриОткрытии" добавить следующий код:
Если Форма.ТолькоПросмотр()<>1 Тогда Если ыыы.Выбран()<>0 Тогда тСпр=СоздатьОбъект("Справочник."+ыыы.Вид()); тСпр.НайтиЭлемент(ыыы); Если тСпр.Блокировка(1)<>1 Тогда Предупреждение("Ненене. Кто-то корректирует """+ыыы.ПолноеНаименование()+"""... приходите в єтот документ чуть позже.",12); СтатусВозврата(0); Возврат; // ну или Форма.ТолькоПросмотр(1); чтобы не скучал человек... Иначе тСпр.Блокировка(0) КонецЕсли; КонецЕсли КонецЕсли; КонецПроцедуры //ПриОткрытии
Допустим, что. Элемент справочника нельзя открывать на редактирование, если кто-то (кто угодно!) в это время редактирует элемент справочника, который прописан в реквизите, допустим, "ЫЫЫ" элемента справочника. Тогда достаточно в модуле формы элемента такого справочника, в предопределенной процедуре "ПриЗаписи" добавить следующий код:
Если Форма.ТолькоПросмотр()<>1 Тогда тДок=СоздатьОбъект("Документ"); Если тДок.НайтиДокумент(ЫЫЫ)<>0 Тогда Если тДок.Блокировка(1)<>1 Тогда Предупреждение("Ненене. Кто-то корректирует Документ """+ЫЫЫ+"""... приходите в єтот элемент справочника чуть позже.",12); СтатусВозврата(0); Возврат; // ну или Форма.ТолькоПросмотр(1); чтобы не скучал человек... Иначе тДок.Блокировка(0) КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры //ПриОткрытии
как-то так...
Сообщение отредактировал Cthulhu - 22.11.12, 18:03
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0
Цитата(ZhenyaYa @ 23.11.12, 13:39)
Cthulhu, да, вашим методом получше будет
Только ещё надо себе отчет отдавать, например, ещё в следующем. если упомянутые реквизиты в процессе редактирования могут быть изменены... а кто-то в это время уже редактирует тот самый элемент справочника/документ, который выбирается в етот реквизит.... тоо.... ну, например.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!