// используются для стандартного механизма кнопок "Обновить" и "Настройка" Перем Таб;
// переменные предназначены для запроса по периодам Перем Запрос; Перем Язык, УкрГруппировки;
Перем ОтчетСформирован;
Перем ПечОстаток,ПечСтоимость,ИтПечСтоимость;
Перем Ит, ТекЗакладка;
Перем СписокПодбора,СправочникПодбора; Перем СписокТоваров; // список товаров, удовлетворяющих фильтру по ТМЦ
Перем ЕстьГруппыТМЦ, СпСчетов; // =============================== // ПРОЦЕДУРЫ И ФУНКЦИИ, ВЫЗЫВАЕМЫЕ ИЗ ФОРМУЛ ЭЛЕМЕНТОВ ДИАЛОГА // ===============================
Функция МножественныйФильтрЗадан(СпЗнач_) Если СпЗнач_.РазмерСписка()>0 Тогда Возврат 1; КонецЕсли; Возврат 0; КонецФункции // МножественныйФильтрЗадан
ТекПоз = Список.ТекущаяСтрока(); Если ТекПоз>0 Тогда ТекЭлемент=Список.ПолучитьЗначение(ТекПоз); КонецЕсли;
Если Режим="Добавить" Тогда // добавляем в список один элемент СписокПодбора = Список; СправочникПодбора = ВРег(ТипСправочника); // открываем окно подбора ОткрытьПодбор("Справочник."+ТипСправочника,,Фрм,0,ТекЭлемент); Фрм.ВыборГруппы(1);
ИначеЕсли Режим="ДобавитьНесколько" Тогда // добавляем в список несколько элементов СписокПодбора = Список; СправочникПодбора = ВРег(ТипСправочника); // открываем окно подбора ОткрытьПодбор("Справочник."+ТипСправочника,,Фрм,1,ТекЭлемент); Фрм.ВыборГруппы(1);
ИначеЕсли Режим="УдалитьВсе" Тогда // удаляем все элементы из списка Список.УдалитьВсе(); Если ВРег(ТипСправочника) = "НОМЕКЛАТУРА" Тогда ЕстьГруппыТМЦ = 0; КонецЕсли; ИначеЕсли Режим="Удалить" Тогда // удаляем из списка один элемент Если ТекПоз>0 Тогда Если ВРег(ТипСправочника) = "НОМЕКЛАТУРА" Тогда ЕстьГруппыТМЦ = ЕстьГруппыТМЦ-ТекЭлемент.ЭтоГруппа(); КонецЕсли; Список.УдалитьЗначение(ТекПоз); КонецЕсли; КонецЕсли;
КонецПроцедуры // работа со списком
//****************************************************************************** Процедура ОбработкаПодбора(Значение) // Предопределенная процедура Если ПустоеЗначение(СправочникПодбора)=1 Тогда Возврат; КонецЕсли;
Если (Найти(СправочникПодбора,",")>0)И(Найти(СправочникПодбора,ВРег(Значение.Вид()))>0)ИЛИ (ВРег(Значение.Вид())=СправочникПодбора) Тогда Если (СписокПодбора.НайтиЗначение(Значение)=0) Тогда Если ВРег(СправочникПодбора) = "НОМЕКЛАТУРА" Тогда ЕстьГруппыТМЦ = ЕстьГруппыТМЦ+Значение.ЭтоГруппа(); КонецЕсли; СписокПодбора.ДобавитьЗначение(Значение); СписокПодбора.ТекущаяСтрока(СписокПодбора.РазмерСписка()); КонецЕсли; КонецЕсли; КонецПроцедуры // ОбработкаПодбора
Для индГруп = 1 По Группировки.РазмерСписка() Цикл Если Флаг = -1 Тогда Группировки.Пометка(индГруп, 1 - Группировки.Пометка(индГруп)); Иначе Группировки.Пометка(индГруп, Флаг); КонецЕсли; КонецЦикла;
Если МножественныйФильтрЗадан(СписокТоваров) = 0 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,, 1,1); Загол=""+"По всем ТМЦ"; Иначе Если ЕстьГруппыТМЦ > 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СписокТоваров, 1); Иначе Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СписокТоваров, 2); КонецЕсли; Загол=""+"Включен фильтр по ТМЦ"; КонецЕсли;
Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,, 1); Загол=Загол+", по всем складам"; Иначе Если ВыбМестоХранения.ЭтоГруппа() = 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМестоХранения, 1); Иначе Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМестоХранения, 2); КонецЕсли; Загол=Загол+", по складу - "+ВыбМестоХранения; КонецЕсли; Ит.ВыполнитьЗапрос(Дата2, Дата2,СпСчетов,,, 1,, "К"); //============================================================
Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Таб.ПрисоединитьСекцию("Шапка|ВсеСклады"); КонецЕсли;
//------------------------------------------------ ///Определим, на каких складах есть остаток ТаблСкладов = СоздатьОбъект("ТаблицаЗначений"); ТаблСкладов.НоваяКолонка("Склад"); Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл /// Если ПустоеЗначение(Ит.Субконто(2)) = 1 Тогда Продолжить; КонецЕсли; //// отбираем неправильные значения //Если нулДА = 0 Тогда // Если Ит.СКД(3)<=0 Тогда // Продолжить; // КонецЕсли; //КонецЕсли; Если ТаблСкладов.НайтиЗначение(Ит.Субконто(2),,"Склад") = 0 Тогда ТаблСкладов.НоваяСтрока(); ТаблСкладов.Склад = Ит.Субконто(2); КонецЕсли; КонецЦикла; //------------------------------------------------
ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Таб.ПрисоединитьСекцию("Шапка|Склад"); КонецЦикла;
Ном = 0;
//------------------------------------------------ ////Формируем сам отчет Ит.ВыбратьСубконто(ВидыСубконто.ТМЦ); Пока Ит.ПолучитьСубконто(ВидыСубконто.ТМЦ) = 1 Цикл ///Выбираем наши товары Ном = Ном+1; Если Ит.Субконто(1).ЭтоГруппа()=1 Тогда ПечТовар = Ит.Субконто(1); ПечОстаток = Ит.СКД(3); Таб.ВывестиСекцию("Группа|ТоварРезерв"); Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Таб.ПрисоединитьСекцию("Группа|ВсеСклады"); КонецЕсли;
Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения);
ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Если Ит.ПолучитьСубконто(2,,ТаблСкладов.Склад) = 1 Тогда ПечОстаток = Ит.СКД(3); Иначе ПечОстаток = 0; КонецЕсли; Таб.ПрисоединитьСекцию("Группа|Склад"); КонецЦикла; Продолжить; КонецЕсли;
////// отбираем неправильные значения //Если нулДА = 0 Тогда // Если Ит.СКД(3)<=0 Тогда // Продолжить; // КонецЕсли; //КонецЕсли; //// выводим группу ТМЦ
Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,, 1); Иначе Если ВыбМестоХранения.ЭтоГруппа() = 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМестоХранения, 1); Иначе Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМестоХранения, 2); КонецЕсли; КонецЕсли;
Если МножественныйФильтрЗадан(СписокТоваров) = 0 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,, 1,1); Иначе Если ЕстьГруппыТМЦ > 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СписокТоваров, 1); Иначе Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СписокТоваров, 2); КонецЕсли; КонецЕсли;
Таб.ВывестиСекцию("Итого|ТоварРезерв"); //======================= ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Если Ит.ПолучитьСубконто(1,,ТаблСкладов.Склад) = 1 Тогда ПечОстаток = ПечОстаток+Ит.СКД(3); КонецЕсли; КонецЦикла;
Таб.ПрисоединитьСекцию("Итого|ВсеСклады"); Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда //======================= ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Если Ит.ПолучитьСубконто(1,,ТаблСкладов.Склад) = 1 Тогда ПечОстаток = Ит.СКД(3); Иначе ПечОстаток = 0; КонецЕсли; Таб.ПрисоединитьСекцию("Итого|Склад"); КонецЦикла; КонецЕсли;
//------------------------------------------------------ // Вывод заполненной формы Таб.Защита(Константа.ФлагЗащитыТаблиц); Таб.ТолькоПросмотр(1); Таб.Показать("ПЕЧАТЬ: Остатки ТМЦ на складах (На "+Дата2+?(ТипЗначения(ВыбФирма)=0, "", ", "+ВыбФирма)+")",""); ОтчетСформирован = 1;
КонецПроцедуры // ОстаткиТоваров
// =============================== Процедура ВывестиДокументыДвиженияТоваров(Запрос,Таб) ПечКонКол=Запрос.СНД(3); Запрос.ВыбратьПериоды(); Пока Запрос.ПолучитьПериод() = 1 Цикл Док=Запрос.Операция.Документ; Если ПустоеЗначение(Док) = 1 Тогда Продолжить; КонецЕсли; Наим = Док; ПечПрихКол = Запрос.ДО(3); ПечРасхКол = Запрос.КО(3); ПечКонКол = ПечКонКол + ПечПрихКол - ПечРасхКол; Таб.ВывестиСекцию("Док"); КонецЦикла; КонецПроцедуры // ВывестиДокументыДвиженияТоваров
//============================================================ ///Итоги по счету учета товара Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Если МножественныйФильтрЗадан(СписокТоваров) = 0 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,, 1,1); Загол=""+"По всем ТМЦ"; Иначе Если ЕстьГруппыТМЦ > 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СписокТоваров, 1); Иначе Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СписокТоваров, 2); КонецЕсли; Загол=""+"Включен фильтр по ТМЦ"; КонецЕсли;
Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,, 1); Загол=Загол+", по всем складам"; Иначе Если ВыбМестоХранения.ЭтоГруппа() = 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМестоХранения, 1); Иначе Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМестоХранения, 2); КонецЕсли; Загол=Загол+", по складу - "+ВыбМестоХранения; КонецЕсли;
Если ДеталПоДокументам=1 Тогда Ит.ВыполнитьЗапрос(Дата1, Дата2,СпСчетов,,, 1,"Операция", "К"); Иначе Ит.ВыполнитьЗапрос(Дата1, Дата2,СпСчетов,,, 1,, "К"); КонецЕсли; //==========================================================
ПечЗаголСтолбца = "Товар"; Если ДеталПоДокументам=1 Тогда // детализируем по складам ПечЗаголСтолбца = ПечЗаголСтолбца + "/Документ движения"; КонецЕсли;
Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Таб.ВывестиСекцию("Склад"); глОживить(1); КонецЕсли; Если ДеталПоДокументам=1 Тогда ВывестиДокументыДвиженияТоваров(Ит,Таб); КонецЕсли; КонецЦикла; Иначе Если ДеталПоДокументам=1 Тогда // не детализируем по складам ВывестиДокументыДвиженияТоваров(Ит,Таб); КонецЕсли; КонецЕсли; КонецЦикла; //----------------------------------------------
// Вывод заполненной формы Таб.Защита(Константа.ФлагЗащитыТаблиц); Таб.ТолькоПросмотр(1); Таб.Показать("ПЕЧАТЬ: Отчет о движении ТМЦ на складах ("+ПериодСтр(Дата1, Дата2)+?(ТипЗначения(ВыбФирма)=0, "", ", "+ВыбФирма)+")","");
Если МножественныйФильтрЗадан(СписокТоваров) = 0 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,, 1,1); Загол=""+"По всем ТМЦ"; Иначе Если ЕстьГруппыТМЦ > 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СписокТоваров, 1); Иначе Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СписокТоваров, 2); КонецЕсли; Загол=""+"Включен фильтр по ТМЦ"; КонецЕсли;
Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,, 1); Загол=Загол+", по всем складам"; Иначе Если ВыбМестоХранения.ЭтоГруппа() = 1 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМестоХранения, 1); Иначе Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМестоХранения, 2); КонецЕсли; Загол=Загол+", по складу - "+ВыбМестоХранения; КонецЕсли; Ит.ВыполнитьЗапрос(Дата2, Дата2,СпСчетов,,, 1,, "СК"); //------------------------------------------------- Категория = ""; Загол=Загол+", в учетной стоимости (грн.)";
ТаблСкладовИтого = СоздатьОбъект("ТаблицаЗначений"); ТаблСкладовИтого.Очистить(); ТаблСкладовИтого.НоваяКолонка("Склад"); ТаблСкладовИтого.НоваяКолонка("Себестоимость","Число",12,2); //------------------------------------------------ ///Определим, на каких складах есть остаток Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл /// Если ПустоеЗначение(Ит.Субконто(2)) = 1 Тогда Продолжить; КонецЕсли; ////// отбираем неправильные значения //Если нулДА = 0 Тогда // Если Ит.СКД(3)<=0 Тогда // Продолжить; // КонецЕсли; //КонецЕсли; Если ТаблСкладов.НайтиЗначение(Ит.Субконто(2),,"Склад") = 0 Тогда ТаблСкладов.НоваяСтрока(); ТаблСкладов.Склад = Ит.Субконто(2); ТаблСкладовИтого.НоваяСтрока(); ТаблСкладовИтого.Склад = Ит.Субконто(2); КонецЕсли; КонецЦикла; //------------------------------------------------
ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Таб.ПрисоединитьСекцию("Шапка|СкладСтоимость"); КонецЦикла;
Ном = 0; НомСтроки = 0; //------------------------------------------------ ////Формируем сам отчет Ит.ВыбратьСубконто(ВидыСубконто.ТМЦ); Пока Ит.ПолучитьСубконто(ВидыСубконто.ТМЦ) = 1 Цикл ///Выбираем наши товары
////// отбираем неправильные значения //Если нулДА = 0 Тогда // Если Ит.СКД(3)<=0 Тогда // Продолжить; // КонецЕсли; //КонецЕсли;
Ном = Ном+1; //------------------------------------------------------- ////// выводим группу ТМЦ Если Ит.Субконто(1).ЭтоГруппа()=1 Тогда Если Ит.Субконто(1).Уровень() > 1 Тогда Продолжить; КонецЕсли; ПечТовар = Ит.Субконто(1); ПечОстаток = Ит.СКД(3); // -------------------------------------------------- // себест. (грн) ПечСтоимость = Ит.СКД(1); ПечЦена = ?(Ит.СКД(3) = 0,0,Окр(Ит.СКД(1)/Ит.СКД(3),2)); Таб.ВывестиСекцию("Группа|ТоварЦена"); Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Таб.ПрисоединитьСекцию("Группа|ИтогСтолбец"); КонецЕсли;
Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Если Ит.ПолучитьСубконто(2,,ТаблСкладов.Склад) = 1 Тогда ПечОстаток = Ит.СКД(3); // --------------------------------------------- // себест. (грн) ПечСтоимость = Ит.СКД(1); ПечЦена = ?(Ит.СКД(3) = 0,0,Окр(Ит.СКД(1)/Ит.СКД(3),2)); Таб.ПрисоединитьСекцию("Группа|СкладСтоимость"); Иначе ПечОстаток = 0; ПечСтоимость = 0; Таб.ПрисоединитьСекцию("Группа|СкладСтоимость"); КонецЕсли; КонецЦикла; Продолжить; КонецЕсли; //Конец обработки группы //------------------------------------------------------------- Если ПустоеЗначение(Ит.Субконто(1))=1 Тогда Продолжить; КонецЕсли;
Таб.ВывестиСекцию("Товар|ТоварЦена"); Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда Таб.ПрисоединитьСекцию("Товар|ИтогСтолбец"); КонецЕсли;
Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения);
ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Если Ит.ПолучитьСубконто(2,,ТаблСкладов.Склад) = 1 Тогда ПечОстаток = Ит.СКД(3); ПечСтоимость = Ит.СКД(1); ПечЦена = ?(Ит.СКД(3) = 0,0,Окр(Ит.СКД(1)/Ит.СКД(3),2)); //========================================= НомСтроки = 0; Если ТаблСкладовИтого.НайтиЗначение(ТаблСкладов.Склад,НомСтроки,"Склад") = 1 Тогда ТаблСкладовИтого.ТекущаяСтрока(НомСтроки); ТаблСкладовИтого.Себестоимость = ТаблСкладовИтого.Себестоимость+ПечСтоимость; КонецЕсли; //========================================= Таб.ПрисоединитьСекцию("Товар|СкладСтоимость"); Иначе ПечОстаток = 0; ПечСтоимость = 0; Таб.ПрисоединитьСекцию("Товар|СкладСтоимость"); КонецЕсли; КонецЦикла; //--------------------------------------------------------------- //Конец обработки товара //--------------------------------------------------------------- Состояние("Обработка строки отчета - "+Ном); КонецЦикла;
//------------------------------------------------------------------- // Итоговые суммы //------------------------------------------------------------------- Таб.ВывестиСекцию("Итого|ТоварЦена"); Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда ///====================== ПечОстаток = 0; //======================= ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Если Ит.ПолучитьСубконто(2,,ТаблСкладов.Склад) = 1 Тогда ПечОстаток = ПечОстаток+Ит.СКД(3); //========================================= НомСтроки = ""; Если ТаблСкладовИтого.НайтиЗначение(ТаблСкладов.Склад,НомСтроки,"Склад") = 1 Тогда ТаблСкладовИтого.ТекущаяСтрока(НомСтроки); ПечСтоимость = ТаблСкладовИтого.Себестоимость; Иначе ПечСтоимость = 0; КонецЕсли; Иначе ПечОстаток = ПечОстаток+0; ПечСтоимость = 0; КонецЕсли; КонецЦикла; ПечСтоимость = ТаблСкладовИтого.Итог("Себестоимость"); Таб.ПрисоединитьСекцию("Итого|ИтогСтолбец"); КонецЕсли; ТаблСкладов.ВыбратьСтроки(); Пока ТаблСкладов.ПолучитьСтроку() = 1 Цикл Если Ит.ПолучитьСубконто(2,,ТаблСкладов.Склад) = 1 Тогда ПечОстаток = Ит.СКД(3); ПечСтоимость = Ит.СКД(1); Таб.ПрисоединитьСекцию("Итого|СкладСтоимость"); Иначе ПечОстаток = 0; ПечСтоимость = 0; Таб.ПрисоединитьСекцию("Итого|СкладСтоимость"); КонецЕсли; КонецЦикла; //------------------------------------------------------------------- // Вывод заполненной формы Таб.Защита(Константа.ФлагЗащитыТаблиц); Таб.ТолькоПросмотр(1); Таб.Показать("ПЕЧАТЬ: Стоимость ТМЦ на складах (На "+Дата2+?(ТипЗначения(ВыбФирма)=0, "", ", "+ВыбФирма)+")",""); ОтчетСформирован = 1; КонецПроцедуры // ОстаткиТоваровСЦенами
// =============================== // ПРОЦЕДУРЫ И ФУНКЦИИ, ВЫЗЫВАЕМЫЕ ИЗ ФОРМУЛ ЭЛЕМЕНТОВ ДИАЛОГА // ===============================
// =============================== Функция ДоступностьЭлементов(ВсеЭлементы=0) Если ТекЗакладка = 1 Тогда Если ВидОтчета.ТекущаяСтрока() = 1 Тогда // движения ТМЦ Форма.тПериод. Видимость(1); Форма.тС. Видимость(1); Форма.Дата1. Видимость(1); Форма.кПериод. Видимость(1); Форма.тПо.Заголовок("по");
Форма.Заголовок("Движения товаров по складам"); Форма.тНазвание.Заголовок("Движения товаров по складам");
Иначе // стоимость ТМЦ на складах Форма.тПериод. Видимость(0); Форма.тС. Видимость(0); Форма.Дата1. Видимость(0); Форма.кПериод. Видимость(0); Форма.тПо.Заголовок("На");
Форма.Заголовок("Суммовые остатки товаров на складах"); Форма.тНазвание.Заголовок("Суммовые остатки товаров на складах");
// =============================== Процедура Сформировать(ЗакрытьЭкран=0) // Создание Таблицы для выходного отчета Таб = СоздатьОбъект("Таблица");
ОтчетСформирован = 0;
СписокТоваров = СоздатьОбъект("СписокЗначений"); СписокТоваров.УдалитьВсе(); Если МФВыбТовары.РазмерСписка()>0 Тогда Позиция = 0; Пока Позиция<МФВыбТовары.РазмерСписка() Цикл Позиция = Позиция+1; СписокТоваров.ДобавитьЗначение(МФВыбТовары.ПолучитьЗначение(Позиция)); КонецЦикла; КонецЕсли; Если ПустоеЗначение(ВыбНоменклатура) = 0 Тогда Если (СписокТоваров.НайтиЗначение(ВыбНоменклатура)=0) Тогда СписокТоваров.ДобавитьЗначение(ВыбНоменклатура); КонецЕсли; КонецЕсли;
Если СписокТоваров.РазмерСписка()>0 Тогда ВыберемВсеЭлементыСписка(СписокТоваров); КонецЕсли;
СпСчетов = ""; Для А = 1 По Товар.РазмерСписка() Цикл Если Товар.Пометка(А) = 1 Тогда СпСчетов = СпСчетов + ?(ПустаяСтрока(СпСчетов) = 1,"",",")+Товар.ПолучитьЗначение(А); КонецЕсли; КонецЦикла;
Если ПустаяСтрока(СпСчетов) = 1 Тогда Сообщить("Не выбран ни один вид ТМЦ для отчета!"); Возврат; КонецЕсли;
Если ВидОтчета.ТекущаяСтрока()=1 Тогда // движения ТМЦ ДвиженияТоваров(); ИначеЕсли ВидОтчета.ТекущаяСтрока()=2 Тогда // остатки ТМЦ ОстаткиТоваров(); ИначеЕсли ВидОтчета.ТекущаяСтрока()=3 Тогда // остатки с себестоимостью ОстаткиТоваровСЦенами(); КонецЕсли;
Если ОтчетСформирован = 0 Тогда Возврат; КонецЕсли;
Товар.ДобавитьЗначение("281,","Товары на опт. складе"); Товар.ДобавитьЗначение("282","Товары в рознице"); Товар.ДобавитьЗначение("283","Товары на комиссии"); Товар.ДобавитьЗначение("284","Тара под товарами"); Товар.ДобавитьЗначение("20","Производственные запасы"); Товар.ДобавитьЗначение("22","Малоценные и быстроизнашивающиеся предметы"); Товар.ДобавитьЗначение("24","Брак в производстве"); Товар.ДобавитьЗначение("25","Полуфабрикаты"); Товар.ДобавитьЗначение("26","Готовая продукция"); Товар.ДобавитьЗначение("27","Продукция сельского хозяйства");
глПометкаТаблицыГруппировок(Товар,1); // будем отслеживать только реальные изменения этих реквизитов Форма.ВидОтчета.ВыполнятьФормулуТолькоПриИзменении(1);
Группа: Местный
Сообщений: 299
Спасибо сказали: 98 раз
Рейтинг: 99.1
Цитата(inna.innainna84 @ 25.08.16, 9:50)
не выбирает движение товара по выбранной фирме
В отчете ВыбФирма не отбирается. Выборка есть только по складам. Т.е., у Вас 1 склад не может принадлежать 2-м фирмам. Думаю что у Вас это не единственный отчет в конфигурации - порвало где-то еще. Если у Вас имеется принадлежность одного и того ж склада 2-м разным фирмам, то как вариант (если небольшой период ведения совместного учета): 1. создайте новый склад; 2. С помощью Uchoice.ert отберите документы по новой фирме где совмещен склад и установите новый; 3) Перепроведите документы за этот период.
Есть и другой вариант: можно переписать все подобные отчеты
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0
mister-x @ Сегодня, 17:00 , Разделитель учета выставлен. Сам отчет не хочет формировать данные по конкретной фирме, формирует по всем не зависимо от выбраной фирмы.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Конечно есть. Только, что бы не вызывать подобные разговоры и сразу получить желаемый ответ, надо писать сразу - ребята, я ни в чем не разбираюсь, вот проблема, подправьте в коде, что бы работало так то.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0
logist @ Вчера, 23:08
, Sharzem да вы правы """"""В отчете ВыбФирма не отбирается. Выборка есть только по складам"""""" но не хотелось бы создавать множество складов и стыковать по ним остатки тмц.
logist ------Да я не разбираюсь в дописании 1с, и прошу помощи подправьте пожалуйста этот код с выборкой по фирме.
Группа: Местный
Сообщений: 299
Спасибо сказали: 98 раз
Рейтинг: 99.1
Если автор отчета (astonvilla), не предусмотрел разделить учет в этом отчете, то нет гарантии того что это вообще в конфигурации предусмотрено.
Я Вам пытаюсь донести что исправление только этого отчета не решит проблему. Конфигурация Ваша скорее всего "самописка" и Вы даже понятия не имеете как там все устроено. Поймите, Вам будет гораздо проще разделить места хранения чем "нарываться" в процессе дальнейшей работы на новые и новые проблемы. Исправить отчет не тяжело, тяжело будет Вам потом, когда дойдет наконец-то что с самого начала у Вас организовано что-то неправильно.
Uchoice.ert - не только отбирает но и устанавливает реквизиты. Если это касается документов, то все измененные документы нужно будет после обработки перепровести, поскольку Uchoice.ert не изменяет значения регистров или проводок. Для перепроведения можно воспользоваться штатной обработкой Проведение документов (она правда перепроведет все выбранные виды, т.е. не только проведенные).
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0
Sharzem @ Сегодня, 13:41
, Этот отчет нашла в нете и он мне очень нравится. Все остальное работает с разделителем учета (оборотки по счетам взаиморасчеты акты сверок и тд). Вы представляете сколько нужно будет дописывать документов, чтобы при создании нового дока при выборе фирмы выбирался другой склад, а не тот что по умолчанию, бух просто запутается в этих 7 складах. Это будет проблематично, чем просто исправить один отчет.
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0
Ваша уверенность в том, что Вы верно оцениваете трудоемкость действия "просто исправить отчет" - умиляет. не каждый отчет подходит к любой конфигурации. даже если он "очень красивый". я Вам даже больше скажу: чем "красивее" отчет тем он "привередливее" (ну совсем как девушки!), и тем меньше шансов на то, что он подойдет именно к Вашей конфигурации. Это я Вам как людовед, душелюб и программист - со всей ответственностью заявляю. ещё раз. по слогам. "пригласите специалиста".
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!