Имя: Пароль:
1C
 
В проводках документа поменять местами дебет с кредитом
, ,
0 neo1109
 
22.12.14
08:52
Есть документ, формирующий бух проводки.
Надо обойти его движения и во всех проводках поменять местами счет Дт и Кт. Ну и соответственно аналитику. Со счетами понятно, а вот с субконтом - затык. Как меняется значения субконто?
1 Umga2002
 
22.12.14
08:54
Самописной обработкой......Нужен программист...
2 neo1109
 
22.12.14
08:59
(1) так я и есть программист )) меня технология интересует...
3 Vladal
 
22.12.14
09:03
(2) Восьмерка или семерка? Не указан раздел. Ибо методы разные.
4 El_Duke
 
гуру
22.12.14
09:04
(0) Вспоминается епонское хокку:

Задумчиво с вилами
Стою у воды
Что написать ?

Вот и я задумался: зачем это нужно ???
Конфу,документ, саму задачу озвучьте
5 neo1109
 
22.12.14
09:04
(3) 8ка
6 Славен
 
22.12.14
09:05
поставь сумму с минусом :)
7 neo1109
 
22.12.14
09:05
(4) да задачу вроде обрисовал...
8 Славен
 
22.12.14
09:05
+(5) если БП, то БухгалтерскийУчет.УстановитьСубконто(.....) задается субконто
9 Vladal
 
22.12.14
09:07
Для восьмерки надо получить из регистра записи по регистратору. Потом эти записи очистить и записать новые:

Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ *
|ИЗ
|    РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров
|ГДЕ
|    ОстаткиТоваров .Регистратор = &Регистратор";

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


НаборЗаписейРегистра = Движения.ОстаткиТоваров ;
НаборЗаписейРегистра.Прочитать();
Для Каждого Запись из НаборЗаписейРегистра Цикл
    // Чтение и модификация очередного движения.
КонецЦикла;

Для Каждого НаборЗаписейРегистра из Движения Цикл
    НаборЗаписейРегистра.Прочитать();
    Для Каждого Запись из НаборЗаписейРегистра Цикл
        // Чтение и модификация очередного движения.
    КонецЦикла;
КонецЦикла;
10 Vladal
 
модератор
22.12.14
09:09
Да, кстати, тема плохо оформлена - прислушайся к совету в (4) и почитай рекомендации по оформлению темы:
http://www.forum.mista.ru/rules.php
11 Любопытная
 
22.12.14
09:09
(9) А потом перепровести ручками документы и удивиться :)
12 Vladal
 
22.12.14
09:11
(11) А если у документов движения уже исправлены, но чтобы не дергать последовательности, просто корректируют движения документов. Но мы это не узнаем, пока автор не расскажет.
13 Vladal
 
22.12.14
09:13
Упс... Я дал неверный пример. Регистры бухгалтерии меняются немного по-другому.
Подробнее найди в книге "Простые примеры разработки" в разделе "Как в регистре бухгалтерии сформировать проводки?"
14 Славен
 
22.12.14
09:14
(11) признак ручной корректировки поставить и все
15 neo1109
 
22.12.14
09:16
(12) пока есть конкретная задача: в записях регистра бухгалтерии в пределах одного документа поменять местами Дт и Кт. А уж к чему это приведет и зачем это надо - другой вопрос )
16 neo1109
 
22.12.14
10:40
все? неужели все высказались?
17 Andrewww123
 
22.12.14
10:51
(0) Грубо накидаю. Должно работать..
СубконтоДт0 = ЗаписьРегистра.СубконтоДт[0];
СубконтоКт0 = ЗаписьРегистра.СубконтоКт[0];
СчетДт      = ЗаписьРегистра.СчетДт;
СчетКт      = ЗаписьРегистра.СчетКт;

ЗаписьРегистра.СчетДт = СчетКт;
ЗаписьРегистра.СчетКт = СчетДт;

ЗаписьРегистра.СубконтоДт[0] = СубконтоКт0;
ЗаписьРегистра.СубконтоКт[0] = СубконтоДт0;
18 neo1109
 
22.12.14
10:55
(17) проверяли?

"Возможно обращение к значению субконто посредством оператора [...]. В качестве аргумента передается вид субконто (ПланВидовХарактеристикСсылка.<Имя плана видов характеристик>).
"
а что за "...[0]"?
19 Andrewww123
 
22.12.14
11:00
(18) По памяти, давно с бухгалтерией не ковырялся. Возможно и нельзя по индексу, не помню.
Ну тогда примерно так:

Для Каждого ВидСубконтоДт Из ЗаписьРегистра.СчетДт.ВидыСубконто Цикл
   ЗначениеСубконто = ЗаписьРегистра.СубконтоДт[ВидСубконтоДт]
   // Тут значения можно добавлять в созданный массив, а потом так же обойти ВидыСбконто счета кредита и по порядку из массива устанавливать значения.
КонецЦикла;

Аналогично для Кт.
Как-то так, смысл должен быть понятен.
20 Стерва-бух
 
22.12.14
11:15
(0) вопрос бухгалтера: а ЗАЧЕМ?????
что это за документ, который делает неправильные проводки, которые надо Дт и Кт менять?
21 neo1109
 
22.12.14
11:30
(20) ответ специалиста отдела разработки: СКАЗАЛИ - ДЕЛАЕМ.

Далеко не копайте. Воспринимайте как чисто технологический вопрос: как программно обратить проводку. и все. без особых "а зачем?", "это ж кто такое придумал???"...
22 Жан Пердежон
 
22.12.14
11:35
(20) это ж очевидно! ТС написал обработку проведения, но с Дт/Кт не угадал, теперь вот переделывает и устраняет последствия...
23 Andrewww123
 
22.12.14
11:40
(20) Да мало ли. Существует очень много "бухгалтеров", которые решили что нужно делать так, а потом решили наоборот. Программист-то при чем?
24 ManyakRus
 
22.12.14
11:40
//в проводке меняет местами Дт и Кт, и не меняет знак
Процедура ИнвертироватьПроводку(НоваяПроводка, Проводка0) Экспорт
    
    НоваяПроводка.Период = Проводка0.Период;
    НоваяПроводка.Регистратор = Проводка0.Регистратор;
    НоваяПроводка.Активность = Проводка0.Активность;
    НоваяПроводка.Организация = Проводка0.Организация;
    НоваяПроводка.Содержание = Проводка0.Содержание;
    НоваяПроводка.СчетДт = Проводка0.СчетКт;
    НоваяПроводка.СчетКт = Проводка0.СчетДт;
    
    //заполним Дт
    Для Каждого Субконто1 из Проводка0.СубконтоКт Цикл
        НоваяПроводка.СубконтоДт.Вставить(Субконто1.Ключ.Ссылка, Субконто1.Значение);
    КонецЦикла;
    
    
    //заполним Кт
    Для Каждого Субконто1 из Проводка0.СубконтоДт Цикл
        НоваяПроводка.СубконтоКт.Вставить(Субконто1.Ключ.Ссылка, Субконто1.Значение);
    КонецЦикла;
    
    //заполним суммы
    Если ЗначениеЗаполнено(Проводка0.Сумма) Тогда
        НоваяПроводка.Сумма = Проводка0.Сумма;
    КонецЕсли;
    
    //заполним количество
    Если ЗначениеЗаполнено(Проводка0.КоличествоКт) Тогда
        НоваяПроводка.КоличествоДт = Проводка0.КоличествоКт;
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Проводка0.КоличествоДт) Тогда
        НоваяПроводка.КоличествоКт = Проводка0.КоличествоДт;
    КонецЕсли;
    
    //заполним валюты
    Если ЗначениеЗаполнено(Проводка0.ВалютаКт) Тогда
        НоваяПроводка.ВалютаДт = Проводка0.ВалютаКт;
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Проводка0.ВалютаДт) Тогда
        НоваяПроводка.ВалютаКт = Проводка0.ВалютаДт;
    КонецЕсли;
    
    
КонецПроцедуры
25 ManyakRus
 
22.12.14
11:42
функция работала почти нормально :)
но был глюк что появляется четвёртое субконто пустое и всё глючит потом :(
26 Andrewww123
 
22.12.14
11:43
(24) Суммы НУ, ВР, ПР забыл.
27 neo1109
 
22.12.14
11:46
Уточнил задачу. Задачу поставили коллеге, а я тут просто как ретранслятор ;)

1. есть док
2. формирует проводки
НАДО:
3. в конце ОбработкиПроведения() добавить обход движений и поменять местами Дт и Кт, а также сумму с минусом сделать.

насколько понимаю задачу: дебетовый оборот превратить в кредитовый и наоборот, оставив сам смысл проводки тем же.
28 Andrewww123
 
22.12.14
11:47
(27) Если так, то попахивает какой-то бредятиной :) Почему сразу не сформировать нужные проводки?
29 neo1109
 
22.12.14
11:48
(28) а вот это уже совсем другая история... )
30 Славен
 
22.12.14
11:49
(27) :) если её обратить и сделать со знаком "-" то получится в итоге то же что и было)))
31 Стерва-бух
 
22.12.14
11:50
(27) СМЫСЛ проводки не останется прежним. Если вообще ни вы ни ваш "коллега" не разбираетесь в предметной области - поверьте на слово ГБ...

возникает вопрос о профессиональной адекватности того, кто поставил такую задачу. Либо ТС чего то темнит.
32 neo1109
 
22.12.14
11:52
(30) итог получится в целом тот же, только ОборотДт по изначальному счету Дт станет оборотом Кт...
33 Andrewww123
 
22.12.14
11:53
(32) Наверное, кто-то из вас с коллегой должен пойти к бухгалтерам и объяснить что это слегка странно. Поменять счета местами и сделать сумму с минусом - это совсем не то же самое.
34 neo1109
 
22.12.14
11:55
(33)
"Поменять счета местами и сделать сумму с минусом"
в моем случае это делается ОДНОВРЕМЕННО
35 Andrewww123
 
22.12.14
11:58
(34) Это понятно, но это называется "сторно", это не простая бухгалтерская проводка.
В общем, два вариант же предложили уже. Задача не самая сложная.
36 Andrewww123
 
22.12.14
12:00
Вообще, ситуация знакомая :) Тоже крайне часто приходилось делать непонятно что. Пришлось вникать в бух. учет и доказывать "бухгалтерам" что они немного некомпетентны..
37 neo1109
 
22.12.14
12:00
(35) ИМХО сторно - это когда у проводки просто сумма с минусом ставится. а тут еще и ДтКт меняется... тут несколько другое...
38 Пеппи
 
22.12.14
12:02
(37) намекни хоть какие проводки, умираю от любопытства )))
39 Andrewww123
 
22.12.14
12:07
(37) А какая разница, меняются ли счета Дт и Кт? В любом случае, это проводка с отрицательной суммой, которая задействует два счета. Это и есть сторно..
40 Andrewww123
 
22.12.14
12:09
Да, тоже стало интересно что за проводки :)
41 neo1109
 
22.12.14
12:46
(40) специально уточнил
проводки документа ВозвратТоваровПоставщику
42 eklmn
 
гуру
22.12.14
12:50
жесть
43 ДенисЧ
 
22.12.14
12:57
44 Andrewww123
 
22.12.14
13:00
(41) Ну всё-таки советую пообсуждать эту задачу с заказчиком, вдруг кто-то немного ошибается..
45 Andrewww123
 
22.12.14
13:02
(41) А может там счета какие-то забалансовые? Тогда менее бредово задача звучит
Основная теорема систематики: Новые системы плодят новые проблемы.