Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Перепровести несколько документов

Перепровести несколько документов
Я
   kupreeff
 
24.04.20 - 22:58
Всем привет! Подскажите программисту с семерочным мышлением :) Есть структура документов, основной и подчиненные ему. Требуется при проведении любого документа из данной структуры организовать следующий алгоритм: сделать все документы из структуры непроведенными и последовательно провести их (сначала основной, затем подчиненные в определенной последовательности, она в сути проблемы не важна). Если проводим основной, то тут понятно, делаю подписку, в ней к Источнику нахожу подчиненные документы, делаю их непроведенными, кидаю в список значений, затем перебираю список и перепровожу документы. Если же проводится один из подчиненных документов, то не очень понимаю, как отработать это событие. ПОначалу сделал в процедуре ПослеЗаписи вызов процедуры общего модуля, в которой проделываю вышеописанный процесс, но тогда тот документ, который инициировал перепроведение получает "неактуальную версию" и незаписывается,видимо потому, как в процессе проведения на него уже была получена ссылка. Извиняюсь, что много текста, думал получится короче объяснить, не получилось,увы.
Если лень читать всё, то в кранце так: как бы вы организовали при проведении подчиненного документа перепроведение всей структуры, в которую входит документ (с предварительным распроведением). Спасибо! Не болейте!
   2mugik
 
1 - 26.04.20 - 05:55
вообще не проводи этот подчиненный документ.Сразу запускай описанный тобой алгоритм проведения начиная с главного.
   kupreeff
 
2 - 27.04.20 - 09:28
(2) а вот как это сделать? Пользователь открыл подчиненный документ, отредактировал его, записывает, как теперь именно запустить проведения с корневого документа?
   Irbis
 
3 - 27.04.20 - 09:29
Изначально постановка задачи бредовая. Колись что на самом деле надо, некуй изобретать квадратное колесо.
   ИУБиПовиц
 
4 - 27.04.20 - 09:42
При проведении записывать документы к проведению в какой нить регистр, затем фоном выполнять алгоритм:)
но если не сможет провестись док какой нить? че делать то будете?:)
   kupreeff
 
5 - 27.04.20 - 09:51
(3) каюсь, но я выше написал, что семерошник со стажем, это очень сказывается)
Итак, есть договорные отношения, их регулируют документы Заключение договора и Дополнительное соглашение, они формируют регистр "Текущий документ аренды" (т.е. в любой момент времени действует ровно один документ). В документах есть начало и окончание действия: в заключении общий период аренды, в д/с - внутрение периоды (т.е. в рамках общего периода аренды). При проведении в регистр делается две записи: на начало - искомый документ, на конец(+1 секунда) - документ, который был на начало (-1 секунда). Так вот, если задним числом меняем начало и окончание в документе (либо вообще удаляем его), то регистр нужно полностью (для упрощения) перестраивать. Вот такой вот бред)
   Ненавижу 1С
 
6 - 27.04.20 - 09:53
Процедура ПриЗаписи(Отказ)

    //.....

    
    Если Проведен и Не ДополнительныеСвойства.Свойство("ПерезаписьГруппыДокументов") Тогда
        
        ПараметрПерезаписьГруппыДокументов = Новый Структура("Источник");
        СписокДокументов = СформироватьСписокДокументов(Ссылка);
        Для каждого Эл Из СписокДокументов Цикл
            ДокументОбъект = Эл.Значение.ПолучитьОбъект();
            ПараметрПерезаписьГруппыДокументов.Источник = Ссылка;        
            ДокументОбъект.ДополнительныеСвойства.Вставить("ПерезаписьГруппыДокументов",ПараметрПерезаписьГруппыДокументов);
            ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
        КонецЦикла; 
        
    КонецЕсли; 

КонецПроцедуры
   kupreeff
 
7 - 27.04.20 - 09:56
(6) это рабочий код, извиняюсь, или мне для затравочки?)
   fisher
 
8 - 27.04.20 - 10:04
(0) Если перепроведение головного документа при перепроведении подчиненного - это оксюморон какой-то.
   kupreeff
 
9 - 27.04.20 - 10:19
(8) да и весь алгоритм мне видится кривым, но писал лет 5 назад, а то и более, сейчас столкнулся с косяком одним, связанным с топиком, хочу просто обойти, не переписывая "полконфигурации".
   Irbis
 
10 - 27.04.20 - 10:24
(5) И каковы причины (основания для внесения изменений) для правки "задним" числом сроков о которых уже "договорились"? Если "я так хочу", то задача административная, и программными метоами решается не очень хорошо. Я бы смотре в сторону ввод нового доп соглашения, которое должно нормальным числом определить и отменить действующие (завершить или заблокировать расчет по ним) или, возможно, даже будущие периоды. То есть обычный новый допик с проверкой на пересечение ведённых дат и выбором отменяемых документов.
   Ненавижу 1С
 
11 - 27.04.20 - 10:26
(7) ну всех особенностей отсюда не видно, скажем - направление
   ИУБиПовиц
 
12 - 27.04.20 - 10:27
(5) подождите, но если вам только регистр перестраивать, зачем документы перепроводить. Обрабатывайте набор записей подчиненные каждому регистратору, а доки не трогайте (ведь в них как я понял никаких изменений не делается?)
   kupreeff
 
13 - 27.04.20 - 10:37
(12) интересная мысль, спасибо.
(11) спасибо за направление)
   kupreeff
 
14 - 27.04.20 - 10:38
(10) да самые разные) да, вы верно говорите, но тут ситуация, что надо "на скорую" руку написать.
   Irbis
 
15 - 27.04.20 - 10:46
(14) Неправильная опохмелка ведёт к длительному запою. Это как раз тот случай, когда "костыль" только усугубляет проблему.
   kupreeff
 
16 - 27.04.20 - 10:59
(15) как тонко подмечено)) да, сижу вот думаю, может впрямь переделать все по человечески...?!

Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.