|
Операция сторно | ☑ | ||
---|---|---|---|---|
0
maurita23
11.11.21
✎
10:53
|
В документе Операция сторно нужно вместо одного документа автоматически выбрать несколько (они копятся на опредеелнном счете) и их автоматически сторникровать. Конфа доработана, много субконто добавлены в счете и не программно тоже.
Выбор, заполнение - всё сдлелано. ЧТобы было видно все субконта использую типовую процедуру СформироватьДвиженияСторноНаСервере, но в табличную часть выводятся только проводки последнего документа. Очистку я убрала. Затык в этой процедуре, как я понимаю, ПрочитатьДвиженияДокумента. АктивностьДвижений = Истина; Для каждого СтрокаРегистра Из Регистры Цикл Если ЗначениеЗаполнено(ДокументДвижений) И ДокументДвижений <> Объект.Ссылка Тогда Если НЕ СтрокаРегистра.ПравоНаИзменение Тогда Продолжить; КонецЕсли; КонецЕсли; Если СтрокаРегистра.Отображение Тогда ИмяРеквизита = СтрокаРегистра.Имя + "НаборЗаписей"; НаборЗаписей = РеквизитФормыВЗначение(ИмяРеквизита); НаборЗаписей.Отбор.Регистратор.Установить(ДокументДвижений); НаборЗаписей.Прочитать(); ЗначениеВРеквизитФормы(НаборЗаписей, ИмяРеквизита); Если ДокументДвижений = Объект.Ссылка Тогда СтрокаРегистра.Записывать = ЭтотОбъект[ИмяРеквизита].Количество() > 0; Если СтрокаРегистра.Записывать Тогда АктивностьДвижений = АктивностьДвижений И ЭтотОбъект[ИмяРеквизита][0].Активность; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Как-то можно сделать, чтобы движения не удалялись, а добавлялись? Вот процедура Процедура СформироватьДвиженияСторноНаСервере1(СторДок, Объект) Если НЕ ПроверитьЗаполнение() Тогда Возврат; КонецЕсли; //ОчиститьДвижения(); //Объект.ТаблицаРегистровНакопления.Очистить(); //Объект.ТаблицаРегистровСведений.Очистить(); РегистрыИсключения = Новый Структура; Для каждого Регистр Из Метаданные.РегистрыСведений Цикл РегистрыИсключения.Вставить(Регистр.Имя); // Регистры сведений не сторнируются КонецЦикла; УстановитьПривилегированныйРежим(Истина); РегистрыСДвижениями = ПроведениеСервер.ПолучитьМассивИспользуемыхРегистров( СторДок, СторДок.Метаданные().Движения, РегистрыИсключения); УстановитьПривилегированныйРежим(Ложь); УстановитьОтображениеВТаблицеРегистров(РегистрыСДвижениями); СоздатьРеквизитыФормы(); ПрочитатьДвиженияДокумента(СторДок); СторнироватьДвижения(); СоздатьЭлементыФормы(); ПересчитатьСуммуОперации(ЭтотОбъект); Попытка Объект.Содержание = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Сторно документа ""%1""'; en = '""%1"" Document Reversing Entry'"), Строка(СторДок)); Исключение КонецПопытки; ЗаполнитьДобавленныеКолонкиТаблиц(); КонецПроцедуры |
|||
1
OldCondom
11.11.21
✎
11:03
|
набор записей перетирается каждый раз по регистратору. В первой процедуре
|
|||
2
OldCondom
11.11.21
✎
11:06
|
вместо Значениевреквизит формы видимо надо сделать не перезапись, а дополнение таблицы
|
|||
3
Dmitrii
гуру
11.11.21
✎
11:13
|
(0) Не знаю что у вас за конфа, но, например в БП 3.0, СторнируемыйДокумент - это реквизит шапки документа Операция. И соответственно нескольких сторнируемых документов у одной Операции быть не может.
Не ипите мозг. Напишите обработку, которая будет создавать и заполнять несколько документов Операция - отдельных для каждого сторнируемого документа. Там кода - одна страница на всё - подбор нужных документов, создание доков Операция, из заполнение и запись. |
|||
4
maurita23
12.11.21
✎
14:02
|
(1) Да, тоже понимаю, что проблема в этом месте.
|
|||
5
maurita23
12.11.21
✎
14:03
|
(2) не подскажите, какой лучше фукцией воспользоваться? У меня надор записей. Иъ надо в таблицу загнать?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |