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

1С:Предприятие ::

Метки:

Как узнать на каком счете «висит» субконто?

Я
   Дык
05.08.04 - 00:43
1С77 бухгалтерия релиз 19 конфигурация 3.7
Проблема: Один мастер увольняется и надо все МПБ,  МАТЕРИАЛЫ, что на нем числятся, «повешать» на нового мастера, т.е сохраняя счет (10,12), поменять в субконто «Подразделения» мастера. (Подразделения соответствуют мастерам). Создаю таблицу: МБП, Количество, Сумма, Счет. Заполняю первые три столбца, а вычислить счет, вернее субсчет, как-то не получается.
Может дополните этот код

Процедура Заполнить()
    Если ВыбратьСтроки() = 1 Тогда
        Если Вопрос("Перед заполнением таблица будет очищена,"+РазделительСтрок+"а существующие строки удалены. Продолжать?","ОК+Отмена") = "ОК" Тогда
            УдалитьСтроки();
        КонецЕсли;
    КонецЕсли;
    Счет12="12"// на 12 счете 5 субсчетов

    Если КоличествоСтрок() = 0 Тогда
        БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
        БухИт.ИспользоватьСубконто(ВидыСубконто.МБП);
        БухИт.ИспользоватьСубконто(ВидыСубконто.Подразделения,ОтКого);
        БухИт.ВключатьСубсчета(1,);
        БухИт.ВыполнитьЗапрос(,ДатаДок,Счет12,,,,,"К");
              БухИт.ВыбратьСубконто(,,,,,"Наименование");        
           Пока БухИт.ПолучитьСубконто() = 1 Цикл 
        НоваяСтрока();
        МБП = БухИт.Субконто();
                   Количество = БухИт.СКД("К");
       //Пересчет(1);

    КонецЦикла;

    КонецЕсли;
    Если КоличествоСтрок() = 0 Тогда

           Предупреждение("Не обнаружено ни одного МБП на мастере
                            |по выбранному назначению использования на "+Формат(ДатаДок,"Д ДДММММГГГГ"));
    КонецЕсли;
КонецПроцедуры//Заполнить

//____________________________________________________________________
Спасибо
 
  Рекламное место пустует
   NS
 
1 - 05.08.04 - 00:49
би.Выбратьсчета();
пока би.получитьсчет()=1 цикл
   Дык
2 - 05.08.04 - 01:04
би.Выбратьсчета(); 
пока би.получитьсчет()
Этот код перебирает счета, а мне надо показать буху счет
Счет=????????????????
   Дмитрий
 
3 - 05.08.04 - 01:45
(2)Внутри цикла 
 Пока БухИт.ПолучитьСубконто()=1 Цикл

предложенный в (1) код будет перебирать счета, на которых есть итоги по
БухИт.Субконто()

Вот их и показывай
   Дык
4 - 05.08.04 - 01:58
Вот пример того, что в конечном итоге появляется перед глазами
МБП = БухИт.Субконто(); 
Количество = БухИт.СКД("К");
Допишите, пожалуйста, эту операцию присваивания

Счет=
   Дык
5 - 05.08.04 - 05:47
А в ответ - тишина
   Пролд
 
6 - 05.08.04 - 05:58
Счет = БухИт.Счет;//Синтакс-Помощник тебе помощник
   Пролд
 
7 - 05.08.04 - 05:59
ОФФ: Что со мной?!! Я весь почернел!!! А был раньше серым, пушистым...
   Дык
8 - 05.08.04 - 06:07
Сейчас попробую. Спасибо
   Дык
9 - 05.08.04 - 06:14
В общем работает. Отлажу - положу полный код. Спасибо. И не черней пожалуйста.
   427
 
10 - 05.08.04 - 06:45
а зачем? Это же азы... Лучше пусть Волшебник включит это в свою рассылку для начинающих...

P.S. вообще то это описано в документации
 
 
   Дык
11 - 05.08.04 - 07:01
(10) А тебя никогда не клинит? Конечно азы и есть в документации, только ответ дали через четыре часа на элементарный вопрос и только с 4-й попытки.Так что нечего кичиться!
А кому надо - привожу код

Шапка:  Номер, ДатаДок, ОтКого, Кому1
Таблица: №, МБП,Количество,Сумма, счет (можно еще ОстатокСум)
Кнопки: ОК, Закрыть, Печать, Заполнить
Модуль документа:

Процедура ПриОткрытии()
    ПриЗаписиПерепроводить(1);
КонецПроцедуры

Процедура Пересчет()
    Если МБП.Выбран() = 1 Тогда
        Если (Форма.ТекущаяКолонка() = "МБП") или (Подбор = 1) Тогда
            Цена = МБП.Цена;
            Количество = ?(Количество=0,1,Количество);
            Сумма = Окр(Количество*Цена,2,1);
        ИначеЕсли (Форма.ТекущаяКолонка() = "Количество") или (Форма.ТекущаяКолонка() = "Цена") Тогда
            Сумма = Окр(Количество*Цена,2,1);
        ИначеЕсли Форма.ТекущаяКолонка() = "Сумма" Тогда
            Цена = Окр(Сумма/?(Количество=0,1,Количество),2,1);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
//_____________________________________________________________________________


Процедура Заполнить()
    Если ВыбратьСтроки() = 1 Тогда
        Если Вопрос("Перед заполнением таблица будет очищена,"+РазделительСтрок+"а существующие строки удалены. Продолжать?","ОК+Отмена") = "ОК" Тогда
            УдалитьСтроки();
        КонецЕсли;
    КонецЕсли;
    Счет12="12.1,12.2,12.3,12.4"//Список моих субсчетов

    Если КоличествоСтрок() = 0 Тогда
        БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
        БухИт.ИспользоватьСубконто(ВидыСубконто.МБП);
        БухИт.ИспользоватьСубконто(ВидыСубконто.Подразделения,ОтКого);
        БухИт.ВключатьСубсчета(1,);
        БухИт.ВыполнитьЗапрос(,ДатаДок,Счет12,,,,,5);
        БухИт.ВыбратьСчета(1,,,);
            Пока БухИт.ПолучитьСчет()=1 Цикл
              БухИт.ВыбратьСубконто(,,,,,"Наименование");        
                            Пока БухИт.ПолучитьСубконто() = 1 Цикл 
                НоваяСтрока();
                МБП = БухИт.Субконто();
                            Количество = БухИт.СКД("К");
//А здесь можно узнать реальный остаток на счете ОстатокСум= БухИт.СКД(1);

                Счет = БухИт.Счет//

                Пересчет(1);
                            КонецЦикла;
            КонецЦикла;
    КонецЕсли;
    Если КоличествоСтрок() = 0 Тогда
    Предупреждение("Не обнаружено ни одного МБП на мастере на "+Формат(ДатаДок,"Д ДДММММГГГГ"));
    КонецЕсли;
КонецПроцедуры//Заполнить

//_____________________________________________________________________________

Процедура Печать()
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Печать");
    Таб.ВывестиСекцию("Шапка");
    Таб.Опции(0,0,0,0);
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        МЦ=МБП;
        Код=МБП.Код ;
        ЕдиницаИзмерения=МБП.ЕдиницаИзмерения;
        МатериалЦенаБезНДС=МБП.Цена;
        Количество=Количество;
        Сумма=МатериалЦенаБезНДС*Количество;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ВывестиСекцию("Подвал");
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать Новый1","");
КонецПроцедуры

После того, как таблица заполнена, можно все полученное хозяйстово повесить на другой элемент субконто через проводки:


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

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

        Операция.НоваяПроводка();
        Операция.Дебет.Счет =счет;
        Операция.Дебет.МБП = МБП;
        Операция.Дебет.Подразделения =  Кому1;
        Операция.Кредит.Счет = счет;
        Операция.Кредит.МБП =МБП;
        Операция.Кредит.Подразделения =  ОтКого;
        Операция.Количество = Количество;
        Операция.Сумма =  МБП.Цена*Количество//А можно списать реальный остаток ОстататокСум


    КонецЦикла;

    Операция.СуммаОперации = Итог("Сумма");
    Операция.Содержание = "Внутр.перем от " + ОтКого + " к " + Кому1;
    Операция.Записать();
КонецПроцедуры
   427
 
12 - 05.08.04 - 07:48
Ёперный балет.... Как мне нравится бухгалтерия республики Банановые Острова... где до сих пор есть любимый мною 12 счет....


А теперь разрешите вас поиметь…
По пунктам (просто пью кофу и думать лениво)

Процедура Пересчет()    и на фига весь расчет с Би, если цену хаваешь из справочника… Кстати, каков будет результат, если МБП поступало несколько раз по разным ценам


Замечание….
ВСЕ формулы с использованием  ОКРуглить можно в форме документа переписать без использования ее…. Догадайся сам, почему….

Зачем стоит  БухИт.ВключатьСубсчета(1,); ? Субсчета заданы явно

БухИт.ВыполнитьЗапрос(,ДатаДок,Счет12,,,,,5);  --- неплохо было бы указать параметр ТолькоОстатки… хотя, т.к. дата одна – там и будут остатки… Но привыкай не пользоваться умолчаниями в 1С…

БухИт.ВыбратьСубконто(,,,,,\"Наименование\");         ????  Зачем?  Обычно справочник и так имеет сортировку по наименованию



Сумма=МатериалЦенаБезНДС*Количество;   За такое блядство при печати обычно бухи морду бьют…. И бывают правы… Рассчитанная сумма ЕСТЬ в колонке – вот ее и печатай. Иначе  могут быть расхождения… На ровном месте…



А когда будешь вешать на другое субконто (МОЛ) проверь остатки по предыдущему МОЛу (особенно если передача всего)… ИнтерЕсная будет картинка иногда…
   Дык
13 - 05.08.04 - 11:31
Со всеми пунктами согласен


Список тем форума
  Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует