Имя: Пароль:
1C
1С v8
Восстановление субконто
0 Tanis
 
01.07.13
15:15
Добрый день!
Подскажите, пожалуйста.
У счета было 3-е субконто, сейчас обнаружилось, что его кто-то убрал или еще чего-то...
Поставили в плане счетов обратно. В документах данные по нему отображаются...
Как сделать чтоб и в оборотке отображалось?
1 zak555
 
01.07.13
15:16
заполнить РБ ?
2 Tanis
 
01.07.13
15:17
получается и он слетел?
3 ale-sarin
 
01.07.13
15:18
(0) Когда "его кто-то убрал" данные об этом субконто в записях регистров бухгалтерии сказали "до свидания".
Так что заполняйте их заново, хорошо хоть в доках остались. Можно доки перепровести, а можно и обработку состряпать.
4 Tanis
 
01.07.13
15:20
ни чего себе.... Вот это засада...
Без перепроведения никак не обойтись?
5 Tanis
 
01.07.13
15:25
их нельзя там из дока вытащить и в РБ вставить без проведения? А просто перезапись дока не подействует?
6 ale-sarin
 
01.07.13
15:27
(5) "из дока вытащить и в РБ вставить без проведения", я и говорил, что можно обработку написать.
7 Tanis
 
01.07.13
15:29
это уже лучше...
теперь будем устранять другую проблему. С РБ не работал, не записывал в них...

а просто при записи дока не подставится? видимо нет, записи в регистры при проведении попадают
8 ale-sarin
 
01.07.13
15:31
(7) Совершенно верно.
9 Lama12
 
01.07.13
15:32
(7) Проще перепровести.
Не знаю какая конфа.
Но обработкой замучаешься. В некоторых документах простановка субконто не совсем однозначна и прозрачна.
Самое интересное будет с документами типа "Корректировка записей регистров".
10 Lama12
 
01.07.13
15:34
А лучше найти того кто субконто удалил, и заставить вручную вбивать их.
11 ale-sarin
 
01.07.13
15:36
Да, наверняка, сам автор так обновление сделал))
12 Tanis
 
01.07.13
15:40
не обновлял. :-)
так что это не я. :-)
вручную вбивать не надо, так как в доках они стоят.

Если сделать обработку, то она просто подставит в РБ перепроводить не будет? последовательность доков не затронет?
13 ale-sarin
 
01.07.13
15:41
(12) Елки-палки, обработкой обходишь нужные регистраторы, создаешь набор записей РБ, читаешь его, изменяешь, записываешь. Сам док остается не изменным. Только имей ввиду, по какому алгоритму проводки строятся,и как это субконто должно заполняться.
14 Tanis
 
01.07.13
15:43
нашел пример здесь... он подойдет? только там свои условия поставлю


// Задать выбираемые значения.  
ВыбранныйОтветственный = Справочники.Пользователи.НайтиПоНаименованию("Иванцова");
ВыбранныйКонтрагент = Справочники.Контрагенты.НайтиПоКоду("00027");
ВыбранныйДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("00013");
ВыбранныйДокумент = Документы.ДокументРасчетовСКонтрагентом.НайтиПоНомеру(2, '20050101');
ВыбранныйСчет = Справочники.БанковскиеСчета.НайтиПоКоду("00001");
ВыбраннаяСтатья = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("00002");
ВыбраннаяОрганизация = Справочники.Организации.НайтиПоКоду("00001");
ВыбраннаяВалюта = Справочники.Валюты.НайтиПоКоду(810);

// Создать будущий регистратор.  
ДатаЗаписи = ТекущаяДата();
Документ = Документы.ОперацияБух.СоздатьДокумент();
Документ.Дата = ДатаЗаписи;
Документ.Организация = ВыбраннаяОрганизация;
Документ.Ответственный = ВыбранныйОтветственный;
Документ.Содержание = "Оплата поставщику";
Документ.Записать();

// Создать набор записей.  
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Регистратор.Установить(Документ.Ссылка);

Движение = НаборЗаписей.Добавить();
Движение.Регистратор = Документ.Ссылка;
Движение.Период = ДатаЗаписи;

// Заполнить счет дебета.  
Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01");

// Заполнить аналитику счета дебета.  
Движение.СубконтоДт.Контрагенты = ВыбранныйКонтрагент;
Движение.СубконтоДт.Договоры = ВыбранныйДоговор;
Движение.СубконтоДт.ДокументыРасчетовСКонтрагентами = ВыбранныйДокумент;

// Заполнить счет кредита.  
Движение.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("51");

// Заполнить аналитику счета кредита.  
Движение.СубконтоКт.БанковскиеСчета = ВыбранныйСчет;
Движение.СубконтоКт.СтатьиДвиженияДенежныхСредств = ВыбраннаяСтатья;

// Балансовое измерение.  
Движение.Организация = ВыбраннаяОрганизация;

// Балансовый ресурс.  
Движение.Сумма = 300000;

// Реквизиты.Движение.НомерЖурнала = "БК";  
Движение.Содержание = "Оплата поставщику";

// Записать набор записей.  
НаборЗаписей.Записать();
15 ale-sarin
 
01.07.13
15:46
(14) Подойдет только для чтения набора записей. Дальше циклом обходишь записи и по условию изменяешь значение субконто. Набор записей записать после обхода всех записей, после каждой - не надо.
Это так, на всякий случай.
16 Nenaviwu1c20
 
01.07.13
15:47
Нет это совсем другая песня.Это создани е операция програмным путем.Напиши выборку по счету с которого слетело субконто,а затем через набор записей проставьб его просто в доках наименования реквизитов которые ты хочешь засунуть в субконто может быть разным,поэтому лучший вариант это перепроведение
17 ale-sarin
 
01.07.13
15:48
+15 Сначала на копии тренируйся.
18 Nenaviwu1c20
 
01.07.13
15:49
(15) (17) Ты что это же создание новых проводок-операций,а надо старые восстановить
19 ale-sarin
 
01.07.13
15:51
(18) Я ж не сказал, что весь кусок пойдет. Да и автор сам думаю понял. Но если автор не понял, то да: не надо код из (14) использовать. (16) более точно и логично расписал.
20 Nenaviwu1c20
 
01.07.13
15:53
(19) И все таки я думаю перепроводит пусть
21 ale-sarin
 
01.07.13
15:55
(20) Согласен, при наличии такого "опыта" в записях РБ, как у автора, лучше перепровести документы.
Но как тогда он наберет этот опыт? А вот потренируется на копии, накосячит пару раз, и полетит дальше. Есть согласие?
22 Tanis
 
01.07.13
16:03
Буду конечно на копии сначала....

Перепроводить это отпадает... т.к ведется много организаций и все перепроводить с 12 года...
23 Tanis
 
01.07.13
16:04
Порядок с РС схожий?
24 Tanis
 
01.07.13
16:34
данные только в одном виде документа остались... в операциях этих данных тоже нет
25 Tanis
 
01.07.13
16:42
хватаясь за последние нити надежды, чтоб не писать обработку, так как вопрос оч.срочный...
если из копии перенос через xml, то получится перенести? на остальное не повлияет?
26 hhhh
 
01.07.13
17:13
(25) из бекапа загрузИте. ВыгрузкаЗагрузкаXML
27 Tanis
 
01.07.13
17:13
Подскажите, пожалуйста, перенос РБ через xml, не повлечет за собой ничего критичного?
28 Tanis
 
01.07.13
17:14
(26) спасибо
Ничего не должно произойти?
29 timurhv
 
01.07.13
17:25
Однажды коллега аналогичный финт провел, я писал обработку по следующему принципу:
1. Выборка документов по счету;
2. Начать транзакцию + провести документ;
3. Считать получившиеся проводки и вынести в отдельную таблицу значений;
4. Отменить транзакцию;
5. Сопоставить существующие проводки (по всем полям, кроме затертого субконто) с таблицей значений из п.3;
6. Изменить движения в соответствии с п.5.

Не 100% результат, зато более точный, остальное можно и вручную добить.
30 Tanis
 
01.07.13
17:32
что там слишком много объектов выгружается...
точно потом ничего критичного при загрузке не произойдет? Записи заменятся или как?
31 Lama12
 
01.07.13
22:35
(29) Хороший вариант!
32 AlexNew
 
01.07.13
22:40
(29) Убил бы с перепровением.
33 Tanis
 
01.07.13
22:42
На (30) ответьте, пожалуйста.
34 Tanis
 
01.07.13
22:44
(29) до такого финта мне еще далеко, по крайней мере быстро это сделать.
а вернуть проводки надо срочно...
Поэтому решил использовать выгрузку - загрузку РБ по этому счету. Но волнует (30)
35 AlexNew
 
01.07.13
22:47
(34) Можешь не волноваться, пока они будут загружаться для тебя все кончится.
36 Tanis
 
01.07.13
22:50
(35) что именно кончится?
37 AlexNew
 
01.07.13
23:00
(36) А вот тут масса вариантов.
38 ОбычныйЧеловек
 
01.07.13
23:01
(0) http://infostart.ru/public/183040/  закоментаришь перегрузку регистров накопления и вперед.
39 ОбычныйЧеловек
 
01.07.13
23:01
Ежели копия с движения есть разумеется...
40 Tanis
 
01.07.13
23:33
(39) копия есть, я из нее и выгружал в xml.
т.е лучше использовать данную обработку, чем xml?
и там в ней как осуществляется подбор? я так понял по докам, а эти доки можно выбрать автоматом где используется данный счет, или дописывать надо?
41 ОбычныйЧеловек
 
01.07.13
23:38
(40) Что лучше, что хуже решай всегда  сам. По поводу подбора - его придется реализовать самому - в этом нет ничего сложного.
42 Tanis
 
01.07.13
23:44
(41) тогда вопрос изменю, что безопаснее? и не повлечет других проблем?

Выборку сделаю...
43 timurhv
 
02.07.13
00:48
(32) Есть варианты безопаснее?
44 Tanis
 
02.07.13
15:28
Странная вещь получается...
При выгрузке в xml ставлю отбор по условию ссылка.регистратор = Док, выгружает 1 док.
Ставлю отбор по счетам, показывает штук 15 доков, а нажимаю выгрузить, выгружает чуть ли не весь РБ
45 Tanis
 
02.07.13
15:29
и файл весит 1,5 Гб
46 Tanis
 
02.07.13
18:12
Возвращаюсь к данному вопросу, а именно к обработке из (38)
Обработка не распознаёт полностью док. Выдает ошибку

{Форма.Форма.Форма(88)}: Значение не является значением объектного типа (Filter)
НаборЗаписейИсточник.Filter.Регистратор.Установить(ДокументИсточникСсылка);


Кусок кода

Если СинхронизироватьСтатусы Тогда
           Если ДокументИсточникСсылка.ПометкаУдаления <> ДокументПриемникСсылка.ПометкаУдаления Тогда
               Если ДокументПриемникОбъект=Неопределено Тогда
                   ДокументПриемникОбъект=ДокументПриемникСсылка.ПолучитьОбъект();
               КонецЕсли;
               ДокументПриемникОбъект.ПометкаУдаления=ДокументИсточникСсылка.ПометкаУдаления;
               ДокументПриемникОбъект.Записать();
           КонецЕсли;

           Если ДокументИсточникСсылка.Проведен <> ДокументПриемникСсылка.Проведен Тогда
               Если ДокументПриемникОбъект=Неопределено Тогда
                   ДокументПриемникОбъект=ДокументПриемникСсылка.ПолучитьОбъект();
               КонецЕсли;
               ДокументПриемникОбъект.Проведен=ДокументИсточникСсылка.Проведен;
               ДокументПриемникОбъект.Записать();                
           КонецЕсли;
       КонецЕсли;
       
       Для каждого мдОбъект Из ДокументИсточникСсылка.Метаданные().RegisterRecords Цикл
           стрТипВид=стрЗаменить(мдОбъект.FullName(), ".", Символы.ПС);
           стрТипРегистра=СтрПолучитьСтроку(стрТипВид, 1);
           стрВидРегистра=СтрПолучитьСтроку(стрТипВид, 2);
           
           //Если стрТипРегистра="РегистрНакопления" Тогда
           //    НаборЗаписейИсточник=БазаИсточник.РегистрыНакопления[стрВидРегистра].СоздатьНаборЗаписей();
           //    НаборЗаписейПриемник=РегистрыНакопления[стрВидРегистра].СоздатьНаборЗаписей();
           //ИначеЕсли стрТипРегистра="РегистрСведений" Тогда
           //    НаборЗаписейИсточник=БазаИсточник.РегистрыСведений[стрВидРегистра].СоздатьНаборЗаписей();
           //    НаборЗаписейПриемник=РегистрыСведений[стрВидРегистра].СоздатьНаборЗаписей();
           //ИначеЕсли стрТипРегистра="РегистрБухгалтерии" Тогда
           Если стрТипРегистра="РегистрБухгалтерии" Тогда
               НаборЗаписейИсточник=БазаИсточник.РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
               НаборЗаписейПриемник=РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
           КонецЕсли;

           НаборЗаписейИсточник.Filter.Регистратор.Установить(ДокументИсточникСсылка);
           НаборЗаписейИсточник.Прочитать();
47 Tanis
 
02.07.13
18:13
Вот здесь ДокументИсточникСсылка.Метаданные().RegisterRecords  и здесь мдОбъект.FullName()

Ошибка чтения значения
48 Tanis
 
02.07.13
18:23
Проблема видимо отсюда начинается:

   Для каждого СтрокаТабличнойЧасти Из ОбъектыСинхронизации Цикл
       ДокументПриемникОбъект=Неопределено;
       ДокументПриемникСсылка=СтрокаТабличнойЧасти.ДокументСсылка;
       Состояние("Обрабатывается документ:"+СокрЛП(ДокументПриемникСсылка)+" строка №"+Строка(СтрокаТабличнойЧасти.НомерСтроки)+" из"+Строка(ВсегоСтрок));

       стрУникальныйИдентификатор=БазаИсточник.NewObject("УникальныйИдентификатор", Строка(ДокументПриемникСсылка.УникальныйИдентификатор()));
       ДокументИсточникСсылка=БазаИсточник.Документы[ДокументПриемникСсылка.Метаданные().Имя].GetRef(стрУникальныйИдентификатор);


GetRef - не распознает
49 Tanis
 
02.07.13
18:36
Подскажите, кто знает. Вопрос очень срочный....
50 Tanis
 
02.07.13
19:01
Люди, помощь очень нужна!!!
51 AlexNew
 
02.07.13
19:06
Ну и ты получаешь объект (УИ) из другой базы.
52 Tanis
 
02.07.13
19:10
Это копия.
Так как же тогда обработка работает? Написано, что должна синхронизировать данные.
Она 75% определяет верно.
53 AlexNew
 
02.07.13
19:14
А, да ищет в базе, откуда УИ. Нет в источнике документа с таким УИ,
54 Tanis
 
02.07.13
19:29
Оригинал что от копии отличается?

Еще что интересно, если обратно раскомментировать строки по РС и РН, то все нормально проходит. Но их мне трогать не надо, и автор посоветовал их закомментировать...
Может после этого тогда условие надо как-то изменить
55 Tanis
 
02.07.13
19:32
Все, понятно. Надо было Условие не так изменить, надо было поставить

Если НЕ стрТипРегистра="РегистрБухгалтерии" Тогда  Продолжить;
               Иначе
56 Tanis
 
02.07.13
19:33
теперь надо запрос на отбор написать, и пробовать дальше...
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн