Приветствую, Форумчане!
1с8.3.12, УФ, самопис
Имеется некая свободная форма "Групповое создание документов", которая по неким отборам по номенклатуре отбирает нужную номенклатуру и создает несколько документов
на форме расположен "КомпоновщикНастроек" с типом "КомпоновщикНастроекКомпоновкиДанных" с путем к данным "КомпоновщикНастроек.Настройки.Отбор"
Возможно ли сохранить этот отбор в создаваемых документах?
Чтобы потом при повторном открытии этой формы отбора получить параметры отбора из этого созданного документа?
ПоместитьВоВременноеХранилище()
но база расти будет
fly @ Сегодня, 14:25
,
Хранилище настроек
Отчет имеются свойства метаданных Хранилище вариантов и Хранилище настроек
При необходимости сохранять в настройках компоновки данных или пользовательских настройках компоновки данных некоторую дополнительную информацию можно воспользоваться свойствами ДополнительныеСвойства объектов НастройкиКомпоновкиДанных и ПользовательскиеНастройкиКомпоновкиДанных. Свойство ДополнительныеСвойства представляет собой объект типа Структура.
ХранилищеНастроек:
ОбработкаСохранения – содержит реализацию метода Сохранить().
ОбработкаЗагрузки – содержит реализацию метода Загрузить().
Хранилище значений 1С
ХранилищеЗначения (хранилище значений 1С) – это объект в языке 1С, который позволяет хранить в базе данных прочие значения, например картинки и файлы, структуры и таблицы значений.
передать структуру настроек отчета и поместить в реквизит Документа = тип("ХранилищеЗначений")
Настройки = Новый Структура();
Настройки.Вставить("ПоУмолчанию", Истина);
Настройки.Вставить("Наименование", "Наименование1");
Хранилище = Новый ХранилищеЗначения(Настройки, Новый СжатиеДанных(9));
ЗначениеВФайл("C:\", Хранилище);
&НаКлиенте
Процедура КомандаЗаполнениеКодовТНВЭД(Команда)
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("АдресТаблицыКодовТНВЭД", ПолучитьАдресТаблицыДляЗаполненияКодовТНВЭД());
ОбработкаОповещения = Новый ОписаниеОповещения("ПрименитьЗаполненныеКодыТНВЭДИВес", ЭтаФорма);
ОткрытьФорму("Документ.ЗагрузкаДанныхОтПоставщика.Форма.ФормаЗаполненияКодаТНВЭДИВеса", СтруктураПараметров, ЭтаФорма,,,, ОбработкаОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КодыТНВЭД.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТаблицыКодовТНВЭД));
...
КонецПроцедуры
...
&НаКлиенте
Процедура ПеренестиИзменения(Команда)
Закрыть(ПолучитьАдресТаблицыКодовТНВЭД());
КонецПроцедуры
&НаСервере
Функция ПолучитьАдресТаблицыКодовТНВЭД()
тзКоды = КодыТНВЭД.Выгрузить();
Возврат ПоместитьВоВременноеХранилище(тзКоды);
КонецФункции
&НаСервере
Процедура ПрименитьЗаполненныеКодыТНВЭДИВес(АдресРезультата, ДополнительныеПараметры=Неопределено)
Если НЕ ЭтоАдресВременногоХранилища(АдресРезультата) Тогда
Возврат;
КонецЕсли;
тзДанные = ПолучитьИзВременногоХранилища(АдресРезультата);
...
КонецПроцедуры
fly @ Сегодня, 19:06
,
Вот код, который массово формирует документы:
СозданныеДокументы.Очистить();
ДанныеЗаполнения = ОтобранныеПозиции.Выгрузить();
Сч = 0;
Для каждого СтрокаГорода Из ГородаЗаполнения Цикл
ДокументОбъект = Документы.УстановкаЦенНаИзделияВГородах.СоздатьДокумент();
//ДокументОбъект.Дата = ТекущаяДата();
ДокументОбъект.Дата = ДатаДокумента;
//ДокументОбъект.Организация = ОрганизацияДокумента;
ДокументОбъект.Автор = Пользователи.ТекущийПользователь();
ДокументОбъект.АкцияДокумента = АкцияДокумента;
ДокументОбъект.Комментарий = "#Групповое создание";
ДокументОбъект.ОсновнойГород = СтрокаГорода.Город;
СтрокаГородаДокумента = ДокументОбъект.Города.Добавить();
СтрокаГородаДокумента.Город = СтрокаГорода.Город;
ДокументОбъект.ЗаполнитьЦены(ДанныеЗаполнения);
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
СтрокаСозданных = СозданныеДокументы.Добавить();
СтрокаСозданных.Город = СтрокаГорода.Город;
СтрокаСозданных.Документ = ДокументОбъект.Ссылка;
Сч = Сч + 1;
КонецЦикла;
МакетРезультат = Компоновщик.Выполнить(СхемаЗаполнения, НастройкиКомпоновки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
Отбор = Новый Структура;
СписокНомеклатуры = Новый СписокЗначений;
//----------Заполняем СписокНомеклатуры
Отбор.Вставить("Номенклатура", СписокНоменклатуры);
УстановкаЦенНаИзделияВГородах.ОтборНастроек = Новый ХранилищеЗначения(Отбор);
Отбор = УстановкаЦенНаИзделияВГородах.ОтборНастроек.Получить();
Отбор.Вставить("Номенклатура", СписокНоменклатуры);
Отбор.Вставить("Стела", СписокСтела);
fly @ Сегодня, 21:16
,
Сделал код
ДокументОбъект.ОтборНастроек = Новый ХранилищеЗначения(КомпоновщикНастроек.Настройки);
ДокументОбъект.ОтборНастроек = Новый ХранилищеЗначения(КомпоновщикНастроек.Настройки.Отбор);
Давайте попробую объяснить всё заново :-)
1. Имеем некий документ, где имеется кнопка: "Отбор элементов комплекса"
Эта кнопка открывает дополнительную форму документа:
ОткрытьФорму("Документ.УстановкаЦенНаЭлементыКомплекса.Форма.ОтборЭлементаКомплекса",, ЭтаФорма);
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресСхемыЗаполнения = ПоместитьВоВременноеХранилище(Документы.УстановкаЦенНаЭлементыКомплекса.ПолучитьМакет("Макет"), УникальныйИдентификатор);
СхемаЗаполнения = ПолучитьИзВременногоХранилища(АдресСхемыЗаполнения);
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыЗаполнения);
КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
КлючВарианта = "Основной";
СписокВариантов = СхемаЗаполнения.ВариантыНастроек;
ВариантНастройки = СписокВариантов.Найти(КлючВарианта);
Если ВариантНастройки = Неопределено Тогда
НастройкиКД = СхемаЗаполнения.НастройкиПоУмолчанию;
Иначе
НастройкиКД = ВариантНастройки.Настройки;
КонецЕсли;
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД);
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua