Как присвоить каждому документу идентификатор, чтобы данные не перезаписывались?
С помощью этой обработки, пользователи ставят накладным из маршрутного задания статусы, например документ в пути, приехал без печати и т.д. Нужно чтобы проставленные флажки(статусы документов) сохранялись.В этом коде данные перезаписываются, так как у документов нету идентификатора. Как присвоить каждому документу идентификатор, чтобы данные не перезаписывались?
Полный код:
Сюда в первом параметре нужно поставить идентификатор документа, чтобы не данные не перезаписывались:
Процедура СохранитьСтатусыДокументов()
Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
УИД = Строка(строкаТЗ.Документ);
УникалИден=Новый УникальныйИдентификатор;
Таблица=Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
Таблица.Колонки.Добавить("УнИден", Новый ОписаниеТипов("УникальныйИдентификатор"));
КонецЦикла;
Для Каждого Стр Из ТаблицаСтатуса Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Стр);
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
Настройки= Новый Соответствие;
Настройки.Вставить("Таблица",ЗначениеВСтрокуВнутр(Таблица));
//СохранТаб=Таблица.СкопироватьКолонки("Вернул,НакладнаяЗакрыта,БезПечати,ИзменениеЦены,НакладнаяСКорректировкой,Контрагент,СуммаНакладной,НомерМаршрутногоЗадания,Документ,Комментарий");
ХранилищеНастроекДанныхФорм.Сохранить("Форма","ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Процедура ЗагрузитьСтатусыДокументов()
УстановитьПривилегированныйРежим(Истина);
ЗначениеНастроек = ХранилищеНастроекДанныхФорм.Загрузить("Форма","ЗаполнениеКроссТаблицы",,"Админ");
м = ЗначениеИзСтрокиВнутр(ЗначениеНастроек.Получить("Таблица"));
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
ПоказатьПолный код:
Процедура СохранитьСтатусыДокументов()
Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
УИД = Строка(строкаТЗ.Документ);
УникалИден=Новый УникальныйИдентификатор;
Таблица=Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
Таблица.Колонки.Добавить("УнИден", Новый ОписаниеТипов("УникальныйИдентификатор"));
КонецЦикла;
Для Каждого Стр Из ТаблицаСтатуса Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Стр);
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
Настройки= Новый Соответствие;
Настройки.Вставить("Таблица",ЗначениеВСтрокуВнутр(Таблица));
//СохранТаб=Таблица.СкопироватьКолонки("Вернул,НакладнаяЗакрыта,БезПечати,ИзменениеЦены,НакладнаяСКорректировкой,Контрагент,СуммаНакладной,НомерМаршрутногоЗадания,Документ,Комментарий");
ХранилищеНастроекДанныхФорм.Сохранить("Форма","ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Процедура ЗагрузитьСтатусыДокументов()
УстановитьПривилегированныйРежим(Истина);
ЗначениеНастроек = ХранилищеНастроекДанныхФорм.Загрузить("Форма","ЗаполнениеКроссТаблицы",,"Админ");
м = ЗначениеИзСтрокиВнутр(ЗначениеНастроек.Получить("Таблица"));
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Процедура КнопкаЗаписатьНажатие(Кнопка)
НаборЗаписей = РегистрыСведений.СтатусыДокументов.СоздатьНаборЗаписей();
Для Каждого Строка Из ТаблицаСтатуса Цикл
мУникальный = Новый УникальныйИдентификатор;
НаборЗаписей.Отбор.Документ.Установить(Строка.Документ);
НаборЗаписей.Отбор.Документ.Использование = Истина;
НаборЗаписей.Отбор.УникальныйИдентификатор.Установить(мУникальный);
НаборЗаписей.Прочитать();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.УникальныйИдентификатор = мУникальный;
НоваяЗапись.Период =ТекущаяДата();
НоваяЗапись.Пользователь =ПараметрыСеанса.ТекущийПользователь;
ЗаполнитьЗначенияСвойств(НоваяЗапись,Строка);
НаборЗаписей.Записать(Ложь);
КонецЦикла;
КонецПроцедуры
Процедура ПриОткрытии()
Таблица=ТаблицаСтатуса;
Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
ЭлементыФормы.ТаблицаСтатуса.СоздатьКолонки();
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("Вернул");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "Вернул";
КолонкаФлаг.Данные = "";
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("НакладнаяЗакрыта");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "НакладнаяЗакрыта";
КолонкаФлаг.Данные = "";
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("БезПечати");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "БезПечати";
КолонкаФлаг.Данные = "";
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("ИзменениеЦены");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "ИзменениеЦены";
КолонкаФлаг.Данные = "";
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("НакладнаяСКорректировкой");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "НакладнаяСКорректировкой";
КолонкаФлаг.Данные = "";
КонецПроцедуры
Процедура ВыборМЗПриИзменении(Элемент)
СохранитьСтатусыДокументов();
ТаблицаСтатуса.Очистить();
СсылкаМЗ=ВыборМЗ.Ссылка;
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Номер КАК НомерНакладной,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Дата КАК ДатаНакладной,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент КАК Контрагент,
| МаршрутноеЗаданиеДокументыРеализации.Ссылка.Номер КАК НомерМаршрутногоЗадания,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Ссылка КАК Документ,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.СуммаДокумента КАК СуммаНакладной
|ИЗ
| Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
|ГДЕ
| МаршрутноеЗаданиеДокументыРеализации.Ссылка = &Ссылка
| И НЕ МаршрутноеЗаданиеДокументыРеализации.Реализация.ПометкаУдаления";
Запрос.УстановитьПараметр("Ссылка",СсылкаМЗ);
Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НовСтрока = ТаблицаСтатуса.Добавить();
НовСтрока.НомерНакладной = Выборка.НомерНакладной;
НовСтрока.ДатаНакладной = Выборка.ДатаНакладной;
НовСтрока.Контрагент = Выборка.Контрагент;
НовСтрока.СуммаНакладной = Выборка.СуммаНакладной;
НовСтрока.НомерМаршрутногоЗадания = Выборка.НомерМаршрутногоЗадания;
НовСтрока.Документ = Выборка.Документ;
КонецЦикла;
ЗагрузитьСтатусыДокументов();
КонецПроцедуры
Процедура ПриЗакрытии()
СохранитьСтатусыДокументов();
КонецПроцедуры
ПоказатьСюда в первом параметре нужно поставить идентификатор документа, чтобы не данные не перезаписывались:
ХранилищеНастроекДанныхФорм.Сохранить("Форма","ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
Прикрепленные файлы:
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
видимо речь о ключе сохранения в хранилище, по которому будут получены значения
вынести тз из цикла в отдельную функцию - это желательно.
например Таблица = ПолучитьТаблицу()
адепты линейного кода будут роптать, но их можно побить палкой
а по ключу сохранения почитать в СП описания методов сохранения/получения значений из хранилища.
вынести тз из цикла в отдельную функцию - это желательно.
например Таблица = ПолучитьТаблицу()
адепты линейного кода будут роптать, но их можно побить палкой
а по ключу сохранения почитать в СП описания методов сохранения/получения значений из хранилища.
(8)что именно прочитать, может я не то читаю?)
сделал так, но все равно не сохраняет:
сделал так, но все равно не сохраняет:
Идентификатор=ЭтаФорма.ВыборМЗ.УникальныйИдентификатор();
Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
УИД = XMLСтрока(строкаТЗ.Документ);
УникалИден=Новый УникальныйИдентификатор;
Таблица=Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
Таблица.Колонки.Добавить("УнИден", Новый ОписаниеТипов("УникальныйИдентификатор"));
КонецЦикла;
Для Каждого Стр Из ТаблицаСтатуса Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Стр);
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
Настройки= Новый Соответствие;
Настройки.Вставить("Таблица",ЗначениеВСтрокуВнутр(Таблица));
//СохранТаб=Таблица.СкопироватьКолонки("Вернул,НакладнаяЗакрыта,БезПечати,ИзменениеЦены,НакладнаяСКорректировкой,Контрагент,СуммаНакладной,НомерМаршрутногоЗадания,Документ,Комментарий");
Если ЗначениеЗаполнено(Идентификатор) тогда
ХранилищеНастроекДанныхФорм.Удалить(Идентификатор,"ЗаполнениеКроссТаблицы","Админ");
Иначе
Идентификатор = новый УникальныйИдентификатор;
КонецЕсли;
ХранилищеНастроекДанныхФорм.Сохранить(Идентификатор,"ЗаполнениеКроссТаблицы" ,Настройки ,,"Админ");
УстановитьПривилегированныйРежим(Ложь);
Показать
(0) а можете чуть конкретнее?
Вам надо что бы все записи не перезаписывались тут или что? или видеть когда какой флажок поменялся, т.е. историю?
Процедура КнопкаЗаписатьНажатие(Кнопка)
НаборЗаписей = РегистрыСведений.СтатусыДокументов.СоздатьНаборЗаписей();
Для Каждого Строка Из ТаблицаСтатуса Цикл
мУникальный = Новый УникальныйИдентификатор;
НаборЗаписей.Отбор.Документ.Установить(Строка.Документ);
НаборЗаписей.Отбор.Документ.Использование = Истина;
НаборЗаписей.Отбор.УникальныйИдентификатор.Установить(мУникальный);
НаборЗаписей.Прочитать();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.УникальныйИдентификатор = мУникальный;
НоваяЗапись.Период =ТекущаяДата();
НоваяЗапись.Пользователь =ПараметрыСеанса.ТекущийПользователь;
ЗаполнитьЗначенияСвойств(НоваяЗапись,Строка);
НаборЗаписей.Записать(Ложь);
КонецЦикла;
КонецПроцедуры
ПоказатьВам надо что бы все записи не перезаписывались тут или что? или видеть когда какой флажок поменялся, т.е. историю?
(12) Сделай отдельный регистр сведений для хранения статусов. Хотя вы пишите, что уже сохраняются статусы в регистр. Что в итоге нужно то? историю изменения этих статусов - тогда так же регистр сведений для хранения истории и по нему восстанавливать... но суть задачи я что то уловить не могу.
(11) до этого сохранял так, но так сохраняет только для пользователя, то есть для пользователя показывается проставленные ими флажки.
и восстанавливал так:
//Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
//УИД = Строка(строкаТЗ.Документ);
// СохранитьЗначение("Вернул"+УИД, строкаТЗ.Вернул);
// СохранитьЗначение("НакладнаяЗакрыта"+УИД, строкаТЗ.НакладнаяЗакрыта);
// СохранитьЗначение("БезПечати"+УИД, строкаТЗ.БезПечати);
// СохранитьЗначение("ИзменениеЦены"+УИД, строкаТЗ.ИзменениеЦены);
// СохранитьЗначение("НакладнаяСКорректировкой"+УИД, строкаТЗ.НакладнаяСКорректировкой);
//КонецЦикла;
Показатьи восстанавливал так:
//Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
// УИД = Строка(строкаТЗ.Документ);
// строкаТЗ.Вернул = ВосстановитьЗначение("Вернул"+УИД);
// строкаТЗ.НакладнаяЗакрыта = ВосстановитьЗначение("НакладнаяЗакрыта"+УИД);
// строкаТЗ.БезПечати = ВосстановитьЗначение("БезПечати"+УИД);
// строкаТЗ.ИзменениеЦены = ВосстановитьЗначение("ИзменениеЦены"+УИД);
// строкаТЗ.НакладнаяСКорректировкой = ВосстановитьЗначение("НакладнаяСКорректировкой"+УИД);
//КонецЦикла;
Странная у вашей обработки логика...
попробуйте что-то типа этого:
попробуйте что-то типа этого:
Процедура ЗагрузитьСтатусыДокументов()
Запрос = новый запрос;
Запрос.текст = "Выбрать * из РегистрСведений.Вашрегистр.СрезПоследних(,ОТБОР_ЕСЛИ_НУЖЕН) как таблица";
ВашаТаблицаФормы = Запрос.Выполнить().Выгрузить();
КонецПроцедуры
Процедура ПриОткрытии()
//....
ЗагрузитьСтатусыДокументов();
КонецПроцедуры
Процедура ВыборМЗПриИзменении(Элемент)
ТекущиеДанные = ЭлементыФормы.ВашаТаблицаФормы.ТекущиеДанные;
ЗаписатьДанные(ТекущиеДанные);
КонецПроцедуры
процедура ЗаписатьДанные(ТекущиеДанные)
Менеджер = РегистрыСведений.Вашрегистр.СоздатьМенеджерЗаписи();
Менеджер.Измерение1 = ТекущиеДанные .Измерение1;
//.......
Менеджер.Измерение999 = ТекущиеДанные .Измерение999;
МенеджерЗаписи.Прочитать();
МенеджерЗаписи.Флажок1= ТекущиеДанные.Флажок1;
//.....
МенеджерЗаписи.Флажок999= ТекущиеДанные.Флажок999;
МенеджерЗаписи.Записать();
Конецпроцедуры;
Показать
А как Ваш уникальный идентификатор, по которому ВЫ
строкам вашей табличной части
реализовал то,что мне нужно было. и все работало.
привязан к
строкам вашей табличной части
Запрос.Текст="ВЫБРАТЬ
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Номер КАК НомерНакладной,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Дата КАК ДатаНакладной,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент КАК Контрагент,
| МаршрутноеЗаданиеДокументыРеализации.Ссылка.Номер КАК НомерМаршрутногоЗадания,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Ссылка КАК Документ,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.СуммаДокумента КАК СуммаНакладной
|ИЗ
| Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
|ГДЕ
| МаршрутноеЗаданиеДокументыРеализации.Ссылка = &Ссылка
| И НЕ МаршрутноеЗаданиеДокументыРеализации.Реализация.ПометкаУдаления";
Показать
(32) Это привязка только документа, а в документе n строк (Документ, НомерМаршрутногоЗадания, ДатаНакладной и так далее).
Запись в регистр при текущей структуре базы идет только по документу и идентификатору, который вы берете с головы и разделяете записи, но вот считать уже не можете, потому что понять какой идентификатор к какой строке относится вы не знаете и никто не знает. А надо бы знать!
Запись в регистр при текущей структуре базы идет только по документу и идентификатору, который вы берете с головы и разделяете записи, но вот считать уже не можете, потому что понять какой идентификатор к какой строке относится вы не знаете и никто не знает. А надо бы знать!
(33)
вот здесь было понятно,в качестве идентификатора бралась ссылка накладной и в "сохранить значение" добавлялась эта ссылка).Сейчас не понимаю, как связать регистр сведений и таблицу и следовательно как считывать нужные статусы.Сможете скинуть пример, как сделать, если знаете?
Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
УИД = Строка(строкаТЗ.Документ);
СохранитьЗначение("Вернул"+УИД, строкаТЗ.Вернул);
СохранитьЗначение("НакладнаяЗакрыта"+УИД, строкаТЗ.НакладнаяЗакрыта);
СохранитьЗначение("БезПечати"+УИД, строкаТЗ.БезПечати);
охранитьЗначение("ИзменениеЦены"+УИД, строкаТЗ.ИзменениеЦены);
СохранитьЗначение("НакладнаяСКорректировкой"+УИД, строкаТЗ.НакладнаяСКорректировкой);
КонецЦикла;
Показатьвот здесь было понятно,в качестве идентификатора бралась ссылка накладной и в "сохранить значение" добавлялась эта ссылка).Сейчас не понимаю, как связать регистр сведений и таблицу и следовательно как считывать нужные статусы.Сможете скинуть пример, как сделать, если знаете?
(33)Пробую так, но статусы не сохраняются.По-другому пробовал, так во всех документах показывал, что одна накладная и сохранял только статусы этого одного документа
Процедура ЗагрузитьСтатусыДокументов()
Для каждого строкаТЗ Из ТаблицаСтатуса Цикл
УИД = Строка(строкаТЗ.Документ);
КонецЦикла;
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| СтатусыДокументовСрезПоследних.Вернул,
| СтатусыДокументовСрезПоследних.НакладнаяЗакрыта,
| СтатусыДокументовСрезПоследних.БезПечати,
| СтатусыДокументовСрезПоследних.ИзменениеЦены,
| СтатусыДокументовСрезПоследних.НакладнаяСКорректировкой,
| СтатусыДокументовСрезПоследних.Документ КАК Документ
|ИЗ
| РегистрСведений.СтатусыДокументов.СрезПоследних КАК СтатусыДокументовСрезПоследних
|ГДЕ
| СтатусыДокументовСрезПоследних.Документ = &Документ";
Запрос.УстановитьПараметр("Документ",УИД);
ТаблицаСтатуса=Запрос.Выполнить().Выгрузить();
КонецПроцедуры
Процедура ПриОткрытии()
Таблица=ТаблицаСтатуса;
Таблица.Колонки.Добавить("Вернул", Новый ОписаниеТипов("Булево"));
Таблица.Колонки.Добавить("НакладнаяЗакрыта", Новый ОписаниеТипов("Булево"),"Накладная закрыта");
Таблица.Колонки.Добавить("БезПечати", Новый ОписаниеТипов("Булево"),"Без печати");
Таблица.Колонки.Добавить("ИзменениеЦены", Новый ОписаниеТипов("Булево",),"Изменение цены");
Таблица.Колонки.Добавить("НакладнаяСКорректировкой", Новый ОписаниеТипов("Булево"),"Накладная с корректировкой");
Таблица.Колонки.Добавить("НомерНакладной", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(30)),"Номер накладной");
Таблица.Колонки.Добавить("ДатаНакладной", Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты(ЧастиДаты.Дата)),"Дата накладной");
Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Таблица.Колонки.Добавить("СуммаНакладной", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)),"Сумма накладной");
Таблица.Колонки.Добавить("НомерМаршрутногоЗадания", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)),"Номер маршрутного задания");
Таблица.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
Таблица.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
ЭлементыФормы.ТаблицаСтатуса.СоздатьКолонки();
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("Вернул");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "Вернул";
КолонкаФлаг.Данные = "";
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("НакладнаяЗакрыта");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "НакладнаяЗакрыта";
КолонкаФлаг.Данные = "";
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("БезПечати");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "БезПечати";
КолонкаФлаг.Данные = "";
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("ИзменениеЦены");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "ИзменениеЦены";
КолонкаФлаг.Данные = "";
КолонкаФлаг = ЭлементыФормы.ТаблицаСтатуса.Колонки.Найти("НакладнаяСКорректировкой");
КолонкаФлаг.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КолонкаФлаг.УстановитьЭлементУправления(Тип("Флажок"));
КолонкаФлаг.ДанныеФлажка = "НакладнаяСКорректировкой";
КолонкаФлаг.Данные = "";
ЗагрузитьСтатусыДокументов();
КонецПроцедуры
Процедура ВыборМЗПриИзменении(Элемент)
ТаблицаСтатуса.Очистить();
СсылкаМЗ=ВыборМЗ.Ссылка;
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Номер КАК НомерНакладной,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Дата КАК ДатаНакладной,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент КАК Контрагент,
| МаршрутноеЗаданиеДокументыРеализации.Ссылка.Номер КАК НомерМаршрутногоЗадания,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Ссылка КАК Документ,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.СуммаДокумента КАК СуммаНакладной
|ИЗ
| Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
|ГДЕ
| МаршрутноеЗаданиеДокументыРеализации.Ссылка = &Ссылка
| И НЕ МаршрутноеЗаданиеДокументыРеализации.Реализация.ПометкаУдаления";
Запрос.УстановитьПараметр("Ссылка",СсылкаМЗ);
Выборка=Запрос.Выполнить().Выбрать();
Менеджер = РегистрыСведений.СтатусыДокументов.СоздатьМенеджерЗаписи();
Менеджер.Прочитать();
Пока Выборка.Следующий() Цикл
НовСтрока = ТаблицаСтатуса.Добавить();
НовСтрока.НомерНакладной = Выборка.НомерНакладной;
НовСтрока.ДатаНакладной = Выборка.ДатаНакладной;
НовСтрока.Контрагент = Выборка.Контрагент;
НовСтрока.СуммаНакладной = Выборка.СуммаНакладной;
НовСтрока.НомерМаршрутногоЗадания = Выборка.НомерМаршрутногоЗадания;
НовСтрока.Документ = Выборка.Документ;
КонецЦикла;
ЗагрузитьСтатусыДокументов();
Пока Выборка.Следующий() Цикл
Менеджер.БезПечати= ТекущиеДанные.БезПечати;
Менеджер.Вернул= ТекущиеДанные.Вернул;
Менеджер.ИзменениеЦены= ТекущиеДанные.ИзменениеЦены;
Менеджер.НакладнаяЗакрыта= ТекущиеДанные.НакладнаяЗакрыта;
Менеджер.НакладнаяСКорректировкой= ТекущиеДанные.НакладнаяСКорректировкой;
Менеджер.Период=ТекущаяДата();
Менеджер.Пользователь =ПараметрыСеанса.ТекущийПользователь;
Менеджер.НомерНакладной=Выборка.НомерНакладной;
Менеджер.Документ=Выборка.Документ;
Менеджер.НомерМаршрутногоЗадания=Выборка.НомерМаршрутногоЗадания;
Менеджер.СуммаНакладной=Выборка.СуммаНакладной;
Менеджер.Контрагент=Выборка.Контрагент;
Менеджер.Записать();
КонецЦикла;
КонецПроцедуры
Процедура ЗаписатьДанные(ТекущиеДанные)
Для Каждого Строка Из ТаблицаСтатуса Цикл
СсылкаМЗ=ВыборМЗ.Ссылка;
Менеджер.Прочитать();
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Номер КАК НомерНакладной,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Дата КАК ДатаНакладной,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент КАК Контрагент,
| МаршрутноеЗаданиеДокументыРеализации.Ссылка.Номер КАК НомерМаршрутногоЗадания,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Ссылка КАК Документ,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.Контрагент,
| МаршрутноеЗаданиеДокументыРеализации.Реализация.СуммаДокумента КАК СуммаНакладной
|ИЗ
| Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
|ГДЕ
| МаршрутноеЗаданиеДокументыРеализации.Ссылка = &Ссылка
| И НЕ МаршрутноеЗаданиеДокументыРеализации.Реализация.ПометкаУдаления";
Запрос.УстановитьПараметр("Ссылка",СсылкаМЗ);
Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Менеджер.БезПечати= ТекущиеДанные.БезПечати;
Менеджер.Вернул= ТекущиеДанные.Вернул;
Менеджер.ИзменениеЦены= ТекущиеДанные.ИзменениеЦены;
Менеджер.НакладнаяЗакрыта= ТекущиеДанные.НакладнаяЗакрыта;
Менеджер.НакладнаяСКорректировкой= ТекущиеДанные.НакладнаяСКорректировкой;
Менеджер.Период=ТекущаяДата();
Менеджер.Пользователь =ПараметрыСеанса.ТекущийПользователь;
Менеджер.НомерНакладной=Выборка.НомерНакладной;
Менеджер.Документ=Выборка.Документ;
Менеджер.НомерМаршрутногоЗадания=Выборка.НомерМаршрутногоЗадания;
Менеджер.СуммаНакладной=Выборка.СуммаНакладной;
Менеджер.Контрагент=Выборка.Контрагент;
ЗаполнитьЗначенияСвойств(Менеджер,Строка);
Менеджер.Записать();
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот