|
Инвентаризация по МЦ | ☑ | ||
---|---|---|---|---|
0
ПростоПрепод1С
19.02.16
✎
11:52
|
Добрый день, уважаемые форумчане.
Проблема известная еще с седых времен, но тем не менее... Необходимо чтобы в Бух 3 в документе "Инвентаризация товаров" выводились остатки по счетам МЦ. Я знаю, что искать надо в процедуре модуля объекта "ЗаполнитьПоОстаткамНаСкладах". Я даже закомментил уже строку с включением счета МЦ в список неразрешенных. Я понимаю, что проблема в том, что на счете МЦ нет субконто "склады" и поэтому программа остатки по нему и не выдает. По моей идее надо чтобы программа не проверяла перед заполнением наличие субконто "склады" на счетах по которым выводятся остатки, но как это сделать? Понимаю, что можно добавить субконто "склады" на счете МЦ вместо одного из имеющихся ручками в режиме "Предприятие", но это не вариант. Привожу код процедуры "ЗаполнитьПоОстаткамНаСкладах": Процедура ЗаполнитьПоОстаткамНаСкладе() Экспорт СписокСкладов = Новый Массив; Если ЗначениеЗаполнено(Склад) Тогда СписокСкладов.Добавить(Склад); Иначе ЗапросПоСкладам = Новый Запрос; ЗапросПоСкладам.УстановитьПараметр("МОЛ", ОтветственноеЛицо); ЗапросПоСкладам.УстановитьПараметр("КонецПериода", Дата); ЗапросПоСкладам.Текст = "ВЫБРАТЬ | ОтветственныеЛицаСрезПоследних.СтруктурнаяЕдиница |ИЗ | РегистрСведений.ОтветственныеЛица.СрезПоследних(&КонецПериода, ФизическоеЛицо = &МОЛ) КАК ОтветственныеЛицаСрезПоследних | |СГРУППИРОВАТЬ ПО | ОтветственныеЛицаСрезПоследних.СтруктурнаяЕдиница"; Выборка = ЗапросПоСкладам.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.СтруктурнаяЕдиница = NULL Тогда Продолжить; КонецЕсли; СписокСкладов.Добавить(Выборка.СтруктурнаяЕдиница); КонецЦикла; КонецЕсли; ДанныеСклада = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Склад, "ТипСклада, ТипЦенРозничнойТорговли"); //Определим настройки аналитического учета БУ = ПланыСчетов.Хозрасчетный.Товары.ПолучитьОбъект(); ВестиСкладскойУчетБУ = БУ.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады, "ВидСубконто") <> Неопределено; ВестиСуммовойУчетПоСкладамБУ = ?(ВестиСкладскойУчетБУ, БУ.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады, "ВидСубконто").Суммовой, Ложь); ТекстУсловияК = ?(ВестиСкладскойУчетБУ, "И Субконто2 В (&Склад)", ""); ТекстУсловияС = ?(ВестиСуммовойУчетПоСкладамБУ, "И Субконто2 В (&Склад)", ""); ПорядокСубконтоК = Новый Массив(); ПорядокСубконтоК.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); Если ВестиСкладскойУчетБУ Тогда ПорядокСубконтоК.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады); КонецЕсли; ПорядокСубконтоС = Новый Массив(); ПорядокСубконтоС.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); Если ВестиСуммовойУчетПоСкладамБУ Тогда ПорядокСубконтоС.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады); КонецЕсли; ПорядокСубконтоМОЛ = Новый Массив(); ПорядокСубконтоМОЛ.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); ПорядокСубконтоМОЛ.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций); МассивИсклСчетов = Новый Массив(); //МассивИсклСчетов.Добавить(ПланыСчетов.Хозрасчетный.МатериальныеЦенностиВЭксплуатации); МассивИсклСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахНТТ); МассивИсклСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТорговаяНаценкаАТТ); МассивИсклСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТорговаяНаценкаНТТ); МассивИсклСчетов.Добавить(ПланыСчетов.Хозрасчетный.ГТД); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Склад", СписокСкладов); Запрос.УстановитьПараметр("МОЛ", ОтветственноеЛицо); Запрос.УстановитьПараметр("КонецПериода", Дата); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ВидСубконто", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады); Запрос.УстановитьПараметр("ПорядокСубконтоК", ПорядокСубконтоК); Запрос.УстановитьПараметр("ПорядокСубконтоС", ПорядокСубконтоС); Запрос.УстановитьПараметр("ПорядокСубконтоМОЛ", ПорядокСубконтоМОЛ); Запрос.УстановитьПараметр("ИсклСчета", МассивИсклСчетов); ТекстЗапросаИнвентаризация = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК Счет |ПОМЕСТИТЬ ВТ_ИсклСчета |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Ссылка В ИЕРАРХИИ(&ИсклСчета) | |ИНДЕКСИРОВАТЬ ПО | Счет |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХозрасчетныйОстаткиК.Счет, | ХозрасчетныйОстаткиК.Субконто1, | ХозрасчетныйОстаткиК.КоличествоОстаток |ПОМЕСТИТЬ ХозрасчетныйОстаткиК |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, , &ПорядокСубконтоК, Организация В (&Организация) " + ТекстУсловияК + ") КАК ХозрасчетныйОстаткиК |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХозрасчетныйОстаткиС.Счет, | ХозрасчетныйОстаткиС.Субконто1, | ХозрасчетныйОстаткиС.СуммаОстаток, | ХозрасчетныйОстаткиС.КоличествоОстаток |ПОМЕСТИТЬ ХозрасчетныйОстаткиС |ИЗ |РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, , &ПорядокСубконтоС, Организация В (&Организация) " + ТекстУсловияС + ") КАК ХозрасчетныйОстаткиС |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХозрасчетныйОстаткиК.Счет КАК Счет, | ХозрасчетныйОстаткиК.Счет.Порядок КАК Порядок, | ХозрасчетныйОстаткиК.Субконто1 КАК Номенклатура, | ХозрасчетныйОстаткиК.Субконто1.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ЕСТЬNULL(ХозрасчетныйОстаткиС.СуммаОстаток, 0) КАК СуммаВсего, | ЕСТЬNULL(ХозрасчетныйОстаткиС.КоличествоОстаток, 0) КАК КоличествоВсего, | ЕСТЬNULL(ХозрасчетныйОстаткиК.КоличествоОстаток, 0) КАК Количество |ИЗ | ХозрасчетныйОстаткиК КАК ХозрасчетныйОстаткиК | ЛЕВОЕ СОЕДИНЕНИЕ ХозрасчетныйОстаткиС КАК ХозрасчетныйОстаткиС | ПО ХозрасчетныйОстаткиК.Счет = ХозрасчетныйОстаткиС.Счет | И ХозрасчетныйОстаткиК.Субконто1 = ХозрасчетныйОстаткиС.Субконто1 |ГДЕ | НЕ ХозрасчетныйОстаткиК.Счет В | (ВЫБРАТЬ | ВТ_ИсклСчета.Счет | ИЗ | ВТ_ИсклСчета)"; Если НЕ ЗначениеЗаполнено(Склад) И ЗначениеЗаполнено(ОтветственноеЛицо) Тогда ТекстЗапросаИнвентаризация = ТекстЗапросаИнвентаризация + " | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ХозрасчетныйОстатки.Счет, | ХозрасчетныйОстатки.Счет.Порядок, | ХозрасчетныйОстатки.Субконто1, | ХозрасчетныйОстатки.Субконто1.ЕдиницаИзмерения, | ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстаток, 0), | ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0), | ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, , &ПорядокСубконтоМОЛ, Организация В (&Организация) И Субконто2 В (&МОЛ)) КАК ХозрасчетныйОстатки | |ГДЕ | НЕ (ХозрасчетныйОстатки.Счет В (ВЫБРАТЬ | ВТ_ИсклСчета.Счет | ИЗ | ВТ_ИсклСчета)) |"; КонецЕсли; ТекстЗапросаИнвентаризация = ТекстЗапросаИнвентаризация + " | |УПОРЯДОЧИТЬ ПО | Порядок"; Запрос.Текст = ТекстЗапросаИнвентаризация; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Количество <= 0 Тогда Продолжить; КонецЕсли; СтрокаТабличнойЧасти = Товары.Добавить(); СтрокаТабличнойЧасти.Номенклатура = Выборка.Номенклатура; СтрокаТабличнойЧасти.Количество = Выборка.Количество; СтрокаТабличнойЧасти.СчетУчета = Выборка.Счет; СтрокаТабличнойЧасти.КоличествоУчет = СтрокаТабличнойЧасти.Количество; Цена = ?(Выборка.КоличествоВсего = 0, 0, Выборка.СуммаВсего / Выборка.КоличествоВсего); СтрокаТабличнойЧасти.СуммаУчет = Цена * Выборка.Количество; СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.СуммаУчет; СтрокаТабличнойЧасти.Цена = Цена; Если ДанныеСклада.ТипСклада = Перечисления.ТипыСкладов.НеавтоматизированнаяТорговаяТочка Тогда СтрокаТабличнойЧасти.ЦенаВРознице = Ценообразование.ПолучитьЦенуНоменклатуры(СтрокаТабличнойЧасти.Номенклатура, ДанныеСклада.ТипЦенРозничнойТорговли, Дата, Константы.ВалютаРегламентированногоУчета.Получить(), 1, 1); КонецЕсли; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |