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