Как после заполнения табличной части внешней обработкой пересчитать итоги документа?
Доброго времени суток сообщество! Прошу помощи в следующем:
Дано: платформа 8.3.9, конфа "Розница 2.2.5.27", внешняя обработка заполнения документа "ЧекККМ", таблица значений "ТЗдляЧека"
Документ создаётся, заполняется, но, не вычисляются итоги, на форме они нулевые.
Если после открытия произвести какие либо действия с таблицей товары, как например перемещение строк стрелочками или попытку редактирования любой ячейки то всё рассчитываться - запускается процедурка формы "ОбновитьИтоговыеПоказатели" или "ОбновитьИтоговыеПоказателиСервер".
Вопрос первый как из внешней обработки после открытия формы запустить одну их этих процедур?
Вопрос второй, как из внешней обработки получить доступ к реквизиту формы, допустим к "СкидкиНаценкиИтогСумма"
чтобы заработал код (взял из процедуры "ОбновитьИтоговыеПоказатели")
Дано: платформа 8.3.9, конфа "Розница 2.2.5.27", внешняя обработка заполнения документа "ЧекККМ", таблица значений "ТЗдляЧека"
&НаКлиенте
Процедура СоздатьДокументЧек(Команда)
//Защита от пустой ТЗ
Если ТЗдляЧека.Количество() = 0 Тогда
Сообщить("НЕ прочитан документ Заказ-Наряд!");
Возврат;
КонецЕсли;
//Получаем форму нового документа
ФормаЧека = ПолучитьФорму("Документ.ЧекККМ.ФормаОбъекта");
//В переменную передаем данных полученой формы (так как напрямую их менять нельзя)
ДанныеФормыЧека = ФормаЧека.Объект;
//Заполняем форму чека данными
ЗаполнитьЧекНаСервере(ДанныеФормыЧека);
//копируем заполненные данные в исходную форму
КопироватьДанныеФормы(ДанныеФормыЧека, ФормаЧека.Объект);
//показываем форму нового заполненного документа пользователю
ФормаЧека.Открыть();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЧекНаСервере(ДанныеФормыЧека);
// преобразуем данные формы ЧекККМ в документ ЧекККМ
ДокументЧек = ДанныеФормыВЗначение(ДанныеФормыЧека, Тип("ДокументОбъект.ЧекККМ"));
//Заполним титульную часть документ данными
ДокументЧек.КассаККМ = Справочники.КассыККМ.НайтиПоКоду("00-000001");
ДокументЧек.Магазин = Справочники.Магазины.НайтиПоКоду("00-000001");
ДокументЧек.Организация = Справочники.Организации.НайтиПоКоду("00-000001");
//подготовка данных для общих процедур
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
//Заполним табличную часть документа
Для Каждого СтрокаТЗ Из ТЗдляЧека Цикл
СтрокаЧека = ДокументЧек.Товары.Добавить();
СтрокаЧека.Номенклатура = СпроситьНоменклатуру(СтрокаТЗ.guid);
СтрокаЧека.КоличествоУпаковок = СтрокаТЗ.Количество;
СтрокаЧека.Цена = СтрокаТЗ.Цена;
СтрокаЧека.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
СтрокаЧека.Склад = Справочники.Склады.НайтиПоКоду("00-000001");
//Вызов общей процедуры
ОбработкаТабличнойЧастиТоварыСервер.ОбработатьСтрокуТЧСервер(СтрокаЧека, СтруктураДействий, Неопределено);
КонецЦикла;
// преобразуем документа обратно в данные формы
ЗначениеВДанныеФормы(ДокументЧек, ДанныеФормыЧека);
КонецФункции
ПоказатьДокумент создаётся, заполняется, но, не вычисляются итоги, на форме они нулевые.
Если после открытия произвести какие либо действия с таблицей товары, как например перемещение строк стрелочками или попытку редактирования любой ячейки то всё рассчитываться - запускается процедурка формы "ОбновитьИтоговыеПоказатели" или "ОбновитьИтоговыеПоказателиСервер".
Вопрос первый как из внешней обработки после открытия формы запустить одну их этих процедур?
Вопрос второй, как из внешней обработки получить доступ к реквизиту формы, допустим к "СкидкиНаценкиИтогСумма"
чтобы заработал код (взял из процедуры "ОбновитьИтоговыеПоказатели")
СуммаРучнойСкидки = Объект.Товары.Итог("СуммаРучнойСкидки");
СуммаАвтоматическойСкидки = Объект.Товары.Итог("СуммаАвтоматическойСкидки");
СуммаСкидкиОплатыБонусом = Объект.Товары.Итог("СуммаСкидкиОплатыБонусом");
СкидкиНаценкиИтогСумма = СуммаАвтоматическойСкидки + СуммаРучнойСкидки + СуммаСкидкиОплатыБонусом;
По теме из базы знаний
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Пересчет и контроль распределения НДФЛ при выплате по сотрудникам (ЕРП 2)
- Как сдать экзамен 1С:Специалист по платформе?
- Универсальный редактор табличных частей документов РеСольДо
Найденные решения
Спасибо Вам Елена и Николай!!!!
Решение методом Елена:
Добавил в процедуру "СоздатьДокументЧек" после ФормаЧека.Открыть();
строчку ФормаЧека.ОповещениеВыдатьПодаркиНаВыбор(Неопределено, Неопределено);
И уже через контекст формы выполнилась процедурка "ОбновитьИтоговыеПоказатели"
всё великолепно считается и документ готов к употреблению, НО будут выходить сообщения "Скидки (наценки), Скидки (наценки) рассчитаны" что может смутить рядового кассира...
Решение методом Елена&Николай:
Добавил расширение конфигурации.
загнал туда форму документа "ЧекККМ"
в расширении, в модуле формы документа "ЧекККМ" написал
Добавил в процедуру "СоздатьДокументЧек" после ФормаЧека.Открыть();
строчку ФормаЧека.ОбновитьИтоговыеПоказателиЭкспорт ();
Данные документа великолепно рассчитываться.
Вывод, справедливо для УФ:
1) Из внешней обработки фиг доберёшься до реквизитов формы, доступ есть только до реквизитов документа!
2) Из внешней обработки любые другие действия с формой возможны только если "дергать" экспортные методы этой формы, или создавать свои экспортные процедурки через расширение и "дергать" уже их.
Решение методом Елена:
Добавил в процедуру "СоздатьДокументЧек" после ФормаЧека.Открыть();
строчку ФормаЧека.ОповещениеВыдатьПодаркиНаВыбор(Неопределено, Неопределено);
И уже через контекст формы выполнилась процедурка "ОбновитьИтоговыеПоказатели"
всё великолепно считается и документ готов к употреблению, НО будут выходить сообщения "Скидки (наценки), Скидки (наценки) рассчитаны" что может смутить рядового кассира...
Решение методом Елена&Николай:
Добавил расширение конфигурации.
загнал туда форму документа "ЧекККМ"
в расширении, в модуле формы документа "ЧекККМ" написал
&НаКлиенте
Процедура ОбновитьИтоговыеПоказателиЭкспорт () Экспорт
ОбновитьИтоговыеПоказатели();
КонецПроцедуры
Добавил в процедуру "СоздатьДокументЧек" после ФормаЧека.Открыть();
строчку ФормаЧека.ОбновитьИтоговыеПоказателиЭкспорт ();
Данные документа великолепно рассчитываться.
Вывод, справедливо для УФ:
1) Из внешней обработки фиг доберёшься до реквизитов формы, доступ есть только до реквизитов документа!
2) Из внешней обработки любые другие действия с формой возможны только если "дергать" экспортные методы этой формы, или создавать свои экспортные процедурки через расширение и "дергать" уже их.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) Соответственно - исполнение снова уйдет в форму и все там как надо сделает
т.е. выполнит уже в контексте формы код процедуры оповещения после выдачи подарков, а там как раз идет обновление всех итогов и прочие пересчеты
ОбработкаТабличнойЧастиТоварыКлиентСервер.ОбновитьСтатусыСерийИПодарочныхСертификатов(Объект.Подарки);
ОбновитьИтоговыеПоказатели();
ПоказатьОповещениеПользователя(
т.е. выполнит уже в контексте формы код процедуры оповещения после выдачи подарков, а там как раз идет обновление всех итогов и прочие пересчеты
ОбработкаТабличнойЧастиТоварыКлиентСервер.ОбновитьСтатусыСерийИПодарочныхСертификатов(Объект.Подарки);
ОбновитьИтоговыеПоказатели();
ПоказатьОповещениеПользователя(
Спасибо Вам Елена и Николай!!!!
Решение методом Елена:
Добавил в процедуру "СоздатьДокументЧек" после ФормаЧека.Открыть();
строчку ФормаЧека.ОповещениеВыдатьПодаркиНаВыбор(Неопределено, Неопределено);
И уже через контекст формы выполнилась процедурка "ОбновитьИтоговыеПоказатели"
всё великолепно считается и документ готов к употреблению, НО будут выходить сообщения "Скидки (наценки), Скидки (наценки) рассчитаны" что может смутить рядового кассира...
Решение методом Елена&Николай:
Добавил расширение конфигурации.
загнал туда форму документа "ЧекККМ"
в расширении, в модуле формы документа "ЧекККМ" написал
Добавил в процедуру "СоздатьДокументЧек" после ФормаЧека.Открыть();
строчку ФормаЧека.ОбновитьИтоговыеПоказателиЭкспорт ();
Данные документа великолепно рассчитываться.
Вывод, справедливо для УФ:
1) Из внешней обработки фиг доберёшься до реквизитов формы, доступ есть только до реквизитов документа!
2) Из внешней обработки любые другие действия с формой возможны только если "дергать" экспортные методы этой формы, или создавать свои экспортные процедурки через расширение и "дергать" уже их.
Решение методом Елена:
Добавил в процедуру "СоздатьДокументЧек" после ФормаЧека.Открыть();
строчку ФормаЧека.ОповещениеВыдатьПодаркиНаВыбор(Неопределено, Неопределено);
И уже через контекст формы выполнилась процедурка "ОбновитьИтоговыеПоказатели"
всё великолепно считается и документ готов к употреблению, НО будут выходить сообщения "Скидки (наценки), Скидки (наценки) рассчитаны" что может смутить рядового кассира...
Решение методом Елена&Николай:
Добавил расширение конфигурации.
загнал туда форму документа "ЧекККМ"
в расширении, в модуле формы документа "ЧекККМ" написал
&НаКлиенте
Процедура ОбновитьИтоговыеПоказателиЭкспорт () Экспорт
ОбновитьИтоговыеПоказатели();
КонецПроцедуры
Добавил в процедуру "СоздатьДокументЧек" после ФормаЧека.Открыть();
строчку ФормаЧека.ОбновитьИтоговыеПоказателиЭкспорт ();
Данные документа великолепно рассчитываться.
Вывод, справедливо для УФ:
1) Из внешней обработки фиг доберёшься до реквизитов формы, доступ есть только до реквизитов документа!
2) Из внешней обработки любые другие действия с формой возможны только если "дергать" экспортные методы этой формы, или создавать свои экспортные процедурки через расширение и "дергать" уже их.
вопрос старый, но решил поделится, может кому то поможет - делал сейчас обработку в УТ 11.5.14.74.
Для расчета итоговой суммы чека ККМ я добавил строку:
СтрокаЧека.Сумма = СтрокаТЗ.Количество * СтрокаТЗ.Цена;
И при открытие формы чека ККМ ФормаЧека.Открыть(); - сумма итоговая будет уже рассчитана...
и еще в УТ надо добавить строку:
СтрокаЧека.Продавец = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя);
и НДС берем из справочника:
СтрокаЧека.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
Для расчета итоговой суммы чека ККМ я добавил строку:
СтрокаЧека.Сумма = СтрокаТЗ.Количество * СтрокаТЗ.Цена;
И при открытие формы чека ККМ ФормаЧека.Открыть(); - сумма итоговая будет уже рассчитана...
и еще в УТ надо добавить строку:
СтрокаЧека.Продавец = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя);
и НДС берем из справочника:
СтрокаЧека.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот