|
Обратиться в запросе к реквизиту справочника | ☑ | ||
---|---|---|---|---|
0
ivangrant
26.03.19
✎
08:01
|
Как обратиться в запросе к реквизиту справочника, где реквизит справочника - это перечисления?
Должен получится процесс записи в регистр бухглатерии в зависимости от вариант реквизита справочника. Учсловно: если это комплект, значит запись будет по одной проводке на счет "Товары", если это деталь, то запись должна пойти по другой проводке на счёт "Материалы", Чего я "наколдовал" (документ РасходнаяНакладная): _______ Процедура ОбработкаПроведения(Отказ, Режим) Движения.Управленческий.Записывать = Истина; Движения.Управленческий.Записать(); //Блокировка = Новый БлокировкаДанных; //ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах"); //ЭлементБлокировки.УстановитьЗначение("Качество", Справочники.Качество.НайтиПоКоду("1")); //ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; //ЭлементБлокировки.ИсточникДанных = ДокументОбъект.ВозвратнаяТара; //ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура"); //ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Склад", "Склад"); //Блокировка.Заблокировать(); //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Свойство КАК Свойство, | РасходнаяНакладная.Склад, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК КоличествоДок, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК СуммаДок, | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.ВидНоменклатуры |ПОМЕСТИТЬ Документ_ТЧ |ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная | ПО РасходнаяНакладнаяСписокНоменклатуры.Ссылка = РасходнаяНакладная.Ссылка |ГДЕ | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Свойство, | РасходнаяНакладная.Склад, | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.ВидНоменклатуры | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Свойство |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Документ_ТЧ.Номенклатура, | Документ_ТЧ.Свойство, | Документ_ТЧ.Склад, | Документ_ТЧ.КоличествоДок, | Документ_ТЧ.СуммаДок, | УправленческийОборотыТовары.СуммаОборотДт КАК СуммаОборотДтТовары, | УправленческийОборотыТовары.КоличествоОборотДт КАК КоличествоОборотДтТовары, | ВЫБОР | КОГДА УправленческийОборотыТовары.КоличествоОборотДт = 0 | ТОГДА 0 | ИНАЧЕ УправленческийОборотыТовары.СуммаОборотДт / УправленческийОборотыТовары.КоличествоОборотДт * УправленческийОборотыТовары.КоличествоОборотКт | КОНЕЦ КАК СуммаОборотКтФормула, | УправленческийОборотыМатериалы.СуммаОборотДт КАК СуммаОборотДтМатериалы, | УправленческийОборотыМатериалы.КоличествоОборотДт КАК КоличествоОборотДтматериалы, | ВЫБОР | КОГДА Документ_ТЧ.Номенклатура.ВидНоменклатуры = ""Товары"" | ТОГДА УправленческийОборотыТовары.СуммаОборотДт | ИНАЧЕ УправленческийОборотыМатериалы.СуммаОборотДт | КОНЕЦ КАК СуммаОборотДтФормула, | ВЫБОР | КОГДА Документ_ТЧ.Номенклатура.ВидНоменклатуры = ""Товары"" | ТОГДА УправленческийОборотыТовары.КоличествоОборотДт | ИНАЧЕ УправленческийОборотыМатериалы.КоличествоОборотДт | КОНЕЦ КАК КоличествоОборотДтФормула |ИЗ | Документ_ТЧ КАК Документ_ТЧ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Обороты( | , | , | , | Счет = &Товары, | &ВидыСубконто, | (Субконто1, Субконто2) В | (ВЫБРАТЬ | Документ_ТЧ.Номенклатура, | Документ_ТЧ.Свойство | ИЗ | Документ_ТЧ КАК Документ_ТЧ), | , | ) КАК УправленческийОборотыТовары | ПО Документ_ТЧ.Номенклатура = УправленческийОборотыТовары.Субконто1 | И Документ_ТЧ.Свойство = УправленческийОборотыТовары.Субконто2, | РегистрБухгалтерии.Управленческий.Обороты( | , | , | , | Счет = &Материалы, | &ВидыСубконто, | (Субконто1, Субконто2) В | (ВЫБРАТЬ | Документ_ТЧ.Номенклатура, | Документ_ТЧ.Свойство | ИЗ | Документ_ТЧ КАК Документ_ТЧ), | , | ) КАК УправленческийОборотыМатериалы"; ВидыСубконто = Новый Массив; ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура); ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.СвойствоТовара); ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Склад); Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Товары", ПланыСчетов.Управленческий.Товары); Запрос.УстановитьПараметр("Материалы", ПланыСчетов.Управленческий.Материалы); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Нехватка = ВыборкаДетальныеЗаписи.КоличествоДок - ВыборкаДетальныеЗаписи.КоличествоОборотДт; Если Нехватка > 0 Тогда Отказ = Истина; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Недостаточно " +ВыборкаДетальныеЗаписи.НоменклатураПред+" в количестве "+Нехватка; Сообщение.Сообщить(); КонецЕсли; Если НЕ Отказ Тогда // регистр Управленческий Движение = Движения.Управленческий.Добавить(); Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки; ЗначениеПеречисления = Перечисления.ВидыНоменклатуры.Комплектующие; Если ВыборкаДетальныеЗаписи.Номенклатура.ВидНоменклатуры = ЗначениеПеречисления Тогда Движение.СчетКт = ПланыСчетов.Управленческий.Материалы; Иначе Движение.СчетКт = ПланыСчетов.Управленческий.Товары; КонецЕсли; Движение.Период = Дата; Движение.КоличествоКт = ВыборкаДетальныеЗаписи.КоличествоДок; Себестоимость = ?(Движение.КоличествоКт = ВыборкаДетальныеЗаписи.КоличествоОборотДт, ВыборкаДетальныеЗаписи.СуммаОборотДт, ВыборкаДетальныеЗаписи.СуммаОборотДт / ВыборкаДетальныеЗаписи.КоличествоОборотДт*Движение.КоличествоКт); Движение.Сумма = Себестоимость; Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаДетальныеЗаписи.Субконто1; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаДетальныеЗаписи.Субконто1; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.СвойствоТовара] = ВыборкаДетальныеЗаписи.Субконто2; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Склад] = ВыборкаДетальныеЗаписи.Субконто3; // регистр Управленческий Движение = Движения.Управленческий.Добавить(); Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели; Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки; Движение.Период = Дата; Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаДок; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаДетальныеЗаписи.Субконто1; КонецЕсли; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры _________ Не могу в запросе получить значение реквизита. Как это можно сделать? |
|||
1
catena
26.03.19
✎
08:34
|
КОГДА Документ_ТЧ.Номенклатура.ВидНоменклатуры = Значение(Перечисление.ВидыНоменклатуры.Товары)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |