![]() |
![]() |
|
Получить данные из предидущей версии объекта 🠗 (Волшебник 30.05.2025 09:28) | ☑ | ||
---|---|---|---|---|
0
Alex7771
29.05.25
✎
20:15
|
Не подскажите, есть база Бухгалтерия 30, в ней включено версифицирование объектов. Как например для Накладной на отгрузки товаров программно получить данные из предидущей версии ( например получить предидущую табличную часть услуги ) ?
|
|||
1
Волшебник
29.05.25
✎
20:25
|
Пишется "предыдущий"
|
|||
2
Мультук
гуру
29.05.25
✎
20:34
|
(0)
Смотрим на функцию ВерсионированиеОбъектов.РазборВерсии(Ссылка, НомерВерсии) Дополнительно читаем описание (в этом же модуле) Функция РазборПредставленияОбъектаXML(ДанныеВерсии, Ссылка) которую вызывает функция РазборВерсии(..) Далее думаем и пишем код обработки |
|||
3
Волшебник
29.05.25
✎
21:33
|
(2) Добавьте контекста, что это БСП
|
|||
4
Alex7771
30.05.25
✎
08:07
|
Результат=ВерсионированиеОбъектов.РазборВерсии(Док,НомерВерсии);
ТЗ1 = Результат.ТабличныеЧасти.Получить("Услуги"); вот так у меня в ТЗ1 получилась табличная часть из прошлой версии. Правильно я понимаю, что строчки в ней сопоставляются с текущей версией по реквизиту "Идентификатор строки" ? т.е. теперь мне надо из этой таблицы значений если например поле "Содержание" не совпадает, перенести это в текущий документ ? ( мне всю версию заменять не нужно, нужно только содержание поправить ) Или есть какой-нибудь более простой фэншуйный бспшный способ ? :) |
|||
5
Волшебник
30.05.25
✎
08:08
|
(4) Вам надо заменить всю версию.
|
|||
6
Alex7771
30.05.25
✎
08:23
|
(5) я бы рад, но бухи не хотят. Они похерили именно содержание, суммы они тоже правили но хотят их оставить.
|
|||
7
Мультук
гуру
30.05.25
✎
08:28
|
(4)
За 15 мин можно было бы уже написать весь код замены содержимого из 4-5 строк и начать тестить. Но вы ждете что вдруг есть волшебный метод ОбщийМодульМиста.СделатьДляAlex7771_Хорошо () Ну серьезно ? |
|||
8
Волшебник
30.05.25
✎
08:44
|
(6) Вы должны настоять, чтобы вернуть предыдущий идентификатор версии
|
|||
9
maxab72
30.05.25
✎
08:47
|
и в скольких строках надо менять? в двух или в трех?
|
|||
10
Fish
гуру
30.05.25
✎
09:05
|
(6) Путь удалят/сторнируют неправильный документ, и заведут новый - с правильным содержимым и суммами.
Нечего их баловать, за косяки в данных должны отвечать пользователи, а не программист. |
|||
11
Eiffil123
30.05.25
✎
09:27
|
(7) за 15 минут можно открыть прежнюю версию и вручную перебить содержание в новый документ.
Категорически против программирования по таким разовым задачам, где время на разработку сопоставимо с временем ручного труда. |
|||
12
Волшебник
30.05.25
✎
09:29
|
(0) версифицирование... хе-хе
|
|||
13
Alex7771
30.05.25
✎
10:24
|
(11) накладных несколько тысяч
|
|||
14
Alex7771
30.05.25
✎
10:26
|
короче вот так сделал, вроде работает
пр = 0; Результат = ВерсионированиеОбъектов.РазборВерсии(Док,НомерВерсии); ТЗ1 = Результат.ТабличныеЧасти.Получить("Услуги"); Для каждого стр из док1.Услуги Цикл стрТЗ1 = ТЗ1.Найти(стр.ИдентификаторСтроки,"ИдентификаторСтроки"); Если стрТЗ1 <> Неопределено Тогда стр.Содержание = стрТЗ1.Содержание; пр = 1; КонецЕсли; КонецЦикла; Если пр=1 Тогда Сообщить("Исправлен документ" + Док); Док1.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |