Как заполнить формы любого справочника/документа в 1с8.2, Как заполнить формы любого справочника/документа в 1с8.2
Столкнулся с такой задачей: есть УПП с кучей справочников и документов. Хотелось бы при открытии документа чтобы реквизиты и табличные части любого документа заполнялись бы из файла или регистра а не из самой базы и также записывались бы туда при записи. Понимаю что можно вставить обработчик в каждый справочник и документ, но выглядит очень трудоёмко.
Пытался сделать что-то через подписку на события и если еще при записи все выглядит вполне реальным (примеров много на сайте - возьмём тот же журнал регистрации, где новые события (изменения реквизитов и т.п.) как раз пишутся в справочник или файл, но не могу понять как сделать заполнение реквизитов при открытии любой формы.
Кто поможет буду благодарен (материально), в долгу не останусь
Пытался сделать что-то через подписку на события и если еще при записи все выглядит вполне реальным (примеров много на сайте - возьмём тот же журнал регистрации, где новые события (изменения реквизитов и т.п.) как раз пишутся в справочник или файл, но не могу понять как сделать заполнение реквизитов при открытии любой формы.
Кто поможет буду благодарен (материально), в долгу не останусь
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Это обработка "ОбработкаЗаполнения" вызывается когда вводишь на основании, а не при открытии.
На сколько я помню подписки на "ПриОткрытии" нет.
Необходимо написать универсальную функцию в общем модуле, и вызывать ее при открытии необходимого справочника/документа.
Обязательно проверять новый ли это объект - что бы не модифицировать существующие(заполнение ведь для новых - я так понял).
Наверно лучше что бы данные заполнялись из регистра, а не из файла, потому что читать файл каждый раз при открытии медленее чем из регистра.
А для записи использовать подписку.
На сколько я помню подписки на "ПриОткрытии" нет.
Необходимо написать универсальную функцию в общем модуле, и вызывать ее при открытии необходимого справочника/документа.
Обязательно проверять новый ли это объект - что бы не модифицировать существующие(заполнение ведь для новых - я так понял).
Наверно лучше что бы данные заполнялись из регистра, а не из файла, потому что читать файл каждый раз при открытии медленее чем из регистра.
А для записи использовать подписку.
При открытии как раз и надо заполнять часть реквизитов из справочника/файла. Есть также задумка записывать какие формы у каких пользователей открыты. А в общий модуль может как-нибудь через обработку оповещения? Без внедрения функции при открытии в каждый справочник/документ я так понял не обойтись? Может есть тогда автоматизированный вариант внедрения кода во все необходимые объекты конфигуратора в обработчик при открытии?
Надо при открытии любой формы знать что открыто, заполнить её другими данными и мониторить кто и что вводит в данный момент формы а после записи данных сдублировать их в регист (файл). При этом лень менять исходный код во всех справочниках и документах чтобы вставить обработчик в процедуру приоткрытии(). Ищу другой способ (если есть).
(5) Т.е. если я правильно понял, - открыто несколько форм, пользователь заполняет одну из них (в случайном порядке) и данные должны получать другие формы? В принципе ничего невозможного нет, но вам стоит подумать - А правильно ли продуман пользовательский интерфейс.
Вот вы себя сами послушайте, уважаемый:
ЧТО открыто? Дверь в комнате, где работает пользователь? Форточка в кабинете главного бухгалтера?
Давайте заполним текстом лицензионного соглашения Microsoft? Кросс-платформенное решение! На любой винде будет работать!!!
Пишем капчу с экрана в видеофайл?
Может всё-таки стоило над ответом подумать больше 4-х минут?
compmir пишет:
Надо при открытии любой формы знать что открыто
Надо при открытии любой формы знать что открыто
ЧТО открыто? Дверь в комнате, где работает пользователь? Форточка в кабинете главного бухгалтера?
compmir пишет:
заполнить её другими данными
заполнить её другими данными
Давайте заполним текстом лицензионного соглашения Microsoft? Кросс-платформенное решение! На любой винде будет работать!!!
compmir пишет:
и мониторить кто и что вводит в данный момент формы а после записи данных сдублировать их в регист (файл)
и мониторить кто и что вводит в данный момент формы а после записи данных сдублировать их в регист (файл)
Пишем капчу с экрана в видеофайл?
Может всё-таки стоило над ответом подумать больше 4-х минут?
Конфигурация - стандартная УПП. Пользователь открывает форму например существующего контрагента "Вася" а программа должна все реквизиты (ИНН, телефоны и адреса) либо создав клон формы "контрагенты" либо в уже существующую форму вытащить из другого места а при записи записать их туда а не в базу. (Нужно для шифрования - данные в базе ЗАШИФРОВАНЫ) они должны при открытии формы проходить расшифровку и только потом попадать в форму.
compmir пишет:
Конфигурация - стандартная УПП. Пользователь открывает форму например существующего контрагента "Вася" а программа должна все реквизиты (ИНН, телефоны и адреса) либо создав клон формы "контрагенты" либо в уже существующую форму вытащить из другого места а при записи записать их туда а не в базу. (Нужно для шифрования - данные в базе ЗАШИФРОВАНЫ) они должны при открытии формы проходить расшифровку и только потом попадать в форму.
Мсье знает толк в извращениях...
Конфигурация - стандартная УПП. Пользователь открывает форму например существующего контрагента "Вася" а программа должна все реквизиты (ИНН, телефоны и адреса) либо создав клон формы "контрагенты" либо в уже существующую форму вытащить из другого места а при записи записать их туда а не в базу. (Нужно для шифрования - данные в базе ЗАШИФРОВАНЫ) они должны при открытии формы проходить расшифровку и только потом попадать в форму.
compmir пишет:
Пишем капчу с экрана в видеофайл?
а средствами 1с это можно сделать?
Вообще, это была шутка... Но если хочется камасутры, то ActiveX (через COMОбъект) в помощь...
Пишем капчу с экрана в видеофайл?
а средствами 1с это можно сделать?
compmir пишет:
Конфигурация - стандартная УПП. Пользователь открывает форму например существующего контрагента "Вася" а программа должна все реквизиты (ИНН, телефоны и адреса) либо создав клон формы "контрагенты" либо в уже существующую форму вытащить из другого места а при записи записать их туда а не в базу. (Нужно для шифрования - данные в базе ЗАШИФРОВАНЫ) они должны при открытии формы проходить расшифровку и только потом попадать в форму.
Конфигурация - стандартная УПП. Пользователь открывает форму например существующего контрагента "Вася" а программа должна все реквизиты (ИНН, телефоны и адреса) либо создав клон формы "контрагенты" либо в уже существующую форму вытащить из другого места а при записи записать их туда а не в базу. (Нужно для шифрования - данные в базе ЗАШИФРОВАНЫ) они должны при открытии формы проходить расшифровку и только потом попадать в форму.
а это случай не в честь нашего закона о защите персональных данных?
Это же надо такое придумать :)
Мне кажется тут неверный подход к решению проблемы.
получение реквизитов не столь сложно:
вот пример получение всех реквизитов табличной части документа
передаёшь в функцию, название документа и название табличной части
&НаСервере
Функция СформироватьСтруктуруТабличнойЧастиДокумента(Документ, ИмяТабличнойЧасти) Экспорт
СтруктураТабличнойЧастиДокумента = Новый Структура;
Для Каждого Реквизит из Документ.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты Цикл
СтруктураТабличнойЧастиДокумента.Вставить(Реквизит.Имя, Реквизит.Имя);
КонецЦикла;
Возврат СтруктураТабличнойЧастиДокумента;
КонецФункции
но я согласен с другими- защиту ваших данных можно и нужно решать другими способами - их тьма с высокой степенью защиты - не взломать, в 1С ничего переделывать не надо. Можно по отключать видимость у части реквизитов документа, и закрыть доступ на важные части данных.
вот пример получение всех реквизитов табличной части документа
передаёшь в функцию, название документа и название табличной части
&НаСервере
Функция СформироватьСтруктуруТабличнойЧастиДокумента(Документ, ИмяТабличнойЧасти) Экспорт
СтруктураТабличнойЧастиДокумента = Новый Структура;
Для Каждого Реквизит из Документ.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты Цикл
СтруктураТабличнойЧастиДокумента.Вставить(Реквизит.Имя, Реквизит.Имя);
КонецЦикла;
Возврат СтруктураТабличнойЧастиДокумента;
КонецФункции
но я согласен с другими- защиту ваших данных можно и нужно решать другими способами - их тьма с высокой степенью защиты - не взломать, в 1С ничего переделывать не надо. Можно по отключать видимость у части реквизитов документа, и закрыть доступ на важные части данных.
На сомом деле автор если бы написал цель защиты, от кого и при каких условиях надо защитится, понятнее было какое решение нужно, возможно достаточно иметь базу зашифрованную на носителе. Если нужно опять же брать с другого места, я бы написал собственный журнал (справочников\документов) для которых необходимы подобные действия, данные по заполнению журнала брал бы из шифрованной базы (COMОбъект), и писал бы их туда же.
Если интересно могу описать куда рыть.
Если интересно могу описать куда рыть.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот