Ошибка в номенклатуре нет на складе

0 / 0 / 0

Регистрация: 03.02.2014

Сообщений: 103

1

При нехватке товара на складе выдавать ошибку

24.10.2019, 08:42. Показов 13164. Ответов 29


Студворк — интернет-сервис помощи студентам

Только учусь 1с, если окажется что это делается за 2 клика, не пинайте. Есть приходная, расходная накладная. Справочник склад, регистр накопления остатки материалов. Как можно реализовать запрет на проведение расходной накладной при нехватке товара на складе? Нужно выдать кол-во нехватки и не позволить провести документ

Миниатюры

При нехватке товара на складе выдавать ошибку
 



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

24.10.2019, 08:44

2

TaAccTikk, ну в 2 клика сделать не получится.
Вам нужно в процедуре проведения сделать проверку. Запросом получить остатки товара по складу и сверить их с количеством которое хотите списать. Потом принимать решение, проводить документ или нет.



0



0 / 0 / 0

Регистрация: 03.02.2014

Сообщений: 103

24.10.2019, 08:46

 [ТС]

3

Да, это я понимаю. Проггерское мышление присутствует, можешь накидать примерный код?



0



dggrom

198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

24.10.2019, 08:52

4

Цитата
Сообщение от TaAccTikk
Посмотреть сообщение

Проггерское мышление присутствует

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

1C
1
2
3
4
5
6
7
8
9
10
11
12
Запрос = новый Запрос("ТутКонструкторомСамПостроишьЗапрос");
РезультатЗапроса = Запрос.Выполнить.Выбрать();
 
Пока РезультатЗапроса.Следующий цикл
 Для каждого СтрокаТЧ из ТвояТабличнаяЧасть цикл
  Если РезультатЗапрос.КоличествоОстатков < СтрокаТЧ.Количество 
         И РезультатЗапрос.Номенклатура = СтрокаТЧ.Номенклатура тогда
   Сообщить("Недостаточно товара " + Строка(СтрокаТЧ.Номенклатура));
   Отказ = Истина;
   КонецЕсли;
 КонецЦикла;
КонецЦикла;

Вот пример кода, оптимизируй только под себя.



0



0 / 0 / 0

Регистрация: 03.02.2014

Сообщений: 103

24.10.2019, 09:31

 [ТС]

5

Я правильно понимаю, запрос нужно писать для регистра остатков? Смотреть на ресурс.количество <= 0?



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

24.10.2019, 09:47

6

TaAccTikk, да. Пишешь получить все остатки для твоей номенклатуры(Что бы лишнее не тянуть).
Тебе нужно сравнить, сколько сейчас на складе и сколько ты хочешь списать.

Тоесть программа говорит. По результату запроса у нас осталось 5ед Товара1, а мы хотим продать Товара1 8 штук.
Не порядок, отметить проведения.



0



TaAccTikk

0 / 0 / 0

Регистрация: 03.02.2014

Сообщений: 103

24.10.2019, 11:20

 [ТС]

7

Я не понимаю, что такое строка табличной части, это реквизиты? Прикрепил скрин, там видна конфигурация.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Запрос = новый Запрос("ВЫБРАТЬ
                          | ОстаткиМатериаловОстатки.КоличествоОстаток КАК КоличествоОстаток,
                          | РасходнаяНакладная.Материалы.(
                          |     Количество КАК Количество
                          | ) КАК Материалы
                          |ИЗ
                          | РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки,
                          | Документ.РасходнаяНакладная КАК РасходнаяНакладная
                          |ГДЕ
                          | ОстаткиМатериаловОстатки.КоличествоОстаток <= &Количество");
 
     Пока РезультатЗапроса.Следующий цикл
        Для каждого Количество из Материалы цикл
         Если РезультатЗапрос.КоличествоОстатков < СтрокаТЧ.Количество 
                И РезультатЗапрос.Номенклатура = СтрокаТЧ.Номенклатура тогда
            Сообщить("Недостаточно товара " + Строка(СтрокаТЧ.Номенклатура));
            Отказ = Истина;
            КонецЕсли;
 КонецЦикла;
КонецЦикла;

Если это строка, тогда в коде получается Количество.Количество, но очевидно что это не верно.

Миниатюры

При нехватке товара на складе выдавать ошибку
 



0



dggrom

198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

24.10.2019, 11:58

8

TaAccTikk, табличная часть это грубо говоря массив, а строкаТЧ это элемент этого массива.

Почему в запросе не сделал связь ? Добавте левое соединение к ТЧ по номенклатуре.

И вам не нужно выводить весь документ а только его ТЧ. Возьмите в запрос ТЧ из документа и регистр сведений остатков, левым соединением свяжите по номенклатуре. В параметрах укажите ссылку на ваш документ и дату среза остатков. И все.

Выведите себе поля Номенклатура, количество в ТЧ и Количество остатков.

Не по теме:

Ссылку на документ можно вызвать через ТабличнуюЧасть.Ссылка это ссылка на документ.

После чего перепишите проверку следующим образом

1C
1
2
3
4
5
6
Пока РезультатЗапроса.Следующий цикл
       Если РезультатЗапроса.КоличествоВТЧ > РезультатЗапроса.КоличествоОстатков тогда
            Сообщить("Недостаточно товара " + Строка(СтрокаТЧ.Номенклатура));
            Отказ = Истина;
       КонецЕсли;
 КонецЦикла;

И все, задача решена…



0



TaAccTikk

0 / 0 / 0

Регистрация: 03.02.2014

Сообщений: 103

24.10.2019, 12:50

 [ТС]

9

Почитал оригинальное пособие для разработчиков, сделал следующим образом. Выдает ошибку. Как может не находить таблицу, если я ее объявил «|ПОМЕСТИТЬ НоменклатураДокумента»?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    Если Режим = РежимПроведенияДокумента.Оперативный Тогда
    Запрос3 = Новый Запрос;
    Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;
    Запрос3.Текст = "ВЫБРАТЬ
                    |   ОстаткиМатериаловОстатки.Материал КАК Материал,
                    |   ОстаткиМатериаловОстатки.КоличествоОстаток КАК КоличествоОстаток
                    |ПОМЕСТИТЬ НоменклатураДокумента
                    |ИЗ
                    |   РегистрНакопления.ОстаткиМатериалов.Остатки(
                    |           ,
                    |           Материал В
                    |                   (ВЫБРАТЬ
                    |                       НоменклатураДокумента.Номенклатура
                    |                   ИЗ
                    |                       НоменклатураДокумента)
                    |               И Склад = &Склад) КАК ОстаткиМатериаловОстатки,
                    |   Документ.РасходнаяНакладная КАК РасходнаяНакладная
                    |ГДЕ
                    |   ОстаткиМатериаловОстатки.КоличествоОстаток < 0";
            Запрос3.УстановитьПараметр("Склад", Склад);
            РезультатЗапроса = Запрос3.Выполнить();
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            Сообщение = Новый СообщениеПользователю();
            Сообщение.Текст = "Не хватает " + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) +
            " единиц материала """ + ВыборкаДетальныеЗаписи.Материал + """";
            Сообщение.Сообщить();
            Отказ = Истина;
        КонецЦикла;
    КонецЕсли;

Миниатюры

При нехватке товара на складе выдавать ошибку
 



0



1190 / 729 / 211

Регистрация: 22.04.2013

Сообщений: 5,363

Записей в блоге: 1

24.10.2019, 12:55

10

Цитата
Сообщение от TaAccTikk
Посмотреть сообщение

ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура
| ИЗ
| НоменклатураДокумента

это отдельный запрос. он и правда не знает, что это такое.



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

24.10.2019, 13:01

11

Цитата
Сообщение от TaAccTikk
Посмотреть сообщение

Почитал оригинальное пособие для разработчиков

Не ври, там книг 5 наверное.

Цитата
Сообщение от TaAccTikk
Посмотреть сообщение

| ОстаткиМатериаловОстатки.Материал КАК Материал,
| ОстаткиМатериаловОстатки.КоличествоОстаток КАК КоличествоОстаток
|ПОМЕСТИТЬ НоменклатураДокумента

И зачем ты помещаешь остатки во временную таблицу под названием «НоменклатураДокумента» ? Сам себя же путаешь…



0



0 / 0 / 0

Регистрация: 03.02.2014

Сообщений: 103

24.10.2019, 13:07

 [ТС]

12

Какие 5 книг, я прочитал до 500 страницы пособие для разработчика радченко. Я не сказал что полностью изучил. Занимаюсь этим несколько дней, я реально пока плохо понимаю, делаю просто по книге. Спасибо, спрошу на других форумах.



0



1190 / 729 / 211

Регистрация: 22.04.2013

Сообщений: 5,363

Записей в блоге: 1

24.10.2019, 13:40

13

я думаю, что в данном случае не надо тебе менедер ВТ юзать
просто запрос делаешь и всё.



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

24.10.2019, 13:54

14

Цитата
Сообщение от TaAccTikk
Посмотреть сообщение

пособие для разработчика радченко

Но не официальное пособие, а Радченко.

И тебе написали как составить запрос, что не понятно спрашивай ? Ты же учешься не что бы за тебя код писали, а дали подсказку. Вот, дерзай!

Цитата
Сообщение от dggrom
Посмотреть сообщение

Возьмите в запрос ТЧ из документа и регистр сведений остатков, левым соединением свяжите по номенклатуре. В параметрах укажите ссылку на ваш документ и дату среза остатков. И все.



0



TaAccTikk

0 / 0 / 0

Регистрация: 03.02.2014

Сообщений: 103

24.10.2019, 14:09

 [ТС]

15

Левое соединение сделал. Параметры это параметры виртуальной таблицы?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Запрос = новый Запрос("ВЫБРАТЬ
                          | ОстаткиМатериаловОстатки.КоличествоОстаток КАК КоличествоОстаток,
                          | РасходнаяНакладнаяМатериалы.Количество КАК Количество
                          |ИЗ
                          | Документ.РасходнаяНакладная.Материалы КАК РасходнаяНакладнаяМатериалы
                          |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки
                          |     ПО РасходнаяНакладнаяМатериалы.Материал.ВидНоменклатуры = ОстаткиМатериаловОстатки.Материал.ВидНоменклатуры");
    РезультатЗапроса = Запрос.Выполнить.Выбрать();
    Пока РезультатЗапроса.Следующий цикл
       Если РезультатЗапроса.КоличествоВТЧ > РезультатЗапроса.КоличествоОстатков тогда
            Сообщить("Недостаточно товара " + Строка(СтрокаТЧ.Номенклатура));
            Отказ = Истина;
       КонецЕсли;
    КонецЦикла;



0



dggrom

198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

24.10.2019, 14:24

16

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Запрос = новый Запрос("ВЫБРАТЬ
                          | ОстаткиМатериаловОстатки.КоличествоОстаток КАК КоличествоОстаток,
                          | РасходнаяНакладнаяМатериалы.Количество КАК Количество,
                          | РасходнаяНакладнаяМатериалы.Материал КАК Материал
                          |ИЗ
                          | Документ.РасходнаяНакладная.Материалы КАК РасходнаяНакладнаяМатериалы
                          |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&ДатаОстатков, ) КАК ОстаткиМатериаловОстатки
                          |     ПО РасходнаяНакладнаяМатериалы.Материал = ОстаткиМатериаловОстатки.Материал
                          |ГДЕ
                          |    РасходнаяНакладнаяМатериалы.Ссылка = &СсылкаНаДокумент ");
    
    Запрос.Установитьпараметр("&ДатаОстатков", ЗапихивайДатуДокумента);
    Запрос.Установитьпараметр("&СсылкаНаДокумент", ЗапихивайСсылкуНаДокумент);
 
    РезультатЗапроса = Запрос.Выполнить.Выбрать();
    Пока РезультатЗапроса.Следующий цикл
       Если РезультатЗапроса.КоличествоВТЧ > РезультатЗапроса.КоличествоОстатков тогда
            Сообщить("Недостаточно товара " + Строка(СтрокаТЧ.Номенклатура));
            Отказ = Истина;
       КонецЕсли;
    КонецЦикла;



0



1190 / 729 / 211

Регистрация: 22.04.2013

Сообщений: 5,363

Записей в блоге: 1

24.10.2019, 14:36

17

Цитата
Сообщение от dggrom
Посмотреть сообщение

ВЫБРАТЬ
| ОстаткиМатериаловОстатки.КоличествоОстаток КАК КоличествоОстаток,
| РасходнаяНакладнаяМатериалы.Количество КАК Количество,
| РасходнаяНакладнаяМатериалы.Материал КАК Материал

далее

Цитата
Сообщение от dggrom
Посмотреть сообщение

Если РезультатЗапроса.КоличествоВТЧ

внимание вопрос — что такое колиествовтч??
ни у одного ни у второго в запросе такого поля нет. будет оно работать?



0



dggrom

198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

24.10.2019, 14:43

18

Yulunga, с мобилы пишу. Забыл что все скопировал а не только запрос….

1C
1
2
3
4
5
6
    Пока РезультатЗапроса.Следующий цикл
       Если РезультатЗапроса.Количество > РезультатЗапроса.КоличествоОстаток тогда
            Сообщить("Недостаточно товара " + Строка(СтрокаТЧ.Материал));
            Отказ = Истина;
       КонецЕсли;
    КонецЦикла;



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

25.10.2019, 02:07

19

А как же новая методика контроля остатков???

Добавлено через 1 минуту
почему ее никто не впаривает, она реально быстрее, сначла записали, потом проверили есть ли минус, отменили запись



0



TaAccTikk

0 / 0 / 0

Регистрация: 03.02.2014

Сообщений: 103

25.10.2019, 12:00

 [ТС]

20

Получается так как я нахожусь в модуле документа, здесь

Цитата
Сообщение от dggrom
Посмотреть сообщение

Запрос.Установитьпараметр(«&СсылкаНаДокумент», ЗапихивайСсылкуНаДокумент);

Нужно сделать так

1C
1
Запрос.Установитьпараметр("&СсылкаНаДокумент", Ссылка);

А как тогда сделать ссылку на дату документа

Цитата
Сообщение от dggrom
Посмотреть сообщение

Запрос.Установитьпараметр(«&ДатаОстатков», ЗапихивайДатуДокумента);

если у меня она не является реквизитом, а присваивается документу автоматически?



0



Друзья, прошу помочь!

Обновила УНФ и через неделю во время инвентаризации заметила ошибку.

В карточке товара все остатки находятся на складе без наименования и этот склад соответственно нигде не выбирается.

Если я делаю коррекцию по какой-либо номенклатуре, то новое значение остатка начинает отражаться на моем складе (с названием), а остаток на складе без названия тоже остается и в общей группе показывается уже сумма этих остатков.

Причем списание идет именно с реально склада.

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

Работать практически невозможно(

В документе поступление товаров и услуг при выборе при попытке проведения выдает ошибку мол «Запись не верна! Значение поля «Аналитика учета номенклатуры» не может быть пустым! (Регистр накопления: Себестоимость товаров; Номер строки1)»

Выбираю основной склад, проведение проходит нормально. По другим складам выводить ошибку, описанную выше. (некоторые товары проходят и по другим складам)

В номенклатуре нигде не нашел привязку к складу. В складах нигде не нашел ни списка номенклатуры, ни номенклатурной группы.

Просмотрел Регистр накопления, стоит галочка проверки на заполнение, убираю галочку, проводится нормально. Но я не считаю это решением проблемы.

Где может настраиваться привязка номенклатуры к складу?

Ошибка при вводе остатков

Автор Madyustas, 07 сен 2017, 13:00

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

Добрый день!
Подскажите пожалуйста, столкнулся с ошибкой при вводе остатков на счет 41.01.0
Не заполнена колонка «Состояние расхода» в строке 1 списка «Номенклатура на складе» — где находится данная колонка, в документе «Ввод остатков» данной колонки нет.
Конфигурация — Бухгалтерия предприятия, редакция 3.0 (3.0.51.27)
Система налогообложения — Упрощенная (доходы)


Цитата: Madyustas от 07 сен 2017, 13:00
Добрый день!
Подскажите пожалуйста, столкнулся с ошибкой при вводе остатков на счет 41.01.0

УП — с какого числа?
Ввод остатков — какого числа?
На склад — какого типа?
«счет 41.01.0» — что это за счет такой?

Выложите скриншоты



Теги:

  • Форум База

  • ОБЩИЙ ТЕМАТИЧЕСКИЙ ФОРУМ 1С

  • Общие вопросы по бухгалтерии

  • Ошибка при вводе остатков

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

Рейтинг@Mail.ru

Rambler's Top100

Поиск

Надо проверить остатки по всем регистрам складского учета. Например, Партии товаров на складах, Товары организации, Товары на складах.

Часто данная ошибка появляется из-за того, что:

  • документ поступления запаса не внесён в базу;
  • указана не та организация, подразделение, склад, заказ;
  • ошибочно выбрана не та номенклатура;
  • поступление позже, чем расхода (разница может быть не только в датах, когда вы купили 30.01.2021, а продали 29.01.2021, но и во времени, когда вы купили 30.01.2021 в 15:00, а продали 30.01.2021 в 14.59:00;
  • нарушена последовательности проведения (когда все предыдущие условия соблюдены, но документ расхода просто проведен раньше, чем документ поступления)

Понравилась статья? Поделить с друзьями:
  • Ошибка в номенклатуре как исправить
  • Ошибка в несогласованном приложении упражнения
  • Ошибка в начислении зарплаты срок давности
  • Ошибка в неправильном подборе слова
  • Ошибка в начислении зарплаты работнику