Имя: Пароль:
JOB
Работа
Изменение проводки балансового счета.
,
0 Altanzar
 
31.07.12
15:03
Предупреждаю сразу, вопрос немного жутковатый и отдает Омском. Суть такова:
1) Имеется документ, выполняющий проводки как по балансовым, так и по забалансовым счетам.
2) Имеется написанная мной обработка, корректирующая заполнение проводки по счетам. Грубо говоря, она исправляет вес и количество проведенных объектов. Не криминал и не хитрый план, просто кое-кто крупно накосячил с заполнением номенклатуры.
Выглядит это так:

ВыборкаДок = Документы.схПереводИзОСВОткорм.Выбрать(ДатаНачала,Датаокончания);
ПВХОС = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства;

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

Суть в чем? Счет "Продуктивный рабочий скот" - забалансовый, и прекрасно заполняется. Счет "Животные на откорме" - балансовый (11.02), и на изменения не реагирует никаким местом.
Внимание, вопрос: как изменить данные в проводке балансового счета?
1 Naumov
 
31.07.12
15:06
что говорит отладчик?
2 Maxus43
 
31.07.12
15:10
ну и криво конечно через Док.Движения делать, набор записей надо бзать
3 Naumov
 
31.07.12
15:20
(2) А Док.Движения это что?
4 Naumov
 
31.07.12
15:21
точнее Док.Движения.Хозрасчетный..
5 Maxus43
 
31.07.12
15:22
(3) зачем получать объект то?
НаборЗаписей.Хозрасчетный.Отбор.Установить(Док.Ссылка);

и понеслась.
6 Naumov
 
31.07.12
15:23
(5) на вкус и цвет..
7 Maxus43
 
31.07.12
15:23
(6) замер производительности покажет кто прав) так оптимальней
8 Altanzar
 
31.07.12
15:40
(1) Говорит что в дебетных колонках ничего нет.
9 Altanzar
 
31.07.12
15:41
(7) Об оптимальности буду думать, когда оно заработает так, как надо. :-/
10 Naumov
 
31.07.12
15:45
(8) Так может ничего и нет?
11 Altanzar
 
01.08.12
06:01
(10) В чем и проблема. Но факт в том, что те же самые данные нормально записываются в кредит забалансового счета.
12 izekia
 
01.08.12
06:04
потому что надо записывать сразу
13 izekia
 
01.08.12
06:04
очевидно же
14 Altanzar
 
01.08.12
07:08
(12) Что это значит?
15 izekia
 
01.08.12
07:26
(14) попробуй сообщить повесить в первом условии?
16 Живой Ископаемый
 
01.08.12
07:33
2(15) в него не заходит, он же сказал.
17 izekia
 
01.08.12
07:51
сорри, значит не прочитал
18 Живой Ископаемый
 
01.08.12
07:52
и значит одно из двух, либо там не тот счет, либо скривился кэш
19 Altanzar
 
01.08.12
08:25
Решил немного пошаманить, добавил Сообщить();

Если ПроводкаГоловы.СчетДт = ПланыСчетов.Хозрасчетный.ЖивотныеНаОткорме Тогда
           ОСГоловы = ПроводкаГоловы.СубконтоДт[ПВХВСХ];
           стрГоловы = ТабГоловы.Найти(ОСГоловы,"ОсновноеСредство");
           Если стрГоловы <> Неопределено Тогда ПроводкаГоловы.схКоличествоДопДт = стрГоловы.КоличествоГолов;
           Сообщить("На откорм отправили - "+ПроводкаГоловы.схКоличествоДопДт);    
           Иначе Сообщить ("Не вышло");    
           КонецЕсли;
       КонецЕсли;

В результате на каждый проведенный документ выдает это самое "не вышло".
20 izekia
 
01.08.12
08:28
субконто пустое?
21 Живой Ископаемый
 
01.08.12
08:29
ну, и какие еще подсказки нужны?
22 Живой Ископаемый
 
01.08.12
08:30
а что это вообще за ересь: ТабГоловы.Найти(ОСГоловы,"ОсновноеСредство")?
23 Живой Ископаемый
 
01.08.12
08:31
а, понятно... ересь тут:
ОС = Проводка.СубконтоДт[ПВХОС];
24 izekia
 
01.08.12
08:33
а что не так?
25 Altanzar
 
01.08.12
08:33
(20) Смотрю отладчик, ПроводкаГоловы.СубконтоДт пустое.
(23) В чем ересь?
26 Живой Ископаемый
 
01.08.12
08:35
:) простите. не увидел. Думал что равно непонятно чему
27 Altanzar
 
01.08.12
08:58
Странно. Для счета "Продуктивный рабочий скот" субконто не пустые, для "Животных на откорме" - пустые.
28 izekia
 
01.08.12
09:08
(27) ну так сам говоришь, что непонятно кто писал
29 Altanzar
 
01.08.12
09:16
Такс, проверил конфигурацию, понял в чем проблема.
Для счета 11.02 отсутствует субконто "ОсновныеСредства".
30 Мимохожий Однако
 
01.08.12
09:18
ОФФ: Действительно "жутковато"
31 izekia
 
01.08.12
09:22
(29) вот заодно и субконто проставишь
32 Altanzar
 
01.08.12
10:00
(31)Да там решилось все сверткой таблицы по субконто, которое есть общее у обоих счетов. Всем спасибо за внимание и наводящие вопросы.
33 KA-52
 
01.08.12
14:17
Вообще-то из забаланса в баланс напрямую проводить - моветон. Любой методолог скажет.
34 Anastasiy
 
01.08.12
14:40
НЕ Счет.Забалансовый
   ИЛИ &ВыводитьЗабалансовыеСчета
Вот не знаю как не в СКД это приделать к ВТ
35 Anastasiy
 
01.08.12
14:42
Напиши как получилось если не жалко) Интересно.
36 Живой Ископаемый
 
01.08.12
20:09
2(33) Это не моветон, это просто невозможно. Но с чего вы взяли что автор хочет так сделать?
2(34) А это зачем?
37 Anastasiy
 
02.08.12
06:14
(1) Балансовый счет не реагирует(36), вот за этим самым.
38 Живой Ископаемый
 
02.08.12
08:01
(37) Блин, ладно я старый и слепой.. Но ты-то в очках. Не реагирует не потому что не попадает в выборку, а потому что там условие на непустое субконто никогда не выполнялось.