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