Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Отображение остатка по товару в чеке ККМ "на лету" , управляемые формы, УНФ 1.4          
bobr_dobr Подменю пользователя
сообщение 20.03.17, 15:46
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго дня, вопрос по платформе 8.3.5.1443 управляемые формы, конфигурация Управление небольшой фирмой для Украины, редакция 1.4.
Возникла необходимость сделать так, чтобы кассир видел остатки по номенклатуре на форме чека ККМ во время ее добавления (т.е. вместе с единицей измерения и ценой, которые заполняются из события ПриИзменении), потому что его не устраивает, когда он наполняет чек несколькими наименованиями, а потом чек не проводится, если есть нехватка на складе.
Контроль отрицательных остатков отключать не хотят.
В модуль формы документа событие ПриИзменении добавил

СтрокаТабличнойЧасти.Остаток =ОбщегоНазначения.РассчитатьОстаток(Объект.Организация,СтрокаТабличнойЧасти.Номенклатура,Объект.Дата);


в ОбщегоНазначенияКлиентСервер

&НаСервере

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


Отладку запускаю в толстом клиенте, но в результате запроса в табло не цифры, а то, что на скрине.

В консоли запросов все нормально, получаю остаток и остальные данные запроса.
Просьба подсказать, что не так сделал, ибо давно уже не ковырял конфигурации, тем более управляемые формы. А может вообще эта реализация кривая и есть более гуманные способы upset.gif

Vofka Подменю пользователя
сообщение 20.03.17, 15:55
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

В вашем случае нужно смотреть либо переменную а, либо нужно открыть выборку по результату запроса:

Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
   Сообщить(Выборка.Остаток);
КонецЦикла;


Если же вы уверены, что в результате запроса будет максимум 1 строка, то можно так:
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
   Сообщить(Выборка.Остаток);
Иначе
   Сообщить("Остатков нету");
КонецЕсли;

Спасибо сказали: bobr_dobr,

logist Подменю пользователя
сообщение 20.03.17, 16:10
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Ваша функция должна быть такой:
Функция РассчитатьОстаток(Организация,Номенклатура,Дата) Экспорт
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    ЗапасыОстатки.Организация,
    |    ЗапасыОстатки.Номенклатура,
    |    ЕСТЬNULL(ЗапасыОстатки.КоличествоОстаток, 0) КАК Остаток
    |ИЗ
    |    РегистрНакопления.Запасы.Остатки(
    |            &Дата,
    |            &Номенклатура = Номенклатура
    |                И &Организация = Организация) КАК ЗапасыОстатки"
    );
    Запрос.УстановитьПараметр("Дата",            Дата);
    Запрос.УстановитьПараметр("Номенклатура",    Номенклатура);
    Запрос.УстановитьПараметр("Организация",    Организация);
    Выборка = Запрос.Выполнить().Выбрать();
    Возврат ?(Выборка.Следующий(),Выборка.Остаток,0);  
  КонецФункции


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: bobr_dobr,

bobr_dobr Подменю пользователя
сообщение 20.03.17, 16:38
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Vofka , logist, Ребят, огромное вам спасибо, крепкого здоровья вам smile.gif. Про параметры запроса забыл, каюсь, сейчас все заработало)

bobr_dobr Подменю пользователя
сообщение 22.03.17, 12:39
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Есть небольшие доработки. Отладку я запускал в толстом клиенте, а на рабочей базе запускается тонкий, код функции перенес в модуль ОбщегоНазначенияВызовСервера, и запрос должен брать остатки из регистра ЗапасыНаСкладах. Тогда в чеках ККМ будет отображаться актуальный остаток после каждого пробитого чека.

logist Подменю пользователя
сообщение 22.03.17, 13:19
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(bobr_dobr @ 22.03.17, 12:39) *
код функции перенес в модуль

Зачем вообще использовали общие модули, это же функция для одной формы, её можно было смело разместить в той же форме, предварив &НаСервереБезКонтекста


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 22.03.17, 13:48
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(logist @ 22.03.17, 13:19) *
это же функция для одной формы

Сейчас. А завтра, послезавтра...?

bobr_dobr Подменю пользователя
сообщение 22.03.17, 15:32
Сообщение #8

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 13:19 * ,
Я, к сожалению, уже не помню все эти тонкости, поэтому влепил в общий модуль. Освежал в памяти остатки знаний в процессе написания этой проверки smile.gif Ее действительно можно было разместить в форму, это не настолько крупная наработка и она только для чека ККМ делалась. Более широко используемые, универсальные, как говорил выше Vofka, уже лучше в общие модули добавлять. Еще раз благодарен вам за советы и поправки.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 10:38
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!