arefaste/1C_Forums huggingface dataset:
Как убрать разделитель триад в бухгалтерии 1С 7.7?
Или поменять на другой символ.
Галочка в "Параметры" закладка "Общие" не срабатывает.
А при выгрузке в ексель весьма напрягают ненужные разделители.
---
РезСтрока = СокрЛ(Формат(ЧислЗнач, "Ч" + ВыводНулевого + "15.2."));

//РезСтрока = СокрЛ(Формат(ЧислЗнач, "Ч" + ВыводНулевого + "15.2." + РаздТриад)); Оригинальная строчка

И не будет больше " ' " этого символа
---
vkozak, При работе в бухгалтерии 1С 7.7 никакой выгрузки в ексель не требуется.
Вместо того, чтобы заниматься ерундой, пригласите программиста ...
---
в форме таблицы выстаить формат какой угодно
---
Ответ хороший, но для самописных отчетов.
А что делать с типовыми?
Не менять же все типовые таблицы.
---
vkozak,
```1c
    Не менять же все типовые таблицы
```
 Не все, а только те, которые в эксель выгружаете.
---
vkozak, если речь о типовой конфе, то формат там прописан через функцию ФорматС(), а не напрямую в печатной форме, поэтому достаточно открыть глобальный модуль, найти там
ФорматС() и посмотреть откуда он подставляет формат.
Если опять же типовая, то найти

```1c
    Процедура УстановитьФорматСумм()
    сФорматС = "Ч0"+(Метаданные.ДлинаСуммыПроводки+3)+"."+Метаданные.ТочностьСуммыПроводки;
    Если Метаданные.РазделятьТриадыСуммыПроводки = 1 Тогда
    сФорматС = сФорматС+".,";
    КонецЕсли;
```

и закомментировать три последние строки (ну или вставить туда удобный Вам разделитель)
---
Timesoft,
Во, спасибо сейчас попробую.
---
РезСтрока = СокрЛ(Формат(ЧислЗнач, "Ч" + ВыводНулевого + "15.2."));

//РезСтрока = СокрЛ(Формат(ЧислЗнач, "Ч" + ВыводНулевого + "15.2." + РаздТриад)); Оригинальная строчка

И не будет больше " ' " этого символа
---
Можно еще проверить системные настройки - что там является разделителем десятичной части
Добрый день всем!

Подскажите пожалуйста весь интернет облазил, но так и не смог решить проблему следующую:
добавил расширение конфигурации, к счету приделал свою кнопку, в ней код вызова на клиенте "ворда":

```1c
    Word = Новый COMОбъект("Word.Application");
```

вот тут я ударился о новую для меня стену ....
"Установлен безопасный режим. Выполнение обработки запрещено" и все.
Пробовал по инструкции

```1c
    УстановитьБезопасныйРежим(ложь);
```

но эта строка возвращает ошибку мотивируя тем, что в обработке не включен безопасный режим.
НО! Функция

```1c
    БезопасныйРежим()
```

возвращает "ДА"!!!!

Т.е. он включен и не отключается.
Подскажите пожалуйста как победить?

p.s. я в 8.3 сравнительно недавно...
---
профиль безопасности есть только в сервере 1С.
В файловом варианте расширения выполняются исключительно в безопасном режиме.
---
дополнение:
делаю всё от Администратора
---
http://v8.1c.ru/o7/201303sp/index.htm
http://infostart.ru/public/301821/
---
спасибо, видел эту статью ранее, но база файловая, сервера вроде и нет :) или эта оснастка все-равно существует независимо от сервера?
---
профиль безопасности есть только в сервере 1С.
В файловом варианте расширения выполняются исключительно в безопасном режиме.
---
спасибо за информацию. будем искать обходные пути в виде внешней обработки тогда :(
---
не надо никаких обходных путей!
В конфигураторе в расширении снимаете "Безопасный режим" и будет вам счасте!
Всем привет! В запросе есть такое условие
КОГДА Условие ТОГДА (ВЫРАЗИТЬ(Строка КАК СТРОКА(3))) = "123". Раньше работала, потому что подстрока была первые 3 символа строки. А сейчас подстрока в середине строки. Подстрока не подходит. Позиция символов может быть разная.
Как найти вхождение подстроки в строку?
---
```1c
    Подобно %ПеремСтравнения%
```
---
```1c
    Подобно %ПеремСтравнения%
```
---
Спасибо!
---
Кавычки забыл
---
Открываешь поиск по справке в конфигураторе (не СП) и вбиваешь "Оператор проверки строки на подобие шаблону"
УНФ 1.6

Есть Справочник1 и подчинённый Справочник2. У элемента справочника 1 есть поле выбора элемента справочника 2. Когда я из элемента справочника 1 в этом поле вызываю список элементов справочника 2, я вижу все элементы справочника 2, а хочу видеть только те, которыми владеет данный элемент. Как реализовать?
---
Кури "СвязиПараметровВыбора"
---
Для реквизита указываете связи параметров выбора. Отбор.Владелец равно элемент справочника 1.
---
немножко не так.. Отбор.Владелец, реквизит "Ссылка".
Может конечно я плохо объяснил. Но огромное спасибо, "СвязиПараметровВыбора" это то, что мне нужно.
---
Кури "СвязиПараметровВыбора"
---
Вот смотри примерный код

```1c
    &НаКлиенте
    Процедура УстановитьОтбор(ИмяЭлемента)
    СписокЭлементовСпр1 = ФормированиеСпискаЭтапов(); //здесь формируешь список элементов создаешь функцию которая возврат сделать СпискаЗначений того что ты хочешь сортировать
    ПараметрыФормы = Новый Структура ("Отбор", СписокОтбора );
    Форма = ПолучитьФорму("Справочник2.ФормаВыбора",ПараметрыФормы,);
    ЭлементОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = СписокОтбора;
    Форма.Параметры.РежимВыбора = Истина;
    Форма.ВладелецФормы = ЭтаФорма.Элементы.ТвоеПоле;
    Форма.Открыть();
    КонецПроцедуры
```

Вот тут можешь почитать еще: http://buh.ru/forum/forum18375/topic75574/
Всем добрый день!

Есть производственное место. В который заносят рабочие свою фамилию (сканером) и операцию какую они сделали.
Одну операцию могу сделать 2 рабочих. Есть два поля, первый сканируется без проблем. Для второго сделал кнопку "Сканирование". При нажатии открывается другая форма этой обработки. И при сканировании в этой форме с помощью Оповестить передаю в другую форму значение. Но получается, что функция обработки оповещения в 1 форме срабатывает и при передачи от другой формы и от сканирования. И получается что при сканировании второго рабочего оба поля заменяются на одну фамилию.
Код следующий:
Первая форма(главная)

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если Источник = "ПодключаемоеОборудование"
    И ВводДоступен() Тогда
    Если ИмяСобытия = "ScanData" Тогда
    Если Параметр[ 1 ] = Неопределено Тогда
    ТекКод = Параметр[ 0 ];
    Иначе
    ТекКод = Параметр[ 1 ][ 1 ];
    КонецЕсли;
    ОбработкаШтрихКода(ТекКод);
    КонецЕсли;
    КонецЕсли;
    Если ИмяСобытия = "Закрытие формы 2" Тогда

    Объект.ПроизводственныйРабочий1 = Параметр;

    КонецЕсли;

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

Вторая для сканирования второго рабочего:

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если Источник = "ПодключаемоеОборудование"
    И ВводДоступен() Тогда
    Если ИмяСобытия = "ScanData" Тогда
    Если Параметр[ 1 ] = Неопределено Тогда
    ТекКод = Параметр[ 0 ];
    Иначе
    ТекКод = Параметр[ 1 ][ 1 ];
    КонецЕсли;
    ПроизводственныйРабочий = ОбработкаШтрихКода(ТекКод);
    Оповестить("Закрытие формы 2", ПроизводственныйРабочий);
    ЭтаФорма.Закрыть()
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
```

Как сделать, чтобы обработка оповещения при сканировании срабатывала в каждой форме отдельно? Спасибо
---
Решение: у второй формы поставить в настройках формы поставить Режим открытия окна формы: Блокировать весь интерфейс. И тогда процедура оповещения будет работать по отдельности в формах.
---
Решение: у второй формы поставить в настройках формы поставить Режим открытия окна формы: Блокировать весь интерфейс. И тогда процедура оповещения будет работать по отдельности в формах.
УПП 1.3 как в сравочнике организаций (не добавляя в конфигураторе группы) добавить разделение по группам?
---
Какой отчет? В настройках поставь галочку "Использовать свойства и категории". Почти во всех отчетах такая должна быть, кроме разве что СКДэшных.
Там свойства и категории как подчиненные реквизиты справочника
---
вота:
---
зачем?
---
У нас по одному виду деятельности существую 3 организации, по другому виду деятельности ещё 2 фирмы. Во всех отчетах требуется детализации по виду деятельности (подсчет итогов по каждому виду деятельности).
---
Вы можете в нужных вам отчётах сделать настройку варианта отчета. Например Направление №1. И добавить в отбор только нужные вам организации. В Направление №2 другие фирмы. Сохраняете настройку.
---
Ну или использовать свойства и категории например
---
Можно так, или можно по ОКВЭД или ОКВЭД 2.
Реквизит как раз под виды деятельности.
---
Свойства задал в справочнике Организаций (ВидыДеятельности), но в отчете Валовая прибыль в настройке группировок в Организации почему то нет ВидыДеятельности?
---
Какой отчет? В настройках поставь галочку "Использовать свойства и категории". Почти во всех отчетах такая должна быть, кроме разве что СКДэшных.
Там свойства и категории как подчиненные реквизиты справочника
---
Где в отчете Валовая прибыль галка "Использовать свойства и категории"?
---
Нашел. Спасибо.
---
вота:
---
Ещё раз спасибо большущее
Здравствуйте. Пытаюсь сделать обработку, которая будет закрывать 16 счет. Столкнулся с проблемой. База новая остатки по счетам вводились документом "Ввод остатков" от 31.12.2016 23:59:59. Сформировал оборотно-сальдовую ведомость по счету 16.1 на 31:12:2016г., получил остаток. В обработке создал запрос по счету на дату, поставил условие
```1c
    Запрос.УстановитьПараметр("Период", КонецДня(Объект.ДатаЗакрытия));
```

в отладчике показывает что в запросе параметр период равен 31:12:2016 23:59:59 но остаток не показывает.
Добавил секунду к дате

```1c
    Запрос.УстановитьПараметр("Период", КонецДня(Объект.ДатаЗакрытия)+1);
```

получил в запросе 01:01:2017 00:00:00 и соответственно получил остаток.
Вопрос, почему оборотка показывает остаток на 31.12.2016, а отчет нет. Спасибо.
---
Используйте границу : (С.П.)

Пример:

Параметры = Новый Массив(2);
Параметры[0] = Дата;
Параметры[1] = ВидГраницы.Включая;
Граница = Новый(Тип("Граница"),Параметры);
Запрос.УстановитьПараметр("КонГраница", Граница);
---
Используйте границу : (С.П.)

Пример:

Параметры = Новый Массив(2);
Параметры[0] = Дата;
Параметры[1] = ВидГраницы.Включая;
Граница = Новый(Тип("Граница"),Параметры);
Запрос.УстановитьПараметр("КонГраница", Граница);
---
Спасибо огромное. Все получилось.

```1c
    Граница = Новый Граница(КонецДня(Объект.ДатаЗакрытия), ВидГраницы.Включая);
    Запрос.УстановитьПараметр("Период", Граница);
```
---
Как формируется ОСВ я не знаю, но знаю, что при обращении к регистру остатков, последняя секунда не учитывается, поэтому используется +1 секунду, либо граница
---
То есть, если я в выборе даты ставлю 31.12.2016 23:59:59, фактически запрос с условием по дате берет 31:12:2016 23:59:58. Как показано в отладчике, когда я прибавлял секунду, уже не 31.12.2016 а в становиться 01.01.2017 0:00:00 Отладчик ведь не может врать. Я пока не знаю всех тонкостей, но считаю что уже не правильно будет, что не 31, а 1 уже в запросе. Хотя...
---
Таков уж механизм работы с регистрами остатков, когда у вас становится 01.01.2017 0:00:00 действует то же самое правило, будут взяты остатки до это даты, а все что пришло или ушло в эту же самую секунду в результат запроса не попадет (попадают движения, которые были 31.12.2016 23:59:59 и не попадут движения, которые были 01.01.2017 0:00:00)
Как сделать отбор в таблице значений на форме, чтобы работало как поиск
---
Попробуй просто

```1c
    Элементы.Комплектующие.ОтборСтрок = Новый ФиксированнаяСтруктура(Новый Структура("Номенклатура", ЗначениеОтбора));
```
---
Пробовал так
```1c
    ЗначениеОтбора= Элементы.СборкаТоваров.ТекущиеДанные.Комплекты;

    Элементы.Комплектующие.ОтборСтрок.Номенклатура.Использование = Истина;
    Элементы.Комплектующие.ОтборСтрок.Номенклатура.ВидСравнения = ВидСравнения.Равно;
    Элементы.Комплектующие.ОтборСтрок.Номенклатура.Значение = ЗначениеОтбора;
```

но пишет что Номенклатура не является значением объектного типа
---
Расширение таблицы формы для таблицы значений (Form table extension for value table)
ОтборСтрок (RowFilter)
Использование:
Чтение и запись.
Описание:
Тип: Неопределено; ФиксированнаяСтруктура.

А ты пытаешься работать, как будто "ОтборСтрок" имеет тип "Отбор".
---
Попробуй просто

```1c
    Элементы.Комплектующие.ОтборСтрок = Новый ФиксированнаяСтруктура(Новый Структура("Номенклатура", ЗначениеОтбора));
```
---
Спасибо большое
Добрый день!
Может кто сможет мне объяснить, как реализована передача параметров в форму на примере типовой конфы УТ11.1 (Управление торговлей, редакция 11.1 (11.1.2.10)?

Документ "Возврат товаров поставщику", модуль списка документов:

```1c
    &НаКлиенте
    Процедура СоздатьВозвратТоваровПоставщику(ХозяйственнаяОперацияИндекс)

    ХозяйственнаяОперация = СписокХозяйственныхОпераций[ХозяйственнаяОперацияИндекс].Значение;

    ДанныеДокумента = Новый Структура;
    ДанныеДокумента.Вставить("ХозяйственнаяОперация", ХозяйственнаяОперация);

    СтруктураПараметры = Новый Структура;
    СтруктураПараметры.Вставить("Основание", ДанныеДокумента);
    ОткрытьФорму("Документ.ВозвратТоваровПоставщику.ФормаОбъекта", СтруктураПараметры, Элементы.Список);

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

После открытия элемента формы, значение Объект.ХозяйственнаяОперация уже присвоено.

В форме элемента документа и в модуле объекта я нигде не нашел обработку значения "ХозяйственнаяОперация", может кто подскажет?
---
Все, вопрос снят.
В свойствах реквизита "ХозяйственнаяОперация" была установлена опция "Заполнять из данных заполнения"
---
Все, вопрос снят.
В свойствах реквизита "ХозяйственнаяОперация" была установлена опция "Заполнять из данных заполнения"
Здравствуйте!

Процедура ниже печатает справки прикрепленные к кодам серий номенклатуры из Реализации товаров, но есть и многостраничные файлы, 1с выводит теолько первую страницу таких файлов для печати, как вывести все страницы многостраничных TIF-ов?

```1c
    Процедура ОсновныеДействияФормыПечать(Кнопка)

    Путь = "D:\Сканы TIFF\";
    ТипФайла = ".Tif";
    ТабДок = Новый ТабличныйДокумент;
    Для каждого стр из Товары цикл
    Если ЗначениеЗаполнено(стр.СерияНоменклатуры) Тогда

    Макет = ПолучитьМакет("МакетКартинки");
    ОбластьКартинки = Макет.ПолучитьОбласть("ОбластьКартинка");
    Попытка
    Картинка = Новый Картинка(Путь+стр.СерияНоменклатуры.Код+ТипФайла);
    ОбластьКартинки.Рисунки.D1.Картинка = Картинка;
    ТабДок.Вывести(ОбластьКартинки);
    Исключение
    Продолжить;
    КонецПопытки;
    КонецЕсли;
    КонецЦикла;
    ТабДок.Показать();
    КонецПроцедуры
```
---
Я бы обернул на всякий случай путь дополнительными кавычками, вдруг пробелы:

```1c
    ЗапуститьПриложение("C:\Program Files\IrfanView\i_view64.exe ""+СокрЛП(Путь)+СокрЛП(стр.СерияНоменклатуры.Код)+СокрЛП(ТипФайла)+"" /resample /aspectratio /print", , Истина);
```
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
На мисте http://www.forum.mista.ru/topic.php?id=303085 есть аналогичная тема, где советуют использовать Microsoft Office Document Imaging

```1c
    МодиДок=СоздатьОбъект("MODI.Document");
    МодиДок.Create(Путь+Имя);
    Сообщить(МодиДок.images.count);
    Для к=1 По МодиДок.images.count Цикл
```

Доступ к изображению, думаю, будет таким:

```1c
    МодиДок.images.Item(к)
```

Возможно прокатит

```1c
    ОбластьКартинки.Рисунки.D1.Картинка = МодиДок.images.Item(к);
```

Есть проблема, что с офиса 2010 и старше MODI больше недоступен, но можно скачать и установить бесплатный SharePoint Designer 2007, где он есть в комплекте или выборочно установить только Document Imaging из пакета Ofiice 2007 https://support.microsoft.com/ru-ru/help/982760/install-modi-for-use-with-microsoft-office-2010

Объектная модель MODI https://msdn.microsoft.com/en-us/library/office/aa167607(v=office.11).aspx (warning: инглиш)
---
Альтернативный подход - использовать для печати какой-нибудь бесплатный графический редактор/просмотрщик/конвертер, например
```1c
    xnview.exe sample.tif /print
```
 у которого, если что, есть консольный конвертер xnconvert, которым можно разобрать tiff на части во временную папку и напечатать.

Еще способ - печать через стандартное средство просмотра изображений http://www.sql.ru/forum/1092563/mozhno-li-kak-to-ponyat-chto-vozvrashhaet-api-zapushhennaya-cherez-rundll32-exe , но в этом варианте не получается отслеживать ошибки.
---
Пришлось только такой вариант использовать

     ЗапуститьПриложение("C:\Program Files\IrfanView\i_view64.exe "+СокрЛП(Путь+стр.СерияНоменклатуры.Код+ТипФайла)+"/resample /aspectratio /print", , Истина);
---
Я бы обернул на всякий случай путь дополнительными кавычками, вдруг пробелы:

```1c
    ЗапуститьПриложение("C:\Program Files\IrfanView\i_view64.exe ""+СокрЛП(Путь)+СокрЛП(стр.СерияНоменклатуры.Код)+СокрЛП(ТипФайла)+"" /resample /aspectratio /print", , Истина);
```
Подскажите кто сталкивался. Опубликовал документооборот 1.3.1.6 платформа 8.3.8.1861 на локальном веб сервере IIS.
Работало нормально, внес изменения в конфигурацию, обновил динамически, теперь когда захожу через любой браузер, командная панель любой формы отображается наполовину.
---
Добрый день, может кому то поможет.
1)Пробовал перегружать IIS
2)Чистил кэш программы и кэш браузера тоже.
3)Пробовал заново опубликовывать в другой каталог.
4)Помогло перезапуск службы сервера 1С Предприятия
---
Перезапуск веб сервера и монопольное обновление не дало результатов?
---
Нет, жду окончания рабочего дня и надеюсь, что перезапуск службы сервера 1С поможет.
---
Добрый день, может кому то поможет.
1)Пробовал перегружать IIS
2)Чистил кэш программы и кэш браузера тоже.
3)Пробовал заново опубликовывать в другой каталог.
4)Помогло перезапуск службы сервера 1С Предприятия
Как в 7.7 очистить дату через OLE ?

 БухДоговоры=v7.EvalExpr("СоздатьОбъект(""Справочник.Договоры"")");

Если пишу :
   БухДоговоры.ДатаПогашенияОбязательства=Дата(0);

то в результате получаю 30.12.99
---
БухДоговоры.ДатаПогашенияОбязательства="";
вроде так
---
БухДоговоры.ДатаПогашенияОбязательства="";
вроде так
---
БухДоговоры.ДатаПогашенияОбязательства="";

Спасибо. Сработало.
---
Решение проблемы есть (2). Дальше уже не интересно. Из темы уходу.
---
Как в 7.7 очистить дату через OLE ? Видимо, никак:
Запомните на будущее как непреложный факт:
...
Есть проблемы при попытке перенести "пустую" дату - OLE может ее конвертировать, например, в 31.12.1899 года и т.п. Поэтому вам лучше заранее выяснить те значения, которые могут появится в местной базе при переносе "пустых" дат, чтобы предусмотреть условия преобразования их в местной базе.

Источник: http://www.mista.ru/articles1c/ole.htm

В данный момент не открывается, но потом все равно почитайте, чтобы убрать из кода извраты вида: EvalExpr("СоздатьОбъект(""Справочник.Договоры"")")

В той же статье:

```1c
    СпрOLE = БазаОле.CreateObject("Справочник.Фирмы"); // "СоздатьОбъект" в OLE не работает!
```
---
1. Все-таки КАК. см. (2)
2. Мне нужно не перенести, а зачистить уже существующее.
3. Эти "извраты" работают, А, например, с видом БИ = БазаОле.CreateObject("БухгалтерскиеИтоги") работать не просто.
---
Все-таки КАК. см. (2) Я рад за вас и ваше "КАК". Другим повезло меньше: http://www.forum.mista.ru/topic.php?id=178972

с видом БИ = БазаОле.CreateObject("БухгалтерскиеИтоги") работать не просто А с EvalExpr("СоздатьОбъект(""БухгалтерскиеИтоги"")") - проще? И чем же?
---
А с EvalExpr("СоздатьОбъект(""БухгалтерскиеИтоги"")") - проще? И чем же?

Например, что-то вроде этого (сейчас уже не помню):

 БИ.ИспользоватьСубконто();
 БИ.ВыполнитьЗапрос(НачалоМесяца(НачДата),КонецМесяца(КонДата),ВыбСчет);
 БИ.ВыбратьСубконто(1);
 Пока БИ.ПолучитьСубконто(1)=1 Цикл

у меня почему-то не получалось :(
---
Другим повезло меньше:
Им говорили, что это невозможно :(
---
А не проще и очевиднее написать дату 01/01/2040
---
не проще и очевиднее написать дату 01/01/2040
Чем 1 января 2040 года похоже на пустую дату, товарищ некропостер?
---
Чем 1 января 2040 года похоже на пустую дату, товарищ некропостер? он предполагает, что мы еще не дожили до этого времени. Но когда доживем :(), то долго будем вспоминать зачем так написано.
---
, (11) Не приставайте к человеку, ему просто срочно понадобилось что-то скачать, посмотрите на его ночную активность.

Некрасиво, но допускается правилами форума.
---
мне вот внешний отчет - таблицу 2 раздела 1 в 4-ФСС за 2016 год для зуп 2.5 родить надо, но я ж не бегаю по всем разделам с воплями...
---
Я, наверное, непонятно выразился - человеку явно стартмани понадобились срочно, вот и строчит во все ветки без разбора.

Для "родить" этот способ не годится.
Есть документа, на управляемой форме. В документе есть два поля, отправитель и получатель. И есть реквизит Зона доставки. Если у получателя Зона стоит междугородняя а у получателя стоит зона межобластная, то в документ подставляется Зона межобластная. Идет привязка к получателю посылки. Подскажите пожалуйста как можно подправить код, что бы шла проверка, если у получателя или отправителя стоит зона Межобластная то и в реквизит документа подставлять межобластная. А если нет то что бы выполнялось как и раньше. Вот код который определяет зону:

Код
Функция ПолучитьЗону()

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

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

   КонецЕсли;

КонецФункции
Показать полностью
---
Примерно так, если вписать в начале функции:
```1c
    Если Объект.ОтправительНасПункт.Зона = Справочники.Зоны.МежобластнаяДоставка ИЛИ
    Объект.ПолучательНасПункт.Зона = Справочники.Зоны.МежобластнаяДоставка тогда
    Возврат Справочники.Зоны.МежобластнаяДоставка;
    Конецесли;
```

зы: смотря как у вас числется "МежобластнаяДоставка" в справочнике.
---
Примерно так, если вписать в начале функции:
```1c
    Если Объект.ОтправительНасПункт.Зона = Справочники.Зоны.МежобластнаяДоставка ИЛИ
    Объект.ПолучательНасПункт.Зона = Справочники.Зоны.МежобластнаяДоставка тогда
    Возврат Справочники.Зоны.МежобластнаяДоставка;
    Конецесли;
```

зы: смотря как у вас числется "МежобластнаяДоставка" в справочнике.
---
Почему то по наименованию не захотел, вот так сработал
Код
Функция ПолучитьЗону()

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

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

   КонецЕсли;

КонецФункции
Показать полностью
---
Видимо межобластная Зона у вас не предопределенный элемент справочника (или называется по другому). По коду конечно искать не самый лучший вариант, но если уж до этого дошло, то правильнее было бы один раз найти элемент, а дальше подставлять найденное значение (а не искать его 3 раза как в вашем примере)
т.е.

```1c
    МежобластнаяЗона = Справочники.Зоны.НайтиПоКоду("000000003");
    Если Объект.ОтправительНасПункт.Зона = МежобластнаяЗона ИЛИ ...
    Возврат МежобластнаяЗона;
```