Имя: Пароль:
1C
1С v8
Перепровести несколько документов
, ,
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) как тонко подмечено)) да, сижу вот думаю, может впрямь переделать все по человечески...?!
2 + 2 = 3.9999999999999999999999999999999...