7.7 Проводка

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем kible, 27 май 2010.

  1. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Как сложить суммы в нескольких проводках и подставить в одну?
    Код:
    // ********************  
    Процедура ОбработкаПроведения()
    ОбщКоличество=0;
    Спр = СоздатьОбъект("Справочник.СпецификацияНоменклатуры");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Спр.ИспользоватьРодителя(СпецификацияИзделия);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    ОбщКолВо=ОбщКолВо+Спр.Количество*Количество;
    Сообщить(""+Спр.Материал+"   Кол-Во"+Спр.Количество*Количество);
    
    //////////////////////////////////////////////////////////////
    
    Если глПределыБухгалтерскихИтогов(, ДатаДок, 1) = 0 Тогда
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;	
    
    БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
    
    Если Метаданные.РазделительУчета.Выбран() = 1 Тогда
    БухИтоги.ИспользоватьРазделительУчета(Организация);
    КонецЕсли;	
    
    БухИтоги.ВключатьСубсчета(1); 	
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы, Спр.Материал, 2);
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2);
    БухИтоги.ВыполнитьЗапрос(,ТекущийДокумент(),"131",,,,,);
    БухИтоги.ВыбратьСубконто();  
    
    
    Материал = Спр.Материал;		
    
    Если БухИтоги.ПолучитьСубконто(,,Материал) = 1 Тогда
    Если БухИтоги.ПолучитьСчет(,глПолучитьСчетТМЦ(Материал)) = 1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда			</span>
    ОстатокКоличество 	= БухИтоги.СКД("К");
    ОстатокСумма		= БухИтоги.СКД("С");			
    Если Спр.Количество*Количество > ОстатокКоличество  Тогда
    
    глСообщить(Операция, "Счет " + СокрЛП(глПредставлениеСчетаСтр(глПолучитьСчетТМЦ(Материал)))+ 
    ", место хранения """+СокрЛП(Склад)+""": недостаточно материала """+СокрЛП(Материал)+
    ". Не хватает "+СокрЛП(Спр.Количество*Количество - ОстатокКоличество )+". Проводка не записана!", "!");			    					
    КонецЕсли;
    Иначе //в карточке товара не верно указан счет 
    глСообщить(Операция, "Не верно указан счет учета материала. Остатки для """  + СокрЛП(Материал)+""" на счете " + СокрЛП(глПредставлениеСчетаСтр(глПолучитьСчетТМЦ(Материал))) + " - отсутствуют. Проводка не записана!", "!");	
    КонецЕсли;		
    Иначе	//Если БухИтоги.ПолучитьСубконто(,,Материал) = 1 Тогда
    // по данному ТМЦ вообще нет остатка
    глСообщить(Операция, "Счет " + СокрЛП(глПредставлениеСчетаСтр(глПолучитьСчетТМЦ(Материал)))+ 
    ", место хранения """+СокрЛП(Склад)+""": недостаточно материала """+СокрЛП(Материал)+
    ". Не хватает "+СокрЛП(Спр.Количество*Количество)+". Проводка не записана!", "!");			    					
    КонецЕсли;		    
    /////////////////////////////////////////////////////////////////////////////   
    
    
    КоличествоНаСкладе		= 0; // Общий остаток на складе(количество) по выбранной позиции номенклатуры
    СуммаНаСкладе			= 0; // Общий остаток на складе(сумма) по выбранной позиции номенклатуры
    МожноСписатьКоличество	= 0; // Количество, которое можно списать по данной строке, учитывая уже списанное количество в этом документе                            
    МожноСписатьСумму		= 0; // Сумма, которую можно списать по данной строке, учитывая уже списанную сумму в этом документе
    Стр = "";
    
    КоличествоНаСкладе		= ОстатокКоличество;
    СуммаНаСкладе			= ОстатокСумма;			
    МожноСписатьКоличество 	= Макс(0,КоличествоНаСкладе - Спр.Количество*Количество);
    МожноСписатьСумму 		= Макс(0,СуммаНаСкладе);		
    
    
    Если МожноСписатьКоличество = 0 Тогда
    Продолжить;
    КонецЕсли;     
    
    Если (МожноСписатьКоличество < Количество) или (МожноСписатьКоличество = 0)  <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда			</span>
    Продолжить;
    Иначе
    Если МожноСписатьКоличество = Количество <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>
    Сумма = МожноСписатьСумму; // Оставшаяся после списания предыдущих позиций сумма
    Иначе
    Сумма = Окр((Спр.Количество*Количество) * (СуммаНаСкладе/КоличествоНаСкладе),2);
    КонецЕсли; 
    КонецЕсли;		
    
    СчетДебета = СчетПоКоду("8112",ПланыСчетов.Основной);
    СчетКредита  = СчетПоКоду("131",ПланыСчетов.Основной);  
    
    глПроводка(	Операция,
    СчетДебета,	 глСубконто(Подразделение,ВидДеятельности,ВидЗатрат), 
    СчетКредита, глСубконто(Спр.Материал,Склад),Спр.Количество*Количество
    ,Сумма , , , , , Организация);
    ////////////////////////////////////////////////////////////////////////////////
    Если Счет = СчетПоКоду("131") Тогда 		
    СчетДебета = СчетПоКоду("131",ПланыСчетов.Основной);
    СчетКредита  = СчетПоКоду("8112",ПланыСчетов.Основной);
    глПроводка(	Операция,
    СчетДебета,	 глСубконто(Спр.Материал, Склад, ), 
    СчетКредита, глСубконто(Подразделение, ВидДеятельности, ВидЗатрат),Спр.Количество*Количество
    ,Сумма , , , , , Организация);
    
    КонецЕсли;
    ///////////////////////////////////////////////////////////////////////////////////				
    КонецЦикла;  
    
    ///////////////////////////////////////////////////////////////////////////////////
    Если Счет = СчетПоКоду("132") Тогда
    СчетДебета = СчетПоКоду("132",ПланыСчетов.Основной);
    СчетКредита  = СчетПоКоду("8112",ПланыСчетов.Основной);
    глПроводка(	Операция,
    СчетДебета,	 глСубконто(Номенклатура, Склад, ), 
    СчетКредита, глСубконто(Подразделение, ВидДеятельности, ВидЗатрат),Количество
    ,Сумма , , , , , Организация); 						
    КонецЕсли;				
    
    КонецЦикла;
    
    Операция.Записать();
    
    КонецПроцедуры
    
    

    Вложения:

  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Интересно, каким образом вы можете складывать суммы по проводкам, когда у вас первое субконто отличается? Да и зачем? Если надо - просто возьмите ОСВ по счету и поставьте первое субкото "не учитывать". Получите "ИГОГО"
  3. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Не очень удачный пример получился. Первые 2 проводки списывают материал. А третья должна оприходовать номенклатуру на сумму которая была на нее затрачена.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    В цикле по БИ складывайте. И....
    Выкладывате ЧИТАБЕЛЬНЫЙ код. Уважайте коллег и себя. В следующий раз с таким кодом сообщения буду просто удалять с форма без ответа... Спасибо
  5. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Вот то что нужно. Но как сложить я не знаю.
    Код:
    СчетДебета = СчетПоКоду("8112",ПланыСчетов.Основной);
    СчетКредита  = СчетПоКоду("131",ПланыСчетов.Основной);  
    
    глПроводка(Операция,
    СчетДебета, глСубконто(Подразделение,ВидДеятельности,ВидЗатрат), 
    СчетКредита, глСубконто(Спр.Материал,Склад),
    Спр.Количество*Количество, Сумма , , , , , Организация);
    
    Операция.Выбрать Проводки();
    Пока Операция.ПолучитьПроводку()=1 Цикл
    //Что здесь написать я не знаю
    КонецЦикла;
    
    
    За код извиняюсь.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Зачем? В процессе формирования проводок Д8112 - К1310
    можно посчитать сумму......
  7. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Покажите как это сделать пожалуйста.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Код:
    ОбщаяСумма=0;
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    ....
    ....
    глПроводка(Операция,СчетДебета,...
    ОбщаяСумма=ОбщаяСумма+Сумма;
    .....
    
    
  9. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Что-то не получается.
    Код:
    ОбщаяСумма=0;
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл	</span>
    глПроводка(	Операция,
    СчетДебета,	 глСубконто(Подразделение,ВидДеятельности,ВидЗатрат), 
    СчетКредита, глСубконто(Спр.Материал,Склад),Спр.Количество*Количество
    ,Сумма , , , , , Организация);  
    ОбщаяСумма=ОбщаяСумма+Сумма;
    
    Сообщить(ОбщаяСумма);//Попадает Сумма последней строки 
    Прервать;
    КонецЦикла;
    
    
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Значит не там вставляете! Смотрите где формируется проводка ИМЕННО проводок Д8112 - К1310
  11. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Код:
    ОбщаяСумма=0;
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    
    СчетДебета = СчетПоКоду("8112",ПланыСчетов.Основной);
    СчетКредита  = СчетПоКоду("131",ПланыСчетов.Основной);  
    глПроводка(Операция,
    СчетДебета, глСубконто(Подразделение,ВидДеятельности,ВидЗатрат), 
    СчетКредита, глСубконто(Спр.Материал,Склад),
    Спр.Количество*Количество,Сумма , , , , , Организация);  
    
    ОбщаяСумма=ОбщаяСумма+Сумма;
    
    Сообщить(ОбщаяСумма);
    Прервать;
    КонецЦикла;
    
    
    Вот так не получается. В общейсумме только сумма последней проводки.
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    А сколько у вас строк в табличной части документа?
  13. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Одна.
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    но судя по проводкам у вас в спецификации 2 строки и два материала... Должно работать...
    Вынесите ОбщаяСумма=0; в начало процедуры (там где ОбщКоличество)

Поделиться этой страницей