Контроль остатков на складе перед началом операции Оплата по карте.
Доброе утро,
Нужна ваша помощь
Необходимо следующее, после нажатия кнопки Оплатить Картой в открытой форме ЧекККМ, сделать проверку остатков на складе, что бы сотрудники не могли провести операцию по Карте, в том случае если хотя бы одного товара который добавлен в документ ЧекККМ не окажется на складе.
вот код самой кнопки
Вполне устраивает поведение кнопки ОК которой проводится документ, и в случае если хотя бы одного товара нет на складе, документ не проводится, и выводится Информирующее сообщение об ошибке, но мне документ проводить не нужно, а нужно сначала перед вызовом процедуры ОплатитьКартой(СуммаОплаты) проверить остатки на складе и если Товар на складе есть, то тогда вызвать Процедуру ОплатитьКартой(СуммаОплаты), а если нет товара тогда вывести сообщение с ошибкой и информацией какого товара не хватает для продолжения.
Пожалуйста помогите, буду очень признателен =)
"1с 8.2" "Управление торговлей", редакция 10.3 (10.3.34.1)
Нужна ваша помощь
Необходимо следующее, после нажатия кнопки Оплатить Картой в открытой форме ЧекККМ, сделать проверку остатков на складе, что бы сотрудники не могли провести операцию по Карте, в том случае если хотя бы одного товара который добавлен в документ ЧекККМ не окажется на складе.
вот код самой кнопки
Процедура КоманднаяПанельТоварыОплатитьКартой(Кнопка)
ОплатитьКартой(СуммаОплаты);
КонецПроцедуры // КоманднаяПанельТоварыОплатитьКартой()
ПоказатьВполне устраивает поведение кнопки ОК которой проводится документ, и в случае если хотя бы одного товара нет на складе, документ не проводится, и выводится Информирующее сообщение об ошибке, но мне документ проводить не нужно, а нужно сначала перед вызовом процедуры ОплатитьКартой(СуммаОплаты) проверить остатки на складе и если Товар на складе есть, то тогда вызвать Процедуру ОплатитьКартой(СуммаОплаты), а если нет товара тогда вывести сообщение с ошибкой и информацией какого товара не хватает для продолжения.
Пожалуйста помогите, буду очень признателен =)
"1с 8.2" "Управление торговлей", редакция 10.3 (10.3.34.1)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Временное решение
В модуле ЧекККМ пока что сделал так...
Код кнопки изменил на
Теперь если я добавляю товар и нажимаю кнопку Оплатить картой то идёт проверка на остатки, если нет товара на складе тогда мне пишет ошибку, если товар на складе есть, тогда проводится документ и продолжается операция оплаты по карте, но вся суть в том что мне не нужно что бы документ проводился по кнопке Оплатить картой, так как если у клиента не окажется денег на карте то тогда нужно делать возврат по 1С в обход ККМ.
Люди ну помогите решить проблему, что бы был контроль остатков без проводки документа.....
В модуле ЧекККМ пока что сделал так...
Функция ПровестиДляПроверкиОстатков(Ответ, Отказ, ФормаДокумента) Экспорт
Результат = Истина;
Ответ = "";
Попытка
ФормаДокумента.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
Исключение
Ответ = "Ошибка при попытке проведения документа!";
Отказ = Истина;
Результат = Ложь;
КонецПопытки;
Возврат Результат;
КонецФункции // ПровестиИРаспечататьЧек()
ПоказатьКод кнопки изменил на
Процедура КоманднаяПанельТоварыОплатитьКартой(Кнопка)
Перем Ответ;
Перем Отказ;
Если ПровестиДляПроверкиОстатков(Ответ, Отказ, ЭтаФорма) Тогда
ОплатитьКартой(СуммаОплаты);
Иначе
Предупреждение(?(Отказ, "Возможны расхождения ИБ и ленты ФР! ", "") + Ответ);
КонецЕсли;
КонецПроцедуры // КоманднаяПанельТоварыОплатитьКартой()
ПоказатьТеперь если я добавляю товар и нажимаю кнопку Оплатить картой то идёт проверка на остатки, если нет товара на складе тогда мне пишет ошибку, если товар на складе есть, тогда проводится документ и продолжается операция оплаты по карте, но вся суть в том что мне не нужно что бы документ проводился по кнопке Оплатить картой, так как если у клиента не окажется денег на карте то тогда нужно делать возврат по 1С в обход ККМ.
Люди ну помогите решить проблему, что бы был контроль остатков без проводки документа.....
Можно Вас попросить если Вам не сложно, напишите готовый код, который будет работать и проверять остатки, честно уже несколько дней ломаю голову и никак не могу решить эту задачу, смог пока найти только один выход который описал выше..
вот пробежался по коду, нашел процедуру
УТ у меня правда старенькая 10.3.18.3 но думаю что в новой это тоже осталось. Тут весь код уже написан по сути.
P.S.: несколько дней ломаете голову над этой задачей бесплатно ради интереса?
// Процедура контролирует остаток по данному регистру по переданному документу
// и его табличной части. В случае недостатка товаров выставляется флаг отказа и
// выдается сообщение.
//
// Параметры:
// ДокументОбъект - объект проводимого документа,
// ИмяТабЧасти - строка, имя табличной части, которая проводится по регистру,
// СтруктураШапки - структура, содержащая значения "через точку" ссылочных реквизитов по шапке документа,
// ОтказПроведения - флаг отказа в проведении,
// ЗаголовокСообщения - строка, заголовок сообщения об ошибке проведения.
//
Процедура КонтрольОстатков(ДокументОбъект, ИмяТабЧасти, СтруктураШапки, ОтказПроведения, ЗаголовокСообщения) Экспорт
ПоказатьУТ у меня правда старенькая 10.3.18.3 но думаю что в новой это тоже осталось. Тут весь код уже написан по сути.
P.S.: несколько дней ломаете голову над этой задачей бесплатно ради интереса?
Вам ответили в (5) посте, достаточно вставить в вашу кнопку вызов процедуры и подхватывать результат ее работы с соответствующей обработкой.
Вы не хотите сами внести изменения в код, а хотите чтобы это сделал кто-то НО бесплатно, так не бывает. Труд должен быть оплачен. Не можете сами кодить - вызовите специалиста, котрый за умеренную плату вам это сделает.
Вы не хотите сами внести изменения в код, а хотите чтобы это сделал кто-то НО бесплатно, так не бывает. Труд должен быть оплачен. Не можете сами кодить - вызовите специалиста, котрый за умеренную плату вам это сделает.
(14)
Спасибо вам вы очень любезны, спасибо что сказали про 5 пункт.
Вы не хотите сами внести изменения в код, а хотите чтобы это сделал кто-то НО бесплатно, так не бывает..
Бывает вы прочитайте мои посты выше, просто меня попросили, я ищу решение, если Вы Желаете помочь, буду только рад.
Труд должен быть оплачен. Кто же спорит, просто я обратился на бесплатный форум за помощью, для этого он существует ))
Спасибо вам вы очень любезны, спасибо что сказали про 5 пункт.
Вы не хотите сами внести изменения в код, а хотите чтобы это сделал кто-то НО бесплатно, так не бывает..
Бывает вы прочитайте мои посты выше, просто меня попросили, я ищу решение, если Вы Желаете помочь, буду только рад.
Труд должен быть оплачен. Кто же спорит, просто я обратился на бесплатный форум за помощью, для этого он существует ))
(6) а чем временное решение не устраивает? добавить одну строчку...
Функция ПровестиДляПроверкиОстатков(Ответ, Отказ, ФормаДокумента) Экспорт
Результат = Истина;
Ответ = "";
Попытка
ФормаДокумента.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
ФормаДокумента.ЗаписатьВФорме(РежимЗаписиДокумента.ОтменаПроведения); ////////////<<<<<<<<<<<
Исключение
Ответ = "Ошибка при попытке проведения документа!";
Отказ = Истина;
Результат = Ложь;
КонецПопытки;
Возврат Результат;
КонецФункции // ПровестиИРаспечататьЧек()
Показать// Процедура контролирует остаток по данному регистру по переданному документу
// и его табличной части. В случае недостатка товаров выставляется флаг отказа и
// выдается сообщение.
//
// Параметры:
// ДокументОбъект - объект проводимого документа,
// ИмяТабЧасти - строка, имя табличной части, которая проводится по регистру,
// СтруктураШапки - структура, содержащая значения "через точку" ссылочных реквизитов по шапке документа,
// ОтказПроведения - флаг отказа в проведении,
// ЗаголовокСообщения - строка, заголовок сообщения об ошибке проведения.
Процедура КонтрольОстатков(ДокументОбъект, ИмяТабЧасти, СтруктураШапки, ОтказПроведения, ЗаголовокСообщения) Экспорт
ПоказатьТут я уже был, просто не могу понять как сослаться на эту процедуру что бы от контролировать остатки без проведения документа, т.к. по кнопке Оплатить картой проводиться документ не должен, а только контроль и если всё нормально то тогда вызывать уже - ОплатитьКартой(СуммаОплаты);
Может можно отменить проводку документа не наделяя правами Роль Кассира, например в процедуре сделать некое исключение из правил и после проведения, отменить проводку, но что бы сам кассир этого сделать не смог.
Вообще данную процедуру я взял из
Вообще данную процедуру я взял из
// Функция осуществляет проведение документа и печать чека на ФР.
//
// Параметры:
// Ответ - <Строка>
// - Выходной параметр; описание произошедшей ошибки.
//
// Отказ - <Булево>
// - Выходной параметр; признак отказа от выполнения операции.
//
// Возвращаемое значение:
// <Булево> - Истина в случае успешного завершения операции.
//
Функция ПровестиИРаспечататьЧек(Ответ, Отказ, ФормаДокумента, РучнойРежимПечати = Ложь) Экспорт
Результат = Истина;
Ответ = "";
Попытка
ФормаДокумента.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
Исключение
Ответ = "Ошибка при попытке проведения документа!";
Отказ = Истина;
Результат = Ложь;
Возврат Результат;
КонецПопытки;
Показать
Да я вижу что я уже где-то близко, просто не могу понять как мне правильно описать данную процедуру в 1С, что бы она звучала примерно так...
Код самой кнопки
И Модуль
Ну помогите, правда ну очень нужно, пожалуйста не пинайте я пока ещё зелёный в этом вопросе =(((
Код самой кнопки
Процедура ОсновныеДействияФормыОплатаКартой(Кнопка)
Перем Отказ;
Перем Ответ;
Если ПроверяемОстаткиПередОплатой(Ответ, Отказ, ЭтаФорма) Тогда
ОплатитьКартой(СуммаОплаты);
Иначе
Предупреждение(?(Отказ, "Возможны расхождения ИБ и ленты ФР! ", "") + Ответ);
КонецЕсли;
КонецПроцедуры
ПоказатьИ Модуль
Функция ПроверяемОстаткиПередОплатой(Ответ, Отказ, ФормаДокумента, РучнойРежимПечати = Ложь) Экспорт
Результат = Истина;
Ответ = "";
Попытка
КонтрольОстатков(ЭтотОбъект, "Товары", Отказ, Ответ);
Исключение
Ответ = "Ошибка при попытке оплатить картой!";
Отказ = Истина;
Результат = Ложь;
Возврат Результат;
КонецПопытки;
ПоказатьНу помогите, правда ну очень нужно, пожалуйста не пинайте я пока ещё зелёный в этом вопросе =(((
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот