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