Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 июн 2021, 03:36

1c 8.3 контроль остатков

Автор Антон Худин, 27 мая 2017, 23:48

0 Пользователей и 1 гость просматривают эту тему.

Антон Худин

Имеется конфигурация с Регистром ОстаткиЕдиницКонфигурации (Номенклатура и РабочиеМеста (Ресурс количество)), документом списания оборудования. Сообственно при проведении документа пишет что не хватает товара ....."такого то", хотя у меня в табличной части 1 строка и совсем другая номенклатура  и не проводит его.


Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ОстаткиЕдиницКонфигураций Расход

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
               | СписаниеОборудованияСписание.Номенклатура,
   |    СписаниеОборудованияСписание.РабочиеМеста,
               | СУММА(СписаниеОборудованияСписание.Количество) КАК Количество
               |ИЗ
               | Документ.СписаниеОборудования.Списание КАК СписаниеОборудованияСписание
               |ГДЕ
               | СписаниеОборудованияСписание.Ссылка = &Ссылка
               |
               |СГРУППИРОВАТЬ ПО
   |СписаниеОборудованияСписание.РабочиеМеста,
               |СписаниеОборудованияСписание.Номенклатура";
       
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();

Движения.ОстаткиЕдиницКонфигураций.Записывать = Истина;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОстаткиЕдиницКонфигураций.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.РабочиеМеста = Выборка.РабочиеМеста;
Движение.Количество = Выборка.Количество;
КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

Движения.Записать();

Запрос.Текст = "ВЫБРАТЬ
               | ОстаткиЕдиницКонфигурацийОстатки.Номенклатура,
               | ОстаткиЕдиницКонфигурацийОстатки.РабочиеМеста,
               | ОстаткиЕдиницКонфигурацийОстатки.КоличествоОстаток
               |ИЗ
               | РегистрНакопления.ОстаткиЕдиницКонфигураций.Остатки КАК ОстаткиЕдиницКонфигурацийОстатки
               |ГДЕ
               | ОстаткиЕдиницКонфигурацийОстатки.КоличествоОстаток < 0";
   
Запрос.УстановитьПараметр("РабочиеМеста",Выборка.РабочиеМеста);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий()Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не хватает товара " + Выборка.Номенклатура + ", после проведения документа остаток составит " + Выборка.КоличествоОстаток;
Сообщение.Сообщить();
Отказ=Истина;

КонецЦикла;



КонецПроцедуры

вот сам код, я новичок в 1с прошу не пинать. Прошу подсказать что не так. Код пишу в модуле документа списания. Вообще у меня получается несколько складов и нужно с них группировать данные по номенклатуре по количеству и проверять.

DmitriyF

Цитата: Антон Худин от 27 мая 2017, 23:48
Имеется конфигурация с Регистром ОстаткиЕдиницКонфигурации (Номенклатура и РабочиеМеста (Ресурс количество)), документом списания оборудования. Сообственно при проведении документа пишет что не хватает товара ....."такого то", хотя у меня в табличной части 1 строка и совсем другая номенклатура  и не проводит его.


Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ОстаткиЕдиницКонфигураций Расход

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
               | СписаниеОборудованияСписание.Номенклатура,
   |    СписаниеОборудованияСписание.РабочиеМеста,
               | СУММА(СписаниеОборудованияСписание.Количество) КАК Количество
               |ИЗ
               | Документ.СписаниеОборудования.Списание КАК СписаниеОборудованияСписание
               |ГДЕ
               | СписаниеОборудованияСписание.Ссылка = &Ссылка
               |
               |СГРУППИРОВАТЬ ПО
   |СписаниеОборудованияСписание.РабочиеМеста,
               |СписаниеОборудованияСписание.Номенклатура";
       
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();

Движения.ОстаткиЕдиницКонфигураций.Записывать = Истина;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОстаткиЕдиницКонфигураций.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.РабочиеМеста = Выборка.РабочиеМеста;
Движение.Количество = Выборка.Количество;
КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

Движения.Записать();

Запрос.Текст = "ВЫБРАТЬ
               | ОстаткиЕдиницКонфигурацийОстатки.Номенклатура,
               | ОстаткиЕдиницКонфигурацийОстатки.РабочиеМеста,
               | ОстаткиЕдиницКонфигурацийОстатки.КоличествоОстаток
               |ИЗ
               | РегистрНакопления.ОстаткиЕдиницКонфигураций.Остатки КАК ОстаткиЕдиницКонфигурацийОстатки
               |ГДЕ
               | ОстаткиЕдиницКонфигурацийОстатки.КоличествоОстаток < 0";
   
Запрос.УстановитьПараметр("РабочиеМеста",Выборка.РабочиеМеста);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий()Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не хватает товара " + Выборка.Номенклатура + ", после проведения документа остаток составит " + Выборка.КоличествоОстаток;
Сообщение.Сообщить();
Отказ=Истина;

КонецЦикла;



КонецПроцедуры

вот сам код, я новичок в 1с прошу не пинать. Прошу подсказать что не так. Код пишу в модуле документа списания. Вообще у меня получается несколько складов и нужно с них группировать данные по номенклатуре по количеству и проверять.
Во втором запросе надо ограничение устанавливать на текущий документ, а не по всему регистру выбирать.

Теги: остатки 1С8.3 

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск