|
Списание материалов из эксплуатации с добавленного счета | ☑ | ||
---|---|---|---|---|
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) расскажи, пожалуйста, поподробнее, как это проверить?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |