Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Механизм зачета сумм по одному контрагенту но по разным договорам в 1с БП 8.2

Рисовод
читатель
офлайн
Дата регистрации: 26.12.2007
Сообщений: 25775
Пост №11
 
24.02.2015 12:46
Ответ на пост №10

Макс БУх, сделать это "механически" в конфигурации, конечно обработкой возможно. А как быть с "юридическим" аспектом таких зачетов? Это дело настолько тонкое, что даже к этому документу допускать можно не всех!

Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20953
Пост №12
 
24.02.2015 12:49
Ответ на пост №10

Макс БУх, обработку выложите, ну или в личку. А в документе Корректировка долга, надо выбрать тип операции Взаимозачет и заполнить задолженности, конфигурация сама заполнить договора и счета. И потом сделает правильные проводки.

uinny
читатель
офлайн
Дата регистрации: 12.01.2008
Сообщений: 4814
Пост №13
 
24.02.2015 12:56
Ответ на пост №9

Макс БУх, ааа, тепорь поняла :)
все-таки дело не в регистре, а в алгоритме.
Ну я бы предложила следующий вариант без особых раздумий.
У вас есть таблица значений начальная - ТЗ, где долги и авансы по договорам. Допустим, там колонки Договор, Аванс, Долг.
Сначала вы проходите циклом по этой ТЗ, и в тех строках, где есть и аванс, и долг по одному договору, делаете зачет. Корректируете сумму на зачтенную. Т.е. если был долг 5000, аванс 2000, вы делаете зачет на 2000, и остается долг 3000, аванс 0.

После этого у вас в каждой строке либо обе суммы по 0, либо есть одна - аванс или долг.
Затем делите ТЗ на две другие ТЗ. Одна Договор, Аванс - ТЗАванс. Другая Договор, Долг - ТЗДолг. Каждую сортируете по убыванию колонки с суммой.
Потом нужно написать проход по этим ТЗ одновременно с зачетом сумм.
Кстати, в таких случаях мне сильно помогает нарисовать на листочке дерево возможных вариантов.

uinny
читатель
офлайн
Дата регистрации: 12.01.2008
Сообщений: 4814
Пост №14
 
24.02.2015 12:57

С1 = 0; // с нуля же у нас в таблице значений идет отсчет строк, правильно?
С2 = 0;
Пока С1 < ТЗАванс.Количество() И С2 < ТЗДолг.Количество() Цикл
      
      Если ТЗАванс[С1].Аванс >= ТЗДолг[С2].Долг Тогда
            СуммаЗачета = ТЗДолг[С2].Долг;      
      Иначе
       СуммаЗачета = ТЗАванс[С1].Аванс;
      КонецЕсли;
      
проводки на СуммуЗачета по договорам ТЗАванс[С1].Договор, ТЗДолг[С2].Договор сами впишете
      
      ТЗДолг[С2].Долг = ТЗДолг[С2].Долг - СуммаЗачета;
      ТЗАванс[С1].Аванс = ТЗАванс[С1].Аванс - СуммаЗачета;
      //теперь проверяем, в какой ТЗ нужно двигаться дальше
      Если ТЗАванс[С1].Аванс = 0 Тогда
            С1 = С1 + 1;
      КонецЕсли;
      ЕслиТЗДолг[С2].Долг = 0 Тогда
            С2 = С2 + 1;
      КонецЕсли;
КонецЦикла;

Макс БУх
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 137
Пост №15
 
25.02.2015 10:56

Рисовод пишет:

Цитата

      
                  
                   Ответ на
                   пост №10
            
      
Макс БУх , сделать это "механически" в конфигурации, конечно обработкой возможно. А как быть с "юридическим" аспектом таких зачетов? Это дело настолько тонкое, что даже к этому документу допускать можно не всех!
Добрый день! Да, Вы совершенно правы по поводу юридического аспекта. Но это по общему правилу, а в ситуации, для которой понадобилась рассматриваемая методика (обработка), юридический аспект не столь важен - главное вывести хотя бы нетто суммы задолженностей и авансов.

Макс БУх
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 137
Пост №16
 
25.02.2015 11:01

uinny пишет:

Цитата

      
      
С1 = 0; // с нуля же у нас в таблице значений идет отсчет строк, правильно?
С2 = 0;
Пока С1 < ТЗАванс.Количество() И С2 < ТЗДолг.Количество() Цикл

Если ТЗАванс[С1].Аванс >= ТЗДолг[С2].Долг Тогда
СуммаЗачета = ТЗДолг[С2].Долг;
Иначе
СуммаЗачета = ТЗАванс[С1].Аванс;
КонецЕсли;

проводки на СуммуЗачета по договорам ТЗАванс[С1].Договор, ТЗДолг[С2].Договор сами впишете

ТЗДолг[С2].Долг = ТЗДолг[С2].Долг - СуммаЗачета;
ТЗАванс[С1].Аванс = ТЗАванс[С1].Аванс - СуммаЗачета;
//теперь проверяем, в какой ТЗ нужно двигаться дальше
Если ТЗАванс[С1].Аванс = 0 Тогда
С1 = С1 + 1;
КонецЕсли;
ЕслиТЗДолг[С2].Долг = 0 Тогда
С2 = С2 + 1;
КонецЕсли;
КонецЦикла;
Прошу прощения за отсутствие, все-таки разработка не основная моя работа.... Пока. Попробую как Вы сказали. Признаться честно, мне тоже в голову приходила мысль о создании двух таблиц значений и работы с ними, но вот додуматься до С1+1 я бы, конечно, не смог. ТО есть, если я Вас правильно понимаю, я на основании табличного поля, которое по запросу извлекает информацию из регистра бухгалтерии, создаю две разные таблицы, условно ТаблЗначДолг и ТаблЗначАванс, потом Вашей методикой перебираю данные этих таблиц.... Попробую, отпишусь. Спасибо!

Ответили: пост №18
Макс БУх
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 137
Пост №17
 
25.02.2015 11:05

Prikum, обработку выкладываю. только строго не судите, в ней много лишнего, так сказать работа мысли)))

Ответили: пост №19
uinny
читатель
офлайн
Дата регистрации: 12.01.2008
Сообщений: 4814
Пост №18
 
25.02.2015 11:16
Ответ на пост №16

Макс БУх, ну да, одновременное прохождение по двум массивам со сравнением элементов и их обработкой :)

Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20953
Пост №19
 
25.02.2015 11:22
Ответ на пост №17

Макс БУх, я писал по другому, вместо этих соединений, можно использовать развернутое сальдо по счету группе 62. У меня была задача свернуть сальдо по покупателям(поставщикам) внутри счета 62(60). Т.е. решалась задача, когда у контрагента было сальдо и по 62.01 и по 62.02 одновременно.

Макс БУх
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 137
Пост №20
 
25.02.2015 12:48

Prikum пишет:

Цитата

      
                  
                   Ответ на
                   пост №17
            
      
Макс БУх , я писал по другому, вместо этих соединений, можно использовать развернутое сальдо по счету группе 62. У меня была задача свернуть сальдо по покупателям(поставщикам) внутри счета 62(60). Т.е. решалась задача, когда у контрагента было сальдо и по 62.01 и по 62.02 одновременно.
Да, так сделать можно, более того у меня даже получилось, чтобы просто по контрагенту, без аналитики по договорам. Но ведь хочется создать видимость правильности, чтобы с одного договора на другой:)

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация