Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 01:58

Просьба о помощи от новичка в 1с

Автор EvGenOM, 16 фев 2015, 12:34

0 Пользователей и 1 гость просматривают эту тему.

EvGenOM

    Доброго дня, уважаемые посетители форума. Я новичок в 1с. Большую часть времени трачу на изучение учебной литературы. В книге "Введение в конфигурирование в системе "1с Предприятие 8.2". Основные объекты" Столкнулся с задачкой, которую уже 2 дня не могу решить. Гуглил, смотрел синтаксис-помощник, 1с ИТС, но так и не смог самостоятельно разобраться. Подскажите пожалуйста, что я делаю не так. Создается документ "ПродажаТовара" в нем реквизиты(Контрагент, КонтактноеЛицо Сотрудник, Склад, СуммаДокумента) и табличная часть(Номенклатура, Цена, Количество, Сумма). Пишется код для элемента Количество и Сумма для события ПриИзменении. Код :
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)

Стр = Элементы.Товары.ТекущиеДанные;
Стр.Сумма = Стр.Количество * Стр.Цена;


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


&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)

Стр = Элементы.Товары.ТекущиеДанные;
Стр.Сумма = Стр.Количество * Стр.Цена;


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


В модуле Объекта(документ "ПродажаТовара") пишу :

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента = Товары.Итог("Сумма");
КонецПроцедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если СуммаДокумента >= 1000 Тогда Сообщить("Доступна бесплатная доставка");
КонецЕсли;
КонецПроцедуры



Отладчик не ругается, сумма в таблице для строки исправно считается. Только в реквизите СуммаДокумента, как стояло значение = 0, так и остается и следовательно сообщение не выводится. Все делаю по книжке, понять не могу/не в силах. Помогите пожалуйста. 

cska-fanat-kz

1. С суммой документа единственный вариант пока - не так называется сам реквизит, мож очепятались где-то...
2. а почему сообщение о бесплатной доставке в ОбработкаЗаполнения()? Почему не в ПриОткрытии() формы документа?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

herosmart


Отладчик не ругается, сумма в таблице для строки исправно считается. Только в реквизите СуммаДокумента, как стояло значение = 0, так и остается и следовательно сообщение не выводится. Все делаю по книжке, понять не могу/не в силах. Помогите пожалуйста.
[/quote]

Доброго времени суток. Скажите, реквизит СуммаДокумента - это реквизит документа у Вас? Или же реквизит, созданный непосредственно на форме?

EvGenOM

Цитата: cska-fanat-kz от 16 фев 2015, 13:33
1. С суммой документа единственный вариант пока - не так называется сам реквизит, мож очепятались где-то...
2. а почему сообщение о бесплатной доставке в ОбработкаЗаполнения()? Почему не в ПриОткрытии() формы документа?

Просмотрел много раз на предмет опечаток, такой случай был при написании кода под "Номенклатура", а в реквизите была указана "Номанклатура":D. Тут сколько не проверял все тщетно.

Сообщение, честно сказать не знал куда запихнуть. По идее, от кода формы требуется, при вводе цены и количества для товара должна выводится сумма, далее, должна вывестись общая сумма(Итоговая), а далее, если этот итог превысит 1000, должно выдаваться сообщение.


Цитата: herosmart от 16 фев 2015, 13:34
Доброго времени суток. Скажите, реквизит СуммаДокумента - это реквизит документа у Вас? Или же реквизит, созданный непосредственно на форме?

Здравствуйте. Данный реквизит является реквизитом документа. На форме реквизитов не создавал.

Пытался эту задачу решить следующим путем. На форме, в свойствах СуммаДокумента выбирал ПутьКДанным - Объект.Товары.ИтогСумма. На форме реквизит "СуммаДокумента" меняется на "Сумма (итог)", общая итоговая сумма стала выводиться. Но, сообщение так и не смог вывести при выполнении условия.

vitasw

У вас сообщение в "ОбработкаЗаполнения"?

EvGenOM

Вернул все, как было изначально. Заметил тот факт, что после ввода товаров, изменения в СуммаДокумента происходит, лишь, после того, как нажимаю "провести и закрыть", открываю снова этот документ и все посчитано правильно. Подскажите, а возможно ли чтобы все происходило непосредственно во время/в момент создания и заполнения документа? 
Добавлено: 16 фев 2015, 14:24


Цитата: vitasw от 16 фев 2015, 14:12
У вас сообщение в "ОбработкаЗаполнения"?

Осознал свою ошибку. Но не могу понять в какую обработку записать вывод сообщения... Может такой вариант?
&НаКлиенте
Процедура СуммаДокументаОткрытие(Элемент, СтандартнаяОбработка)
  Ск = Элементы.ТекущиеДанные;
Если Ск.СуммаДокумента >= 1000 Тогда Сообщить("Доступна бесплатная доставка");
КонецЕсли;

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

vitasw

Как вы себе представляете: когда/ в какой момент должно возникнуть это сообщение?

Sergey 1c

Кто знает как загрузить документ счет на оплату в 1с демо-???? Помогите пожалуйста???????

EvGenOM

Цитата: vitasw от 16 фев 2015, 15:05
Как вы себе представляете: когда/ в какой момент должно возникнуть это сообщение?

Думаю сообщение выдается в тот момент когда СуммаДокумента имеет значение больше или равно 1000, таким образом это значение проявляется после нажатия кнопки "провести и закрыть", также заметил, что при нажатии кнопки "сохранить" значение в элементе СуммаДокумента меняется, а следовательно....

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента = Товары.Итог("Сумма");
Если СуммаДокумента >= 1000 Тогда Сообщить("Доступна бесплатная доставка");
КонецЕсли;
КонецПроцедуры


Все заработало!)) При нажатии кнопки "сохранить" появляется нужное сообщение. Спасибо огромное vitasw, вы заставили мои мозги работать в правильном направлении))

vitasw

Пожалуйста. Это, как говорится, была проверка на вшивость - насколько вы готовы самостоятельно находить решения. - вроде голова есть. Тогда усовершенствуем ваш метод. В текущем варианте пользователь узнает о том что "Доступна бесплатная доставка" только после записи документа, что не является совсем уж комильфо. Как вариант. Повесить это сообщение при изменении суммы: т.е. при любом изменении суммы вызывать заполнение "СуммаДокумента" и соответственно выдавать сообщение. НО! в таком случае пользователю будет выдаваться это сообщение много раз при любом изменении суммы, соответственно, желательно при первом переползании через 1000 пользователю выдавать сообщение, а при последующих - нет. Если хотите, то можете попробовать реализовать это.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск