Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 08:35

Эксперимент

Автор newcomer, 07 дек 2011, 16:12

0 Пользователей и 1 гость просматривают эту тему.

newcomer

1С Предприятие 7.7 SQL версия 7.70.023
Задача - элементарный учет: Центральный склад Поставщики Покупатели. Одна из задач - контроль прибыли. Приходуем по приходной цене - продаем по цене реализации. Пробую сделать не на базе типовой, а пишу от начала, чтоб и самому разобраться. В базе два документа Приход и Уход.
Приход.Модуль документа
Процедура ОбработкаПроведения()

   //{{ФОРМИРОВАНИЕ_ОПЕРАЦИИ

   //Данный фрагмент построен конструктором.
   //При повторном использовании конструктора, внесенные вручную изменения будут потеряны!!!

   ВыбратьСтроки();
   Пока ПолучитьСтроку() = 1 Цикл

      Операция.НоваяПроводка();
      Операция.Дебет.Счет = СчетПоКоду("10.00",ПланыСчетов.Основной);
      Операция.Дебет.Номенклатура = Товар;
      Операция.Кредит.Счет = СчетПоКоду("60.00",ПланыСчетов.Основной);
      Операция.Кредит.Контрагенты = Поставщик;
      Операция.Количество = Количество;
      Операция.Сумма = Сумма;
      Операция.ЗаписатьПроводки();
      П2000=СоздатьОбъект("Справочник.Номенклатура");
      П2000.НайтиЭлемент(Товар);
      П2000.Цена=Цена;
      П2000.ДатаПрихода=ДатаДок;
      П2000.ЕдИзм=ЕдИзм;
      П2000.ЦенаРеализации=ЦенаРеализации;
      П2000.Поставщик=Поставщик;
      П2000.Записать();
   КонецЦикла;

Уход. Модуль документа.

Перем БухИт;

Процедура ОбработкаПроведения()




               
   БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
   БухИтоги.ПериодМ(ДатаДок);
   
   ВыбратьСтроки();
   Пока ПолучитьСтроку() = 1 Цикл
      БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
      БухИтоги.ИспользоватьПланСчетов(ПланыСчетов.Основной);
      П01=БухИтоги.СКДРС(СчетПоКоду("10.00"), "С",,Строка(Товар), "!");
      П02=БухИтоги.СКДРС(СчетПоКоду("10.00"), "К",,Строка(Товар), "!");

        П11=БухИтоги.СККРС(СчетПоКоду("10.00"), "С",,Строка(Товар), "!");
        П12=БухИтоги.СКДРС(СчетПоКоду("10.00"), "К",,Строка(Товар), "!");
        ЕСЛИ П11>0 Тогда   
       Сообщить ("ВНИМАНИЕ!!! ТТН2 №" + НомерДок + "от "+ДатаДок+"!!! Товар "+Товар+"   "+П01+"   "+П02+"  "+Строка(Товар)+"  - кредитовый остаток по количеству!Ищите ошибку!");
      КОНЕЦЕСЛИ;
        ЕСЛИ П12>0 Тогда
         Сообщить ("ВНИМАНИЕ!!! ТТН2 №" + НомерДок + "от "+ДатаДок+"!!! Товар "+Товар+"  - кредитовый остаток по сумме!Ищите ошибку!");
        КОНЕЦЕСЛИ;
        ЕСЛИ П01=0 Тогда
         Сообщить ("ВНИМАНИЕ!!! ТТН2 №" + НомерДок + "от "+ДатаДок+"!!! Товар "+Товар+"   "+П01+"   "+П02+"  отсутствует на складе!Ищите ошибку!");
        КОНЕЦЕСЛИ;
        ЕСЛИ П02=0 Тогда
         Сообщить ("ВНИМАНИЕ!!! ТТН2 №" + НомерДок + "от "+ДатаДок+"!!! Товар "+Товар+"   "+П01+"   "+П02+"  дебетовый остаток равен 0!Ищите ошибку!");
        КОНЕЦЕСЛИ;
        ЕСЛИ П01>0 Тогда
        П31=ОКР(П01*1000,0);
        П32=ОКР(Количество*1000,0);
        ЕСЛИ П32>П31 Тогда
         Сообщить ("ВНИМАНИЕ!!! ТТН2 №" + НомерДок + "от "+ДатаДок+"!!! Товар "+Товар+" - Нужного количества на складе нет! Есть на складе - "+П01+"!");
        КОНЕЦЕСЛИ;
       ЕСЛИ П32=П31 Тогда
      П03=П02;
        Операция.НоваяПроводка();
      Операция.Дебет.Счет = СчетПоКоду("90.00",ПланыСчетов.Основной);
      Операция.Кредит.Счет = СчетПоКоду("10.00",ПланыСчетов.Основной);
      Операция.Кредит.Номенклатура = Товар;
      Операция.Количество = Количество;
      Операция.Сумма = П03;

      Операция.ЗаписатьПроводки();
       КОНЕЦЕСЛИ;
   
       ЕСЛИ П32<П31 Тогда
      П03=ОКР(П02/П01*Количество,2);
        Операция.НоваяПроводка();
      Операция.Дебет.Счет = СчетПоКоду("90.00",ПланыСчетов.Основной);
      Операция.Кредит.Счет = СчетПоКоду("10.00",ПланыСчетов.Основной);
      Операция.Кредит.Номенклатура = Товар;
      Операция.Количество = Количество;
      Операция.Сумма = П03;

      Операция.ЗаписатьПроводки();
      КОНЕЦЕСЛИ;
       КОНЕЦЕСЛИ;   
   КонецЦикла;

       Операция.НоваяПроводка();
      Операция.Дебет.Счет = СчетПоКоду("62.00",ПланыСчетов.Основной);
      Операция.Дебет.Контрагенты = Покупатель;
      Операция.Кредит.Счет = СчетПоКоду("90.00",ПланыСчетов.Основной);
      Операция.Сумма = Итог("Сумма");

      Операция.ЗаписатьПроводки();
          
   Операция.СуммаОперации = Итог("Сумма");
   Операция.Записать();
      
КонецПроцедуры 
Как видите упор сделан на движение по счетам учета - сам бухгалтер. Но почему-то не видит остатков по 10 счету. Говорит , что ничего нет на складе. Чувствую что что-то элементарное , но не могу понять в чем.
Сообщения следующие
ВНИМАНИЕ!!! ТТН2 №    1от 20.11.11!!! Товар Товар2   0   0  отсутствует на складе!Ищите ошибку!
ВНИМАНИЕ!!! ТТН2 №    1от 20.11.11!!! Товар Товар2   0   0  дебетовый остаток равен 0!Ищите ошибку!
ВНИМАНИЕ!!! ТТН2 №    1от 20.11.11!!! Товар Товар4   0   0  отсутствует на складе!Ищите ошибку!
ВНИМАНИЕ!!! ТТН2 №    1от 20.11.11!!! Товар Товар4   0   0  дебетовый остаток равен 0!Ищите ошибку!
ВНИМАНИЕ!!! ТТН2 №    1от 20.11.11!!! Товар Товар3   0   0  отсутствует на складе!Ищите ошибку!
ВНИМАНИЕ!!! ТТН2 №    1от 20.11.11!!! Товар Товар3   0   0  дебетовый остаток равен 0!Ищите ошибку!
Подводит меня привычка к 6-й версии. Понятно что заведены счета 10.00,60.00,62.00, но видимо почему-то не видит движение по счету 10.00. Все подсоединено и субконто Номенклатура и Количественный учет к 10.00. Колонка Товар ВидСубконто.Номенклатура. Не понятно. С уважением. Newcomer.

Теги:
Рейтинг@Mail.ru

Поиск