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

Установить значение при записи документа

Автор kot488, 17 окт 2017, 12:52

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

kot488

Есть документ, в зависимости от города получателя и города отправителя нужно что бы проставлялся тип доставки.
В форме прописал функцию:

Функция ПолучитьЗону()
Если Объект.Отправитель.Город.ЗонаДоставки = Объект.Получатель.Город.ЗонаДоставки Тогда  
Возврат Справочники.ЗонаДоставки.ВнутригородскаяДоставка;
Иначе

Если Объект.Отправитель.Город.ЗонаДоставки = Справочники.ЗонаДоставки.НайтиПоКоду("000000002")
ИЛИ
  Объект.Получатель.Город.ЗонаДоставки = Справочники.ЗонаДоставки.НайтиПоКоду("000000002") Тогда
    Возврат Справочники.ЗонаДоставки.НайтиПоКоду("000000002");
Иначе
Возврат Объект.Отправитель.Город.ЗонаДоставки;
КонецЕсли;


КонецЕсли;

КонецФункции


Но ее конечно не отрабатывает, подскажите пожалуйста, как правильно реальзовать подстановку реквизита?

oleg-x

Что значит не отрабатывает? Не так как тебе хотелось бы?))
Функция тебе же возвращает какое то значение?
Пройдись отладчиком и поймешь в чем ошибка или недоработка.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

kot488

Цитата: oleg-x от 17 окт 2017, 13:03
Что значит не отрабатывает? Не так как тебе хотелось бы?))
Функция тебе же возвращает какое то значение?
Пройдись отладчиком и поймешь в чем ошибка или недоработка.
Ставлю точку остановки на Функция ПолучитьЗону(), но остановка не срабатывает, по идее же в какую то процедуру, нужно запистаь, например при записи или при закрытии?
Добавлено: 17 окт 2017, 13:41


Сделал остановку по уловию на этой строке
Если Объект.Отправитель.Город.ЗонаДоставки = Справочники.ЗонаДоставки.НайтиПоКоду("000000002"
Условие
Документ.Пересылка.Форма.ФормаДокумента.Форма 000000002
Ошибок не возникает, но и значение не подставляет
Вот код при закрытии
&Насервере
Функция ПолучитьЗону();
Если Объект.Отправитель.Город.ЗонаДоставки = Объект.Получатель.Город.ЗонаДоставки Тогда  
Возврат Справочники.ЗонаДоставки.ВнутригородскаяДоставка;
Иначе

Если Объект.Отправитель.Город.ЗонаДоставки = Справочники.ЗонаДоставки.НайтиПоКоду("000000002")
ИЛИ
  Объект.Получатель.Город.ЗонаДоставки = Справочники.ЗонаДоставки.НайтиПоКоду("000000002") Тогда
    Возврат Справочники.ЗонаДоставки.НайтиПоКоду("000000002");
Иначе
Возврат Объект.Отправитель.Город.ЗонаДоставки;
КонецЕсли;


КонецЕсли;

КонецФункции


&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ПолучитьЗону();

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


oleg-x

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


Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

kot488

Цитата: oleg-x от 17 окт 2017, 13:48
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ПолучитьЗону(); //Данная функция возвращает тебе значение, а потом пропадает, так как оно ничему не присваивается.
Зона = ПолучитьЗону(); //Так правильно
КонецПроцедуры


Я уже понял где натупил, у меня вышло вот так:

&Насервере
Функция ПолучитьЗону();
Если Объект.Отправитель.Город.ЗонаДоставки = Объект.Получатель.Город.ЗонаДоставки Тогда  
Возврат Справочники.ЗонаДоставки.ВнутригородскаяДоставка;
Иначе

Если Объект.Отправитель.Город.ЗонаДоставки = Справочники.ЗонаДоставки.НайтиПоКоду("000000002")
ИЛИ
  Объект.Получатель.Город.ЗонаДоставки = Справочники.ЗонаДоставки.НайтиПоКоду("000000002") Тогда
    Возврат Справочники.ЗонаДоставки.НайтиПоКоду("000000002");
Иначе
Возврат Объект.Отправитель.Город.ЗонаДоставки;
КонецЕсли;


КонецЕсли;

КонецФункции


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



Теги:

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

Рейтинг@Mail.ru

Поиск