Имя: Пароль:
1C
1С v8
Списывает с 43 а не с 41го - допилино глянте код
,
0 zmeyako999
 
23.12.11
13:49
Вообщем франчами когда-то прикручен документ отгрузка населению,
не пойму алгоритма как он выбирает с 41го или с 43 списывать, номенклатура одна и та же, как он партии то берет:
= Сч43;
               //
               Проводка = Движения.Хозрасчетный.Добавить();
               Проводка.Организация = Организация;
               Проводка.Период       = Дата;
               //эц ПИА 23.04.2009 +
               //Проводка.СчетДт       = Сч90_02_1;
               Проводка.СчетДт = ?(?(ПризнакЕНВДвТабЧасти,СтрокаТаблицы.ЕНВД,ЕНВД),Сч90_02_2,Сч90_02_1);
               //эц ПИА 23.04.2009 .
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"НоменклатурныеГруппы",ВидНоменклатуры);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"СтавкиНДС",СтрокаТаблицы.СтавкаНДС);
               //эц ПИА 2010.12.29 изменял под 2.0 +
               //БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Подразделения",Подразделение);
               Если Проводка.СчетДт.УчетПоПодразделениям Тогда
                   Проводка.ПодразделениеДт = Подразделение;    
               КонецЕсли;
               //эц ПИА 2010.12.29 .
               
               Проводка.СчетКт       = СчетУчета;
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Номенклатура",СтрокаТаблицы.Номенклатура);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Склады",Склад);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Партии",Строчка43.Партия);
               Проводка.КоличествоКт = КоличествоПроводки43;
               Проводка.Сумма        = СуммаПроводки43;
               //
               НадоСписать = НадоСписать - КоличествоПроводки43;
               пСебестоимость = пСебестоимость + СуммаПроводки43;
               Строчка43.УжеПрошло = Строчка43.УжеПрошло + КоличествоПроводки43;
               Строчка43.СуммаУжеПрошло = Строчка43.СуммаУжеПрошло + СуммаПроводки43;
               
           КонецЦикла;
           
           Если НадоСписать > 0 Тогда
               //эц ПИА 2010.10.06 .
               
               Для каждого Строчка из ТаблицаОстатков Цикл
                   Если Строчка.Номенклатура <> СтрокаТаблицы.Номенклатура Тогда
                       Продолжить;
                   КонецЕсли;
                   КоличествоНаСкладеПоПартии = Строчка.КоличествоОстатокДт - Строчка.УжеПрошло;
                   Если КоличествоНаСкладеПоПартии <= 0 Тогда
                       Продолжить;
                   КонецЕсли;
                   //СуммаНаСкладеПоПартии   = Макс(Строчка.СуммаОстатокДт, 0);
                   КоличествоПроводки      = Мин(НадоСписать,КоличествоНаСкладеПоПартии);
                   СуммаПроводки              = Строчка.СуммаОстатокДт/Строчка.КоличествоОстатокДт*КоличествоПроводки;
                   Если КоличествоПроводки = КоличествоНаСкладеПоПартии Тогда
                       СуммаПроводки = Строчка.СуммаОстатокДт - Строчка.СуммаУжеПрошло;
                   КонецЕсли;
                   СчетУчета                  = Сч41_01;
                   //
                   Проводка = Движения.Хозрасчетный.Добавить();
                   Проводка.Организация = Организация;
                   Проводка.Период       = Дата;
                   //эц ПИА 23.04.2009 +
                   //Проводка.СчетДт       = Сч90_02_1;
                   Проводка.СчетДт = ?(?(ПризнакЕНВДвТабЧасти,СтрокаТаблицы.ЕНВД,ЕНВД),Сч90_02_2,Сч90_02_1);
                   //эц ПИА 23.04.2009 .
                   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"НоменклатурныеГруппы",ВидНоменклатуры);
                   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"СтавкиНДС",СтрокаТаблицы.СтавкаНДС);
                   //эц ПИА 2010.12.29 изменял под 2.0 +
                   //БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Подразделения",Подразделение);
                   Если Проводка.СчетДт.УчетПоПодразделениям Тогда
                       Проводка.ПодразделениеДт = Подразделение;    
                   КонецЕсли;
1 hhhh
 
23.12.11
13:53
ну вот же

               Проводка.СчетКт       = СчетУчета;

то есть берет из переменной СчетУчета, однозначно.
2 zmeyako999
 
23.12.11
13:55
то есть берет от счета прихода? то есть или от поступления или от выпуска
3 Fish
 
23.12.11
13:56
Код неполный. Что такое:
= Сч43; ???????

Но если по логике то вот условие:

Если НадоСписать > 0 Тогда
....
СчетУчета                  = Сч41_01;
....
Что непонятно?
4 hhhh
 
23.12.11
13:57
(2) ну какой счет там указан в документе, такой и берет. От какого еще выпуска?
5 zmeyako999
 
23.12.11
13:59
там выпуск допилен
6 Reset
 
23.12.11
14:00
(3) Там поди было написано: Сч41_01 = Сч43;
:D
7 zmeyako999
 
23.12.11
14:02
(6) неа как написано так и скопировал
8 Fish
 
23.12.11
14:07
(7) Это фантастика. :)))
9 zmeyako999
 
23.12.11
14:13
вот вечно оборжут а у меня беда - гонит минуса по 43 а по 41.01 остаток
10 zmeyako999
 
23.12.11
14:14
мне капать в сторону партий или в сторону документов прихода на 43 и 41-й? в ручную там нигде нельзя счета выбрать
11 Fish
 
23.12.11
14:15
Никто пока еще не ржал, но читай внимательно (3).
В (7) явный бред, ибо если написать строчку "= Сч43;", то будет ошибка "Неопознанный оператор".
Приведи полный код процедуры.
12 zmeyako999
 
23.12.11
14:21
(11)

Процедура ОбработкаПроведения(Отказ, Режим)
   Сч62_01   = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
   Сч90_01_1 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
   Сч90_02_1 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
   Сч76_05   = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.05");
   Сч41_01   = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
   
       
   //эц ПИА 23.04.2009 +
   Сч90_01_2 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.2");
   Сч90_02_2 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.2");
   //эц ПИА 23.04.2009 .
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
                  |    ХозрасчетныйОстатки.Субконто2,
                  |    ХозрасчетныйОстатки.Субконто3 КАК Партия,
                  |    ХозрасчетныйОстатки.СуммаОстатокДт,
                  |    ХозрасчетныйОстатки.КоличествоОстатокДт
                  |ИЗ
                  |    РегистрБухгалтерии.Хозрасчетный.Остатки(
                  |            &Период,
                  |            Счет = &Счет,
                  |            ,
                  |            Субконто2 = &Склад
                  |                И Организация = &Организация) КАК ХозрасчетныйОстатки";
   //эц ПИА 2011.01.26 +
   //Запрос.УстановитьПараметр("Период",Дата);
   Запрос.УстановитьПараметр("Период",МоментВремени());
   Запрос.УстановитьПараметр("Организация",Организация); //эц ПИА 2011.04.07
   //эц ПИА 2011.01.26 .
   Запрос.УстановитьПараметр("Счет",Сч41_01);
   Запрос.УстановитьПараметр("Склад",Склад);
   
   ТаблицаОстатков = Запрос.Выполнить().Выгрузить();
   ТаблицаОстатков.Колонки.Добавить("УжеПрошло");
   ТаблицаОстатков.ЗаполнитьЗначения(0,"УжеПрошло");
   ТаблицаОстатков.Колонки.Добавить("СуммаУжеПрошло");
   ТаблицаОстатков.ЗаполнитьЗначения(0,"СуммаУжеПрошло");
   
   //эц ПИА 2010.10.06 +
   Сч43   = ПланыСчетов.Хозрасчетный.НайтиПоКоду("43");
   
   ЗапросОстатковПо43 = Новый Запрос;
   ЗапросОстатковПо43.Текст = "ВЫБРАТЬ
                              |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
                              |    ХозрасчетныйОстатки.Субконто2,
                              |    ХозрасчетныйОстатки.Субконто3 КАК Партия,
                              |    ХозрасчетныйОстатки.СуммаОстатокДт,
                              |    ХозрасчетныйОстатки.КоличествоОстатокДт
                              |ИЗ
                              |    РегистрБухгалтерии.Хозрасчетный.Остатки(
                              |            &Период,
                              |            Счет = &Счет,
                              |            ,
                              |            Субконто2 = &Склад
                              |                И Организация = &Организация) КАК ХозрасчетныйОстатки";
   //эц ПИА 2011.01.26 +
   //ЗапросОстатковПо43.УстановитьПараметр("Период",Дата);
   ЗапросОстатковПо43.УстановитьПараметр("Период",МоментВремени());
   ЗапросОстатковПо43.УстановитьПараметр("Организация",Организация); //эц ПИА 2011.04.07
   //эц ПИА 2011.01.26 .
   ЗапросОстатковПо43.УстановитьПараметр("Счет",Сч43);
   ЗапросОстатковПо43.УстановитьПараметр("Склад",Склад);
   
   ТаблицаОстатковПо43 = ЗапросОстатковПо43.Выполнить().Выгрузить();
   ТаблицаОстатковПо43.Колонки.Добавить("УжеПрошло");
   ТаблицаОстатковПо43.ЗаполнитьЗначения(0,"УжеПрошло");
   ТаблицаОстатковПо43.Колонки.Добавить("СуммаУжеПрошло");
   ТаблицаОстатковПо43.ЗаполнитьЗначения(0,"СуммаУжеПрошло");
   //эц ПИА 2010.10.06 .
   
   
   //эц ПИА 10.02.2011 +
   Сч62_02   = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");    
   
   ЗапросАвансов = Новый Запрос;
   ЗапросАвансов.УстановитьПараметр("Счет62_02",Сч62_02);
   ЗапросАвансов.УстановитьПараметр("Контрагент",Контрагент);
   ЗапросАвансов.УстановитьПараметр("Договор",Договор);
   ЗапросАвансов.УстановитьПараметр("Период",МоментВремени());
   ЗапросАвансов.УстановитьПараметр("Организация",Организация);
   ЗапросАвансов.Текст =
   "ВЫБРАТЬ
   |    ХозрасчетныйОстатки.Субконто3 КАК ДокументРасчетов,
   |    -ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки(
   |            &Период,
   |            Счет = &Счет62_02,
   |            ,
   |            Субконто1 = &Контрагент
   |                И Субконто2 = &Договор
   |                И Организация = &Организация) КАК ХозрасчетныйОстатки
   |ГДЕ
   |    ХозрасчетныйОстатки.СуммаОстаток < 0
   |
   |УПОРЯДОЧИТЬ ПО
   |    ХозрасчетныйОстатки.Субконто3.Дата";
   
   ВыборкаАвансов = ЗапросАвансов.Выполнить().Выгрузить();
   //эц ПИА 10.02.2011 .
   
   
   //Проводка.Организация = Организация;
   Для Каждого СтрокаТаблицы Из Продажи Цикл
       ВыручкаПредъявленная = СтрокаТаблицы.СуммаСУчетомЛьгот + СтрокаТаблицы.Субсидия;
       РасчНДС = СтрокаТаблицы.СуммаНДС;
       Если СтрокаТаблицы.Льгота = Перечисления.Льготы.БезЛьгот Тогда
           РасчНДС = СтрокаТаблицы.СуммаНДС;
       ИначеЕсли СтрокаТаблицы.Льгота = Перечисления.Льготы.Льгота50 Тогда
           РасчНДС = СтрокаТаблицы.СуммаНДС*0.5;
       ИначеЕсли СтрокаТаблицы.Льгота = Перечисления.Льготы.Льгота30 Тогда
           РасчНДС = СтрокаТаблицы.СуммаНДС*0.7;
       ИначеЕсли СтрокаТаблицы.Льгота = Перечисления.Льготы.Льгота100 Тогда
           РасчНДС = 0;
       ИначеЕсли СтрокаТаблицы.Льгота = Перечисления.Льготы.Субсидия Тогда
           РасчНДС = 0;
       Иначе
           Сообщить("Номер строки "+СтрокаТаблицы.НомерСтроки+": не выбрана льгота");
       КонецЕсли;
       
       // выясним, чему равен ВидНоменклатуры
       //
       Если СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Уголь Тогда
           ВидНоменклатуры = СтрокаТаблицы.Номенклатура.НоменклатурнаяГруппа;
       ИначеЕсли СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.У_Доставка Тогда
           ВидНоменклатуры = Константы.ВНУгольДоставка.Получить();
       ИначеЕсли СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.У_Взвешивание Тогда
           ВидНоменклатуры = Константы.ВНУгольВзвешивание.Получить();
       ИначеЕсли СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.У_Погрузка Тогда
           ВидНоменклатуры = Константы.ВНУгольПогрузка.Получить();
       ИначеЕсли СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Дрова Тогда
           ВидНоменклатуры = СтрокаТаблицы.Номенклатура.НоменклатурнаяГруппа;
       ИначеЕсли СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Д_Доставка Тогда
           ВидНоменклатуры = Константы.ВНДроваДоставка.Получить();
       ИначеЕсли СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Д_Погрузка Тогда
           ВидНоменклатуры = Константы.ВНДроваПогрузка.Получить();
       ИначеЕсли СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Д_Взвешивание Тогда
           ВидНоменклатуры = Константы.ВНДроваВзвешивание.Получить();
       ИначеЕсли СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Прочее Тогда
           ВидНоменклатуры = Константы.ВНПрочее.Получить();
       Иначе
           ВидНоменклатуры = "";
           Сообщить("Номер строки "+СтрокаТаблицы.НомерСтроки+": не выбран вид номенклатуры");
       КонецЕсли;
       
       //эц ПИА 2011.04.18 +
       Если НЕ ?(ПризнакЕНВДвТабЧасти,СтрокаТаблицы.ЕНВД,ЕНВД) Тогда
           ЗапросСоотНГ = Новый Запрос;
           ЗапросСоотНГ.Текст =
           "ВЫБРАТЬ
           |    СоответствияНоменклатурныхГрупп.НоменклатурнаяГруппаНеЕНВД
           |ИЗ
           |    РегистрСведений.СоответствияНоменклатурныхГрупп КАК СоответствияНоменклатурныхГрупп
           |ГДЕ
           |    СоответствияНоменклатурныхГрупп.НоменклатурнаяГруппаЕНВД = &НоменклатурнаяГруппаЕНВД";
           ЗапросСоотНГ.УстановитьПараметр("НоменклатурнаяГруппаЕНВД",ВидНоменклатуры);
           
           ВыборкаСоотНГ = ЗапросСоотНГ.Выполнить().Выбрать();
           
           Если ВыборкаСоотНГ.Следующий() Тогда
               ВидНоменклатуры = ВыборкаСоотНГ.НоменклатурнаяГруппаНеЕНВД;
           КонецЕсли;
       КонецЕсли;
       //эц ПИА 2011.04.18 .
       
       Если (СтрокаТаблицы.Закон.ТоннажПропускать = 0) и (СтрокаТаблицы.КоммерческаяПродажа = 0) Тогда
           //эц ПИА 10.02.2011 +
           ОсталосьРаспрПоАвансам = ВыручкаПредъявленная;
           
           Для каждого СтрАв из ВыборкаАвансов Цикл
               Если ОсталосьРаспрПоАвансам = 0 Тогда
                   Прервать;    
               КонецЕсли;    
               
               Если СтрАв.СуммаОстаток = 0 Тогда
                   Продолжить;    
               КонецЕсли;    
               
               МинСумма = Мин(ОсталосьРаспрПоАвансам,СтрАв.СуммаОстаток);
               
               ОсталосьРаспрПоАвансам = ОсталосьРаспрПоАвансам - МинСумма;
               СтрАв.СуммаОстаток = СтрАв.СуммаОстаток - МинСумма;
               
               Проводка = Движения.Хозрасчетный.Добавить();
               Проводка.Организация = Организация;
               Проводка.Период      = Дата;
               Проводка.СчетДт      = Сч62_02;        
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Контрагенты",Контрагент);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Договоры",Договор);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"ДокументыРасчетовСКонтрагентами",СтрАв.ДокументРасчетов);
               
               Проводка.СчетКт = Сч62_01;
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Контрагенты",Контрагент);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Договоры",Договор);

               Проводка.Сумма       = МинСумма;
           КонецЦикла;
           //эц ПИА 10.02.2011 .
           
           
           // эц ров 21.04.2008 +
           //эц ПИА 23.04.2009 +
           //СчетВыручки = Сч90_01_1;
           СчетВыручки = ?(?(ПризнакЕНВДвТабЧасти,СтрокаТаблицы.ЕНВД,ЕНВД),Сч90_01_2,Сч90_01_1);
           //эц ПИА 23.04.2009 .
           СубконтоВыручки = ВидНоменклатуры;
           Если ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура) Тогда
               СчетаУчета     = БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры(Организация, СтрокаТаблицы.Номенклатура);
               Если ЗначениеЗаполнено(СчетаУчета.СчетДоходов) Тогда
                   //СчетВыручки = СчетаУчета.СчетДоходовБУ;
                   Если НЕ ЗначениеЗаполнено(СубконтоВыручки) Тогда
                       СубконтоВыручки = СтрокаТаблицы.Номенклатура.НоменклатурнаяГруппа;
                   КонецЕсли;    
               КонецЕсли;
           КонецЕсли;
           // эц ров 21.04.2008 .
           Проводка = Движения.Хозрасчетный.Добавить();
           Проводка.Организация = Организация;
           Проводка.Период      = Дата;
           Проводка.СчетДт      = Сч62_01;        
           БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Контрагенты",Контрагент);
           БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Договоры",Договор);
           Проводка.СчетКт = СчетВыручки;
           БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,"НоменклатурныеГруппы" , СубконтоВыручки);
           //эц ПИА 23.04.2009 +
           //БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "СтавкиНДС", СтрокаТаблицы.СтавкаНДС);
           Если СчетВыручки <> Сч90_01_2 Тогда
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "СтавкиНДС", СтрокаТаблицы.СтавкаНДС);
           КонецЕсли;
           //эц ПИА 2010.12.29 изменял под 2.0 +
           //БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Подразделения",Подразделение);
           Если Проводка.СчетКт.УчетПоПодразделениям Тогда
               Проводка.ПодразделениеКт = Подразделение;    
           КонецЕсли;
           //эц ПИА 2010.12.29 .
           
           //эц ПИА 23.04.2009 .
           Проводка.Сумма       = ВыручкаПредъявленная;
           
           Если СтрокаТаблицы.Неподтвержденное = 1 Тогда
               Проводка = Движения.Хозрасчетный.Добавить();
               Проводка.Организация = Организация;
               Проводка.Период      = Дата;
               Проводка.СчетДт      = Сч76_05;        
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Контрагенты",Константы.Министерство);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Договоры",Константы.Министерство.ОсновнойДоговор);
               //эц ПИА 23.04.2009 +
               //Проводка.СчетКт = Сч90_01_1;
               Проводка.СчетКт = ?(?(ПризнакЕНВДвТабЧасти,СтрокаТаблицы.ЕНВД,ЕНВД),Сч90_01_2,Сч90_01_1);
               //эц ПИА 23.04.2009 .
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,"НоменклатурныеГруппы" ,           ВидНоменклатуры);
               //эц ПИА 23.04.2009 +
               //БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "СтавкиНДС", СтрокаТаблицы.СтавкаНДС);
               Если НЕ ?(ПризнакЕНВДвТабЧасти,СтрокаТаблицы.ЕНВД,ЕНВД) Тогда
                   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "СтавкиНДС", СтрокаТаблицы.СтавкаНДС);
               КонецЕсли;
               //эц ПИА 2010.12.29 изменял под 2.0 +
               //БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Подразделения",Подразделение);
               Если Проводка.СчетКт.УчетПоПодразделениям Тогда
                   Проводка.ПодразделениеКт = Подразделение;    
               КонецЕсли;
               //эц ПИА 2010.12.29 .
                               
               //эц ПИА 23.04.2009 .
               Проводка.Сумма       = СтрокаТаблицы.Сумма - ВыручкаПредъявленная;;
               
               //Проводка = Движения.Хозрасчетный.Добавить();
       // нет, но надо                  
       //        Операция.НоваяПроводка();
       //        Проводка.Организация = Организация;
       //        Операция.НомерЖурнала = "ФР";
       //        Операция.СодержаниеПроводки = "Неподтвержденная льгота";
       //        Операция.ПервичныйДокумент  = глПредставлениеПервичногоДокумента(Контекст);
       //        Операция.Кредит.Счет = СчетПоКоду("ПТ.0");
       //        Операция.Кредит.НеподтвержденныеДокументы = ТекущийДокумент();
       //        Операция.Кредит.Подразделения = Подразделение;
       //        Операция.Кредит.НомераСтрокДокументов = РегНомерСтроки;
       //        Операция.Количество = Количество;
       //        Операция.Сумма = Сумма;
           КонецЕсли;
       КонецЕсли;    
       Если СтрокаТаблицы.Субсидия<>0 Тогда
           Проводка = Движения.Хозрасчетный.Добавить();
           Проводка.Организация = Организация;
           Проводка.Период      = Дата;
           Проводка.СчетДт      = Сч62_01;
           БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Контрагенты",ОрганСоцзащиты);
           БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Договоры",ДоговорСоцЗащиты);            
           Проводка.СчетКт      = Сч62_01;
           БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоДт,"Контрагенты",Контрагент);
           БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоДт,"Договоры",Договор);
           Проводка.Сумма       = СтрокаТаблицы.Субсидия;
       КонецЕсли;    
       //нет, но надо    
       //Операция.НоваяПроводка();
       //Операция.Дебет.Счет              = СчетПоКоду("ПВЛ");
       //Операция.Дебет.ВидыНоменклатуры  = ВидНоменклатуры;
       //Операция.Дебет.Подразделения     = Подразделение;
       //Операция.Кредит.Счет             = СчетПоКоду("ПВЛ");
       //Операция.Кредит.ВидыНоменклатуры = ВидНоменклатуры;
       //Операция.Кредит.Подразделения    = Подразделение;
       //Операция.Сумма                   = Сумма-СуммаНДС;    
       
       
       
       Если ((СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Уголь)
           или (СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Дрова)) и (СтрокаТаблицы.Закон.ТоннажПропускать = 0) Тогда
           //
           пСебестоимость = 0;
           НадоСписать = СтрокаТаблицы.Количество;
           //
           //Запрос.УстановитьПараметр("Номенклатура",СтрокаТаблицы.Номенклатура);
           //Выборка = Запрос.Выполнить().Выбрать();
           //Пока Выборка.Следующий() Цикл
           
           //эц ПИА 2010.10.06 +
           Для каждого Строчка43 из ТаблицаОстатковПо43 Цикл
               Если Строчка43.Номенклатура <> СтрокаТаблицы.Номенклатура Тогда
                   Продолжить;
               КонецЕсли;
               
               КоличествоНаСкладеПоПартии43 = Строчка43.КоличествоОстатокДт - Строчка43.УжеПрошло;
               Если КоличествоНаСкладеПоПартии43 <= 0 Тогда
                   Продолжить;
               КонецЕсли;

               КоличествоПроводки43      = Мин(НадоСписать,КоличествоНаСкладеПоПартии43);
               СуммаПроводки43                = Строчка43.СуммаОстатокДт / Строчка43.КоличествоОстатокДт * КоличествоПроводки43;
               
               Если КоличествоПроводки43 = КоличествоНаСкладеПоПартии43 Тогда
                   СуммаПроводки43 = Строчка43.СуммаОстатокДт - Строчка43.СуммаУжеПрошло;
               КонецЕсли;
               
               СчетУчета                  = Сч43;
               //
               Проводка = Движения.Хозрасчетный.Добавить();
               Проводка.Организация = Организация;
               Проводка.Период       = Дата;
               //эц ПИА 23.04.2009 +
               //Проводка.СчетДт       = Сч90_02_1;
               Проводка.СчетДт = ?(?(ПризнакЕНВДвТабЧасти,СтрокаТаблицы.ЕНВД,ЕНВД),Сч90_02_2,Сч90_02_1);
               //эц ПИА 23.04.2009 .
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"НоменклатурныеГруппы",ВидНоменклатуры);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"СтавкиНДС",СтрокаТаблицы.СтавкаНДС);
               //эц ПИА 2010.12.29 изменял под 2.0 +
               //БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Подразделения",Подразделение);
               Если Проводка.СчетДт.УчетПоПодразделениям Тогда
                   Проводка.ПодразделениеДт = Подразделение;    
               КонецЕсли;
               //эц ПИА 2010.12.29 .
               
               Проводка.СчетКт       = СчетУчета;
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Номенклатура",СтрокаТаблицы.Номенклатура);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Склады",Склад);
               БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Партии",Строчка43.Партия);
               Проводка.КоличествоКт = КоличествоПроводки43;
               Проводка.Сумма        = СуммаПроводки43;
               //
               НадоСписать = НадоСписать - КоличествоПроводки43;
               пСебестоимость = пСебестоимость + СуммаПроводки43;
               Строчка43.УжеПрошло = Строчка43.УжеПрошло + КоличествоПроводки43;
               Строчка43.СуммаУжеПрошло = Строчка43.СуммаУжеПрошло + СуммаПроводки43;
               
           КонецЦикла;
           
           Если НадоСписать > 0 Тогда
               //эц ПИА 2010.10.06 .
               
               Для каждого Строчка из ТаблицаОстатков Цикл
                   Если Строчка.Номенклатура <> СтрокаТаблицы.Номенклатура Тогда
                       Продолжить;
                   КонецЕсли;
                   КоличествоНаСкладеПоПартии = Строчка.КоличествоОстатокДт - Строчка.УжеПрошло;
                   Если КоличествоНаСкладеПоПартии <= 0 Тогда
                       Продолжить;
                   КонецЕсли;
                   //СуммаНаСкладеПоПартии   = Макс(Строчка.СуммаОстатокДт, 0);
                   КоличествоПроводки      = Мин(НадоСписать,КоличествоНаСкладеПоПартии);
                   СуммаПроводки              = Строчка.СуммаОстатокДт/Строчка.КоличествоОстатокДт*КоличествоПроводки;
                   Если КоличествоПроводки = КоличествоНаСкладеПоПартии Тогда
                       СуммаПроводки = Строчка.СуммаОстатокДт - Строчка.СуммаУжеПрошло;
                   КонецЕсли;
                   СчетУчета                  = Сч41_01;
                   //
                   Проводка = Движения.Хозрасчетный.Добавить();
                   Проводка.Организация = Организация;
                   Проводка.Период       = Дата;
                   //эц ПИА 23.04.2009 +
                   //Проводка.СчетДт       = Сч90_02_1;
                   Проводка.СчетДт = ?(?(ПризнакЕНВДвТабЧасти,СтрокаТаблицы.ЕНВД,ЕНВД),Сч90_02_2,Сч90_02_1);
                   //эц ПИА 23.04.2009 .
                   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"НоменклатурныеГруппы",ВидНоменклатуры);
                   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"СтавкиНДС",СтрокаТаблицы.СтавкаНДС);
                   //эц ПИА 2010.12.29 изменял под 2.0 +
                   //БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Подразделения",Подразделение);
                   Если Проводка.СчетДт.УчетПоПодразделениям Тогда
                       Проводка.ПодразделениеДт = Подразделение;    
                   КонецЕсли;
                   //эц ПИА 2010.12.29 .
                   
                   Проводка.СчетКт       = СчетУчета;
                   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Номенклатура",СтрокаТаблицы.Номенклатура);
                   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Склады",Склад);
                   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Партии",Строчка.Партия);
                   Проводка.КоличествоКт = КоличествоПроводки;
                   Проводка.Сумма        = СуммаПроводки;
                   //
                   НадоСписать = НадоСписать - КоличествоПроводки;
                   пСебестоимость = пСебестоимость + СуммаПроводки;
                   Строчка.УжеПрошло = Строчка.УжеПрошло + КоличествоПроводки;
                   Строчка.СуммаУжеПрошло = Строчка.СуммаУжеПрошло + СуммаПроводки;
                   
               КонецЦикла;
           КонецЕсли;
       КонецЕсли;
       
       //эц ПИА 04.06.2009 +
       Если (СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.У_Доставка ИЛИ
           СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.У_Взвешивание ИЛИ
           СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.У_Погрузка ИЛИ
           СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Д_Доставка ИЛИ
           СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Д_Погрузка ИЛИ
           СтрокаТаблицы.ВидПродажи = Перечисления.ВидыРозничныхПродаж.Д_Взвешивание) И
           (ВыручкаПредъявленная <> 0) Тогда
           
           СтрокаДвижения = Движения.РеализацияУслуг.Добавить();
           
           СтрокаДвижения.Период                = Дата;
           СтрокаДвижения.Организация           = Организация;
           СтрокаДвижения.СчетРасходов          = Сч90_02_1;
           СтрокаДвижения.НоменклатурнаяГруппа  = ВидНоменклатуры;
           СтрокаДвижения.Сумма                 = ВыручкаПредъявленная;
       КонецЕсли;
       //эц ПИА 04.06.2009 .
   КонецЦикла;    
   Движения.Хозрасчетный.Записать();
КонецПроцедуры
13 Fish
 
23.12.11
14:44
Код конечно жесть, особенно "Перечисления.ВидыРозничныхПродаж" :)))
Но в принципе все понятно, когда и откуда берется счет. Если не понимаешь, то кури отладчик до просветления :)))
14 zmeyako999
 
23.12.11
14:56
ну млин курил невкуривается - можно в двух словах
15 Fish
 
23.12.11
15:04
Так что непонятно? Если на вопрос из (0) то счет 41 или 43 у тебя присваивается всего в двух местах:
СчетУчета    = Сч41_01;

СчетУчета    = Сч43;

строки эти находятся внутри условий. Так и разберись когда и почему эти условия выполняются. Что может быть проще? Или ты предполагаешь, что все здесь должны знать, как вы учитываете дрова или уголь и что такое "Закон.ТоннажПропускать"? :))
16 zmeyako999
 
23.12.11
15:06
а все пимерно понял
17 zmeyako999
 
23.12.11
15:07
пасиб огромное