Перем спФирмы;
Перем Поставщик;
Перем КодОперации;
Перем Статус;
// ===============================
Функция ПроверкаШапки()
глВсеВыбрано = 1;
глПроверкаДатыДок(Контекст,"Проведение","Т");
глВыбранЛи(Фирма,"Фирма");
Если Фирма.Выбран() = 0 Тогда
глКомментарий("Необходимо выбрать Фирму");
КонецЕсли;
глВсеВыбрано = 0;
глВсеВыбрано = ?(глВсеВыбрано = 0, 0, глПроверкаДублейСтрок(Контекст));
глВыбранЛи(МестоХранения,"Склад");
Если МестоХранения.Выбран() = 0 Тогда
глКомментарий("Необходимо выбрать Склад");
глВсеВыбрано = 0;
Иначе
Если МестоХранения.Выбран() = 1 Тогда
КонецЕсли;
КонецЕсли;
Возврат глВсеВыбрано;
КонецФункции
// ===============================
Функция ПроверкаСтроки()
глВсеВыбрано = 1;
глВыбранЛи(ТМЦ,"ТМЦ",НомерСтроки);
Если глВсеВыбрано = 1 Тогда
глВсеВыбрано = ?(глПроверкаТовараВДокументе(Контекст,ТМЦ,НомерСтроки,1)=Да, глВсеВыбрано, 0);
КонецЕсли;
глВыбранЛи(Ед,"Единица",НомерСтроки);
Возврат глВсеВыбрано;
КонецФункции
// ===============================
Процедура ДвиженияОстатки()
глКомментарий("Выполняются движения остатков товаров",2);
ФлагПрихода = 1;
ФлагВозврата = 0;
глИзменитьОстатки(Контекст, спФирмы, МестоХранения,ФлагВозврата, ФлагПрихода);
КонецПроцедуры
// ===============================
Процедура ДвиженияПартии()
глКомментарий("Выполняются движения партий товаров",2);
Для Инд=1 по спФирмы.РазмерСписка() Цикл
текФирма = спФирмы.ПолучитьЗначение(Инд);
Если ПустоеЗначение(текФирма)=1 Тогда
МетодРасчетаСебестоимости = Константа.МетодРасчетаСебестоимостиУправленческогоУчета;
Иначе
МетодРасчетаСебестоимости = текФирма.МетодРасчетаСебестоимостиФинансовогоУчета.Получить(ДатаДок);
КонецЕсли;
Регистр.ПартииТоваров.Фирма = текФирма;
Если МетодРасчетаСебестоимости = Перечисление.МетодыРасчетаСебестоимости.ПоСреднему Тогда
ПоставщикП = 0;
ПоставкаП = 0;
ПрихДокументП = 0;
Иначе
ПоставщикП = Поставщик;
ПоставкаП = ТекущийДокумент();
ПрихДокументП = ТекущийДокумент();
КонецЕсли;
Если ПустоеЗначение(текФирма)=1 Тогда
ВУ = Доллары;
Иначе
ВУ = Гривня;
КонецЕсли;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Константа.ПартионныйУчетПоСкладам = Да Тогда
МестоХраненияП = МестоХранения;
Иначе
МестоХраненияП = 0;
КонецЕсли;
ПриходОстатокТовара = Кво * Ед.Коэффициент;
ПриходСтоимость = глПересчет(СуммаБезНДС, Гривня,ДатаДок,ВУ,ДатаДок,);
ПриходПродСтоимость = 0;
ПриходНДС = глПересчет(СуммаСНДС - СуммаБезНДС,Гривня,ДатаДок,ВУ,ДатаДок,);
Если ПустоеЗначение(текФирма)=1 Тогда
Оборот = ПриходСтоимость+ПриходНДС;
Иначе
Оборот = ПриходСтоимость;
КонецЕсли;
СтатусП = Статус;
глПровестиПартию(Контекст, 1, 0, текФирма, ТМЦ,СтатусП, МестоХраненияП, ПоставщикП,
ПоставкаП, ПрихДокументП, ПриходОстатокТовара, ПриходСтоимость, ПриходПродСтоимость, ПриходНДС,
КодОперации, , 1, Оборот, 0);
глПровестиПартию(Контекст, 0, 0, текФирма, ТМЦ, СтатусП, МестоХраненияП, ПоставщикП,
ПоставкаП, ПрихДокументП, ПриходОстатокТовара, ПриходСтоимость, ПриходПродСтоимость, ПриходНДС,
КодОперации, , 0, 0, 0);
МестоХраненияП = Фирма.МестоХранения;
ПриходПродСтоимость = глПересчет(СуммаСНДС,Гривня,ДатаДок,ВУ,ДатаДок,);
глПровестиПартию(Контекст, 1, 0, текФирма, ТМЦ, СтатусП, МестоХраненияП, ПоставщикП,
ПоставкаП, ПрихДокументП, ПриходОстатокТовара, ПриходСтоимость, ПриходПродСтоимость, ПриходНДС,
КодОперации, , 0, 0, 0);
КонецЦикла; // строки документа
КонецЦикла; // Фирмы
КонецПроцедуры
// ===============================
// ===============================
Процедура ОбработкаПроведения()
глКомментарий("Начало",2,Контекст);
Если ПроверкаШапки() = 0 Тогда
глНеПроводить(Контекст);
Возврат;
КонецЕсли;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если ПроверкаСтроки() = 0 Тогда
глНеПроводить(Контекст);
Возврат;
КонецЕсли;
КонецЦикла;
спФирмы = глПолучитьФирмы(Контекст);
Если спФирмы.РазмерСписка()>0 Тогда
ДвиженияОстатки();
КонецЕсли;
Если глСформироватьБухПроводки(Контекст)=0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
глКомментарий("Окончание",2,Контекст);
КонецПроцедуры
И не так Все?