незнаю. Что то при обьединении конфирурации нет отчета
Вот код точета. Должно работать, когда поля которые нужно заполнять в отчете пустые
[
Здесь было что то не по правилам]
// ===============================
// ОПИСАНИЕ МОДУЛЬНЫХ ПЕРЕМЕННЫХ
Перем СписокПодбора,СправочникПодбора;
// СписокПодбора - список, в который отбираются элементы
// (используется для множественных фильтров)
// СправочникПодбора - строка - идентификатор справочника, из которого осуществляется отбор
// (используется для множественных фильтров)
Перем СписокТоваров; // список товаров, удовлетворяющих фильтру по категориям
Перем СписокКонтрагентов; // список контрагентов, удовлетворяющих фильтру по категориям
Перем ВП; // валюта печати
Перем Т;
Перем Обновить;
Перем Расшифровка;
// используются для стандартного механизма кнопок "Обновить" и "Настройка"
// ===============================
// "СЛУЖЕБНЫЕ" ПРОЦЕДУРЫ И ФУНКЦИИ
// ===============================
// Название: ИзмЦена
// Параметры:
// НЕТ
// Возвращаемое значение:
// НЕТ
// Вызывается при изменении флажков "с учетной ценой" и "с розничной ценой":
// Наименование,.
// Описание:
// Изменяет видимость этих флажков
Процедура ИзмЦена()
Если (СРозничнымиЦенами = 0) и (СУчетнымиЦенами = 0) Тогда
СРозничнымиЦенами = 1;
КонецЕсли;
КонецПроцедуры
// ===============================
// Инвертирует список с пометками
Процедура Инвертировать()
Для а=1 По СтатусыПартий.РазмерСписка() Цикл
Если СтатусыПартий.Пометка(а) = 1 Тогда
СтатусыПартий.Пометка(а,0);
Иначе
СтатусыПартий.Пометка(а,1);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// ===============================
// Помечает все элементы списка
Процедура ВыделитьВсе()
Для а=1 По СтатусыПартий.РазмерСписка() Цикл
СтатусыПартий.Пометка(а,1);
КонецЦикла;
КонецПроцедуры
// ===============================
// Название: ИзмИтоги
// Параметры:
// НЕТ
// Возвращаемое значение:
// НЕТ
// Вызывается при изменении флажка "только итоги":
// Наименование,.
// Описание:
// Изменяет видимость валюты итогов
Процедура ИзмИтоги()
КонецПроцедуры
// ===============================
// Название: ИзмФирма
// Параметры:
// НЕТ
// Возвращаемое значение:
// НЕТ
// Вызывается при изменении флажка "только итоги":
// Наименование,.
// Описание:
// Изменяет значение ВыбВалюта при изменении значения ВыбФирма
Процедура ИзмФирма(Фрм)
Если Фрм = 0 Тогда
ВыбФирма = 0;
КонецЕсли;
КонецПроцедуры
// ===============================
// Название: МножественныйФильтрЗадан
// Параметры:
// НЕТ
// Возвращаемое значение:
// 0, если множественный фильтр задан
// 1, иначе
// Вызывается из формул элементов диалога:
// Наименование,.
// Описание:
Функция МножественныйФильтрЗадан()
Если МФВыбТовары.РазмерСписка()>0 Тогда
Возврат 1;
КонецЕсли;
Если МФКатТоваров.РазмерСписка()>0 Тогда
Возврат 1;
КонецЕсли;
Если МФВыбКонтрагенты.РазмерСписка()>0 Тогда
Возврат 1;
КонецЕсли;
Если МФКатКонтрагентов.РазмерСписка()>0 Тогда
Возврат 1;
КонецЕсли;
Возврат 0;
КонецФункции // МножественныйФильтрЗадан
// ===============================
// Название: ПерерисовкаНазванийЗакладок
// Параметры:
// НЕТ
// Возвращаемое значение:
// Вызывается из формул элементов диалога:
// Наименование,.
// Описание:
// Добавляет "(!)" в заголовок закладки с множественным фильтром, когда этот фильтр задан
Функция ПерерисовкаНазванийЗакладок()
Форма.Закладки.УстановитьЗначение(2,?(МножественныйФильтрЗадан()=1,"(!) ","")+"Множественный фильтр");
КонецФункции // ПерерисовкаНазванийЗакладок
// ===============================
// Название: ВывестиДокументы
// Параметры:
// Запрос - запрос, по которому выводится отчет
// Т - формируемая таблица
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Наименование,.
// Описание:
// вывод детализации по всем документам
Процедура ВывестиДокументы(Запрос,Т)
Перем ПечКонтрагент;
Если ДеталПоВсемДокументам=0 Тогда
Возврат;
КонецЕсли;
БалансТовара = Запрос.НачОстатокТовара;
БалансТовараСтоимость =?(ПустоеЗначение(ВыбФирма)=1,Запрос.НачСтоимость+Запрос.НачНДС,Запрос.НачСтоимость);
БалансТовараСтоимостьРозн = Запрос.НачПродСтоимость;
Пока Запрос.Группировка("Докум") = 1 Цикл
Док=Запрос.Докум;
ВидДок=Док.Вид();
Если Док.Выбран()=0 Тогда // пропускаем непонятные документы
Продолжить;
КонецЕсли;
БалансТовара = БалансТовара + Запрос.ПрихОстатокТовара - Запрос.РасхОстатокТовара;
БалансТовараСтоимость = БалансТовараСтоимость +
?(ПустоеЗначение(ВыбФирма)=1
,глПересчет(Запрос.ПрихСтоимость + Запрос.ПрихНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2)
,Запрос.ПрихСтоимость)-?(ПустоеЗначение(ВыбФирма)=1,Запрос.РасхСтоимость+Запрос.РасхНДС,Запрос.РасхСтоимость);
БалансТовараСтоимостьРозн = БалансТовараСтоимостьРозн +
?(ПустоеЗначение(ВыбФирма)=1
,глПересчет(Запрос.ПрихПродСтоимость - Запрос.РасхПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2)
,Запрос.ПрихПродСтоимость - Запрос.РасхПродСтоимость);
ПечКонтрагент = СокрЛП(Строка(глКонтрагентДок(Док)));
ПечНомерДок = глДокументВОтчете(Док,"с номером")+?(ПустаяСтрока(ПечКонтрагент)=0,"; "+ПечКонтрагент,"");
Если (Запрос.ПрихПродСтоимость+Запрос.РасхПродСтоимость)<>0 Тогда
Если (Запрос.ПрихОстатокТовара+Запрос.РасхОстатокТовара)<>0 Тогда
// цена товара для прихода и расхода может отличаться
ЦенаТовараПриход = ?(ПустоеЗначение(Запрос.ПрихОстатокТовара)=1,0,Запрос.ПрихПродСтоимость/Запрос.ПрихОстатокТовара);
ЦенаТовараРасход = ?(ПустоеЗначение(Запрос.РасхОстатокТовара)=1,0,Запрос.РасхПродСтоимость/Запрос.РасхОстатокТовара);
СебестТовара =?(ПустоеЗначение(ВыбФирма)=1,
(Запрос.ПрихСтоимость+Запрос.РасхСтоимость+Запрос.ПрихНДС+Запрос.РасхНДС)
/(Запрос.ПрихОстатокТовара+Запрос.РасхОстатокТовара),
(Запрос.ПрихСтоимость+Запрос.РасхСтоимость)
/(Запрос.ПрихОстатокТовара+Запрос.РасхОстатокТовара));
Иначе
ЦенаТовара = БалансТовараСтоимостьРозн/БалансТовара;
ЦенаТовараПриход = ЦенаТовара;
ЦенаТовараРасход = ЦенаТовара;
СебестТовара = БалансТовараСтоимость/БалансТовара;
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(ВыбФирма)=1 Тогда
// пересчитаем цены из валюты учета в валюту печати
ЦенаТовараПриход = глПересчет(ЦенаТовараПриход,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2);
ЦенаТовараРасход = глПересчет(ЦенаТовараРасход,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2);
СебестТовара = глПересчет(СебестТовара,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2);
КонецЕсли;
ЦенаТовараПриход =?(ЦенаТовараПриход=0,"",глФРМ(ЦенаТовараПриход,ВП,1));
ЦенаТовараРасход =?(ЦенаТовараРасход=0,"",глФРМ(ЦенаТовараРасход,ВП,1));
ПечСебестТовара=?(СебестТовара=0,"",глФРМ(СебестТовара,ВП,1));
ПечБалансТовара=глФРМКоличествоВОтчете(БалансТовара,Запрос.Товар);
Если СУчетнымиЦенами = 1 Тогда
ПечБалансТовара = ПечБалансТовара + РазделительСтрок + глФРМ(БалансТовараСтоимость,ВП,1);
КонецЕсли;
Если СРозничнымиЦенами = 1 Тогда
ПечБалансТовара = ПечБалансТовара + РазделительСтрок + глФРМ(БалансТовараСтоимостьРозн,ВП,1);
КонецЕсли;
Если (Запрос.РасхОстатокТовара<>0) или (Запрос.РасхСтоимость<>0) или (Запрос.РасхПродСтоимость<>0) Тогда
Приращение = Запрос.РасхОстатокТовара;
ПечПриращение = глФРМКоличествоВОтчете(Приращение,Запрос.Товар);
ПриращениеСтоимость =?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.РасхСтоимость+Запрос.РасхНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.РасхСтоимость);
ПриращениеСтоимостьРозн =?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.РасхПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.РасхПродСтоимость);
Если СУчетнымиЦенами = 1 Тогда
ПечПриращение = ПечПриращение + РазделительСтрок + глФРМ(ПриращениеСтоимость, ВП,1);
КонецЕсли;
Если СРозничнымиЦенами = 1 Тогда
ПечПриращение = ПечПриращение + РазделительСтрок + глФРМ(ПриращениеСтоимостьРозн, ВП,1);
КонецЕсли;
Т.ВывестиСекцию("Расход");
КонецЕсли;
Если (Запрос.ПрихОстатокТовара<>0) или (Запрос.ПрихСтоимость<>0) или (Запрос.ПрихПродСтоимость<>0) Тогда
Приращение = Запрос.ПрихОстатокТовара;
ПечПриращение = глФРМКоличествоВОтчете(Приращение,Запрос.Товар);
ПриращениеСтоимость =?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.ПрихСтоимость+Запрос.ПрихНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.ПрихСтоимость);
ПриращениеСтоимостьРозн =?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.ПрихПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.ПрихПродСтоимость);
Если СУчетнымиЦенами = 1 Тогда
ПечПриращение = ПечПриращение + РазделительСтрок + глФРМ(ПриращениеСтоимость, ВП,1);
КонецЕсли;
Если СРозничнымиЦенами = 1 Тогда
ПечПриращение = ПечПриращение + РазделительСтрок + глФРМ(ПриращениеСтоимостьРозн, ВП,1);
КонецЕсли;
Т.ВывестиСекцию("Приход");
КонецЕсли;
глОживить(1);
КонецЦикла;
КонецПроцедуры // ВывестиДокументы
// ===============================
Функция ПечСуммы(ПечСебестоимость,ПечРозничная,РазделительВНачале=1)
Рез = "";
Если СУчетнымиЦенами = 1 Тогда
Рез = Рез + ?(РазделительВНачале=1,РазделительСтрок,"") + ПечСебестоимость;
КонецЕсли;
Если СРозничнымиЦенами = 1 Тогда
Рез = Рез + ?(((РазделительВНачале=1) и (СУчетнымиЦенами = 0)) или (СУчетнымиЦенами = 1),РазделительСтрок,"") + ПечРозничная;
КонецЕсли;
Возврат Рез;
КонецФункции //
// ===============================
// Название: ВывестиНакладные
// Параметры:
// Запрос - запрос, по которому выводится отчет
// Т - формируемая таблица
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Наименование,.
// Описание:
// вывод детализации по партиообразующим документам
Процедура ВывестиНакладные(Запрос,Т)
// теперь еще раз пройдемся по ПрихДокумент и пропишем все основательно
Если ДеталПоНакладным=0 Тогда
ВывестиДокументы(Запрос,Т);
Возврат;
КонецЕсли;
Пока Запрос.Группировка("Статус") = 1 Цикл
Пока Запрос.Группировка("Поставщик") = 1 Цикл
Пока Запрос.Группировка("ПрихДокумент") = 1 Цикл
Док=Запрос.ПрихДокумент;
// В некоторых документах есть движения и прихрод и расход
// Рассчитаем приход и расход товара с учетом этой особенности
БалансТовара = Запрос.ПрихОстатокТовара - Запрос.РасхОстатокТовара;
БалансТовараСтоимость = ?(ПустоеЗначение(ВыбФирма)=1
,глПересчет(Запрос.ПрихСтоимость-Запрос.РасхСтоимость+Запрос.ПрихНДС-Запрос.РасхНДС, Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2)
,Запрос.ПрихСтоимость-Запрос.РасхСтоимость);
БалансТовараСтоимостьРозн = ?(ПустоеЗначение(ВыбФирма)=1
,глПересчет(Запрос.ПрихПродСтоимость - Запрос.РасхПродСтоимость, Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2)
,Запрос.ПрихПродСтоимость - Запрос.РасхПродСтоимость);
текПрихОстатокТовара = Запрос.ПрихОстатокТовара;
текРасхОстатокТовара = Запрос.РасхОстатокТовара;
текПрихСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.ПрихСтоимость+Запрос.ПрихНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.ПрихСтоимость);
текРасхСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.РасхСтоимость+Запрос.РасхНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.РасхСтоимость);
текПрихПродСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.ПрихПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.ПрихПродСтоимость);
текРасхПродСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.РасхПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.РасхПродСтоимость);
ПечНачальныйОстатокДокум= глФРМКоличествоВОтчете(Запрос.НачОстатокТовара, Запрос.Товар);
ПечТекущийОстатокДокум = глФРМКоличествоВОтчете(Запрос.КонОстатокТовара, Запрос.Товар);
ПечПриходОстатокДокум = глФРМКоличествоВОтчете(текПрихОстатокТовара, Запрос.Товар);
ПечРасходОстатокДокум = глФРМКоличествоВОтчете(текРасхОстатокТовара, Запрос.Товар);
Если СУчетнымиЦенами = 1 Тогда
ПечНачальнаяСтоимость = глФРМ(?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.НачСтоимость+Запрос.НачНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.НачСтоимость), ВП,1);
ПечТекущаяСтоимость = глФРМ(?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.КонСтоимость+Запрос.КонНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.КонСтоимость), ВП,1);
ПечПриходСтоимость = глФРМ(текПрихСтоимость,ВП,1);
ПечРасходСтоимость = глФРМ(текРасхСтоимость,ВП,1);
Иначе
ПечНачальнаяСтоимость="";
ПечТекущаяСтоимость="";
ПечПриходСтоимость="";
ПечРасходСтоимость="";
КонецЕсли;
Если СРозничнымиЦенами = 1 Тогда
ПечНачальнаяСтоимостьРозн = глФРМ(?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.НачПродСтоимость, Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.НачПродСтоимость),ВП,1);
ПечТекущаяСтоимостьРозн = глФРМ(?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.КонПродСтоимость, Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.КонПродСтоимость),ВП,1);
ПечПриходСтоимостьРозн = глФРМ(текПрихПродСтоимость,ВП,1);
ПечРасходСтоимостьРозн = глФРМ(текРасхПродСтоимость,ВП,1);
Иначе
ПечНачальнаяСтоимостьРозн="";
ПечТекущаяСтоимостьРозн="";
ПечПриходСтоимостьРозн="";
ПечРасходСтоимостьРозн="";
КонецЕсли;
ПечНачальныйОстаток = ПечНачальныйОстатокДокум + ПечСуммы(ПечНачальнаяСтоимость,ПечНачальнаяСтоимостьРозн);
ПечПриход = ПечПриходОстатокДокум + ПечСуммы(ПечПриходСтоимость, ПечПриходСтоимостьРозн);
ПечРасход = ПечРасходОстатокДокум + ПечСуммы(ПечРасходСтоимость, ПечРасходСтоимостьРозн);
ПечТекущийОстаток = ПечТекущийОстатокДокум + ПечСуммы(ПечТекущаяСтоимость, ПечТекущаяСтоимостьРозн);
Если текПрихОстатокТовара<>0 Тогда
СебестПоДок = текПрихСтоимость/текПрихОстатокТовара;
ЦенаПоДок = текПрихПродСтоимость/текПрихОстатокТовара;
ИначеЕсли текРасхОстатокТовара<>0 Тогда
СебестПоДок = текРасхСтоимость/текРасхОстатокТовара;
ЦенаПоДок = текРасхПродСтоимость/текРасхОстатокТовара;
Иначе
СебестПоДок = 0;
ЦенаПоДок = 0;
КонецЕсли;
ПечСебестПоДок = глФРМ(СебестПоДок,ВП,1);
ПечЦенаПоДок = глФРМ(ЦенаПоДок,ВП,1);
Если ПустоеЗначение(Док)=0 Тогда
ПечНомерДок=глДокументВОтчете(Док,"с номером")+"; "+СокрП(Запрос.Поставщик);
Иначе
ПечНомерДок="средневзвешенная цена";
КонецЕсли;
ПечСтатус = глСтатусПечать(Запрос.Статус);
ПечРасшифровкаСтатуса = глСтатусПартииТекстом(Запрос.Статус);
Т.ВывестиСекцию("Партия");
глОживить(1);
ВывестиДокументы(Запрос,Т);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры // ВывестиНакладные
// ===============================
// Название: ВывестиТовары
// Параметры:
// Запрос - запрос, по которому выводится отчет
// Т - формируемая таблица
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Наименование,.
// Описание:
// вывод детализации по товарам
Процедура ВывестиТовары(Запрос,Т)
НачальнаяСтоимостьИтог = 0;
ТекущаяСтоимостьИтог = 0;
ПриходСтоимостьИтог = 0;
РасходСтоимостьИтог = 0;
НачальнаяСтоимостьРознИтог = 0;
ТекущаяСтоимостьРознИтог = 0;
ПриходСтоимостьРознИтог = 0;
РасходСтоимостьРознИтог = 0;
Пока Запрос.Группировка("Товар") = 1 Цикл
ТекТовар=Запрос.Товар;
Если ТекТовар.Выбран()=0 Тогда
Продолжить;
КонецЕсли;
// В некоторых документах есть движения и прихрод и расход
// Рассчитаем приход и расход товара с учетом этой особенности
БалансТовара = Запрос.ПрихОстатокТовара - Запрос.РасхОстатокТовара;
БалансТовараСтоимость = ?(ПустоеЗначение(ВыбФирма)=1
,глПересчет(Запрос.ПрихСтоимость-Запрос.РасхСтоимость+Запрос.ПрихНДС-Запрос.РасхНДС, Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2)
,Запрос.ПрихСтоимость-Запрос.РасхСтоимость);
БалансТовараСтоимостьРозн = ?(ПустоеЗначение(ВыбФирма)=1
,глПересчет(Запрос.ПрихПродСтоимость - Запрос.РасхПродСтоимость, Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2)
,Запрос.ПрихПродСтоимость - Запрос.РасхПродСтоимость);
текПрихОстатокТовара = Запрос.ПрихОстатокТовара;
текРасхОстатокТовара = Запрос.РасхОстатокТовара;
текПрихСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.ПрихСтоимость+Запрос.ПрихНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.ПрихСтоимость);
текРасхСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.РасхСтоимость+Запрос.РасхНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.РасхСтоимость);
текПрихПродСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.ПрихПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.ПрихПродСтоимость);
текРасхПродСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.РасхПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.РасхПродСтоимость);
ПечТовар=глТоварВОтчете(ТекТовар);
ПечНачальныйОстатокТовара = глФРМКоличествоВОтчете(Запрос.НачОстатокТовара,Запрос.Товар);
ПечТекущийОстатокТовара = глФРМКоличествоВОтчете(Запрос.КонОстатокТовара,Запрос.Товар);
ПечПриходОстатокТовара = глФРМКоличествоВОтчете(текПрихОстатокТовара,Запрос.Товар);
ПечРасходОстатокТовара = глФРМКоличествоВОтчете(текРасхОстатокТовара,Запрос.Товар);
Если СУчетнымиЦенами = 1 Тогда
НачальнаяСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.НачСтоимость+Запрос.НачНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2), Запрос.НачСтоимость);
ТекущаяСтоимость = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.КонСтоимость+Запрос.КонНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2), Запрос.КонСтоимость);
ПриходСтоимость = текПрихСтоимость;
РасходСтоимость = текРасхСтоимость;
НачальнаяСтоимостьИтог = НачальнаяСтоимостьИтог + НачальнаяСтоимость;
ТекущаяСтоимостьИтог = ТекущаяСтоимостьИтог + ТекущаяСтоимость;
ПриходСтоимостьИтог = ПриходСтоимостьИтог + ПриходСтоимость;
РасходСтоимостьИтог = РасходСтоимостьИтог + РасходСтоимость;
ПечНачальнаяСтоимость = глФРМ(НачальнаяСтоимость, ВП,1);
ПечТекущаяСтоимость = глФРМ(ТекущаяСтоимость, ВП,1);
ПечПриходСтоимость = глФРМ(ПриходСтоимость, ВП,1);
ПечРасходСтоимость = глФРМ(РасходСтоимость, ВП,1);
Иначе
ПечНачальнаяСтоимость="";
ПечТекущаяСтоимость="";
ПечПриходСтоимость="";
ПечРасходСтоимость="";
КонецЕсли;
Если СРозничнымиЦенами = 1 Тогда
НачальнаяСтоимостьРозн = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.НачПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.НачПродСтоимость);
ТекущаяСтоимостьРозн = ?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.КонПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.КонПродСтоимость);
ПриходСтоимостьРозн = текПрихПродСтоимость;
РасходСтоимостьРозн = текРасхПродСтоимость;
ПечНачальнаяСтоимостьРозн = глФРМ(НачальнаяСтоимостьРозн, ВП,1);
ПечТекущаяСтоимостьРозн = глФРМ(ТекущаяСтоимостьРозн, ВП,1);
ПечПриходСтоимостьРозн = глФРМ(ПриходСтоимостьРозн, ВП,1);
ПечРасходСтоимостьРозн = глФРМ(РасходСтоимостьРозн, ВП,1);
НачальнаяСтоимостьРознИтог = НачальнаяСтоимостьРознИтог + НачальнаяСтоимостьРозн;
ТекущаяСтоимостьРознИтог = ТекущаяСтоимостьРознИтог + ТекущаяСтоимостьРозн;
ПриходСтоимостьРознИтог = ПриходСтоимостьРознИтог + ПриходСтоимостьРозн;
РасходСтоимостьРознИтог = РасходСтоимостьРознИтог + РасходСтоимостьРозн;
Иначе
ПечНачальнаяСтоимостьРозн="";
ПечТекущаяСтоимостьРозн="";
ПечПриходСтоимостьРозн="";
ПечРасходСтоимостьРозн="";
КонецЕсли;
ПечНачальныйОстаток = ПечНачальныйОстатокТовара + ПечСуммы(ПечНачальнаяСтоимость,ПечНачальнаяСтоимостьРозн);
ПечПриход = ПечПриходОстатокТовара + ПечСуммы(ПечПриходСтоимость,ПечПриходСтоимостьРозн);
ПечРасход = ПечРасходОстатокТовара + ПечСуммы(ПечРасходСтоимость,ПечРасходСтоимостьРозн);
ПечТекущийОстаток = ПечТекущийОстатокТовара + ПечСуммы(ПечТекущаяСтоимость,ПечТекущаяСтоимостьРозн);
Т.ВывестиСекцию("Товар");
глОживить(2);
ВывестиНакладные(Запрос,Т);
КонецЦикла;
ПечНачальнаяСтоимость = глФРМ(НачальнаяСтоимостьИтог,ВП,1);
ПечТекущаяСтоимость = глФРМ(ТекущаяСтоимостьИтог, ВП,1);
ПечПриходСтоимость = глФРМ(ПриходСтоимостьИтог, ВП,1);
ПечРасходСтоимость = глФРМ(РасходСтоимостьИтог, ВП,1);
ПечНачальнаяСтоимостьРозн = глФРМ(НачальнаяСтоимостьРознИтог,ВП,1);
ПечТекущаяСтоимостьРозн = глФРМ(ТекущаяСтоимостьРознИтог,ВП,1);
ПечПриходСтоимостьРозн = глФРМ(ПриходСтоимостьРознИтог,ВП,1);
ПечРасходСтоимостьРозн = глФРМ(РасходСтоимостьРознИтог,ВП,1);
ПечНачальныйОстаток = ПечСуммы(ПечНачальнаяСтоимость,ПечНачальнаяСтоимостьРозн,0);
ПечПриход = ПечСуммы(ПечПриходСтоимость,ПечПриходСтоимостьРозн,0);
ПечРасход = ПечСуммы(ПечРасходСтоимость,ПечРасходСтоимостьРозн,0);
ПечТекущийОстаток = ПечСуммы(ПечТекущаяСтоимость,ПечТекущаяСтоимостьРозн,0);
Т.ВывестиСекцию("Итого");
глОживить(1);
КонецПроцедуры // ВывестиТовары
// ===============================
// Название: РаботаСоСписком
// Параметры:
// Режим - строка, принимающая 4 значения:
// "Добавить"
// "ДобавитьНесколько"
// "Удалить"
// "УдалитьВсе"
// Список - список значений, в котором задается множественный фильтр
// ТипСправочника - строка, содержащая идентификатор справочнника, по
// которому осуществляется мноджественный фильтр
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// кнопок работы с множественными фильтрами ("...",".....","X","XX")
// Наименование,.
// Описание:
// процедура предназначена для добавления и удаления элементов
// из множественных фильтров
Процедура РаботаСоСписком(Режим,Список,ТипСправочника)
Перем ТекПоз;
Перем ТекЭлемент;
Перем Фрм;
ТекПоз = Список.ТекущаяСтрока();
Если ТекПоз>0 Тогда
ТекЭлемент=Список.ПолучитьЗначение(ТекПоз);
КонецЕсли;
Если Режим="Добавить" Тогда // добавляем в список один элемент
СписокПодбора = Список;
СправочникПодбора = ВРег(ТипСправочника);
// открываем окно подбора
ОткрытьПодбор("Справочник."+ТипСправочника,,Фрм,0,ТекЭлемент);
Фрм.ВыборГруппы(1);
ИначеЕсли Режим="ДобавитьНесколько" Тогда // добавляем в список несколько элементов
СписокПодбора = Список;
СправочникПодбора = ВРег(ТипСправочника);
// открываем окно подбора
ОткрытьПодбор("Справочник."+ТипСправочника,,Фрм,1,ТекЭлемент);
Фрм.ВыборГруппы(1);
ИначеЕсли Режим="УдалитьВсе" Тогда // удаляем все элементы из списка
Список.УдалитьВсе();
ИначеЕсли Режим="Удалить" Тогда // удаляем из списка один элемент
Если ТекПоз>0 Тогда
Список.УдалитьЗначение(ТекПоз);
КонецЕсли;
КонецЕсли;
КонецПроцедуры // работа со списком
// ===============================
// Название: Сформировать
// Параметры:
// ЗакрытьЭкран - флаг того, что после формирования отчета надо закрыть экран
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// кнопки "Сформировать" и "ОК"
// Наименование,.
// Описание:
// запускает отчет
Процедура Сформировать(ЗакрытьЭкран=0)
глПроверкаДаты(Дата1,Дата2);
// Здесь формируется отчет, который использует регистры, критичные к
// последовательности проведения документов
// поэтому сравним установленные даты периода формируемого отчета с ГП
глПроверкаАктуальностиОтчета(Дата1,Дата2,"Общ",ВыбФирма,0);
ПечФорма = "Таблица";
Язык = глЯзык(ПечФорма);
глУстПропись(Гривня,Язык);
Если (ТипЗначенияСтр(Т) <> "Таблица") ИЛИ (Обновить = 0) Тогда
Т = СоздатьОбъект("Таблица");
Иначе
Т.Очистить();
КонецЕсли;
Т.ИсходнаяТаблица(ПечФорма);
Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Объект", "Розница");
// все настройки помещаем в список
Расшифровка.Установить("Дата1", Дата1);
Расшифровка.Установить("Дата2", Дата2);
Расшифровка.Установить("ВыбФирма", ВыбФирма);
Расшифровка.Установить("ВыбТовар", ВыбТовар);
Расшифровка.Установить("КатТоваров", КатТоваров);
Расшифровка.Установить("ВыбКонтрагент", ВыбКонтрагент);
Расшифровка.Установить("КатКонтрагентов", КатКонтрагентов);
Расшифровка.Установить("СтатусыПартий",СтатусыПартий);
Расшифровка.Установить("ДеталПоНакладным", ДеталПоНакладным);
Расшифровка.Установить("ДеталПоВсемДокументам", ДеталПоВсемДокументам);
Расшифровка.Установить("СРозничнымиЦенами", СРозничнымиЦенами);
Расшифровка.Установить("СУчетнымиЦенами", СУчетнымиЦенами);
Расшифровка.Установить("МФВыбТовары", МФВыбТовары);
Расшифровка.Установить("ТипМФКатТоваров", ТипМФКатТоваров.ТекущаяСтрока());
Расшифровка.Установить("МФКатТоваров", МФКатТоваров);
Расшифровка.Установить("МФВыбКонтрагенты", МФВыбКонтрагенты);
Расшифровка.Установить("ТипМФКатКонтрагентов", ТипМФКатКонтрагентов.ТекущаяСтрока());
Расшифровка.Установить("МФКатКонтрагентов", МФКатКонтрагентов);
Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса="
|ПЕРИОД С Дата1 По Дата2;
|Товар = Регистр.ПартииТоваров.Товар;
|Фирма = Регистр.ПартииТоваров.Фирма;
|Статус = Регистр.ПартииТоваров.Статус;
|Поставщик = Регистр.ПартииТоваров.Поставщик;
|ПрихДокумент = Регистр.ПартииТоваров.ПрихДокумент;
|Докум = Регистр.ПартииТоваров.ТекущийДокумент;
|ОстатокТовара = Регистр.ПартииТоваров.ОстатокТовара;
|Стоимость = Регистр.ПартииТоваров.Стоимость;
|ПродСтоимость = Регистр.ПартииТоваров.ПродСтоимость;
|НДС = Регистр.ПартииТоваров.НДС;";
ТекстЗапроса=ТекстЗапроса+"Группировка Товар Без групп;";
Если ДеталПоНакладным<>0 Тогда
ТекстЗапроса=ТекстЗапроса+"
|Группировка Статус;
|Группировка Поставщик;
|Группировка ПрихДокумент;";
КонецЕсли;
Если ДеталПоВсемДокументам<>0 Тогда
ТекстЗапроса=ТекстЗапроса+"
|Группировка Докум;";
КонецЕсли;
ТекстЗапроса=ТекстЗапроса+"
|Функция НачОстатокТовара = НачОст(ОстатокТовара);
|Функция КонОстатокТовара = КонОст(ОстатокТовара);
|Функция ПрихОстатокТовара = Приход(ОстатокТовара);
|Функция РасхОстатокТовара = Расход(ОстатокТовара);
|Функция НачСтоимость = НачОст(Стоимость);
|Функция КонСтоимость = КонОст(Стоимость);
|Функция ПрихСтоимость = Приход(Стоимость);
|Функция РасхСтоимость = Расход(Стоимость);
|Функция НачПродСтоимость = НачОст(ПродСтоимость);
|Функция КонПродСтоимость = КонОст(ПродСтоимость);
|Функция ПрихПродСтоимость = Приход(ПродСтоимость);
|Функция РасхПродСтоимость = Расход(ПродСтоимость);
|Функция НачНДС = НачОст(НДС);
|Функция КонНДС = КонОст(НДС);
|Функция ПрихНДС = Приход(НДС);
|Функция РасхНДС = Расход(НДС);
|Условие (Фирма = выбФирма);
|Условие (Статус<>Услуга);
|";
Заг="";
глЗаголовокФирма(ВыбФирма,Заг,Язык);
СписокТоваров = СоздатьОбъект("СписокЗначений");
СписокКонтрагентов = СоздатьОбъект("СписокЗначений");
Если глФильтрПоСправочнику("Номенклатура",
ВыбТовар,МФВыбТовары,КатТоваров,МФКатТоваров,ТипМФКатТоваров.ТекущаяСтрока(),
СписокТоваров,
ТекстЗапроса,Заг,Язык,
"Товар,ВыбТовар,МФВыбТовары,СписокТоваров,товара,товару,товарам,товару,товара
х")=0 Тогда
Возврат;
КонецЕсли;
Если глФильтрПоСправочнику("Контрагенты",
ВыбКонтрагент,МФВыбКонтрагенты,КатКонтрагентов,МФКатКонтрагентов,ТипМФКатКо
нтрагентов.ТекущаяСтрока(),
СписокКонтрагентов,
ТекстЗапроса,Заг,Язык,
"Поставщик,ВыбКонтрагент,МФВыбКонтрагенты,СписокКонтрагентов,поставщика,поста
вщику,поставщикам,постачальнику,постачальниках")=0 Тогда
Возврат;
КонецЕсли;
Заг=Заг+?(Язык="у","По статусах партій:Товари у роздрібній торгівлі. ","По статусам партий: Товар в рознице.");
// отфильтруем по статусам
СписокСтатусов = СоздатьОбъект("СписокЗначений");
Для Инд=1 По СтатусыПартий.РазмерСписка() Цикл
Если СтатусыПартий.Пометка(Инд) = 1 Тогда
Стр = "";
СписокСтатусов.ДобавитьЗначение(СтатусыПартий.ПолучитьЗначение(Инд,Стр),Стр);
КонецЕсли;
КонецЦикла;
Если СписокСтатусов.РазмерСписка() > 0 Тогда
ТекстЗапроса = ТекстЗапроса +"Условие(Статус в СписокСтатусов);";
КонецЕсли;
Если СписокСтатусов.РазмерСписка() = СтатусыПартий.РазмерСписка() Тогда
Заг=Заг+?(Язык="у"," По всіх статусах партій. "," По всем статусам партий. ");
Иначе
Заг=Заг+?(Язык="у"," По статусах партій:"," По статусам партий:");
Для а=1 По СписокСтатусов.РазмерСписка() Цикл
Заг = Заг + " " + глСтатусПартииТекстом(СписокСтатусов.ПолучитьЗначение(а), 1, Язык)+",";
КонецЦикла;
Заг = Лев(Заг,СтрДлина(Заг)-1)+".";
КонецЕсли;
Если СУчетнымиЦенами = 1 Тогда
Заг=Заг+?(Язык="у","З обліковими цінами. ","С учетными ценами.");
КонецЕсли;
Если СРозничнымиЦенами=1 Тогда
Заг=Заг+?(Язык="у","З роздрібними цінами. ","С розничными ценами.");
КонецЕсли;
// Создание Таблицы для выходного отчета
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
Предупреждение("Запрос по Партиям не выполнился!!!");
Возврат;
КонецЕсли;
// теперь в запросе собраны все Документы по партиям
глЧислоСтрок=0;
Т.ВывестиСекцию("Кнопки");
Т.ВывестиСекцию("Отчет");
ПечНДСШапка = ?(ПустоеЗначение(ВыбФирма)=1,?(Язык="у"," з ПДВ"," с НДС"),?(Язык="у"," без ПДВ"," без НДС"));
Если (ДеталПоНакладным=0)И(ДеталПоВсемДокументам=0) Тогда
ПечШапкаТовар = "Товар";
Т.ВывестиСекцию("ШапкаТов");
Иначе
ПечШапкаДок = "Товар";
Если ДеталПоНакладным = 1 Тогда
ПечШапкаДок = ПечШапкаДок+"/"+?(Язык="у","Партія","Партия");
КонецЕсли;
Если ДеталПоВсемДокументам = 1 Тогда
ПечШапкаДок = ПечШапкаДок+"/"+"Документ";
КонецЕсли;
Т.ВывестиСекцию("ШапкаДок");
КонецЕсли;
глОживить(4);
// выводим детализацию по товарам
Если ВыбФирма.Выбран()=0 Тогда
ВП=Доллары;
Иначе
ВП=Гривня;
КонецЕсли;
ВывестиТовары(Запрос,Т);
//Вызов выходного отчета в окно просмотра и редактирования.
Т.Защита(Константа.ФлагЗащитыТаблиц);
Т.ТолькоПросмотр(1);
Т.Опции(0,0,6,0,"ПарамПечатиУпрПартииТоваров","РазмОкнаУпрПартииТоваров");
Т.ОбластьПечати(2);
Т.Показать("Отчет о партиях товаров","");
Если (Обновить = 2)ИЛИ(ЗакрытьЭкран=1) Тогда
СтрокаДействийФормы = "#Закрыть";
КонецЕсли;
КонецПроцедуры // Сформировать
// ===============================
// ПРОЦЕДУРЫ И ФУНКЦИИ, ВЫЗЫВАЕМЫЕ ИЗ ФОРМУЛ ЭЛЕМЕНТОВ ДИАЛОГА
// ===============================
// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ
// ===============================
Процедура ПриВыбореЗакладки(Номер,Значение) // Предопределенная процедура
// закладки
Если Номер=1 Тогда
Форма.ИспользоватьСлой("Основной,Общий",2);
ИначеЕсли Номер=2 Тогда
Форма.ИспользоватьСлой("МножественныйФильтр,Общий",2);
КонецЕсли;
ПерерисовкаНазванийЗакладок();
КонецПроцедуры // ПриВыбореЗакладки
// ===============================
Процедура ОбработкаПодбора(Значение) // Предопределенная процедура
Если (ВРег(Значение.Вид())=СправочникПодбора)И(СписокПодбора.НайтиЗначение(Значение)=0) Тогда
СписокПодбора.ДобавитьЗначение(Значение);
СписокПодбора.ТекущаяСтрока(СписокПодбора.РазмерСписка());
КонецЕсли;
КонецПроцедуры // ОбработкаПодбора
// ===============================
Процедура ПриОткрытии() // Предопределенная процедура
Если глФлагРасшифровки = 1 Тогда
Обновить = глОбновить;
// восстанавливаем настройки из списка
Дата1 = глРасшифровка.Получить("Дата1");
Дата2 = глРасшифровка.Получить("Дата2");
ВыбФирма = глРасшифровка.Получить("ВыбФирма");
ВыбТовар = глРасшифровка.Получить("ВыбТовар");
КатТоваров = глРасшифровка.Получить("КатТоваров");
ВыбКонтрагент = глРасшифровка.Получить("ВыбКонтрагент");
КатКонтрагентов = глРасшифровка.Получить("КатКонтрагентов");
ВыбКупленный = глРасшифровка.Получить("ВыбКупленный");
ВыбРозница = глРасшифровка.Получить("ВыбРозница");
ВыбОтданный = глРасшифровка.Получить("ВыбОтданный");
ВыбПринятый = глРасшифровка.Получить("ВыбПринятый");
ДеталПоНакладным = глРасшифровка.Получить("ДеталПоНакладным");
ДеталПоВсемДокументам = глРасшифровка.Получить("ДеталПоВсемДокументам");
СтатусыПартий.УдалитьВсе();
глРасшифровка.Получить("СтатусыПартий").Выгрузить(СтатусыПартий);
СРозничнымиЦенами = глРасшифровка.Получить("СРозничнымиЦенами");
СУчетнымиЦенами = глРасшифровка.Получить("СУчетнымиЦенами");
МФВыбТовары.УдалитьВсе();
глРасшифровка.Получить("МФВыбТовары").Выгрузить(МФВыбТовары);
ТипМФКатТоваров.ТекущаяСтрока(глРасшифровка.Получить("ТипМФКатТоваров"));
МФКатТоваров.УдалитьВсе();
глРасшифровка.Получить("МФКатТоваров").Выгрузить(МФКатТоваров);
МФВыбКонтрагенты.УдалитьВсе();
глРасшифровка.Получить("МФВыбКонтрагенты").Выгрузить(МФВыбКонтрагенты);
ТипМФКатКонтрагентов.ТекущаяСтрока(глРасшифровка.Получить("ТипМФКатКонтрагентов"));
МФКатКонтрагентов.УдалитьВсе();
глРасшифровка.Получить("МФКатКонтрагентов").Выгрузить(МФКатКонтрагентов);
Если Обновить <> 0 Тогда
Т = глТаблица;
КонецЕсли;
Если Обновить <> 2 Тогда
Сформировать();
СтатусВозврата(0);
Возврат;
КонецЕсли;
Иначе
Обновить = 0;
КонецЕсли;
ПерерисовкаНазванийЗакладок();
ИзмИтоги();
ИзмЦена();
КонецПроцедуры // ПриОткрытии
// ===============================
Процедура ВводНового() // Предопределенная процедура
ПерерисовкаНазванийЗакладок();
КонецПроцедуры // ВводНового
// ===============================
Процедура ПриЗакрытии() // Предопределенная процедура
КонецПроцедуры // ПриЗакрытии
// ===============================
// ТЕЛО МОДУЛЯ
Дата2=ПолучитьДатуТА();
Дата1=глВосстановитьЗначение(,"ОсновнаяДатаНачалаОтчета",);
Если Число(Дата1)=0 Тогда
Дата1='01.01.1998';
Конецесли;
СтатусыПартий.УдалитьВсе();
СтатусыПартий.ДобавитьЗначение(РозницаКупленный,глСтатусПартииТекстом(РозницаКупленный,1));
СтатусыПартий.ДобавитьЗначение(РозницаПринятый,глСтатусПартииТекстом(РозницаПринятый,1));
СтатусыПартий.ДобавитьЗначение(РозницаПринятыйБезПраваПередачи,глСтатусПартииТекстом(РозницаПринятыйБезПраваПередачи,1));
Для а=1 По СтатусыПартий.РазмерСписка() Цикл
СтатусыПартий.Пометка(а,1);
КонецЦикла;
ВыбКупленный=1;
ВыбРозница=1;
ВыбОтданный=1;
ВыбПринятый=1;
ВыбВалюта=Гривня;
ТипМФКатТоваров.УдалитьВсе();
ТипМФКатТоваров.ДобавитьЗначение("одна из");
ТипМФКатТоваров.ДобавитьЗначение("одновременно все");
ТипМФКатТоваров.ТекущаяСтрока(1);
ТипМФКатКонтрагентов.УдалитьВсе();
ТипМФКатКонтрагентов.ДобавитьЗначение("одна из");
ТипМФКатКонтрагентов.ДобавитьЗначение("одновременно все");
ТипМФКатКонтрагентов.ТекущаяСтрока(1);
// Инициализируем закладки
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1,"Основная");
Форма.ИспользоватьСлой("Основной,Общий",2);
Форма.Закладки.ДобавитьЗначение(2,"Множественный фильтр");
это произлошло когда 1с наставл на вин 7, на хр все работает норм