Контроль остатков на складе перед началом операции Оплата по карте.
Доброе утро,
Нужна ваша помощь
Необходимо следующее, после нажатия кнопки Оплатить Картой в открытой форме ЧекККМ, сделать проверку остатков на складе, что бы сотрудники не могли провести операцию по Карте, в том случае если хотя бы одного товара который добавлен в документ ЧекККМ не окажется на складе.
вот код самой кнопки
Вполне устраивает поведение кнопки ОК которой проводится документ, и в случае если хотя бы одного товара нет на складе, документ не проводится, и выводится Информирующее сообщение об ошибке, но мне документ проводить не нужно, а нужно сначала перед вызовом процедуры ОплатитьКартой(СуммаОплаты) проверить остатки на складе и если Товар на складе есть, то тогда вызвать Процедуру ОплатитьКартой(СуммаОплаты), а если нет товара тогда вывести сообщение с ошибкой и информацией какого товара не хватает для продолжения.
Пожалуйста помогите, буду очень признателен =)
"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) а чем временное решение не устраивает? добавить одну строчку...
Функция ПровестиДляПроверкиОстатков(Ответ, Отказ, ФормаДокумента) Экспорт
Результат = Истина;
Ответ = "";
Попытка
ФормаДокумента.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
ФормаДокумента.ЗаписатьВФорме(РежимЗаписиДокумента.ОтменаПроведения); ////////////<<<<<<<<<<<
Исключение
Ответ = "Ошибка при попытке проведения документа!";
Отказ = Истина;
Результат = Ложь;
КонецПопытки;
Возврат Результат;
КонецФункции // ПровестиИРаспечататьЧек()
Показать
// Процедура контролирует остаток по данному регистру по переданному документу
// и его табличной части. В случае недостатка товаров выставляется флаг отказа и
// выдается сообщение.
//
// Параметры:
// ДокументОбъект - объект проводимого документа,
// ИмяТабЧасти - строка, имя табличной части, которая проводится по регистру,
// СтруктураШапки - структура, содержащая значения "через точку" ссылочных реквизитов по шапке документа,
// ОтказПроведения - флаг отказа в проведении,
// ЗаголовокСообщения - строка, заголовок сообщения об ошибке проведения.
Процедура КонтрольОстатков(ДокументОбъект, ИмяТабЧасти, СтруктураШапки, ОтказПроведения, ЗаголовокСообщения) Экспорт
ПоказатьТут я уже был, просто не могу понять как сослаться на эту процедуру что бы от контролировать остатки без проведения документа, т.к. по кнопке Оплатить картой проводиться документ не должен, а только контроль и если всё нормально то тогда вызывать уже - ОплатитьКартой(СуммаОплаты);
Может можно отменить проводку документа не наделяя правами Роль Кассира, например в процедуре сделать некое исключение из правил и после проведения, отменить проводку, но что бы сам кассир этого сделать не смог.
Вообще данную процедуру я взял из
Вообще данную процедуру я взял из
// Функция осуществляет проведение документа и печать чека на ФР.
//
// Параметры:
// Ответ - <Строка>
// - Выходной параметр; описание произошедшей ошибки.
//
// Отказ - <Булево>
// - Выходной параметр; признак отказа от выполнения операции.
//
// Возвращаемое значение:
// <Булево> - Истина в случае успешного завершения операции.
//
Функция ПровестиИРаспечататьЧек(Ответ, Отказ, ФормаДокумента, РучнойРежимПечати = Ложь) Экспорт
Результат = Истина;
Ответ = "";
Попытка
ФормаДокумента.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
Исключение
Ответ = "Ошибка при попытке проведения документа!";
Отказ = Истина;
Результат = Ложь;
Возврат Результат;
КонецПопытки;
Показать
Alx Alx (alxarz), Вы сможете мне помочь ?
Лучше готовый код который будет проверять остатки без проведения, т.к. не хотелось бы наделять правами Роль Кассира.
Вся надежда на Вас )))
Лучше готовый код который будет проверять остатки без проведения, т.к. не хотелось бы наделять правами Роль Кассира.
Вся надежда на Вас )))
1) правильно
2) быстро
3) бесплатно
выбираете 2 критерия, которые Вам важны в написании кода, хотя по постам я полагаю 1-й и 3-й, поэтому бесплатно и правильный код придется подождать))
2) быстро
3) бесплатно
выбираете 2 критерия, которые Вам важны в написании кода, хотя по постам я полагаю 1-й и 3-й, поэтому бесплатно и правильный код придется подождать))
Не ужели все так серьезно, понятно что за все надо платить, не ужели так сложно написать код, если все на столько просто, и Вы знаете куда копать
Да я вижу что я уже где-то близко, просто не могу понять как мне правильно описать данную процедуру в 1С, что бы она звучала примерно так...
Код самой кнопки
И Модуль
Ну помогите, правда ну очень нужно, пожалуйста не пинайте я пока ещё зелёный в этом вопросе =(((
Код самой кнопки
Процедура ОсновныеДействияФормыОплатаКартой(Кнопка)
Перем Отказ;
Перем Ответ;
Если ПроверяемОстаткиПередОплатой(Ответ, Отказ, ЭтаФорма) Тогда
ОплатитьКартой(СуммаОплаты);
Иначе
Предупреждение(?(Отказ, "Возможны расхождения ИБ и ленты ФР! ", "") + Ответ);
КонецЕсли;
КонецПроцедуры
ПоказатьИ Модуль
Функция ПроверяемОстаткиПередОплатой(Ответ, Отказ, ФормаДокумента, РучнойРежимПечати = Ложь) Экспорт
Результат = Истина;
Ответ = "";
Попытка
КонтрольОстатков(ЭтотОбъект, "Товары", Отказ, Ответ);
Исключение
Ответ = "Ошибка при попытке оплатить картой!";
Отказ = Истина;
Результат = Ложь;
Возврат Результат;
КонецПопытки;
ПоказатьНу помогите, правда ну очень нужно, пожалуйста не пинайте я пока ещё зелёный в этом вопросе =(((
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот