|   |   | 
| 
 | Списание материалов из эксплуатации с добавленного счета | ☑ | ||
|---|---|---|---|---|
| 0
    
        Тринадцать 18.02.21✎ 13:56 | 
        Всем привет, конфа бух 3.0.88.28. Добавили свой забалансовый счет МЦ.06, на нем ведем учет номенклатуры с видом Учебная литература.
 Требуется поменять проводки документа Списание материалов из эксплуатации, чтобы этот вид номенклатуры списывал со счета МЦ.06. В обработке проведения док идет в общий модуль УчетМатериаловВЭксплуатации.СформироватьДвиженияСписаниеИнвентаряИзЭксплуатации(..) Там дальше есть функция, которая запросом проверяет достаточно ли остатка на счете для списания. Как придумать, как подставить туда в запрос условие, что номенклатуру с видом "Уч.литература" искать на счете МЦ.06 ? Стандартно ставит не МЦ.04 (ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации). как сделать выбор ? Вот текст функции: Функция ПодготовитьТаблицуСписанныйИзЭксплуатацииИнвентарь(ТаблицаМатериалы, Реквизиты, Отказ) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТаблицаМатериалы.ИмяСписка КАК ИмяСписка, | ТаблицаМатериалы.СинонимСписка КАК СинонимСписка, | ТаблицаМатериалы.НомерСтроки КАК НомерСтроки, | ТаблицаМатериалы.СчетМЦ КАК СчетМЦ, | ТаблицаМатериалы.Номенклатура КАК Номенклатура, | ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации, | ЕСТЬNULL(ТаблицаМатериалы.ФизЛицо, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ФизЛицо, | ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ, | ТаблицаМатериалы.Содержание КАК Содержание |ПОМЕСТИТЬ ТаблицаМатериалы |ИЗ | &ТаблицаМатериалы КАК ТаблицаМатериалы | |ИНДЕКСИРОВАТЬ ПО | СчетМЦ, | Номенклатура, | ПартияМатериаловВЭксплуатации, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаМатериалы.ИмяСписка КАК ИмяСписка, | ТаблицаМатериалы.СинонимСписка КАК СинонимСписка, | ТаблицаМатериалы.НомерСтроки КАК НомерСтроки, | ТаблицаМатериалы.СчетМЦ КАК СчетМЦ, | ТаблицаМатериалы.Номенклатура КАК Номенклатура, | ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации, | ТаблицаМатериалы.ФизЛицо КАК ФизЛицо, | &Подразделение КАК Подразделение, | ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ, | ТаблицаМатериалы.Содержание КАК Содержание, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.КоличествоОстатокДт, 0) КАК КоличествоМЦОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаОстатокДт, 0) КАК ПервоначальнаяСтоимостьКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаНУОстатокДт, 0) КАК ПервоначальнаяСтоимостьНУКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаПРОстатокДт, 0) КАК ПервоначальнаяСтоимостьПРКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаВРОстатокДт, 0) КАК ПервоначальнаяСтоимостьВРКонечныйОстаток |ИЗ | ТаблицаМатериалы КАК ТаблицаМатериалы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки( | &Период, | Счет В (&СчетаУчетаИнвентаряЗабалансовый), | &ВидыСубконтоИнвентарь, | Организация = &Организация | И (Подразделение = &Подразделение | ИЛИ Подразделение ЕСТЬ NULL)) КАК ХозрасчетныйОстаткиМЦ | ПО ТаблицаМатериалы.СчетМЦ = ХозрасчетныйОстаткиМЦ.Счет | И ТаблицаМатериалы.Номенклатура = ХозрасчетныйОстаткиМЦ.Субконто1 | И ТаблицаМатериалы.ПартияМатериаловВЭксплуатации = ХозрасчетныйОстаткиМЦ.Субконто2 | И ТаблицаМатериалы.ФизЛицо = ХозрасчетныйОстаткиМЦ.Субконто3 | |УПОРЯДОЧИТЬ ПО | ИмяСписка, | НомерСтроки"; Запрос.УстановитьПараметр("ТаблицаМатериалы", ТаблицаМатериалы); Запрос.УстановитьПараметр("Период", Новый Граница(Новый МоментВремени(Реквизиты.Период, Реквизиты.Регистратор), ВидГраницы.Исключая)); Запрос.УстановитьПараметр("Организация", Реквизиты.Организация); Запрос.УстановитьПараметр("Подразделение", Реквизиты.Подразделение); Запрос.УстановитьПараметр("СчетаУчетаИнвентаряЗабалансовый", БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации)); ВидыСубконтоИнвентарь = Новый Массив; ВидыСубконтоИнвентарь.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); ВидыСубконтоИнвентарь.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПартииМатериаловВЭксплуатации); ВидыСубконтоИнвентарь.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций); Запрос.УстановитьПараметр("ВидыСубконтоИнвентарь", ВидыСубконтоИнвентарь); ТаблицаСписанныеМатериалы = Запрос.Выполнить().Выгрузить(); ТаблицаСписанныеМатериалы.Колонки.Добавить("СуммаМЦ", ОбщегоНазначения.ОписаниеТипаЧисло(15,2)); ТаблицаСписанныеМатериалы.Колонки.Добавить("СуммаМЦНУ", ОбщегоНазначения.ОписаниеТипаЧисло(15,2)); ТаблицаСписанныеМатериалы.Колонки.Добавить("СуммаМЦПР", ОбщегоНазначения.ОписаниеТипаЧисло(15,2)); ТаблицаСписанныеМатериалы.Колонки.Добавить("СуммаМЦВР", ОбщегоНазначения.ОписаниеТипаЧисло(15,2)); Для Каждого СтрокаТаблицы Из ТаблицаСписанныеМатериалы Цикл // Проверяем, достаточный ли остаток по количеству (на забалансовом счете МЦ) Если СтрокаТаблицы.КоличествоМЦ > СтрокаТаблицы.КоличествоМЦОстаток Тогда ТекстОшибки = НСтр("ru='Указанное количество превышает остаток по счету %1. |Остаток: %2; Не хватает: %3'"); ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, СтрокаТаблицы.СчетМЦ, СтрокаТаблицы.КоличествоМЦОстаток, СтрокаТаблицы.КоличествоМЦ - СтрокаТаблицы.КоличествоМЦОстаток); ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения("Колонка", "Корректность", НСтр("ru = 'Количество'"), СтрокаТаблицы.НомерСтроки, СтрокаТаблицы.СинонимСписка, ТекстОшибки); Поле = СтрокаТаблицы.ИмяСписка + "[" + Формат(СтрокаТаблицы.НомерСтроки - 1, "ЧН=0; ЧГ=") + "].Количество"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Реквизиты.Регистратор, Поле, "Объект", Отказ); Продолжить; КонецЕсли; // Рассчитываем суммы списания ДоляСписанияМЦ = ?(СтрокаТаблицы.КоличествоМЦОстаток = 0, 0, СтрокаТаблицы.КоличествоМЦ / СтрокаТаблицы.КоличествоМЦОстаток); СтрокаТаблицы.СуммаМЦ = СтрокаТаблицы.ПервоначальнаяСтоимостьКонечныйОстаток * ДоляСписанияМЦ; СтрокаТаблицы.СуммаМЦНУ = 0; СтрокаТаблицы.СуммаМЦПР = СтрокаТаблицы.ПервоначальнаяСтоимостьПРКонечныйОстаток * ДоляСписанияМЦ; СтрокаТаблицы.СуммаМЦВР = СтрокаТаблицы.ПервоначальнаяСтоимостьВРКонечныйОстаток * ДоляСписанияМЦ; КонецЦикла; Возврат ТаблицаСписанныеМатериалы; КонецФункции | |||
| 1
    
        lubitelxml 18.02.21✎ 17:36 | 
        Доработать запрос, через ВЫБОР КОГДА использовать нужный счет, который будет передан в параметр     | |||
| 2
    
        Тринадцать 19.02.21✎ 17:12 | 
        Спасибо, пробую так. 
 Но ругается - Синтаксическая ошибка "Где" <<?>> ГДЕ Счет В (ВЫБОР КОГДА ТаблицаМатериалы.ВидНоменклатуры = &ВидНоменклатуры Что делаю не так? "ВЫБРАТЬ | ТаблицаМатериалы.ИмяСписка КАК ИмяСписка, | ТаблицаМатериалы.СинонимСписка КАК СинонимСписка, | ТаблицаМатериалы.НомерСтроки КАК НомерСтроки, | ТаблицаМатериалы.СчетМЦ КАК СчетМЦ, | ТаблицаМатериалы.Номенклатура КАК Номенклатура, | ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации, | ЕСТЬNULL(ТаблицаМатериалы.ФизЛицо, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ФизЛицо, | ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ, | ТаблицаМатериалы.Содержание КАК Содержание, | Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры |ПОМЕСТИТЬ ТаблицаМатериалы |ИЗ | &ТаблицаМатериалы КАК ТаблицаМатериалы | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура | ПО ТаблицаМатериалы.Номенклатура = Номенклатура.Наименование | |ИНДЕКСИРОВАТЬ ПО | СчетМЦ, | Номенклатура, | ПартияМатериаловВЭксплуатации, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаМатериалы.ИмяСписка КАК ИмяСписка, | ТаблицаМатериалы.СинонимСписка КАК СинонимСписка, | ТаблицаМатериалы.НомерСтроки КАК НомерСтроки, | ТаблицаМатериалы.СчетМЦ КАК СчетМЦ, | ТаблицаМатериалы.Номенклатура КАК Номенклатура, | ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации, | ТаблицаМатериалы.ФизЛицо КАК ФизЛицо, | &Подразделение КАК Подразделение, | ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ, | ТаблицаМатериалы.Содержание КАК Содержание, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.КоличествоОстатокДт, 0) КАК КоличествоМЦОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаОстатокДт, 0) КАК ПервоначальнаяСтоимостьКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаНУОстатокДт, 0) КАК ПервоначальнаяСтоимостьНУКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаПРОстатокДт, 0) КАК ПервоначальнаяСтоимостьПРКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаВРОстатокДт, 0) КАК ПервоначальнаяСтоимостьВРКонечныйОстаток, | ТаблицаМатериалы.ВидНоменклатуры КАК ВидНоменклатуры |ИЗ | ТаблицаМатериалы КАК ТаблицаМатериалы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки( | &Период, | ГДЕ Счет В (ВЫБОР КОГДА ТаблицаМатериалы.ВидНоменклатуры = &ВидНоменклатуры | ТОГДА &СчетаУчетаИнвентаряЗабалансовыйМЦ06 | ИНАЧЕ &СчетаУчетаИнвентаряЗабалансовый КОНЕЦ) | | &ВидыСубконтоИнвентарь, | Организация = &Организация | И (Подразделение = &Подразделение | ИЛИ Подразделение ЕСТЬ NULL)) КАК ХозрасчетныйОстаткиМЦ | ПО ТаблицаМатериалы.СчетМЦ = ХозрасчетныйОстаткиМЦ.Счет | И ТаблицаМатериалы.Номенклатура = ХозрасчетныйОстаткиМЦ.Субконто1 | И ТаблицаМатериалы.ПартияМатериаловВЭксплуатации = ХозрасчетныйОстаткиМЦ.Субконто2 | И ТаблицаМатериалы.ФизЛицо = ХозрасчетныйОстаткиМЦ.Субконто3 |УПОРЯДОЧИТЬ ПО | ИмяСписка, | НомерСтроки"; | |||
| 3
    
        Тринадцать 20.02.21✎ 14:10 | 
        Пробую так:
 "ВЫБРАТЬ | ТаблицаМатериалы.ИмяСписка КАК ИмяСписка, | ТаблицаМатериалы.СинонимСписка КАК СинонимСписка, | ТаблицаМатериалы.НомерСтроки КАК НомерСтроки, | ТаблицаМатериалы.СчетМЦ КАК СчетМЦ, | ТаблицаМатериалы.Номенклатура КАК Номенклатура, | ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации, | ЕСТЬNULL(ТаблицаМатериалы.ФизЛицо, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ФизЛицо, | ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ, | ТаблицаМатериалы.Содержание КАК Содержание |ПОМЕСТИТЬ ТаблицаМатериалы |ИЗ | &ТаблицаМатериалы КАК ТаблицаМатериалы | |ИНДЕКСИРОВАТЬ ПО | СчетМЦ, | Номенклатура, | ПартияМатериаловВЭксплуатации, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаМатериалы.ИмяСписка КАК ИмяСписка, | ТаблицаМатериалы.СинонимСписка КАК СинонимСписка, | ТаблицаМатериалы.НомерСтроки КАК НомерСтроки, | ТаблицаМатериалы.СчетМЦ КАК СчетМЦ, | ТаблицаМатериалы.Номенклатура КАК Номенклатура, | ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации, | ТаблицаМатериалы.ФизЛицо КАК ФизЛицо, | ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ, | ТаблицаМатериалы.Содержание КАК Содержание, | СправочникНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры |ПОМЕСТИТЬ ТаблицаМатериалы2 |ИЗ | ТаблицаМатериалы КАК ТаблицаМатериалы | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура | ПО ТаблицаМатериалы.Номенклатура = СправочникНоменклатура.Наименование |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаМатериалы2.ИмяСписка КАК ИмяСписка, | ТаблицаМатериалы2.СинонимСписка КАК СинонимСписка, | ТаблицаМатериалы2.НомерСтроки КАК НомерСтроки, | ТаблицаМатериалы2.СчетМЦ КАК СчетМЦ, | ТаблицаМатериалы2.Номенклатура КАК Номенклатура, | ТаблицаМатериалы2.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации, | ТаблицаМатериалы2.ФизЛицо КАК ФизЛицо, | &Подразделение КАК Подразделение, | ТаблицаМатериалы2.КоличествоМЦ КАК КоличествоМЦ, | ТаблицаМатериалы2.Содержание КАК Содержание, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.КоличествоОстатокДт, 0) КАК КоличествоМЦОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаОстатокДт, 0) КАК ПервоначальнаяСтоимостьКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаНУОстатокДт, 0) КАК ПервоначальнаяСтоимостьНУКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаПРОстатокДт, 0) КАК ПервоначальнаяСтоимостьПРКонечныйОстаток, | ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаВРОстатокДт, 0) КАК ПервоначальнаяСтоимостьВРКонечныйОстаток, | ТаблицаМатериалы2.ВидНоменклатуры КАК ВидНоменклатуры |ИЗ | ТаблицаМатериалы2 КАК ТаблицаМатериалы2 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки( | &Период, | , | &ВидыСубконтоИнвентарь, | Подразделение = &Подразделение | ИЛИ Подразделение ЕСТЬ NULL) КАК ХозрасчетныйОстаткиМЦ | ПО ТаблицаМатериалы2.СчетМЦ = ХозрасчетныйОстаткиМЦ.Счет | И ТаблицаМатериалы2.Номенклатура = ХозрасчетныйОстаткиМЦ.Субконто1 | И ТаблицаМатериалы2.ПартияМатериаловВЭксплуатации = ХозрасчетныйОстаткиМЦ.Субконто2 | И ТаблицаМатериалы2.ФизЛицо = ХозрасчетныйОстаткиМЦ.Субконто3 |ГДЕ | ХозрасчетныйОстаткиМЦ.Организация = &Организация | И ВЫБОР | КОГДА ХозрасчетныйОстаткиМЦ.Субконто1.ВидНоменклатуры = &ВидНоменклатуры | ТОГДА &СчетаУчетаИнвентаряЗабалансовыйМЦ06 | ИНАЧЕ &СчетаУчетаИнвентаряЗабалансовый | КОНЕЦ | |УПОРЯДОЧИТЬ ПО | ИмяСписка, | НомерСтроки"; Ошибка - по причине: {(73, 4)}: Операция не разрешена в предложении "ГДЕ" И <<?>>ВЫБОР видимо нельзя передавать &ВидНоменклатуры. Но как по другому? если ВидНоменклатуры тоже добавлен свой , не предопределенный | |||
| 4
    
        vicof 20.02.21✎ 16:20 | 
        Да тебе  этот запрос вообще не надо трогать. 
 А при формировании &ТаблицаМатериалы использовать нужный счет | |||
| 5
    
        Тринадцать 20.02.21✎ 16:37 | 
        (4) насколько я понимаю, счет передается параметром здесь-  Счет В (&СчетаУчетаИнвентаряЗабалансовый)     | |||
| 6
    
        Тринадцать 24.02.21✎ 09:50 | 
        Help     | |||
| 7
    
        ZDenis 24.02.21✎ 10:10 | 
        (6) Поменять это - 
 Запрос.УстановитьПараметр("СчетаУчетаИнвентаряЗабалансовый", БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации)); на это - МассивСчетовИнвентаря = Новый Массив; МассивСчетовИнвентаря.Добвыить(БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации)); МассивСчетовИнвентаря.Добвыить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.06")); Запрос.УстановитьПараметр("СчетаУчетаИнвентаряЗабалансовый", МассивСчетовИнвентаря); | |||
| 8
    
        Тринадцать 24.02.21✎ 11:52 | 
        (7) спасибо)
 ругается при проведении Некорректно заполнена колонка "Количество" в строке 2 списка "Инвентарь и хозяйственные принадлежности". Указанное количество превышает остаток по счету МЦ.04. Остаток: 0; Не хватает: 1 все-равно проверяет МЦ.04, а надо МЦ.06 (для конкретного вида номенклатуры) | |||
| 9
    
        ZDenis 24.02.21✎ 12:06 | 
        (8) Он не проверяет счет МЦ.04, а выводит сообщение и подставляет этот счет из таблицы "ТаблицаМатериалы", которая уже попадает в эту функцию с заполненным счетом - МЦ.04.     | |||
| 10
    
        Тринадцать 24.02.21✎ 12:28 | 
        (9) ТаблицаМатериалы формируется здесь
 Процедура СформироватьДвиженияСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты, Движения, Отказ) Экспорт Если Не ЗначениеЗаполнено(ТаблицаМатериалы) Тогда Возврат; КонецЕсли; Параметры = ПодготовитьПараметрыСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты); Реквизиты = Параметры.Реквизиты[0]; // ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ИНФОРМАЦИОННОЙ БАЗЫ ТаблицаСписанныйИнвентарь = ПодготовитьТаблицуСписанныйИзЭксплуатацииИнвентарь( Параметры.ТаблицаМатериалы, Реквизиты, Отказ); // ФОРМИРОВАНИЕ ДВИЖЕНИЙ СформироватьПроводкиСписаниеМатериаловИзЭксплуатацииМЦ( ТаблицаСписанныйИнвентарь, Реквизиты, Движения, Отказ); КонецПроцедуры Функция ПодготовитьПараметрыСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты) Параметры = Новый Структура; // Подготовка таблицы Параметры.ТаблицаМатериалы СписокОбязательныхКолонок = "" + "ИмяСписка," // <Строка,0> - имя списка в документе + "СинонимСписка," // <Строка,0> - синоним списка + "НомерСтроки," // <Число> - номер строки в списке + "СчетМЦ," // <ПланСчетовСсылка.Хозрасчетный> - забалансовый счет учета материалов в эксплуатации (МЦ) + "Номенклатура," // <СправочникСсылка.Номенклатура> - номенклатура материалов в эксплуатации + "ПартияМатериаловВЭксплуатации," // <Характеристика.ВидыСубконтоХозрасчетные> - партия материалов в эксплуатации + "ФизЛицо," // <СправочникСсылка.ФизическиеЛица> - материально-ответственное лицо + "КоличествоМЦ," // <Число,15,3> - количество материалов для погашения стоимости + "Содержание"; // <Строка,150> - содержание проводки Параметры.Вставить("ТаблицаМатериалы", ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(ТаблицаМатериалы, СписокОбязательныхКолонок)); // Подготовка таблицы Параметры.Реквизиты СписокОбязательныхКолонок = "" + "Регистратор," // <ДокументСсылка.*> - документ-регистратор движений + "Период," // <Дата> - период движений - дата документа + "Организация," // <СправочникСсылка.Организации> + "Подразделение"; // <Ссылка на справочник подразделений> - производственное подразделение организации Параметры.Вставить("Реквизиты", ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(ТаблицаРеквизиты, СписокОбязательныхКолонок)); Возврат Параметры; КонецФункции подскажи, пожалуйста, как заменить здесь счет? | |||
| 11
    
        vicof 24.02.21✎ 12:33 | 
        ПодготовитьТаблицуСписанныйИзЭксплуатацииИнвентарь сначала посмотреть     | |||
| 12
    
        Тринадцать 24.02.21✎ 12:37 | 
        (11) так она в (0)
 там и есть этот запрос | |||
| 13
    
        ZDenis 24.02.21✎ 12:39 | 
        (10) ТаблицаМатериалы формируется в документе, а ты уже функции глобального модуля показываешь     | |||
| 14
    
        ZDenis 24.02.21✎ 12:41 | 
        +13 ТекстЗапросаСписаниеИнвентаря в менеджере документа     | |||
| 15
    
        Тринадцать 24.02.21✎ 12:43 | 
        (14) да, как раз до него добралась
 Функция ТекстЗапросаСписаниеИнвентаря(НомераТаблиц) НомераТаблиц.Вставить("СписаниеИнвентаряРеквизиты", НомераТаблиц.Количество()); НомераТаблиц.Вставить("СписаниеИнвентаряТаблица", НомераТаблиц.Количество()); ТекстЗапроса = "ВЫБРАТЬ | Реквизиты.Ссылка КАК Регистратор, | Реквизиты.Дата КАК Период, | Реквизиты.Организация, | Реквизиты.ПодразделениеОрганизации КАК Подразделение |ИЗ | Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты |ГДЕ | Реквизиты.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ""ИнвентарьИХозяйственныеПринадлежности"" КАК ИмяСписка, | &СинонимИнвентарь КАК СинонимСписка, | МИНИМУМ(ТаблицаИнвентарь.НомерСтроки) КАК НомерСтроки, | ТаблицаИнвентарь.Номенклатура, | ТаблицаИнвентарь.ПартияМатериаловВЭксплуатации, | ТаблицаИнвентарь.ФизЛицо, | ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации) КАК СчетМЦ, | СУММА(ТаблицаИнвентарь.Количество) КАК КоличествоМЦ |ИЗ | Документ.СписаниеМатериаловИзЭксплуатации.ИнвентарьИХозяйственныеПринадлежности КАК ТаблицаИнвентарь | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты | ПО ТаблицаИнвентарь.Ссылка = Реквизиты.Ссылка |ГДЕ | Реквизиты.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ТаблицаИнвентарь.Номенклатура, | ТаблицаИнвентарь.ПартияМатериаловВЭксплуатации, | ТаблицаИнвентарь.ФизЛицо | |УПОРЯДОЧИТЬ ПО | ИмяСписка, | НомерСтроки"; Возврат ТекстЗапроса + ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета(); КонецФункции | |||
| 16
    
        ZDenis 24.02.21✎ 12:43 | 
        (15) Вот тут и измени запрос и вставляй в СчетМЦ нужный в зависимости от вида номенклатуры     | |||
| 17
    
        Тринадцать 24.02.21✎ 12:44 | 
        там получается тоже фиксированное значение 
 ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации) КАК СчетМЦ получается, менять надо здесь? добавить условие ? | |||
| 18
    
        vicof 24.02.21✎ 12:48 | 
        (17) Ты там кем работаешь, бухгалтером?
 ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ | |||
| 19
    
        Тринадцать 24.02.21✎ 13:03 | 
        (18) начинающим программистом)) 
 получилось! всем огромное спасибо!!! Подскажите еще, пожалуйста, в расширении это возможно сделать? | |||
| 20
    
        vicof 24.02.21✎ 13:04 | 
        (19) Возможно     | |||
| 21
    
        Тринадцать 25.02.21✎ 13:08 | 
        Ребята, подскажите еще, пожалуйста, добавляю теперь все это в расширение. 
 При списании выходит ошибка, что не достаточно количества на счете МЦ.06, хотя оно есть. Такое ощущение, что пытается списать 2 раза в чем может быть ошибка? Вот расширение: &Вместо("ПодготовитьПараметрыПроведения") Функция ИНФ_ПодготовитьПараметрыПроведения(ДокументСсылка, Отказ) ПараметрыПроведения = Новый Структура; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Запрос.Текст = "ВЫБРАТЬ | Реквизиты.Дата КАК Период, | Реквизиты.Организация КАК Организация |ИЗ | Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты |ГДЕ | Реквизиты.Ссылка = &Ссылка"; Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Если НЕ УчетнаяПолитика.Существует(Выборка.Организация, Выборка.Период, Истина, ДокументСсылка) Тогда Отказ = Истина; Возврат ПараметрыПроведения; КонецЕсли; Запрос.УстановитьПараметр("СинонимСпецодежда", НСтр("ru = 'Спецодежда'")); Запрос.УстановитьПараметр("СинонимСпецоснастка", НСтр("ru = 'Спецоснастка'")); Запрос.УстановитьПараметр("СинонимИнвентарь", НСтр("ru = 'Инвентарь и хозяйственные принадлежности'")); //+++ Запрос.УстановитьПараметр("ВидНоменклатуры" , Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Учебная литература")); Запрос.УстановитьПараметр("СчетМЦ06", ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.06")); //--- НомераТаблиц = Новый Структура; Запрос.Текст = ТекстЗапросаСписаниеСпецодеждыСпецоснастки(НомераТаблиц) + ТекстЗапросаСписаниеИнвентаря(НомераТаблиц); Результат = Запрос.ВыполнитьПакет(); Для Каждого НомерТаблицы Из НомераТаблиц Цикл ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить()); КонецЦикла; Возврат ПараметрыПроведения; КонецФункции &Вместо("ТекстЗапросаСписаниеИнвентаря") Функция ИНФТекстЗапросаСписаниеИнвентаря(НомераТаблиц) НомераТаблиц.Вставить("СписаниеИнвентаряРеквизиты", НомераТаблиц.Количество()); НомераТаблиц.Вставить("СписаниеИнвентаряТаблица", НомераТаблиц.Количество()); ТекстЗапроса = "ВЫБРАТЬ | Реквизиты.Ссылка КАК Регистратор, | Реквизиты.Дата КАК Период, | Реквизиты.Организация, | Реквизиты.ПодразделениеОрганизации КАК Подразделение |ИЗ | Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты |ГДЕ | Реквизиты.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ""ИнвентарьИХозяйственныеПринадлежности"" КАК ИмяСписка, | &СинонимИнвентарь КАК СинонимСписка, | МИНИМУМ(ТаблицаИнвентарь.НомерСтроки) КАК НомерСтроки, | ТаблицаИнвентарь.Номенклатура, | ТаблицаИнвентарь.ПартияМатериаловВЭксплуатации, | ТаблицаИнвентарь.ФизЛицо, | ВЫБОР | КОГДА ТаблицаИнвентарь.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры | ТОГДА &СчетМЦ06 | ИНАЧЕ ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации) | КОНЕЦ КАК СчетМЦ, | СУММА(ТаблицаИнвентарь.Количество) КАК КоличествоМЦ |ИЗ | Документ.СписаниеМатериаловИзЭксплуатации.ИнвентарьИХозяйственныеПринадлежности КАК ТаблицаИнвентарь | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты | ПО ТаблицаИнвентарь.Ссылка = Реквизиты.Ссылка |ГДЕ | Реквизиты.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ТаблицаИнвентарь.Номенклатура, | ТаблицаИнвентарь.ПартияМатериаловВЭксплуатации, | ТаблицаИнвентарь.ФизЛицо | |УПОРЯДОЧИТЬ ПО | ИмяСписка, | НомерСтроки"; Возврат ТекстЗапроса + ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета(); КонецФункции | |||
| 22
    
        Тринадцать 26.02.21✎ 14:43 | 
        Не могу понять..  при проведении документа ОбработкаПроведения использует функцию 
 ПараметрыПроведения = Документы.СписаниеМатериаловИзЭксплуатации.ПодготовитьПараметрыПроведения(Ссылка, Отказ); ее я замещаю в расширении, использую &Вместо. код в посте выше. что делаю не так? если добавить в конфигурацию - работает, а в расширении нет. в чем ошибка? | |||
| 23
    
        vicof 26.02.21✎ 14:51 | 
        Отладчик забрали?     | |||
| 24
    
        Тринадцать 26.02.21✎ 15:00 | 
        (23)Отладчик работает, проходит в расширение, не заходя в типовые функции.
 Видимо, что-то делаю не так, но вот не могу понять что) | |||
| 25
    
        ZDenis 26.02.21✎ 15:02 | 
        (24) Заходит в функции не расширения при этом? Расширение6 подключено? Какие галочки стоят?(Должна - активно, безопасный и защита - сняты)     | |||
| 26
    
        vicof 26.02.21✎ 15:03 | 
        Он и не должен заходить в типовые функции, которые ты заменила в расширении     | |||
| 27
    
        Тринадцать 26.02.21✎ 15:14 | 
        (25) Расширение подключено, галочки стоят как ты пишешь. При этом в другом документе работает корректно.
 (26) Ставлю точку Останова в начале процедуры ОбработкаПроведения, в типовые функции он не заходит. только в расширение странно как-то, если тоже самое добавить в конфигурацию, то все работает | |||
| 28
    
        palsergeich 26.02.21✎ 16:14 | 
        (27) там дальше по коду - нигде в исключение не выбивает?
 Просто если есть ошибка в рантайме - оно отключается | |||
| 29
    
        Тринадцать 26.02.21✎ 16:20 | 
        (28) расскажи, пожалуйста, поподробнее, как это проверить?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |