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

1. user1202776 19.08.19 09:24 Сейчас в теме
С помощью этой обработки, пользователи ставят накладным из маршрутного задания статусы, например документ в пути, приехал без печати и т.д. Нужно чтобы проставленные флажки(статусы документов) сохранялись.В этом коде данные перезаписываются, так как у документов нету идентификатора. Как присвоить каждому документу идентификатор, чтобы данные не перезаписывались?
Процедура СохранитьСтатусыДокументов()
	
	Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
	УИД = Строка(строкаТЗ.Документ);
УникалИден=Новый УникальныйИдентификатор;
	Таблица=Новый ТаблицаЗначений;
	Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
	 Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
	 Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
	 Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
	 Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
	 Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
	 Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
	 Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
	 Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
	 Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
	 Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
	 Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
	  Таблица.Колонки.Добавить("УнИден", Новый ОписаниеТипов("УникальныйИдентификатор"));	 
	КонецЦикла;
	 Для Каждого Стр Из ТаблицаСтатуса Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Стр);
КонецЦикла;
	
		УстановитьПривилегированныйРежим(Истина);
	Настройки= Новый Соответствие;
	Настройки.Вставить("Таблица",ЗначениеВСтрокуВнутр(Таблица));
	 //СохранТаб=Таблица.СкопироватьКолонки("Вернул,НакладнаяЗакрыта,БезПечати,ИзменениеЦены,НакладнаяСКорректировкой,Контрагент,СуммаНакладной,НомерМаршрутногоЗадания,Документ,Комментарий");
		
		ХранилищеНастроекДанныхФорм.Сохранить("Форма","ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
		УстановитьПривилегированныйРежим(Ложь);	
КонецПроцедуры

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

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

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


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

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

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

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


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

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

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

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

Показать

Сюда в первом параметре нужно поставить идентификатор документа, чтобы не данные не перезаписывались:
ХранилищеНастроекДанныхФорм.Сохранить("Форма","ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 19.08.19 09:46 Сейчас в теме
В этом коде данные перезаписываются, так как у документов нету идентификатора.

ну насмешили!!!
у документа (и других объектов 1С) есть реквизит Ссылка - самый хороший идентификатор!!!!
3. user1202776 19.08.19 09:50 Сейчас в теме
(2)как тогда сделать так, чтобы по ссылку идентифицировал и сохранял флажки?
4. user1202776 19.08.19 09:55 Сейчас в теме
(2)я итак ссылку получаю, но как сделать так, чтобы данные сохраняла?
 УИД = Строка(строкаТЗ.Документ);
5. ice-net 19 19.08.19 09:59 Сейчас в теме
(4)
УИД = Строка(строкаТЗ.Документ);

так, наверное, правильнее будет
УИД = XMLСтрока(строкаТЗ.Документ);
9. user1202776 19.08.19 10:09 Сейчас в теме
(5)сделал так.не сохраняет все равно
6. VmvLer 19.08.19 10:00 Сейчас в теме
видимо речь о ключе сохранения в хранилище, по которому будут получены значения

вынести тз из цикла в отдельную функцию - это желательно.
например Таблица = ПолучитьТаблицу()
адепты линейного кода будут роптать, но их можно побить палкой

а по ключу сохранения почитать в СП описания методов сохранения/получения значений из хранилища.
7. user1202776 19.08.19 10:06 Сейчас в теме
(6)прочитал в СП, особо ничего не понял
8. VmvLer 19.08.19 10:08 Сейчас в теме
(7) Я читал иногда раз 10-15 пока не приходило понимание, 1С она такая - загадочна как выпускница театрального вуза.
10. user1202776 19.08.19 10:14 Сейчас в теме
(8)что именно прочитать, может я не то читаю?)
сделал так, но все равно не сохраняет:
	Идентификатор=ЭтаФорма.ВыборМЗ.УникальныйИдентификатор();
	Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
	УИД = XMLСтрока(строкаТЗ.Документ);
УникалИден=Новый УникальныйИдентификатор;
	Таблица=Новый ТаблицаЗначений;
	Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
	 Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
	 Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
	 Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
	 Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
	 Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
	 Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
	 Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
	 Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
	 Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
	 Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
	 Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
	  Таблица.Колонки.Добавить("УнИден", Новый ОписаниеТипов("УникальныйИдентификатор"));	 
	КонецЦикла;
	 Для Каждого Стр Из ТаблицаСтатуса Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Стр);
КонецЦикла;
	
		УстановитьПривилегированныйРежим(Истина);
	Настройки= Новый Соответствие;
	Настройки.Вставить("Таблица",ЗначениеВСтрокуВнутр(Таблица));
	 //СохранТаб=Таблица.СкопироватьКолонки("Вернул,НакладнаяЗакрыта,БезПечати,ИзменениеЦены,НакладнаяСКорректировкой,Контрагент,СуммаНакладной,НомерМаршрутногоЗадания,Документ,Комментарий");
		Если ЗначениеЗаполнено(Идентификатор) тогда
        ХранилищеНастроекДанныхФорм.Удалить(Идентификатор,"ЗаполнениеКроссТаблицы","Админ");
    Иначе
        Идентификатор = новый УникальныйИдентификатор;
    КонецЕсли;
		ХранилищеНастроекДанныхФорм.Сохранить(Идентификатор,"ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
		УстановитьПривилегированныйРежим(Ложь);	
Показать
11. ice-net 19 19.08.19 10:16 Сейчас в теме
(0) а можете чуть конкретнее?
Процедура КнопкаЗаписатьНажатие(Кнопка)
НаборЗаписей = РегистрыСведений.СтатусыДокументов.СоздатьНаборЗаписей();
Для Каждого Строка Из ТаблицаСтатуса Цикл
мУникальный = Новый УникальныйИдентификатор;
НаборЗаписей.Отбор.Документ.Установить(Строка.Документ); 
НаборЗаписей.Отбор.Документ.Использование = Истина; 
НаборЗаписей.Отбор.УникальныйИдентификатор.Установить(мУникальный); 
 
НаборЗаписей.Прочитать(); 

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

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


Вам надо что бы все записи не перезаписывались тут или что? или видеть когда какой флажок поменялся, т.е. историю?
12. user1202776 19.08.19 10:19 Сейчас в теме
(11)пользователь ставит флажки(статусы) документам. И эти статусы записываются в регистр сведений.Нужно просто сохранять проставленные флажки, чтобы фиксировать изменения статусов документов
14. ПодводныйТ 45 19.08.19 10:34 Сейчас в теме
(12) Сделай отдельный регистр сведений для хранения статусов. Хотя вы пишите, что уже сохраняются статусы в регистр. Что в итоге нужно то? историю изменения этих статусов - тогда так же регистр сведений для хранения истории и по нему восстанавливать... но суть задачи я что то уловить не могу.
15. user1202776 19.08.19 10:40 Сейчас в теме
(14)да, сохранять историю статусов.Чтобы пользователь всегда знал, какой статус у конкретного документа.Для этого еще один регистр очень нежелательно добавлять
18. ПодводныйТ 45 19.08.19 10:47 Сейчас в теме
(15) Значит нужен регистр сведений для сохранения истории. Периодический. Но возможно и текущий регистр у вас выполняет свою задачу. Надо смотреть структуру конфигурации.
20. user1202776 19.08.19 10:52 Сейчас в теме
(18) регистр сведений, куда записываются статусы периодический, в пределах секунды. Запись независимый
(17)
21. ПодводныйТ 45 19.08.19 10:54 Сейчас в теме
(20) доставайте тогда статус из этого регистра сведений и все.
22. user1202776 19.08.19 10:55 Сейчас в теме
(21)а можно пример как это сделать?через запрос?
23. ПодводныйТ 45 19.08.19 10:58 Сейчас в теме
(22) запросом к РС "СтатусыДокументов". надо смотреть структуру регистра, но на вскидку - срез последних с отбором по документу.
13. user1202776 19.08.19 10:23 Сейчас в теме
(11) до этого сохранял так, но так сохраняет только для пользователя, то есть для пользователя показывается проставленные ими флажки.
//Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
	//УИД = Строка(строкаТЗ.Документ);
	//	СохранитьЗначение("Вернул"+УИД,						строкаТЗ.Вернул); 
	//	СохранитьЗначение("НакладнаяЗакрыта"+УИД,			строкаТЗ.НакладнаяЗакрыта); 
	//	СохранитьЗначение("БезПечати"+УИД,					строкаТЗ.БезПечати); 
	//	СохранитьЗначение("ИзменениеЦены"+УИД,				строкаТЗ.ИзменениеЦены); 
	//	СохранитьЗначение("НакладнаяСКорректировкой"+УИД,	строкаТЗ.НакладнаяСКорректировкой); 
	//КонецЦикла;
Показать

и восстанавливал так:
//Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
	//	УИД = Строка(строкаТЗ.Документ);
	//	строкаТЗ.Вернул 						= ВосстановитьЗначение("Вернул"+УИД);
	//	строкаТЗ.НакладнаяЗакрыта 				= ВосстановитьЗначение("НакладнаяЗакрыта"+УИД);
	//	строкаТЗ.БезПечати 						= ВосстановитьЗначение("БезПечати"+УИД);
	//	строкаТЗ.ИзменениеЦены 					= ВосстановитьЗначение("ИзменениеЦены"+УИД);
	//	строкаТЗ.НакладнаяСКорректировкой 		= ВосстановитьЗначение("НакладнаяСКорректировкой"+УИД);
	//КонецЦикла;
16. ice-net 19 19.08.19 10:43 Сейчас в теме
так статусы хранятся в регистре..
Зачем применять СохранитьЗначение и ВосстановитьЗначение и тд?
19. user1202776 19.08.19 10:48 Сейчас в теме
(16)Для того чтобы знать статус документа, в пути , цена была изменена, может без печати приехал и т.д. допустим пользователю позвонили и спросили какой статус у документа №3
17. ice-net 19 19.08.19 10:47 Сейчас в теме
записывайте в регистр и считывайте с регистра. Если нужна история - делайте регистр периодическим(секунда) или добавляйте дату в измерение, или делайте другой регистр для истории..
24. ice-net 19 19.08.19 11:01 Сейчас в теме
Странная у вашей обработки логика...

попробуйте что-то типа этого:

Процедура ЗагрузитьСтатусыДокументов()
    
Запрос = новый запрос;
Запрос.текст = "Выбрать * из РегистрСведений.Вашрегистр.СрезПоследних(,ОТБОР_ЕСЛИ_НУЖЕН) как таблица";

ВашаТаблицаФормы = Запрос.Выполнить().Выгрузить();

КонецПроцедуры

Процедура ПриОткрытии()

 //....
ЗагрузитьСтатусыДокументов();

КонецПроцедуры


Процедура ВыборМЗПриИзменении(Элемент)
  
ТекущиеДанные = ЭлементыФормы.ВашаТаблицаФормы.ТекущиеДанные;
ЗаписатьДанные(ТекущиеДанные);
    
КонецПроцедуры

процедура ЗаписатьДанные(ТекущиеДанные)

Менеджер = РегистрыСведений.Вашрегистр.СоздатьМенеджерЗаписи();
Менеджер.Измерение1 = ТекущиеДанные .Измерение1;
//.......
Менеджер.Измерение999 = ТекущиеДанные .Измерение999;
МенеджерЗаписи.Прочитать();
МенеджерЗаписи.Флажок1= ТекущиеДанные.Флажок1;
//.....
МенеджерЗаписи.Флажок999= ТекущиеДанные.Флажок999;


МенеджерЗаписи.Записать();
Конецпроцедуры;

Показать
25. user1202776 19.08.19 11:22 Сейчас в теме
(24)
процедура ЗаписатьДанные(ТекущиеДанные)

Менеджер = РегистрыСведений.Вашрегистр.СоздатьМенеджерЗаписи();
Менеджер.Измерение1 = ТекущиеДанные .Измерение1;
//.......
Менеджер.Измерение999 = ТекущиеДанные .Измерение999;
МенеджерЗаписи.Прочитать();


это отбор?
26. user1202776 19.08.19 11:25 Сейчас в теме
(24)вот структура регистра сведений
Прикрепленные файлы:
27. ice-net 19 19.08.19 11:33 Сейчас в теме
(26) Мне кажется, программирование - это не Ваше.

Что такое УНикальныйИдентификатор... в измерениях регистра и как он связан с табличной частью ДокументыРеализации документа МаршрутноеЗадание?
28. user1202776 19.08.19 11:37 Сейчас в теме
(27)я по этому уникальному идентификатору реализовал то,что мне нужно было. и все работало. Но с этим уникальным идентификатором не получается сохранить значения для всех пользователей.
29. ice-net 19 19.08.19 11:44 Сейчас в теме
А как Ваш уникальный идентификатор, по которому ВЫ
реализовал то,что мне нужно было. и все работало.
привязан к

строкам вашей табличной части

   Запрос.Текст="ВЫБРАТЬ
                 |    МаршрутноеЗаданиеДокументыРеализации.Реализация.Номер КАК НомерНакладной,
                 |    МаршрутноеЗаданиеДокументыРеализации.Реализация.Дата КАК ДатаНакладной,
                 |    МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент КАК Контрагент,
                 |    МаршрутноеЗаданиеДокументыРеализации.Ссылка.Номер КАК НомерМаршрутногоЗадания,
                 |    МаршрутноеЗаданиеДокументыРеализации.Реализация.Ссылка КАК Документ,
                 |    МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент,
                 |    МаршрутноеЗаданиеДокументыРеализации.Реализация.СуммаДокумента КАК СуммаНакладной
                 |ИЗ
                 |    Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
                 |ГДЕ
                 |    МаршрутноеЗаданиеДокументыРеализации.Ссылка = &Ссылка
                 |    И НЕ МаршрутноеЗаданиеДокументыРеализации.Реализация.ПометкаУдаления";
Показать
30. user1202776 19.08.19 11:48 Сейчас в теме
(29)этого кода где использовал уникальный идентификатор уже нету. Просто это измерение не удалил еще
31. ice-net 19 19.08.19 11:52 Сейчас в теме
(30)
Так вот Вам и решение. Добавьте реквизиты, которые свяжут запись регистра к Вашей табличной части в регистр сведений, и по этим полям делайте считывание и запись в обработку.
32. user1202776 19.08.19 11:58 Сейчас в теме
(31)через отбор, типа этого:
НаборЗаписей.Отбор.Документ.Установить(Строка.Документ); 
	НаборЗаписей.Отбор.Документ.Использование = Истина;

строка.докумнт-это ссылка накладной, которой ставим статус
33. ice-net 19 19.08.19 12:03 Сейчас в теме
(32) Это привязка только документа, а в документе n строк (Документ, НомерМаршрутногоЗадания, ДатаНакладной и так далее).
Запись в регистр при текущей структуре базы идет только по документу и идентификатору, который вы берете с головы и разделяете записи, но вот считать уже не можете, потому что понять какой идентификатор к какой строке относится вы не знаете и никто не знает. А надо бы знать!
34. user1202776 19.08.19 12:09 Сейчас в теме
(33)
Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
УИД = Строка(строкаТЗ.Документ);
СохранитьЗначение("Вернул"+УИД,						строкаТЗ.Вернул); 
СохранитьЗначение("НакладнаяЗакрыта"+УИД,			строкаТЗ.НакладнаяЗакрыта); 
СохранитьЗначение("БезПечати"+УИД,					строкаТЗ.БезПечати); 
охранитьЗначение("ИзменениеЦены"+УИД,				строкаТЗ.ИзменениеЦены); 
СохранитьЗначение("НакладнаяСКорректировкой"+УИД,	строкаТЗ.НакладнаяСКорректировкой); 
КонецЦикла;
Показать

вот здесь было понятно,в качестве идентификатора бралась ссылка накладной и в "сохранить значение" добавлялась эта ссылка).Сейчас не понимаю, как связать регистр сведений и таблицу и следовательно как считывать нужные статусы.Сможете скинуть пример, как сделать, если знаете?
35. user1202776 20.08.19 09:24 Сейчас в теме
(33)Пробую так, но статусы не сохраняются.По-другому пробовал, так во всех документах показывал, что одна накладная и сохранял только статусы этого одного документа
Процедура ЗагрузитьСтатусыДокументов()
	
 Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
УИД = Строка(строкаТЗ.Документ);
КонецЦикла;   
Запрос=Новый Запрос;
	Запрос.Текст="ВЫБРАТЬ
	             |	СтатусыДокументовСрезПоследних.Вернул,
	             |	СтатусыДокументовСрезПоследних.НакладнаяЗакрыта,
	             |	СтатусыДокументовСрезПоследних.БезПечати,
	             |	СтатусыДокументовСрезПоследних.ИзменениеЦены,
	             |	СтатусыДокументовСрезПоследних.НакладнаяСКорректировкой,
	             |	СтатусыДокументовСрезПоследних.Документ КАК Документ
	             |ИЗ
	             |	РегистрСведений.СтатусыДокументов.СрезПоследних КАК СтатусыДокументовСрезПоследних
	             |ГДЕ
	             |	СтатусыДокументовСрезПоследних.Документ = &Документ";
	Запрос.УстановитьПараметр("Документ",УИД);
	ТаблицаСтатуса=Запрос.Выполнить().Выгрузить();

КонецПроцедуры

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


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

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

	Пока Выборка.Следующий() Цикл	

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

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

Процедура ЗаписатьДанные(ТекущиеДанные)
	Для Каждого Строка Из ТаблицаСтатуса Цикл

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

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

Менеджер.Записать();
КонецЦикла;
КонецЦикла;


КонецПроцедуры
Показать
36. user1202776 20.08.19 09:35 Сейчас в теме
(33)как из регистра сведений взять статусы соответствующие открываемому документа.сможете показать на примере?
37. ice-net 19 22.08.19 10:31 Сейчас в теме
(36) Что такое Документ из ТаблицаСтатуса. Это ссылка на Документ.МаршрутноеЗадание ИЛИ Документ.МаршрутноеЗадание.ДокументыРеализации[n].Реализация?

Вы статусы присваиваете ДОКУМЕНТУ МаршрутноеЗадание ИЛИ построчно в МаршрутноеЗадание.ДокументыРеализации?
Оставьте свое сообщение

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