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

1. Hydromix 06.02.12 11:43 Сейчас в теме
Добрый день. Прошу помочь с такой вот проблемой, при последнем обновлении базы ПУБ во всех документах пропали ссылки на документ основание, причём в комментариях к документу название документа основания остались, а вот ссылки пропали...есть ли какой-либо способ восстановить ссылки, кроме ручного перепроведения, ибо на этой уйдёт полжизни.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. aksyoma 169 06.02.12 11:56 Сейчас в теме
3. Sergius79 06.02.12 11:59 Сейчас в теме
Есть - вернуться к архиву до обновления и посмотреть что там изменилось в реквизите "ДокументОснование" после обновления,"Тип объекта" и в конфигурации обновления установить такой же тип, тогда после обновления он не пропадет.
18. Timesoft 271 06.02.12 16:10 Сейчас в теме
(3) Sergius79, (16) Hydromix,
В типовой ПУБ ДокументОснование - ОБЩИЙ реквизит, если у (1) он превратился в реквизит КАЖДОГО документа - надо искать причину и восстанавливать типовую конфу, иначе проблемы только начинаются и восстановление ссылок (а может и не только) станет увлекательным периодическим аттракционом.
4. Sergius79 06.02.12 12:00 Сейчас в теме
Если нет, то в помощь возьмите программиста и пусть он напишет обработку которая по представлению "записи в комментарии" найдет и вставит сами документы.
6. Sergius79 06.02.12 12:17 Сейчас в теме
9. Altair777 644 06.02.12 13:21 Сейчас в теме
(4) Sergius79, лучше не из комментарий вытаскивать а в архивной копии сохранить в эксель, а в рабочей вытащить из экселя
10. Sergius79 06.02.12 13:27 Сейчас в теме
(9) Altair777,
Можно и так, Просто если в комментарии содержится та же информация что и выброшенная в эксель, то это двойной труд по выбрасыванию и втягиванию
11. Altair777 644 06.02.12 13:54 Сейчас в теме
(10) Sergius79,
1) не факт что комментарий не меняли
2) зато облегчается позиционирование на документе-основании через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр
3) обрабатка выбрасывания пишется за 10 мин, по вбрасыванию чуть дольше. А парсить строки комментария и потом искать по номеру документа? А если номер поменялся?
5. Hydromix 06.02.12 12:12 Сейчас в теме
Отличия таковы: раньше - пункт ДокументОснование хранился в общих реквизитах, сейчас - он отдельно для каждого документа, где он нужен хранится.
7. Hydromix 06.02.12 12:20 Сейчас в теме
Сложно ли написать такую обработку?
8. aksyoma 169 06.02.12 13:17 Сейчас в теме
12. Shaman100M 1150 06.02.12 14:05 Сейчас в теме
Процедура Выгрузка()
    Таб = СоздатьОбъект("Таблица");
    Док = СоздатьОбъект("Документ");
    Док.ВыбратьДокументы();
    М1=0;
    Пока Док.ПолучитьДокумент()=1 Цикл
        М1=М1+1;
        Таб.Область(М1,1).Текст=ЗначениеВСтрокуВнутр(Док.ТекущийДокумент());
        Таб.Область(М1,2).Текст=ЗначениеВСтрокуВнутр(Док.ДокументОснование);
    КонецЦикла;
    Таб.Записать("Файл1.mxl");
КонецПроцедуры

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


как-то так...
13. aksyoma 169 06.02.12 14:05 Сейчас в теме
//выгрузка

Процедура Сформировать()
Табл=СоздатьОбъект("ТаблицаЗначений");
Табл.НоваяКолонка("Документ",,,,,,,);
Табл.НоваяКолонка("ДокументОснование",,,,,,,);
Док=СоздатьОбъект("Документ");
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.ДокументОснование.Выбран()=1 Тогда
Табл.НоваяСтрока();
Табл.Документ=Док.ТекущийДокумент();
Табл.ДокументОснование=Док.ДокументОснование;
КонецЕсли;
КонецЦикла;
ЗначениеВФайл("C:\doc.txt",Табл,);
КонецПроцедуры
14. aksyoma 169 06.02.12 14:06 Сейчас в теме
//загрузка

Процедура Сформировать()
НачатьТранзакцию();
Табл=СоздатьОбъект("ТаблицаЗначений");
ЗначениеИзФайла("C:\doc.txt",Табл,);
Док=СоздатьОбъект("Документ");
Табл.ВыбратьСтроки();
Пока Табл.ПолучитьСтроку()=1 Цикл
Если Док.НайтиДокумент(Табл.Документ)=1 Тогда
Док.ДокументОснование=Табл.ДокументОснование;
Док.Записать();
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
КонецПроцедуры
15. aksyoma 169 06.02.12 14:07 Сейчас в теме
вот готовые обработки
Прикрепленные файлы:
ВыгрузитьДок.ert
ЗагрузитьДок.ert
16. Hydromix 06.02.12 14:34 Сейчас в теме
Благодарю Вас, попробую применить!
17. Timesoft 271 06.02.12 15:59 Сейчас в теме
(16) Hydromix, На какой релиз ПУБ обновляете ?
19. Sergius79 06.02.12 16:19 Сейчас в теме
У меня только Украинские варианты, так что мне тяжело судить какой мочей 1Совцам прибило мозг так делать, или автор где-то нашел свое обновление, но мне тоже кажется что данный поступок по отношению к общему реквизиту документа является не гуманным и автор таких изменений просто обязан на этой конфе женится. :)
20. Timesoft 271 06.02.12 16:38 Сейчас в теме
(19) Sergius79,
автор таких изменений просто обязан на этой конфе женится. :)

+100
1Совцы этого точно не делали, в последнем релизе (327) всё как было. Либо автор взял где-то непонятно кем перековерканный md, либо у него в конфе не всё хорошо было ДО обновления и реквизит добавился ко всем
21. Hydromix 07.02.12 06:45 Сейчас в теме
То что я скачал перековерканный МД это скорее всего ближе к истине, так как ранее с конфой был полный порядок. Законное раположение ДокументОснование я вернул в Общие реквизиты, (а то когда увидел его в каждом документе, мягко говоря был в шоке:)) но эта манипуляция не вернула ссылки на документы основания. Последний архив базы делался около недели назад, его сотворил наш сисадмин и благополучно слился на больничный. За эту неделю в базе поработать уже успели изрядно, и если я откачу её на целую неделю, недовольных будет очень много, так что это не вариант. Те две обработки что мне предложили, я благополучно применил и ссылки ожили, но опять же последняя неделя осталась без них.. Так вот, к чему это я, можно ли создать такую обработку, которую предложил мне выше Sergius79, то есть которая будет считывать инфу из комментария к документу и на его основе создавать ссылку на документ основание, ибо эта инфа точно не менялась никем, посему это сейчас наиболее оптимальный вариант для меня.
22. aksyoma 169 07.02.12 09:37 Сейчас в теме
приведи примеры комментариев
23. Hydromix 07.02.12 10:01 Сейчас в теме
Допустим в документе Счет-фактура выданный № 3924 от 16.01.12 стоит комментарий - Введен на основании Реализация 3912 (16.01.12). Либо документ Реализация № 3950 от 16.01.12 стоит комментарий - Введен на основании: Заявка от покупателя №2830 от 15.01.2012г. Как-то так.
24. Timesoft 271 07.02.12 10:50 Сейчас в теме
(23) Hydromix, Можно конечно, надо только абсолютно точно знать:
1. Какие именно документы Вы хотите править ?
2. На основании какого именно вида документов они вводились ?
3. Как точно пишется комментарий - в Вашем примере в одном случае есть "№", в другом - нет, это действительно так ? В одном случае дата в скобках и ДД.ММ.ГГ, в другом - после предлога "от" и в ином формате.
Можно конечно создать и универсальную обработку - чтоб проверяла все возможные варианты даты, чтоб ичкала вид документа по синониму и т.п., но это усложнит на порядок.
28. пользователь 08.02.12 10:31
Сообщение было скрыто модератором.
...
29. пользователь 08.02.12 10:33
Сообщение было скрыто модератором.
...
25. Hydromix 07.02.12 10:59 Сейчас в теме
Вообще по идее важна только связка счета-фактуры выданные и реализация, остальные не так важны, так вот между этой связкой стоит именно такой комментарий какой я написал выше, именно в таком виде и он ни в одном документе данной связки не видоизменяется.
26. Hydromix 08.02.12 09:27 Сейчас в теме
Проблема по прежнему актуальна, обработка, которая из инфы в комментарии восстановит документы основания нужна как воздух, всего лишь неделя - период пропавших документов, а их там около 4-5 тысяч, восстанавливать это руками просто никакого времени нет. Может кто-то из знающих людей посодействует в написании данной обработки?
32. Timesoft 271 08.02.12 11:48 Сейчас в теме
(26) Hydromix, как-то так
Процедура Сформировать()
Док = СоздатьОбъект("Документ.СчетФактура");
// сюда вставим даты начала и конца поиска
// ДатаНач =
// ДатаКон =
// или вынесем их в диалог на форму
Док.ВыбратьДокументы(ДатаНач,ДатаКон);

Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.ДокументОснование.Выбран()=1 Тогда
// основание есть - пропускаем
Продолжить;
Иначе
Комментарий = Док.Комментарий;
// Введен на основании Реализация 3912 (16.01.12)
ВыделенныйНомер = Сред(Комментарий,32,4);
// считаем для простоты, что во всех документах так - 4 символа начиная с 32-го
// если нет - надо более "интеллектуальное" выделение
ДокОсн = СоздатьОбъект("Документ.РеализацияПродукции");
Если ДокОсн.НайтиПоНомеру(ВыделенныйНомер,Док.ДатаДок)=1 Тогда
// ищется в диапазоне уникальности от датадок - для реализации это год, если Вы ничего не меняли, т.е. будет искать в этом году
Док.ДокументОснование = ДокОсн.ТекущийДокумент();
Док.Записать();
Иначе
Сообщить("Для СФ № "+Док.НомерДок+" от "+Док.ДатаДок+" не найдено основание № "+ВыделенныйНомер);
КонецЕсли;

КонецЕсли;
КонецЦикла;
КонецПроцедуры

Не забудьте сделать архив !!!!!!!!!!!!
27. epf 08.02.12 10:27 Сейчас в теме
А что ту писать то? Подключаетесь по оде проходите по документам. И читая значение документа основания из архивной базы. Преврящая ее во внутрений код ищем этот док в новой базе и присваиваем.
30. Timesoft 271 08.02.12 10:59 Сейчас в теме
(27) aldarkose, Да он уже восстановил данные из архива, ему теперь надо привязать основания к новым документам .
31. Hydromix 08.02.12 11:00 Сейчас в теме
Восстановить нужно только связку Счёт-фактура - реализация, пример комментария таков: Счет-фактура выданный № 3924 от 16.01.12 - Введен на основании Реализация 3912 (16.01.12)
33. Hydromix 08.02.12 14:00 Сейчас в теме
Благодарю Вас за помощь, всё вышло лучшим образом!
34. nomadon 367 10.02.12 19:14 Сейчас в теме
восстанови из копии и перенеси
35. big60 32 13.02.12 15:28 Сейчас в теме
Если есть резервная копия и если от неё далеко не ушли, то проще вернуться. Потом ввести реквизит ДокументОснование1 не как общий, с помощью обработки в несколько строк его заполнить, потом удалить общий реквизит ДокументОснование и только после этого переименовать ДокументОснование1 в ДокументОснование. Если возвращаться к резервной копии уже поздно, но она всё же есть, можно перетянуть через OLE или через выгрузку-загрузку, совместив документы, например, по номеру и дате. В принципе, на так сложно. А если нет резервной копии, то поможет только шаманский бубен.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот