Сохранить структуру в реквизит 1с
Кому-то покажется, что это БАЯН, но данная статья мне нужна как приложение к двум другим моим публикациям. Если кому-то будет данная информация полезной,то я буду счастлив.
Итак, существует ряд внешних печатных форм для 1с, которые предварительно "дозаполняются" перед формированием печатной формы. Пример тому печатная форма 1-Т, или Транспортная накладная, приложение №4. Возникла задача хранить заполненные реквизиты в информационной базе, чтобы можно было быстро переформировать ПФ без повторного заполнения ряда реквизитов.
Создаем регистр сведений, например, ХранилищеНастроекВнешнихОбработок.
1. ДокументСсылка - ссылка на любой документ.
2. Обработка - Строка (100)
1. Настройка -ХранилищеЗначения
В один из общедоступных модулей ИБ добавляем 2 процедуры
Процедура дкВосстановитьНастройкиВнешнейОбработки(ДокументСсылка, ОбработкаОбъект) Экспорт
Если ЗначениеЗаполнено(ДокументСсылка) Тогда
НаборЗаписей = РегистрыСведений.ХранилищеНастроекВнешнихОбработок.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ДокументСсылка.Установить(ДокументСсылка);
НаборЗаписей.Отбор.Обработка.Установить(Строка(ОбработкаОбъект));
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() <> 0 Тогда
СтруктураНастроек = НаборЗаписей[0].Настройка.Получить();
Если ТипЗнч(СтруктураНастроек) = Тип("Структура") Тогда
//восстановим реквизиты
Для каждого Ключ Из ОбработкаОбъект.Метаданные().Реквизиты Цикл
Попытка
ОбработкаОбъект[Ключ.Имя] = СтруктураНастроек[Ключ.Имя];
Исключение
КонецПопытки;
КонецЦикла;
//восстановим табличные части
Для каждого ТабличнаяЧасть Из ОбработкаОбъект.Метаданные().ТабличныеЧасти Цикл
Для каждого стр Из СтруктураНастроек[ТабличнаяЧасть.Имя] Цикл
ЗаполнитьЗначенияСвойств(ОбработкаОбъект[ТабличнаяЧасть.Имя].Добавить(),Стр);
КонецЦикла;
КонецЦикла;
//Процедура сохраняет значения реквизитов обработки
//
Процедура дкСохранитьНастройкиВнешнейОбработки(ДокументСсылка, ОбработкаОбъект) Экспорт
Если ЗначениеЗаполнено(ДокументСсылка) Тогда
//сформируем структуру настроек
СтруктураНастроек = новый Структура;
Для каждого Ключ Из ОбработкаОбъект.Метаданные().Реквизиты Цикл
СтруктураНастроек.Вставить(Ключ.Имя,ОбработкаОбъект[Ключ.Имя]);
КонецЦикла;
Для каждого ТабличнаяЧасть Из ОбработкаОбъект.Метаданные().ТабличныеЧасти Цикл
СтруктураНастроек.Вставить(ТабличнаяЧасть.Имя,ОбработкаОбъект[ТабличнаяЧасть.Имя].Выгрузить());
КонецЦикла;
НаборЗаписей = РегистрыСведений.ХранилищеНастроекВнешнихОбработок.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ДокументСсылка.Установить(ДокументСсылка);
НаборЗаписей.Отбор.Обработка.Установить(Строка(ОбработкаОбъект));
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() = 0 Тогда
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Настройка = Новый ХранилищеЗначения(СтруктураНастроек);
НоваяЗапись.ДокументСсылка = ДокументСсылка;
НоваяЗапись.Обработка = Строка(ОбработкаОбъект);
Иначе
//перезапишем настройку
Запись = НаборЗаписей[0];
Запись.Настройка = Новый ХранилищеЗначения(СтруктураНастроек);
Вот собственно и все.
Теперь во внешних печатных формах вызываем данные процедуры следующим образом:
В процедуре ПередОткрытием вызовем дкВосстановитьНастройкиВнешнейОбработки, а впроцедуре Перед закрытием - дкСохранитьНастройкиВнешнейОбработки.
Главным условием сохранения обработок является наличие реквизитов обработки, а не реквизитов формы (если кто не видит разницы пишите, расскажу.)
Представленный метод позволяет сохранять и восстанавливать как реквизиты, так и табличные части.
У управляемой формы реквизиты заведенные как реквизиты формы, при закрытии и открытии ее заново могут сохраняться и восстанавливаться, достаточно только поставить напротив галочку сохранять и в свойствах формы выбрать "АвтоматическоеСохранениеДанныхВНастройках" - Использовать.
Подробнее в этой статье Как сохранять и восстанавливать значения реквизитов на форме? и там же пример для обычных форм.
А что же делать с реквизитами, которые выступают в роли реквизитов объектов ?
у них такой настройки нет нет - напишем:
Открыв обработку и заполним поля закрываем ее, при следующем открытии все поля заполнены из сохраненных настроек:
Похожие FAQ
Как заполнить табличную часть формы программно? 6Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Посмотреть все результаты поиска похожих
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 19Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Как установить параметр динамического списка? 14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Список НЕ модальных методов в 1С 4
Найдено в интернете но говорят что с диска ИТС. Табличная часть
Как в Управляемом Приложении настроить автосохранение значений полей формы?
Заходим в свойства формы и для значения АвтоматическоеСохранениеДанныхВНастройках устанавливаем значение "Использовать":
Затем переходим к реквизитам формы и устанавливаем флажки напротив реквизитов, которые необходимо сохранять:
Похожие FAQ
Как заполнить табличную часть формы программно? 6Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем 1С Предприятие что это? 11
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Посмотреть все результаты поиска похожих
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 19Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список
Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
В этой статье разберем, как работать с сохранением данных на форме в 1С 8.3.
Сохраняемые данные формы 1С
У любой управляемой формы можно настроить сохранение данных реквизитов формы. Это значит, что форма сохранит данные введенные в поля, которые соответствуют реквизитам, при закрытии формы, а при последующем открытии формы информация в этих полях восстановятся автоматически.
Например, у меня на форме обработки имеются поля, данные в которых сохраняются при закрытии формы и восстанавливаются при последующем открытии.
Это поля Контрагент и Цена.
Для того, чтобы на управляемой форме данные из соответствующих реквизитов сохранялись, необходимо выполнить следующие действия.
Первое. У свойства формы «Автоматическое сохранение данных в настройках» установить значение «Использовать».
Второе. После того, как будет установлено значение в свойство, которое упоминали выше, у реквизитов формы появится колонка «Сохранение». Именно в этой колонке и нужно поставить флажки рядом с теми реквизитами, значения которых мы хотим сохранять при закрытии формы.
После этих действий, данные у отмеченных реквизитов будут сохраняться.
Хранилище настроек в 1С
Вышеприведенный способ позволяет сохранять последние данные, с которыми работали на форме. Но, могут возникнуть ситуации, когда нужно будет сохранять какую-то произвольную комбинацию значений реквизитов, а потом восстановить её. Если рассматривать ситуацию выше, то это может быть комбинация контрагента и цены: для одного контрагента одна цена, для другого другая и т.д.
Для того, чтобы такая возможность имелась, необходимо в свойстве «Хранилище данных настроек» управляемой формы установить значение «Использовать список».
А потом, у нужных реквизитов формы следует установить флаг у свойства «Сохраняемые данные».
После таких изменений, у формы в группе Ещё появятся команды «Сохранить параметры» и «Восстановить параметры».
Теперь мы можем сохранить любую комбинацию реквизитов Контрагент – Цена.
И можем восстановить нужную комбинацию в любой момент работы с формой, а не только при открытии.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Читайте также: