|
Перепровести несколько документов | ☑ | ||
---|---|---|---|---|
0
kupreeff
24.04.20
✎
22:58
|
Всем привет! Подскажите программисту с семерочным мышлением :) Есть структура документов, основной и подчиненные ему. Требуется при проведении любого документа из данной структуры организовать следующий алгоритм: сделать все документы из структуры непроведенными и последовательно провести их (сначала основной, затем подчиненные в определенной последовательности, она в сути проблемы не важна). Если проводим основной, то тут понятно, делаю подписку, в ней к Источнику нахожу подчиненные документы, делаю их непроведенными, кидаю в список значений, затем перебираю список и перепровожу документы. Если же проводится один из подчиненных документов, то не очень понимаю, как отработать это событие. ПОначалу сделал в процедуре ПослеЗаписи вызов процедуры общего модуля, в которой проделываю вышеописанный процесс, но тогда тот документ, который инициировал перепроведение получает "неактуальную версию" и незаписывается,видимо потому, как в процессе проведения на него уже была получена ссылка. Извиняюсь, что много текста, думал получится короче объяснить, не получилось,увы.
Если лень читать всё, то в кранце так: как бы вы организовали при проведении подчиненного документа перепроведение всей структуры, в которую входит документ (с предварительным распроведением). Спасибо! Не болейте! |
|||
1
2mugik
26.04.20
✎
05:55
|
вообще не проводи этот подчиненный документ.Сразу запускай описанный тобой алгоритм проведения начиная с главного.
|
|||
2
kupreeff
27.04.20
✎
09:28
|
(2) а вот как это сделать? Пользователь открыл подчиненный документ, отредактировал его, записывает, как теперь именно запустить проведения с корневого документа?
|
|||
3
Irbis
27.04.20
✎
09:29
|
Изначально постановка задачи бредовая. Колись что на самом деле надо, некуй изобретать квадратное колесо.
|
|||
4
ИУБиПовиц
27.04.20
✎
09:42
|
При проведении записывать документы к проведению в какой нить регистр, затем фоном выполнять алгоритм:)
но если не сможет провестись док какой нить? че делать то будете?:) |
|||
5
kupreeff
27.04.20
✎
09:51
|
(3) каюсь, но я выше написал, что семерошник со стажем, это очень сказывается)
Итак, есть договорные отношения, их регулируют документы Заключение договора и Дополнительное соглашение, они формируют регистр "Текущий документ аренды" (т.е. в любой момент времени действует ровно один документ). В документах есть начало и окончание действия: в заключении общий период аренды, в д/с - внутрение периоды (т.е. в рамках общего периода аренды). При проведении в регистр делается две записи: на начало - искомый документ, на конец(+1 секунда) - документ, который был на начало (-1 секунда). Так вот, если задним числом меняем начало и окончание в документе (либо вообще удаляем его), то регистр нужно полностью (для упрощения) перестраивать. Вот такой вот бред) |
|||
6
Ненавижу 1С
гуру
27.04.20
✎
09:53
|
Процедура ПриЗаписи(Отказ)
//..... Если Проведен и Не ДополнительныеСвойства.Свойство("ПерезаписьГруппыДокументов") Тогда ПараметрПерезаписьГруппыДокументов = Новый Структура("Источник"); СписокДокументов = СформироватьСписокДокументов(Ссылка); Для каждого Эл Из СписокДокументов Цикл ДокументОбъект = Эл.Значение.ПолучитьОбъект(); ПараметрПерезаписьГруппыДокументов.Источник = Ссылка; ДокументОбъект.ДополнительныеСвойства.Вставить("ПерезаписьГруппыДокументов",ПараметрПерезаписьГруппыДокументов); ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
7
kupreeff
27.04.20
✎
09:56
|
(6) это рабочий код, извиняюсь, или мне для затравочки?)
|
|||
8
fisher
27.04.20
✎
10:04
|
(0) Если перепроведение головного документа при перепроведении подчиненного - это оксюморон какой-то.
|
|||
9
kupreeff
27.04.20
✎
10:19
|
(8) да и весь алгоритм мне видится кривым, но писал лет 5 назад, а то и более, сейчас столкнулся с косяком одним, связанным с топиком, хочу просто обойти, не переписывая "полконфигурации".
|
|||
10
Irbis
27.04.20
✎
10:24
|
(5) И каковы причины (основания для внесения изменений) для правки "задним" числом сроков о которых уже "договорились"? Если "я так хочу", то задача административная, и программными метоами решается не очень хорошо. Я бы смотре в сторону ввод нового доп соглашения, которое должно нормальным числом определить и отменить действующие (завершить или заблокировать расчет по ним) или, возможно, даже будущие периоды. То есть обычный новый допик с проверкой на пересечение ведённых дат и выбором отменяемых документов.
|
|||
11
Ненавижу 1С
гуру
27.04.20
✎
10:26
|
(7) ну всех особенностей отсюда не видно, скажем - направление
|
|||
12
ИУБиПовиц
27.04.20
✎
10:27
|
(5) подождите, но если вам только регистр перестраивать, зачем документы перепроводить. Обрабатывайте набор записей подчиненные каждому регистратору, а доки не трогайте (ведь в них как я понял никаких изменений не делается?)
|
|||
13
kupreeff
27.04.20
✎
10:37
|
(12) интересная мысль, спасибо.
(11) спасибо за направление) |
|||
14
kupreeff
27.04.20
✎
10:38
|
(10) да самые разные) да, вы верно говорите, но тут ситуация, что надо "на скорую" руку написать.
|
|||
15
Irbis
27.04.20
✎
10:46
|
(14) Неправильная опохмелка ведёт к длительному запою. Это как раз тот случай, когда "костыль" только усугубляет проблему.
|
|||
16
kupreeff
27.04.20
✎
10:59
|
(15) как тонко подмечено)) да, сижу вот думаю, может впрямь переделать все по человечески...?!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |