|
Изменить строку РС подчиненного регистратору | ☑ | ||
---|---|---|---|---|
0
shamannk
05.06.12
✎
17:19
|
Имеется Регистр Сведений подчиненный регистратору и нужно обработкой изменить ресурс одной строки и добавить новую. Т.е. получаем набор по регистратору меняем там ресурс и добавляем к набору по регистратору точно такую же только изменив измерение. Как это сделать?
НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор); НаборЗаписей.Прочитать() //Тут так понимаю нужно в наборе найти нужную строку и изменить ее. НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Период = ВыбранныйРегистратор.Дата; НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура; НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор; НоваяЗапись.ЛимитПокупателю = 25; НаборЗаписей.Записать(Ложь); |
|||
1
Deniskind
05.06.12
✎
20:36
|
Попробуйте выгрузить (метод Выгрузить у набора записей) в ТаблицуЗначений, там найти необходимую строку и ее изменить, а затем загрузить с помощью соответствующего метода.
|
|||
2
m-serg74
05.06.12
✎
20:41
|
(0) я понимаю что наверное это очень надо, но вообще то на то он и регистратор, в нем меняете и перепроводите... все...
|
|||
3
Feanor
05.06.12
✎
20:59
|
а в чем проблема то?
единственно НаборЗаписей.Записать(Ложь); неверно, нужно перезаписать набор записей, иначе записи добавятся к исходному набору. |
|||
4
ILM
гуру
05.06.12
✎
21:08
|
(3) А сами пробовали для Регистра Сведений починенного регистратору?
|
|||
5
m-serg74
05.06.12
✎
21:13
|
да проблма не в том как? а прикол в том что будет если тот документ перепроведут? опять обработочка)))
|
|||
6
Feanor
05.06.12
✎
21:15
|
(4) а в чем именно там трудности?
|
|||
7
m-serg74
05.06.12
✎
21:17
|
(6) в (5)
|
|||
8
Feanor
05.06.12
✎
21:17
|
(7) не приходило в голову, что обработку проведения документа тоже можно дописать?
|
|||
9
Живой Ископаемый
05.06.12
✎
21:18
|
2(2) а кто вы такой, чтобы решать за людей что им нужно?
|
|||
10
m-serg74
05.06.12
✎
21:20
|
я не решаю... мне по барабану просто сказал, что думал, или правильно, что в доке одно, в РС другое)
|
|||
11
Feanor
05.06.12
✎
21:21
|
(10) Открою тебе страшную тайну. В доке вообще может ничего не быть :)
|
|||
12
m-serg74
05.06.12
✎
21:22
|
откуда строка которую надо поправить?
|
|||
13
Живой Ископаемый
05.06.12
✎
21:23
|
2(12) из подписки на событие, например... А она вытаскивает из внешних источников данных
|
|||
14
m-serg74
05.06.12
✎
21:25
|
значит все стереть и заново тоже событие)
|
|||
15
m-serg74
05.06.12
✎
21:25
|
только не верится что то...
|
|||
16
Живой Ископаемый
05.06.12
✎
21:26
|
2(14) И чтоже потенциально может помешать просто выполнять код, который заполняет РС, не вызывая событие.. Боязнь что я недостаточно нагружаю СУБД записью таблиц регистра, и хорошо бы чтобы она еще и таблицы документов поперезаписывала?
|
|||
17
m-serg74
05.06.12
✎
21:27
|
а где ТС то?
|
|||
18
Живой Ископаемый
05.06.12
✎
21:28
|
ТС выполняет (1)
|
|||
19
m-serg74
05.06.12
✎
21:29
|
"Изменить строку РС подчиненного регистратору" <> "чтобы она еще и таблицы документов поперезаписывала"
|
|||
20
Живой Ископаемый
05.06.12
✎
21:37
|
2(19) ты сказал (14) как ты предполагал вызвать событие "ПриПроведении" или "ПриЗаписи" документа?
|
|||
21
ILM
гуру
05.06.12
✎
21:50
|
Кому СП недорого )))
[Документ, которым вносится запись в регистр сведений, называется регистратором. Регистры, записываемые независимо, могут свободно редактироваться вручную или средствами встроенного языка. При этом если измерение такого регистра назначено как "ведущее" и значением измерения является ссылка на объект базы данных, то будет считаться, что запись регистра имеет смысл, только пока существует этот объект. Например, если назначить ведущим измерение "Конкурент", то считается, что запись имеет смысл только как информация по данному конкуренту. Соответственно, при удалении конкурента записи по нему будут удалены автоматически. Если регистр записывается регистратором, то это значит, что записи будут жестко подчинены регистраторам - документам. Обычно это значит, что записи будут порождаться при проведении документов. Соответственно, при удалении документа записи будут удаляться автоматически. В отличие от ведущих измерений, регистратор может быть только один. ] |
|||
22
ILM
гуру
05.06.12
✎
21:51
|
(11) Это не фотки по контактам рыскать)))
|
|||
23
Живой Ископаемый
05.06.12
✎
21:52
|
2(21) и что? как это делает невозможной задачу из (0)?
|
|||
24
Feanor
05.06.12
✎
21:52
|
(21) к чему пассаж то? ))
(22) и этот тоже ) |
|||
25
Живой Ископаемый
05.06.12
✎
21:56
|
2(24) видимо проверка зрения... заметит ли кто в тексте слово "Обычно"... Ну или на фантазию... Кто сумеет заметить за этим словом "НЕ всегда"
|
|||
26
Feanor
05.06.12
✎
22:04
|
(25) чота туго со зрением у товарищей... или с фантазией.
|
|||
27
shamannk
06.06.12
✎
09:19
|
Извеняюся...
Док перепроводить сам категорически нельзя, так как его движения многократно меняли и проведет уже не так как надо. Ответ только в (1)? |
|||
28
kabanoff
06.06.12
✎
09:33
|
(27) Задача-то простейшая:
1. Определяешь номер строки, которую нужно изменить. 2. Получаешь запись и меняешь ее:
3. Добавляешь новую запись:
4. Записываешь набор:
|
|||
29
ILM
гуру
06.06.12
✎
12:17
|
А потом, неожиданно, перепроводится документ регистратор.
|
|||
30
kabanoff
06.06.12
✎
12:50
|
(29) Вопреки политике учета и установленной границе запрета этого не произойдет.
|
|||
31
kabanoff
06.06.12
✎
12:58
|
+(30) У нас, к примеру, проведение документов задним числом возможно в исключительных случаях и то только после согласования с бухгалтерией.
По затиранию изменений в движениях прецеденты конечно бывают, но очень редко, и то они приходят к нам с обменом (у нас РБД со сложной схемой миграции). |
|||
32
Живой Ископаемый
06.06.12
✎
13:13
|
2(29) Строят оборотку, ужасаются, и говорят админу Баз 1С:
Чувак, разверни поиз ночной бэкап и перенеси при помощи ВыгрузкаЗагрузкаДанныхХМЛ.епф такой-то документ со всеми его движениями в рабочую базу. |
|||
33
Живой Ископаемый
06.06.12
✎
13:14
|
Ну либо рвут волосы, и пытаются восстановить оборотку по распечаткам при помощи ручных операций, у кого как принято...
|
|||
34
shamannk
06.06.12
✎
13:19
|
(29) к (27)
|
|||
35
m-serg74
06.06.12
✎
13:30
|
(31) смотря какие доки, а так вообще то насколько я знаю если период закрыт, то делается корректировка-сторно)))
|
|||
36
shamannk
08.06.12
✎
09:34
|
Чета тормажу есть табличная часть со строками регистра там есть строки с повторяющими регистраторами (но разные показатели) как бы мне эти произвести отбор по этим регистраторам и за раз обработать эти строки. Как то не хочется каждый раз создавать набор для каждой строки.
|
|||
37
hhhh
08.06.12
✎
09:39
|
(36) как-то не хочется, а придется.
|
|||
38
shamannk
08.06.12
✎
09:44
|
(37) А разве нельзя сделать так: отобрать из табл. части строки с одинаковым регистратором (назовем набор А) по нему получить набор (набор Б)из регистра. Циклом пройтись по набору А найти такие же строки в наборе Б изменить их и так далее. Чтоб не повторяться обработанные регистраторы удалять что-ли.
|
|||
39
hhhh
08.06.12
✎
09:46
|
(38) не ну это можно, только не циклом проходиться каждый раз, а волшебным словом НайтиСтроки.
|
|||
40
shamannk
08.06.12
✎
11:10
|
Вот как то так
ОбработанныеРегистраторы = Новый СписокЗначений; Для Каждого Стр Из ТабЧасть Цикл Если ОбработанныеРегистраторы.НайтиПоЗначению(Стр.Регистратор) = Неопределено Тогда Отбор = Новый Структура("Регистратор",Стр.Регистратор); НаборТЧ = Результат.Выгрузить(Отбор); НаборРегистра = РегистрыСведений.СУД_ЗначенияПоказателей.СоздатьНаборЗаписей(); НаборРегистра.Отбор.Регистратор.Установить(Стр.Регистратор); НаборРегистра.Прочитать(); ВыгрузкаРегистра = НаборРегистра.Выгрузить(); Для Каждого СтрНаборТЧ Из НаборТЧ Цикл ОтборНабораРегистра = Новый Структура ("Дата, Аналитика1, Аналитика2, Аналитика3, Аналитика4, Аналитика5, Элемент, Счет, ДопАналитика1", СтрНаборТЧ.Дата,СтрНаборТЧ.Аналитика1,СтрНаборТЧ.Аналитика2,СтрНаборТЧ.Аналитика3,СтрНаборТЧ.Аналитика4,СтрНаборТЧ.Аналитика5,СтрНаборТЧ.Элемент,СтрНаборТЧ.Счет,СтрНаборТЧ.ДопАналитика1); НайдСтрока = ВыгрузкаРегистра.НайтиСтроки(ОтборНабораРегистра); Если НайдСтрока.Количество() = 1 Тогда //Тут я как то растерялся строку то нашел и изменить ее смогу вот как ее обратно запизать в тз КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; |
|||
41
shamannk
08.06.12
✎
11:11
|
(40) + Результат это ТабЧасть (забыл подкорректировать)
|
|||
42
Feanor
08.06.12
✎
11:43
|
Если НайдСтрока.Количество() = 1 Тогда
//Тут я как то растерялся строку то нашел и изменить ее смогу вот как ее обратно запизать в тз КонецЕсли; Для Каждого НайдСтр Из НайдСтрока Цикл НайдСтр.Траляля = Опапа; КонецЦикла; ... НаборРегистра.Загрузить(ВыгрузкаРегистра); НаборРегистра.Записать(); |
|||
43
shamannk
08.06.12
✎
11:46
|
(42) ага догнал, подумал сначала что там просто копия ан нет прям строка ТЗ. Больше мучает вопрос оптимизации, менять строки регистра много как это все работать будет может что то оптимизировать можно.
|
|||
44
Feanor
08.06.12
✎
11:56
|
(43) да никак, по-моему, при записи в этом случае отбор по регистратору обязателен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |