HOWTO: Остатки в форме регистрации продаж в УТ10

29.11.16

Разработка - Механизмы типовых конфигураций

Как заставить УТ10 показывать остатки в форме регистрации продаж (Документ ЧекККМ)

Почему то такая потребность довольно часто возникала у всех, кто использует интерфейс кассира в УТ10. В Рознице 2.0, например, такая возможность уже есть.

Для того, чтобы показывались остатки, достаточно добавить текстовое поле Остаток и назначить следующую процедуру для обработчика ПриПолученииДанных табличного поля Товары в ФормеРегистрацииПродаж ЧекаККМ

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

    Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        
        СтруктураПоиска.Вставить("Номенклатура"  , ОформлениеСтроки.ДанныеСтроки.Номенклатура);
        СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", ОформлениеСтроки.ДанныеСтроки.ХарактеристикаНоменклатуры);
        СтруктураПоиска.Вставить("Склад"         , Склад);
        
        МассивСтрок = ТаблицаОстатков.НайтиСтроки(СтруктураПоиска);
        Остаток=0;
        Если МассивСтрок.Количество() > 0  Тогда
              Остаток = МассивСтрок[0].КоличествоОстаток;
        КонецЕсли;
        ОформлениеСтроки.Ячейки.Остаток.УстановитьТекст(Остаток);

    КонецЦикла;

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

Также процедура должна работать с минимальной адаптацией в любых других формах документов, например в форме счета и т.п, но согласно рекомендациям и стандартам разработки показывать остатки нужно в подборе номенклатуры или проверять их достаточность при проведении.

Вступайте в нашу телеграмм-группу Инфостарт

Остатки форма регистрации продаж в УТ10

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Механизмы типовых конфигураций Программист 1С:Предприятие 8 Абонемент ($m)

Использование переопределяемых процедур в 1С на управляемых формах.

1 стартмани

01.09.2026    3359    waider    3    

15

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист 1С 8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данное расширение — это механизм, сделанный при помощи двух модулей из БСП (3.1.11.415), который позволяет динамически добавлять команды (кнопки и не только при желании) на формы управляемого приложения без изменения конфигурации. На примере данного механизма удобно рассмотреть некоторые возможности для расширения функционала объектов, которые подключены к механизму библиотеки стандартных подсистем.

1 стартмани

20.03.2026    4546    InFlach    0    

5

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Интервальные регистры в 1С:ЗУП 3.1 заменяют тяжелые срезы последних, ускоряя отчеты по кадровым данным через интервалы ДатаНачала–ДатаОкончания. Разбираем отличия, примеры кода, плюсы и способы синхронизации.

12.03.2026    6232    AlexeyPROSTO_1C    5    

21

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Как в ЗУП работает механизм расстановки времени в регистрах сведений с помощью подписки на события?Рассматривается логика сдвигов для разных типов документов (прием, увольнение, отпуск) и дается инструкция по подключению нового регистра к этому механизму.

03.03.2026    3996    YA_1100893639    1    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Automatik 1010 30.11.16 12:25 Сейчас в теме
Аватарку смени. Куда смотрит администрация?
2. Tarlich 89 30.11.16 15:58 Сейчас в теме
Данный способ был описан Радченко в 2009 г -))
3. kauksi 217 30.11.16 16:48 Сейчас в теме
(2) И что же 1С его не реализовала в УТ10 и УПП?, даже в рознице 1.0 по моему не было, добавили только в 2.0
4. gzharkoj 596 02.12.16 09:51 Сейчас в теме
Видно, что вы хотели сделать все красиво, поэтому не сочтите за придирки:
1. Условие на услуги лишнее, ну а если все же добавляете, то добавляйте его в отборы виртуальной таблицы, чтобы уж все правильно было.
2. В структуре поиска склад не нужен, он же у вас и так один, соответственно и в выборке во втором запросе не нужен.

И момент для раздумий, если будете добавлять позиции, то каждый раз запрос по остаткам будет делаться по всем позициям видимым на экране, даже по тем, по которым уже остаток вычислен, такие позиции можно исключить. Если конечно, кассирам не надо в реальном времени видеть изменения остатка в своем чеке.
5. as 08.12.16 10:25 Сейчас в теме
1. В отбор виртуальной таблицы нельзя добавлять, т.к. это замедлит исполнение запроса(построение виртуальной таблицы)
6. Urgash 14.08.19 05:06 Сейчас в теме
В процедуру ТоварыПриВыводеСтроки достаточно добавить строчку:
ОформлениеСтроки.Ячейки.Остаток.Значение=ДополнительныеРасчеты.ПолучитьОстатки(ДанныеСтроки.Номенклатура, ТекущаяДата(), Склад);
Само собой после добавления колонки "Остаток" в табличную часть. Работает в разы быстрее чем Ваш метод.
7. kauksi 217 14.08.19 08:37 Сейчас в теме
(6)
ПриВыводеСтроки
Этот метод вызывается при каждом обновлении формы, при каждом скроллинге табличной части, и будет работать каждый раз для КАЖДОЙ строки (т.е. куча запросов). Что при достаточно большом обьеме базы и куче пользователей приводит к дополнительной ненужной нагрузке на базу. Так что по поводу быстродействия вопрос спорный.
8. Archivar 20.03.20 18:33 Сейчас в теме
9. petrushkomaks 26.02.24 06:40 Сейчас в теме
Здравствуйте. Огромное спасибо! Применил на УТ 10.3 для "ФормыДокумента", "ФормаРегистрацииПродаж" у нас не используется. Работает отлично, но с небольшой проблемой. Если добавить позицию с нулевым остатком не первой, она подхватывает остаток предыдущей стоки. Подскажите, как это можно исправить?
Прикрепленные файлы:
10. petrushkomaks 26.02.24 07:05 Сейчас в теме
(9)нашел, исправил. Моя ошибка с процедурой все ок. Спасибо
11. YA_1518087468 22.03.24 21:43 Сейчас в теме
Подскажите пожалуйста а как сделать чтоб в чеке ккм тоже остатки отображались?
Для отправки сообщения требуется регистрация/авторизация