Как сделать так, чтобы данные формы сохранялись для всех пользователей?

1. user1202776 15.08.19 15:12 Сейчас в теме
Есть обработка, с помощью которой пользователь проставляет статусы документов(флажками).
Процедура СохранитьСтатусыДокументов()
	Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
		УИД = Строка(строкаТЗ.Документ);
		СохранитьЗначение("Вернул"+УИД,						строкаТЗ.Вернул); 
		СохранитьЗначение("НакладнаяЗакрыта"+УИД,			строкаТЗ.НакладнаяЗакрыта); 
		СохранитьЗначение("БезПечати"+УИД,					строкаТЗ.БезПечати); 
		СохранитьЗначение("ИзменениеЦены"+УИД,				строкаТЗ.ИзменениеЦены); 
		СохранитьЗначение("НакладнаяСКорректировкой"+УИД,	строкаТЗ.НакладнаяСКорректировкой); 
	КонецЦикла;
КонецПроцедуры

Процедура ЗагрузитьСтатусыДокументов()
	Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
		УИД = Строка(строкаТЗ.Документ);
		строкаТЗ.Вернул 						= ВосстановитьЗначение("Вернул"+УИД);
		строкаТЗ.НакладнаяЗакрыта 				= ВосстановитьЗначение("НакладнаяЗакрыта"+УИД);
		строкаТЗ.БезПечати 						= ВосстановитьЗначение("БезПечати"+УИД);
		строкаТЗ.ИзменениеЦены 					= ВосстановитьЗначение("ИзменениеЦены"+УИД);
		строкаТЗ.НакладнаяСКорректировкой 		= ВосстановитьЗначение("НакладнаяСКорректировкой"+УИД);
	КонецЦикла;
КонецПроцедуры
Показать

Таким образом сохраняю значения таблицы значений, чтобы при следующих открытиях, статусы документов сохранялись.Пользователь флажками ставит статусы документов и они должны сохранится.С помощью этого кода данные сохраняются, но сохраняются только для того пользователя, который проставил флажки. Как сделать так, чтобы данные сохранялись и показывались не только для того пользователя, кто изменял данные, а сохранялись и показывались для всех пользователей?
Обычные формы
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. coollerinc 189 15.08.19 15:19 Сейчас в теме
Использовать для сохранения значений базу данных: хранить в константах, Справочниках , регистрах
3. user1202776 15.08.19 15:21 Сейчас в теме
5. Arax 15.08.19 15:27 Сейчас в теме
(3) хранить в свойствах, например.
6. user1202776 15.08.19 15:28 Сейчас в теме
(5)в свойствах чего? В конфигурацию не надо ничего добавлять?
7. Arax 15.08.19 15:29 Сейчас в теме
(6) в свойствах документа. нет, не надо.
8. user1202776 15.08.19 15:29 Сейчас в теме
(7)сможете привести пример?
9. Arax 15.08.19 15:33 Сейчас в теме
(8) в ПланВидовХарактеристик добавляете свойство(свойства) документа. Далее через обработку "Загрузка данных из табличного документа" заполняете.
Это не зная специфики Вашей задачи.
10. user1202776 15.08.19 15:42 Сейчас в теме
(9)В этой форме пользователь ставит флажки (ставит статусы документам) и эти данные сохраняются в регистре сведений
Вот полный код:
Процедура СохранитьСтатусыДокументов()
	Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
		УИД = Строка(строкаТЗ.Документ);
		СохранитьЗначение("Вернул"+УИД,						строкаТЗ.Вернул); 
		СохранитьЗначение("НакладнаяЗакрыта"+УИД,			строкаТЗ.НакладнаяЗакрыта); 
		СохранитьЗначение("БезПечати"+УИД,					строкаТЗ.БезПечати); 
		СохранитьЗначение("ИзменениеЦены"+УИД,				строкаТЗ.ИзменениеЦены); 
		СохранитьЗначение("НакладнаяСКорректировкой"+УИД,	строкаТЗ.НакладнаяСКорректировкой); 
	КонецЦикла;
КонецПроцедуры

Процедура ЗагрузитьСтатусыДокументов()
	Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
		УИД = Строка(строкаТЗ.Документ);
		строкаТЗ.Вернул 						= ВосстановитьЗначение("Вернул"+УИД);
		строкаТЗ.НакладнаяЗакрыта 				= ВосстановитьЗначение("НакладнаяЗакрыта"+УИД);
		строкаТЗ.БезПечати 						= ВосстановитьЗначение("БезПечати"+УИД);
		строкаТЗ.ИзменениеЦены 					= ВосстановитьЗначение("ИзменениеЦены"+УИД);
		строкаТЗ.НакладнаяСКорректировкой 		= ВосстановитьЗначение("НакладнаяСКорректировкой"+УИД);
	КонецЦикла; 
	СохранениеДанныхФормыВНастройках
КонецПроцедуры

Процедура КнопкаЗаписатьНажатие(Кнопка)
НаборЗаписей = РегистрыСведений.СтатусыДокументов.СоздатьНаборЗаписей();
Для Каждого Строка Из ТаблицаСтатуса Цикл
мУникальный = Новый УникальныйИдентификатор;
НаборЗаписей.Отбор.Документ.Установить(Строка.Документ); 
НаборЗаписей.Отбор.Документ.Использование = Истина; 
НаборЗаписей.Отбор.УникальныйИдентификатор.Установить(мУникальный); 
 
НаборЗаписей.Прочитать(); 

				НоваяЗапись = НаборЗаписей.Добавить();
				НоваяЗапись.УникальныйИдентификатор = мУникальный; 
				НоваяЗапись.Период =ТекущаяДата();
				НоваяЗапись.Пользователь =ПараметрыСеанса.ТекущийПользователь;
			  ЗаполнитьЗначенияСвойств(НоваяЗапись,Строка);	

НаборЗаписей.Записать(Ложь);
КонецЦикла;
КонецПроцедуры

Процедура ПриОткрытии()
	Таблица=ТаблицаСтатуса;
	 Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
	 Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
	 Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
	 Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
	 Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
	 Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
	 Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
	 Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
	 Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
	 Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
	 Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
	 Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200))); 
	 ЭлементыФормы.ТаблицаСтатуса.СоздатьКолонки();
	 
	 	 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("Вернул");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "Вернул";
КолонкаФлаг.Данные = "";
 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("НакладнаяЗакрыта");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "НакладнаяЗакрыта";
КолонкаФлаг.Данные = "";
 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("БезПечати");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "БезПечати";
КолонкаФлаг.Данные = "";
 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("ИзменениеЦены");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "ИзменениеЦены";
КолонкаФлаг.Данные = "";
 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("НакладнаяСКорректировкой");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "НакладнаяСКорректировкой";
КолонкаФлаг.Данные = "";
КонецПроцедуры


Процедура ВыборМЗПриИзменении(Элемент)
	
	СохранитьСтатусыДокументов();
	
	ТаблицаСтатуса.Очистить();
	СсылкаМЗ=ВыборМЗ.Ссылка;
	Запрос=Новый Запрос;
	Запрос.Текст="ВЫБРАТЬ
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Номер КАК НомерНакладной,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Дата КАК ДатаНакладной,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент КАК Контрагент,
	             |	МаршрутноеЗаданиеДокументыРеализации.Ссылка.Номер КАК НомерМаршрутногоЗадания,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Ссылка КАК Документ,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.СуммаДокумента КАК СуммаНакладной
	             |ИЗ
	             |	Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
	             |ГДЕ
	             |	МаршрутноеЗаданиеДокументыРеализации.Ссылка = &Ссылка
	             |	И НЕ МаршрутноеЗаданиеДокументыРеализации.Реализация.ПометкаУдаления";
	Запрос.УстановитьПараметр("Ссылка",СсылкаМЗ);
	Выборка=Запрос.Выполнить().Выбрать();
	

	Пока Выборка.Следующий() Цикл	
 НовСтрока = ТаблицаСтатуса.Добавить();
 НовСтрока.НомерНакладной = Выборка.НомерНакладной;
НовСтрока.ДатаНакладной = Выборка.ДатаНакладной; 
НовСтрока.Контрагент = Выборка.Контрагент;
НовСтрока.СуммаНакладной = Выборка.СуммаНакладной;
НовСтрока.НомерМаршрутногоЗадания = Выборка.НомерМаршрутногоЗадания;
НовСтрока.Документ = Выборка.Документ;
КонецЦикла;

	ЗагрузитьСтатусыДокументов();
	
КонецПроцедуры

Процедура ПриЗакрытии()
	СохранитьСтатусыДокументов();
КонецПроцедуры
Показать

Было бы хорошо,если смогли бы привести пример кода,как это сделать
Прикрепленные файлы:
4. N0t_F0und 10 15.08.19 15:22 Сейчас в теме
Использовать ПланыВидовХарактеристик
11. user1202776 15.08.19 16:13 Сейчас в теме
(4)сможете привести пример?
48. N0t_F0und 10 16.08.19 15:26 Сейчас в теме
(11) пример
Прикрепленные файлы:
49. login1020 134 16.08.19 15:29 Сейчас в теме
(48) это пример реквизитов документа, а ТС хочет сохранять данные табличной части документов.
12. login1020 134 15.08.19 16:46 Сейчас в теме
Есть пример, правда он для упр. форм, но может и прокатит
Программно на форме создаётся форма, заполняется данными, а при следующем открытии восстанавливается.
Все данные открываются и записываются под одним и тем же пользователем в привилегированном режиме.

 &НаСервере
Процедура СохранитьНастройки()
	
	УстановитьПривилегированныйРежим(Истина);
	
	Настройки = Новый Соответствие;
	МТЗ = РеквизитФормыВЗначение("ТЗ",Тип("ТаблицаЗначений"));
       Настройки.Вставить("МТЗ", ЗначениеВСтрокуВнутр(МТЗ));

	Если ЗначениеЗаполнено(объект.УИД_Формы) тогда
		ХранилищеНастроекДанныхФорм.Удалить(объект.УИД_Формы,"ЗаполнениеКроссТаблицы","Администратор");
	Иначе
		Объект.УИД_Формы = новый УникальныйИдентификатор;
	КонецЕсли;
    ХранилищеНастроекДанныхФорм.Сохранить(Объект.УИД_Формы ,"ЗаполнениеКроссТаблицы", Настройки,,"Администратор");
	
	УстановитьПривилегированныйРежим(Ложь);
	
КонецПроцедуры
Показать


&НаСервере
Процедура ВосстановитьНастройки()
	
	УстановитьПривилегированныйРежим(Истина);
	
	ЗначениеНастроек = ХранилищеНастроекДанныхФорм.Загрузить(объект.УИД_Формы,"ЗаполнениеКроссТаблицы",,"Администратор");

	Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда		
		м = ЗначениеИзСтрокиВнутр(ЗначениеНастроек.Получить("МТЗ"));
              //  ... Восстанавливаем и прорисовываем форму
	КонецЕсли;
	УстановитьПривилегированныйРежим(Ложь);
	
КонецПроцедуры
Показать
13. user1202776 15.08.19 16:49 Сейчас в теме
(12)мой код итак сохраняет данные для того пользователя , который проставляет данные. нужно сделать так, чтобы проставленные данные были сохранены для всех пользователей
14. login1020 134 15.08.19 16:51 Сейчас в теме
(13) Невнимательно читаете, сохраняем из под любого пользователя и загружаем из под любого, но настройки программно сохраняем в одного.
15. user1202776 15.08.19 16:54 Сейчас в теме
(14)не понимаю, как это работает и как вообще перенести на обычные формы
16. login1020 134 15.08.19 17:02 Сейчас в теме
(15) Посмотрите в синтакс помощнике есть там ХранилищеНастроекДанныхФорм. Если есть то можно.

Смысл в том, что таблицы как объекта на форме нет, в момент открытия он отрисовывается програмнно, пользователь заполняет колонки и при записи документа, данная таблица сохраняется в ХранилищеНастроекДанныхФорм. Документ закрывается, форма перестаёт существовать, и таблица удаляется.
При повторном открытии идет попытка чтения из хранилища сохранненых данных для открываемого документа, и если данные есть, идет заполнение таблицы.

Содержит объект, с помощью которого осуществляется чтение, изменение, добавление и удаление настроек данных форм.
Если в свойстве конфигурации "ХранилищеНастроекДанныхФорм" не указано хранилище, то содержит объект СтандартноеХранилищеНастроекМенеджер, предназначенный для чтения, изменения, добавления и удаления настроек данных форм.
Если в свойстве конфигурации "ХранилищеНастроекДанныхФорм" указано хранилище, созданное в конфигурации, то содержит объект ХранилищеНастроекМенеджер.<Имя хранилища>.
17. user1202776 15.08.19 17:05 Сейчас в теме
(16) у меня синтаксисе есть информация по ХранилищеНастроекДанныхФорм
18. user1202776 15.08.19 17:08 Сейчас в теме
(16)насчет пользователя.Если поставить в качестве пользователя себя и если я не буду в 1с, у всех пользователей данные будут сохранены и показаны корректно? или если я буду в 1с
19. login1020 134 15.08.19 17:17 Сейчас в теме
(18) у всех, даже если под кем сохраняете не авторизировался в программе.
20. user1202776 15.08.19 17:20 Сейчас в теме
(19)"ЗаполнениеКроссТаблицы" что такое?
в СП написано, что там должен быть ключ настроек
25. login1020 134 16.08.19 08:28 Сейчас в теме
(20)
СтандартноеХранилищеНастроекМенеджер (StandardSettingsStorageManager)
Сохранить (Save)
Синтаксис:
Сохранить(<КлючОбъекта>, <КлючНастроек>, <Настройки>, <ОписаниеНастроек>, <ИмяПользователя>)

ЗаполнениеКроссТаблицы - <КлючНастроек> (необязательный)
Тип: Строка.
Ключ сохраняемых настроек.
Значение по умолчанию: Пустая строка.

С этим ключом сохраняю настройку форму.

(22) Ничего добавлять не нужно, у конфигурации оно уже есть по умолчанию.
26. user1202776 16.08.19 09:07 Сейчас в теме
(25) у меня в СП нету ЗаполнениеКроссТаблицы. значит в обычной форме нету ЗаполнениеКроссТаблицы? Если нет, то можно чем-то другим заменить?
27. login1020 134 16.08.19 09:10 Сейчас в теме
(26) ЗаполнениеКроссТаблицы этим значением я заполняю этот параметр.

СтандартноеХранилищеНастроекМенеджер .Сохранить(<КлючОбъекта>, <КлючНастроек>, <Настройки>, <ОписаниеНастроек>, <ИмяПользователя>)
сюда можно любую строку загнать, т.к. это просто представление имени настройки
21. user1202776 15.08.19 17:32 Сейчас в теме
(19)сможете привести пример на моем коде?я запутался) . В (10) полный код обработки
22. user1202776 15.08.19 18:05 Сейчас в теме
(19)в конфигурацию нужно добавить хранилище настроек?
28. user1202776 16.08.19 09:19 Сейчас в теме
(12)
Настройки = Новый Соответствие;
МТЗ = РеквизитФормыВЗначение("ТЗ",Тип("ТаблицаЗначений"));
Настройки.Вставить("МТЗ", ЗначениеВСтрокуВнутр(МТЗ));

здесь таблицу значений преобразовываем в произвольный тип и передаем в "настройки"?
РеквизитФормыВЗначение есть только в управляемом форме.Не знаете, для обычной формы есть что-то типа этого, который преобразовывает в произвольный тип? Если это конечно обязательно
29. login1020 134 16.08.19 10:04 Сейчас в теме
(28) в обычных ничего не надо преобразовывать

НЕ НАДО
МТЗ = РеквизитФормыВЗначение("ТЗ",Тип("ТаблицаЗначений")); 
- преобразование из данных формы коллекция в Таблицу значений

НАДО
Настройки.Вставить("МТЗ", ЗначениеВСтрокуВнутр(МТЗ)); 
- преобразование таблицы в строку, для последующего сохранения в настройках.
40. user1202776 16.08.19 11:46 Сейчас в теме
(12)
Процедура СохранитьСтатусыДокументов()
		УстановитьПривилегированныйРежим(Истина);
	Настройки= Новый Соответствие;
	Настройки.Вставить("ТаблицаСтатуса",ЗначениеВСтрокуВнутр(ТаблицаСтатуса));
	
	
	ЗагрузитьСтатусыДокументов();
	
		ХранилищеНастроекДанныхФорм.Сохранить("Форма","ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
		УстановитьПривилегированныйРежим(Ложь);	
КонецПроцедуры

Процедура ЗагрузитьСтатусыДокументов()
	
	
	 УстановитьПривилегированныйРежим(Истина);
	
ЗначениеНастроек = ХранилищеНастроекДанныхФорм.Загрузить("Форма","ЗаполнениеКроссТаблицы",,"Админ");
м = ЗначениеИзСтрокиВнутр(ЗначениеНастроек.Получить("ТаблицаСтатуса"));	
	УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Показать

В отладке "м" видно, что заполняется данными таблица статуса, но ничего не сохраняется.
вот полный код:
Процедура СохранитьСтатусыДокументов()
	
		УстановитьПривилегированныйРежим(Истина);
	Настройки= Новый Соответствие;
	Настройки.Вставить("ТаблицаСтатуса",ЗначениеВСтрокуВнутр(ТаблицаСтатуса));
	
	
	ЗагрузитьСтатусыДокументов();
	
		ХранилищеНастроекДанныхФорм.Сохранить("Форма","ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
		УстановитьПривилегированныйРежим(Ложь);	
КонецПроцедуры

Процедура ЗагрузитьСтатусыДокументов()
	
	
	 УстановитьПривилегированныйРежим(Истина);
	
ЗначениеНастроек = ХранилищеНастроекДанныхФорм.Загрузить("Форма","ЗаполнениеКроссТаблицы",,"Админ");
м = ЗначениеИзСтрокиВнутр(ЗначениеНастроек.Получить("ТаблицаСтатуса"));	
	УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры

Процедура КнопкаЗаписатьНажатие(Кнопка)
НаборЗаписей = РегистрыСведений.СтатусыДокументов.СоздатьНаборЗаписей();
Для Каждого Строка Из ТаблицаСтатуса Цикл
мУникальный = Новый УникальныйИдентификатор;
НаборЗаписей.Отбор.Документ.Установить(Строка.Документ); 
НаборЗаписей.Отбор.Документ.Использование = Истина; 
НаборЗаписей.Отбор.УникальныйИдентификатор.Установить(мУникальный); 
 
НаборЗаписей.Прочитать(); 

				НоваяЗапись = НаборЗаписей.Добавить();
				НоваяЗапись.УникальныйИдентификатор = мУникальный; 
				НоваяЗапись.Период =ТекущаяДата();
				НоваяЗапись.Пользователь =ПараметрыСеанса.ТекущийПользователь;
			  ЗаполнитьЗначенияСвойств(НоваяЗапись,Строка);	

НаборЗаписей.Записать(Ложь);
КонецЦикла;
КонецПроцедуры

Процедура ПриОткрытии()
	Таблица=ТаблицаСтатуса;
	 Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
	 Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
	 Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
	 Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
	 Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
	 Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
	 Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
	 Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
	 Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
	 Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
	 Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
	 Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200))); 
	 ЭлементыФормы.ТаблицаСтатуса.СоздатьКолонки();
	 
	 	 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("Вернул");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "Вернул";
КолонкаФлаг.Данные = "";
 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("НакладнаяЗакрыта");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "НакладнаяЗакрыта";
КолонкаФлаг.Данные = "";
 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("БезПечати");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "БезПечати";
КолонкаФлаг.Данные = "";
 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("ИзменениеЦены");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "ИзменениеЦены";
КолонкаФлаг.Данные = "";
 КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("НакладнаяСКорректировкой");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;  
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "НакладнаяСКорректировкой";
КолонкаФлаг.Данные = "";
КонецПроцедуры


Процедура ВыборМЗПриИзменении(Элемент)
	
	СохранитьСтатусыДокументов();
	
	ТаблицаСтатуса.Очистить();
	СсылкаМЗ=ВыборМЗ.Ссылка;
	Запрос=Новый Запрос;
	Запрос.Текст="ВЫБРАТЬ
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Номер КАК НомерНакладной,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Дата КАК ДатаНакладной,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент КАК Контрагент,
	             |	МаршрутноеЗаданиеДокументыРеализации.Ссылка.Номер КАК НомерМаршрутногоЗадания,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Ссылка КАК Документ,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент,
	             |	МаршрутноеЗаданиеДокументыРеализации.Реализация.СуммаДокумента КАК СуммаНакладной
	             |ИЗ
	             |	Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
	             |ГДЕ
	             |	МаршрутноеЗаданиеДокументыРеализации.Ссылка = &Ссылка
	             |	И НЕ МаршрутноеЗаданиеДокументыРеализации.Реализация.ПометкаУдаления";
	Запрос.УстановитьПараметр("Ссылка",СсылкаМЗ);
	Выборка=Запрос.Выполнить().Выбрать();
	

	Пока Выборка.Следующий() Цикл	
 НовСтрока = ТаблицаСтатуса.Добавить();
 НовСтрока.НомерНакладной = Выборка.НомерНакладной;
НовСтрока.ДатаНакладной = Выборка.ДатаНакладной; 
НовСтрока.Контрагент = Выборка.Контрагент;
НовСтрока.СуммаНакладной = Выборка.СуммаНакладной;
НовСтрока.НомерМаршрутногоЗадания = Выборка.НомерМаршрутногоЗадания;
НовСтрока.Документ = Выборка.Документ;
КонецЦикла;

	ЗагрузитьСтатусыДокументов();
	
КонецПроцедуры

Процедура ПриЗакрытии()
	СохранитьСтатусыДокументов();
КонецПроцедуры

Показать

Что делаю не так?
41. login1020 134 16.08.19 11:51 Сейчас в теме
(40)
В отладке "м" видно, что заполняется данными таблица статуса, но ничего не сохраняется.

тут есть ваша таблица?

ЗначениеНастроек = ХранилищеНастроекДанныхФорм.Загрузить("Форма","ЗаполнениеКроссТаблицы",,"Админ");
м = ЗначениеИзСтрокиВнутр(ЗначениеНастроек.Получить("ТаблицаСтатуса"));
42. user1202776 16.08.19 11:55 Сейчас в теме
(41)да.Эта таблица, которая выводится на форме и в которую ставятся флажки(статусы документов)
43. user1202776 16.08.19 12:24 Сейчас в теме
(41)это таблица значений "м"
В отладчике видно, что данные сохраняются, но походу в какой-то момент эти данные пропадают или перезаписываются
Прикрепленные файлы:
44. user1202776 16.08.19 13:05 Сейчас в теме
(41)кажется восстанавливает данные предыдущей таблицы, то есть данные предыдущего документа
45. login1020 134 16.08.19 13:44 Сейчас в теме
(44) чтобы восстанавливать данные текущего документа нужен уникальный идентификатор, по которому этот документ можно идентифицировать, в моём примере
это реквизит документа. объект.УИД_Формы

Если ЗначениеЗаполнено(объект.УИД_Формы)тогда
        ХранилищеНастроекДанныхФорм.Удалить(объект.УИД_Формы,"ЗаполнениеКроссТаблицы","Администратор");
    Иначе
        Объект.УИД_Формы = новый УникальныйИдентификатор;
    КонецЕсли;
    ХранилищеНастроекДанныхФорм.Сохранить(Объект.УИД_Формы ,"ЗаполнениеКроссТаблицы", Настройки,,"Администратор");

а у Вас настройки сохраняются в текстовое представлние одно и тоже "Форма", потому перезатираются.

 ХранилищеНастроекДанныхФорм.Сохранить("Форма","ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");


Создайте реквизит документа, и туда пишите УИД, тогда уникальность каждого документа обеспечена.
46. user1202776 16.08.19 13:57 Сейчас в теме
(45) то есть мне в обработке нужно создать реквизит с типом уникальный идентификатор,да?
47. login1020 134 16.08.19 13:59 Сейчас в теме
(46) В документе, и туда его записывать при записи документа, при перезаписи соответственно перезаписывать, чтобы не вернуть прошлый вариант таблицы.
50. user1202776 16.08.19 16:05 Сейчас в теме
(47) нельзя просто в обработке каждому документу давать уникальный идентификатор, который только для обработки будет, а в сами реквизиты документа ничего не добавлять? Как было сделано у меня в коде. У меня в коде , обработка присваивала каждому документу код, без добавления реквизита в сам документ конфигурации
51. user1202776 16.08.19 16:13 Сейчас в теме
(47) статусы , проставленные флажками в сам документ не записываются, а записываются в регистр сведений. Смысл обработки в том,чтобы флажками проставить статусы документов, например документ в пути, эти статусы фиксируются в РС. И чтобы эти поставленные статусы видели все пользователи, которые открыли обработку
23. user596430_gleb21 3 16.08.19 00:16 Сейчас в теме
24. user1202776 16.08.19 08:00 Сейчас в теме
(23) точно не подойдёт, так как с разных ПК будут открывать
30. 6JIoHguH 29 16.08.19 10:37 Сейчас в теме
Можешь попробовать подключить обработку как дополнительную.
Там в справочнике дополнительных настроек есть реквизит "ХранилищеНастроек" типа Хранилище значения.
Можешь при открытии формы получать из ссылки на доп.обработку значения из этого хранилища и, если нужно, сохранять в него в произвольный момент или при закрытии.
31. user1202776 16.08.19 10:59 Сейчас в теме
(30)приведите пожалуйста пример. Я не понимаю , как это реализовать
32. 6JIoHguH 29 16.08.19 11:12 Сейчас в теме
(31)
На форме обработки добавляете реквизит типа СправочникСсылка.ДополнительныеОтчетыИОбработки
При создании формы на сервере код:

Параметры.Свойство("ДополнительнаяОбработкаСсылка", ОбъектСсылка);


Теперь, у Вас в переменной "ОбъектСсылка" будет ссылка на обработку (если она, конечно, была открыта как дополнительная обработка, а не через Файл/открыть)

Дальше, можете написать

ХранилищеНастроек = ОбъектСсылка.ХранилищеНастроек.Получить();


Теперь у Вас в "ХранилищеНастроек" будут настройки, которые Вы сохранили ранее.

Сохранение, опять же в таком порядке:
	Если ЗначениеЗаполнено(ОбъектСсылка) Тогда
		ЗначенияНастроек = Новый Структура("КлючНастройки", "ЗначениеНастройки");
		ОбработкаОбъект = ОбъектСсылка.ПолучитьОбъект();
		ОбработкаОбъект.ХранилищеНастроек = Новый ХранилищеЗначения(ЗначенияНастроек, Новый СжатиеДанных(9));
		ОбработкаОбъект.Записать();
	КонецЕсли;
33. user1202776 16.08.19 11:22 Сейчас в теме
(32)как выбрать типом СправочникСсылка.ДополнительныеОтчетыИОбработки ?Когда открываешь через сервис, открываем этот справочнике, но в конфигурации не видно этот справочник. И типах нету этого справочника
34. 6JIoHguH 29 16.08.19 11:32 Сейчас в теме
(33) Обычные формы вот что я не увидел. Извините, тогда не смогу с ходу подсказать :( Лет пять уже их не использовал.
35. user1202776 16.08.19 11:34 Сейчас в теме
(34) то есть по вашему способу нельзя на обычных формах сделать?
36. 6JIoHguH 29 16.08.19 11:35 Сейчас в теме
(35) нет, нельзя. Этот способ основан на функционале БСП для управляемых форм.
37. user1202776 16.08.19 11:36 Сейчас в теме
(36)у меня в базе есть справочник "Сохраненные настройки", а там есть реквизит "хранилище настроек".нельзя ДополнительныеОтчетыИОбработки изменить на этот справочник?
38. 6JIoHguH 29 16.08.19 11:38 Сейчас в теме
(37) если Вы однозначно определите элемент, в котором будут храниться настройки, и кроме Вас этот элемент больше никто не будет использовать, то должно получиться.
Весь прикол с БСП связан именно с местом хранения настроек.
39. user1202776 16.08.19 11:41 Сейчас в теме
(38)на то,что кроме меня никто не будет использовать надеяться нельзя. Жаль
(12) пытаюсь сделать для обычной формы, но пока что ошибок не выводит , но и ничего не сохраняет
52. ice-net 19 19.08.19 11:51 Сейчас в теме
(39) Вам же другое совсем надо... Зачем вы темы плодите и вводите других в заблуждения? У вас есть табличная часть со строками. и есть регистр сведений, который не привязан к строкам табличной части.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот