Списание материалов из эксплуатации с добавленного счета
Всем привет, конфа бух 3.0.88.28. Добавили свой забалансовый счет МЦ.06, на нем ведем учет номенклатуры с видом Учебная литература.
Требуется поменять проводки документа Списание материалов из эксплуатации, чтобы этот вид номенклатуры списывал со счета МЦ.06.
В обработке проведения док идет в общий модуль УчетМатериаловВЭксплуатации.СформироватьДвиженияСписаниеИнвентаряИзЭксплуатации(..)
Там дальше есть функция, которая запросом проверяет достаточно ли остатка на счете для списания.
Как придумать, как подставить туда в запрос условие, что номенклатуру с видом "Уч.литература" искать на счете МЦ.06 ?
Стандартно ставит не МЦ.04 (ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации). как сделать выбор ?
Вот текст функции:
Требуется поменять проводки документа Списание материалов из эксплуатации, чтобы этот вид номенклатуры списывал со счета МЦ.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.3 / КА 1.1 в БП 3. Переносятся документы, справочники и начальные остатки
- Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки
- Внешние печатные формы для Бухгалтерии предприятия 3.0
- Вариант учета срока полезного использования при новой системе учета спецодежды
- ФСБУ 5/2019 "Запасы". Учет малоценного оборудования и запасов. Суть изменений. Видео примеры в Бухгалтерии 3.0
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Пробую так:
Ошибка - по причине:
{(73, 4)}: Операция не разрешена в предложении "ГДЕ"
И <<?>>ВЫБОР
видимо нельзя передавать &ВидНоменклатуры.
Но как по другому? если ВидНоменклатуры тоже добавлен свой , не предопределенный
ВЫБРАТЬ
| ТаблицаМатериалы.ИмяСписка КАК ИмяСписка,
| ТаблицаМатериалы.СинонимСписка КАК СинонимСписка,
| ТаблицаМатериалы.НомерСтроки КАК НомерСтроки,
| ТаблицаМатериалы.СчетМЦ КАК СчетМЦ,
| ТаблицаМатериалы.Номенклатура КАК Номенклатура,
| ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации,
| ЕСТЬ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)}: Операция не разрешена в предложении "ГДЕ"
И <<?>>ВЫБОР
видимо нельзя передавать &ВидНоменклатуры.
Но как по другому? если ВидНоменклатуры тоже добавлен свой , не предопределенный
(6) возможно.
Мне нужно реализовать выбор счета в зависимости от вида номенклатуры. не могу придумать, как обойтись без параметра здесь &СчетаУчетаИнвентаряЗабалансовыйМЦ06, когда счет не предопределенный, а использовать НайтиПоКоду() в запросе нельзя. Подскажи, пожалуйста
Мне нужно реализовать выбор счета в зависимости от вида номенклатуры. не могу придумать, как обойтись без параметра здесь &СчетаУчетаИнвентаряЗабалансовыйМЦ06, когда счет не предопределенный, а использовать НайтиПоКоду() в запросе нельзя. Подскажи, пожалуйста
(6) думаю, что надо не этот запрос править, а при формировании &ТаблицаМатериалы использовать нужный счет.
Формирование таблицы здесь, но как туда подставить нужный счет?
Формирование таблицы здесь, но как туда подставить нужный счет?
Процедура СформироватьДвиженияСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты, Движения, Отказ) Экспорт
Если Не ЗначениеЗаполнено(ТаблицаМатериалы) Тогда
Возврат;
КонецЕсли;
Параметры = ПодготовитьПараметрыСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты);
Реквизиты = Параметры.Реквизиты[0];
// ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ИНФОРМАЦИОННОЙ БАЗЫ
ТаблицаСписанныйИнвентарь = ПодготовитьТаблицуСписанныйИзЭксплуатацииИнвентарь(
Параметры.ТаблицаМатериалы, Реквизиты, Отказ);
// ФОРМИРОВАНИЕ ДВИЖЕНИЙ
СформироватьПроводкиСписаниеМатериаловИзЭксплуатацииМЦ(
ТаблицаСписанныйИнвентарь, Реквизиты, Движения, Отказ);
КонецПроцедуры
Функция ПодготовитьПараметрыСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты)
Параметры = Новый Структура;
// Подготовка таблицы Параметры.ТаблицаМатериалы
СписокОбязательныхКолонок = ""
+ "ИмяСписка," // <Строка,0> - имя списка в документе
+ "СинонимСписка," // <Строка,0> - синоним списка
+ "НомерСтроки," // <Число> - номер строки в списке
+ "СчетМЦ," // <ПланСчетовСсылка.Хозрасчетный> - забалансовый счет учета материалов в эксплуатации (МЦ)
+ "Номенклатура," // <СправочникСсылка.Номенклатура> - номенклатура материалов в эксплуатации
+ "ПартияМатериаловВЭксплуатации," // <Характеристика.ВидыСубконтоХозрасчетные> - партия материалов в эксплуатации
+ "ФизЛицо," // <СправочникСсылка.ФизическиеЛица> - материально-ответственное лицо
+ "КоличествоМЦ," // <Число,15,3> - количество материалов для погашения стоимости
+ "Содержание"; // <Строка,150> - содержание проводки
Параметры.Вставить("ТаблицаМатериалы",
ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(ТаблицаМатериалы, СписокОбязательныхКолонок));
// Подготовка таблицы Параметры.Реквизиты
СписокОбязательныхКолонок = ""
+ "Регистратор," // <ДокументСсылка.*> - документ-регистратор движений
+ "Период," // <Дата> - период движений - дата документа
+ "Организация," // <СправочникСсылка.Организации>
+ "Подразделение"; // <Ссылка на справочник подразделений> - производственное подразделение организации
Параметры.Вставить("Реквизиты",
ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(ТаблицаРеквизиты, СписокОбязательныхКолонок));
Возврат Параметры;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот