|
История изменений реквизитов документа, реквизитов табличных частей документа | ☑ | ||
---|---|---|---|---|
0
pups777
22.10.18
✎
19:16
|
добрый вечер взял ссылку отсюда Книга знаний: История изменений реквизитов документа, реквизитов табличных частей документа
Разместил в модуле УправленческийКонтроль все необходимое.в документе счет покупателю в модуле документа в процедуре при записи разместил УправленческийКонтроль.ФиксацияРеквизитовДокумента (ЭтотОбъект,"Номенклатура1"); без единички писались все реквизиты кроме табличной части.поставил единичку и все висит долгое время.не могу понять почему у меня не пишутся реквизиты табличной части и как определить номер табличной части? тупо по возрастанию? |
|||
1
pups777
22.10.18
✎
19:27
|
Найти(СписокКлючевыхПолей,Строка(СчетчикТЧ)) вот эта строка почему то не срабатывает
|
|||
2
pups777
22.10.18
✎
19:28
|
СписокКлючевыхПолей=Номенклатура
|
|||
3
Chameleon1980
22.10.18
✎
20:08
|
что за бред?
|
|||
4
pups777
22.10.18
✎
20:32
|
почитай по ссылке.и поймешь где бред а где вопрос.ибо там цикл какой то бесконечный
Если Найти(СписокКлючевыхПолей,Строка(СчетчикТЧ)) Тогда //Если поля по текущей ТЧ указаны Пока Найти(СокрЛП(СписокКлючевыхПолей),Строка(СчетчикТЧ)) Цикл//то добавляем их в условие соединения у меня при вызове УправленческийКонтроль.ФиксацияРеквизитовДокумента (ЭтотОбъект,"Номенклатура1"); в цикле всегда стоит 13.позиция символа.и цикл бесконечен получается. |
|||
5
pups777
22.10.18
✎
20:34
|
где ДокОбъект- это ЭтотОбъект
документа, СписокКлючевыхПолей – это те ключевые поля, в разрезе которых будет происходить сравнение таблиц До и После записи. Указывается строкой, перечислением(через запятую) колонок с указанием номера табличной части. («Материал1,Цена1», если две табличной части: «Материал1,Цена1,Тара2». Тара2 – означает, что у второй табличной части нас интересует только колонка «Тара») Записи измененных значений в РС записываются в виде строки. я указал поля.и цикл постоянно 13 гоняет позицию |
|||
6
pups777
22.10.18
✎
20:46
|
оказывается цикл идет только по ТЧ Товары и Возвратная тара
|
|||
7
pups777
22.10.18
✎
20:57
|
этот кусок кода почему то только две табличные части обрабатывает Товары и возвратная тара.а есть еще услуги
СчетчикТЧ = 1; ДЛя каждого ТЧ ИЗ Ссылка.Метаданные().ТабличныеЧасти Цикл ТАблицаЗначенийДо = Ссылка[ТЧ.Имя].Выгрузить(); ТаблицаЗначенийПосле = ДокОбъект[ТЧ.Имя].Выгрузить(); Запрос = Новый Запрос; Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ Первая |ИЗ | &ТаблицаЗначенийДо КАК ТЧДо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ПОМЕСТИТЬ Вторая |ИЗ | &ТаблицаЗначенийПосле КАК ТЧПосле |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ИЗ | Первая КАК Первая | ПОЛНОЕ СОЕДИНЕНИЕ Вторая КАК Вторая |ПО"; СоюзИ = ""; ИзменяемоеЗначение =""; списокКолонок = СписокКлючевыхПолей+","; СписокКолонок = Новый СписокЗначений; Если Найти(СписокКлючевыхПолей,Строка(СчетчикТЧ)) Тогда //Если поля по текущей ТЧ указаны Пока Найти(СокрЛП(СписокКлючевыхПолей),Строка(СчетчикТЧ)) Цикл//то //добавляем их в условие соединения КОлонкаТЧ = Сред(СписокКлючевыхПолей,1,Найти(СписокКлючевыхПолей,Строка(СчетчикТЧ))-1); СписокКолонок.Добавить(КолонкаТЧ); СписокКлючевыхПолей = СтрЗаменить(СписокКлючевыхПолей, КолонкаТЧ+Строка(СчетчикТЧ)+",",""); Текст = Текст+СоюзИ+" | Первая."+КолонкаТЧ+" = Вторая."+КолонкаТЧ; СоюзИ =" |И"; КонецЦикла; Иначе ПРервать; КонецЕСли; Запрос.Текст = Текст; Запрос.УстановитьПараметр("ТаблицаЗначенийДо",ТаблицаЗначенийДо); Запрос.УстановитьПараметр("ТаблицаЗначенийПосле",ТаблицаЗначенийПосле); Выборка = Запрос.Выполнить().Выбрать(); Пока выборка.Следующий() Цикл Если Выборка[КолонкаТЧ] = NULL тогда //Добавили ВИдДействия = Перечисления.ВидДействияСОбъектом.Добавление; Добавлено = "1"; КонецЕсли; Если Выборка[КолонкаТЧ+"1"] = NULL тогда //Удалили ВидДействия = Перечисления.ВидДействияСОбъектом.Удаление; Добавлено = ""; КонецЕсли; Если Выборка[КолонкаТЧ] = Выборка[КолонкаТЧ+"1"] тогда //Изменили ВидДействия = перечисления.ВидДействияСОбъектом.Изменение; Добавлено = ""; КонецЕсли; Для каждого Колонка из ТаблицаЗначенийДо.КОлонки Цикл Если Колонка.Имя <> "НомерСтроки" Тогда //не учитывая сортировку строк Если выборка[Колонка.Имя]<>выборка[Колонка.Имя+"1"] Тогда Для каждого Поле из СписокКолонок Цикл ИзменяемоеЗначение = ИзменяемоеЗначение + "_"+Строка(выборка[Строка(Поле)+Добавлено]); КонецЦикла; РегистрацияВРегистр(ДокОбъект,ВидДействия,Тч.Имя+"_"+ИзменяемоеЗначение+"("+Колонка.Имя+")", Строка (Выборка[Колонка.Имя]),Строка(Выборка[Колонка.Имя+"1"])); ИзменяемоеЗначение = ""; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; СчетчикТЧ= СчетчикТЧ+1; КОнецЦикла; //++Реквизиты ТЧ объекта |
|||
8
d4rkmesa
22.10.18
✎
21:31
|
(0) http://catalog.mista.ru/public/66851/
"Ошибка! Публикация неактивна или находится на модерации." Думаю, смысла обсуждать нет. Другое _похожее_ решение на Инфостарте тоже не без косяков. Бред все эти истории изменений. Для тех реквизитов что нужно, проще делать истории изменения выборочно. |
|||
9
pups777
22.10.18
✎
21:34
|
разобрался.может кому пригодится.
для того чтобы писать в историю табличную часть "услуги" надо строку сделать так: УправленческийКонтроль.ФиксацияРеквизитовДокумента (ЭтотОбъект,"Номенклатура1,Номенклатура2,Номенклатура3,"); подозреваю именно потому что Услуги 3-яя ТЧ |
|||
10
pups777
22.10.18
✎
21:35
|
причем последняя запятая важна.хотя в статье этого нет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |