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

Подставить число по значению в документе

Автор kot488, 12 ноя 2017, 16:39

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

kot488

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

Пока вышло вот что, но значение не подставляет


&Насервере
Функция ПолучитьЦену();
Если   Объект.ЗонаДоставки = "Внутригородская доставка" И Объект.СкоростьДоставки = "Звичайна" И Объект.ВидОтправления.Количество()<=5 Тогда
Объект.Сума = 25;
КонецЕсли;
КонецФункции

Zverff

Объект.ЗонаДоставки = "Внутригородская доставка" И Объект.СкоростьДоставки = "Звичайна"

Тип объекта какой?

kot488


Zverff

Объект.ЗонаДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента") И Объект.СкоростьДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента")

kot488

Цитата: Zverff от 12 ноя 2017, 17:34
Объект.ЗонаДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента") И Объект.СкоростьДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента")

Эти реквизиты в каждом документе будут изменяться, иммено от значений этих реквизитов и веса рассчитывается цена.

В рассчете даты вот так реализовано:

Если Лев(Объект.ЗонаДоставки,24)="Внутригородская доставка" И Лев(Объект.СкоростьДоставки,8)="Звичайна" Тогда
Объект.РассчетнаяДатаДоставки = Объект.Дата+86400;


Но для этой задачи не работает

&Насервере
Функция ПолучитьЦену();
Если  Лев(Объект.ЗонаДоставки,24)="Междугородняя" И Лев(Объект.СкоростьДоставки,8) ="Звичайна" И Объект.ВидОтправления.Количество()>=5 Тогда
Объект.Сума = 25;
КонецЕсли;
КонецФункции

Zverff

Цитата: kot488 от 12 ноя 2017, 17:43
Цитата: Zverff от 12 ноя 2017, 17:34
Объект.ЗонаДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента") И Объект.СкоростьДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента")

Эти реквизиты в каждом документе будут изменяться
У тебя объекты тип значения "Справочники", а ты ровняешь как строку. Поэтому он у тебя не проходить проверку на Если ... Тогда. Можно конечно сделать так "Объект.ЗонаДоставки.Наименование = "Внутригородская доставка", но кто то может переименовать элемент. Поэтому лучше сделать так: Объект.ЗонаДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента"), где "ИмяСправочника" подставляешь имя справочника объекта (пример: ЗонаДоставка), в справочнике "ЗонаДоставка" смотришь какой "НомерЭлемента" Внутригородская доставка.

Пример: Объект.ЗонаДоставки = Справочники.ЗонаДоставка.НайтиПоКоду("000000001").

kot488

Цитата: Zverff от 12 ноя 2017, 17:52
Цитата: kot488 от 12 ноя 2017, 17:43
Цитата: Zverff от 12 ноя 2017, 17:34
Объект.ЗонаДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента") И Объект.СкоростьДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента")

Эти реквизиты в каждом документе будут изменяться
У тебя объекты тип значения "Справочники", а ты ровняешь как строку. Поэтому он у тебя не проходить проверку на Если ... Тогда. Можно конечно сделать так "Объект.ЗонаДоставки.Наименование = "Внутригородская доставка", но кто то может переименовать элемент. Поэтому лучше сделать так: Объект.ЗонаДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента"), где "ИмяСправочника" подставляешь имя справочника объекта (пример: ЗонаДоставка), в справочнике "ЗонаДоставка" смотришь какой "НомерЭлемента" Внутригородская доставка.

Пример: Объект.ЗонаДоставки = Справочники.ЗонаДоставка.НайтиПоКоду("000000001").

Переименование не доступно, оно рассчитывается в другой функции. Сделал вот так, все равно не подставляет
Количество проставлено, реквизит Сума число


&Насервере
Функция ПолучитьЦену();
Если  Объект.ЗонаДоставки.Наименование="Междугородняя" И Объект.СкоростьДоставки.Наименование="Звичайна" И Объект.ВидОтправления.Количество()<=5 Тогда
Объект.Сума = 25;
КонецЕсли;
КонецФункции

Zverff

Цитата: kot488 от 12 ноя 2017, 17:54
Цитата: Zverff от 12 ноя 2017, 17:52
Цитата: kot488 от 12 ноя 2017, 17:43
Цитата: Zverff от 12 ноя 2017, 17:34
Объект.ЗонаДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента") И Объект.СкоростьДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента")

Эти реквизиты в каждом документе будут изменяться
У тебя объекты тип значения "Справочники", а ты ровняешь как строку. Поэтому он у тебя не проходить проверку на Если ... Тогда. Можно конечно сделать так "Объект.ЗонаДоставки.Наименование = "Внутригородская доставка", но кто то может переименовать элемент. Поэтому лучше сделать так: Объект.ЗонаДоставки = Справочники.[ИмяСправочника].НайтиПоКоду("НомерЭлемента"), где "ИмяСправочника" подставляешь имя справочника объекта (пример: ЗонаДоставка), в справочнике "ЗонаДоставка" смотришь какой "НомерЭлемента" Внутригородская доставка.

Пример: Объект.ЗонаДоставки = Справочники.ЗонаДоставка.НайтиПоКоду("000000001").

Переименование не доступно, оно рассчитывается в другой функции. Сделал вот так, все равно не подставляет
Количество проставлено, реквизит Сума число


&Насервере
Функция ПолучитьЦену();
Если  Объект.ЗонаДоставки.Наименование="Междугородняя" И Объект.СкоростьДоставки.Наименование="Звичайна" И Объект.ВидОтправления.Количество()<=5 Тогда
Объект.Сума = 25;
КонецЕсли;
КонецФункции


скинь конфу
Добавлено: 13 ноя 2017, 08:29


&Насервере
Функция ПолучитьЦену();
Если  Объект.ЗонаДоставки.Наименование="Междугородняя" И Объект.СкоростьДоставки.Наименование="Звичайна" И Объект.ВидОтправления.Количество()<=5 Тогда
Сумма = 25;
Возврат Сумма;
КонецЕсли;
КонецФункции



&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
НоваяЗона = ПолучитьЗону();
Объект.ЗонаДоставки = НоваяЗона;
//НоваяСума = ПолучитьЦену();
Объект.Сума = ПолучитьЦену();



kot488

Спасибо работает, но не берет в значение условие меньше или равно:(
Не подскажите как исправить?

Zverff

Цитата: kot488 от 13 ноя 2017, 10:11
Спасибо работает, но не берет в значение условие меньше или равно:(
Не подскажите как исправить?
Не понял, какое значение?

Теги:

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

Рейтинг@Mail.ru

Поиск