arefaste/1C_Forums huggingface dataset:
Приветствую, Форумчане!
1с8.3.12, самопис, УФ

Имеется некий документ. На форме документа имеется кнопка, которая заполняет табличную часть кодом

```1c
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ДокументОбъект.ЗаполнитьЦены();
    ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");

    Модифицированность = Истина;
```

ЗаполнитьЦены(); - заполняет ТЧ ценами и т.д.

Теперь в форме списка нужно расположить некую кнопку, которая этим же кодом перезаполняет ТЧ несколько выбранных документов.
Поставил кнопку на список с кодом:

```1c
    &НаКлиенте
    Процедура ПерезаполнитьЦены(Команда)

    ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
    ИзменитьЦены(ВыделенныеСтроки);

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

    &НаСервере //БезКонтекста
    Процедура ИзменитьЦены(ВыделенныеСтроки);

    Для Каждого Строка Из ВыделенныеСтроки Цикл
    Об = Строка.ПолучитьОбъект();
    Об.ТабличнаяЧасть.Очистить();

    Сообщить(Объект.Ссылка);

    КонецЦикла;

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

Никак не могу сообразить как правильно, а главное оптимально в этот код установить срабатывание кода в модуле объекта

```1c
    Процедура ЗаполнитьЦены() Экспорт
```

Посоветуйте...
---
Если экспортная в модуле объекта - тогда просто

```1c
    Об.ЗаполнитьЦены()
```
---
```1c
    &НаСервере //БезКонтекста
    Процедура ИзменитьЦены(ВыделенныеСтроки);

    Для Каждого Строка Из ВыделенныеСтроки Цикл

    Об = Строка.ПолучитьОбъект();

    Попытка
    Об.Заблокировать();
    Исключение
    Сообщить("Не удалось заблокировать документ " + Строка.Ссылка);
    Продолжить;
    КонецПопытки;

    Об.ЗаполнитьЦены();

    Об.Записать(?(Об.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));

    КонецЦикла;

    КонецПроцедуры
```
---
Если экспортная в модуле объекта - тогда просто

```1c
    Об.ЗаполнитьЦены()
```
---
```1c
    &НаСервере //БезКонтекста
    Процедура ИзменитьЦены(ВыделенныеСтроки);

    Для Каждого Строка Из ВыделенныеСтроки Цикл

    Об = Строка.ПолучитьОбъект();

    Попытка
    Об.Заблокировать();
    Исключение
    Сообщить("Не удалось заблокировать документ " + Строка.Ссылка);
    Продолжить;
    КонецПопытки;

    Об.ЗаполнитьЦены();

    Об.Записать(?(Об.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));

    КонецЦикла;

    КонецПроцедуры
```
Добрый день! Помогите, пожалуйста, разобраться. В файловой базе пишу http-сервис, запрос отлично отрабатывал, пока я не попыталась настроить отладку. Начиная с момента, когда я установила "Использовать отладку по протоколу TCP/IP" в параметрах публикации базы, что бы я ни делала, HTTPОтвет на мой запрос выдаёт код состояния 500, HTTPОтвет.ПолучитьТелоКакСтроку() выдаёт: "Ошибка регистрации предмета отладки в отладчике". Брандмауэр отключен. Что я делаю не так?
Платформа 8.3.12.1714
---
например ошибка в файле публикации default.vrd
неправильный путь к базе выдает ошибку 500
правильно ли указан пользователь и пароль
  ib="File="C:\моябаза";Usr=user;Pwd=;">
---
500 ошибка сервера - запрос неправильно обрабатывается - ошибка в коде или по каким-то причинам сервер по http не доступен
---
Сейчас текст модуля обработчика запроса выглядит так:
Функция doc1send(Запрос)
 Ответ = Новый HTTPСервисОтвет(200);
 Ответ.УстановитьТелоИзСтроки("УРА", КодировкаТекста.UTF8);
 Возврат Ответ;
КонецФункции

Вроде бы ошибиться негде.
по каким-то причинам сервер по http не доступен
А что это могут быть за причины? Ничего на сервере не менялось, кроме изменения параметров отладки в публикации базы
---
например ошибка в файле публикации default.vrd
неправильный путь к базе выдает ошибку 500
правильно ли указан пользователь и пароль
  ib="File="C:\моябаза";Usr=user;Pwd=;">
---
Вы правы, что-то в файле публикации сломалось, веб-клиенте база тоже не запускалась с такой же ошибкой, оказывается. Удалила публикацию, опубликовала заново и всё ок. Спасибо!
---
чисто на уровне предположения
возможно порты не соответствуют, проверьте в настройке параметров отладки и установите диапазон
Подскажите как преобразовать число к строке.

  Номер = 1;
 Пока ВыборкаДокументов.Следующий() Цикл
  Сообщить(ВыборкаДокументов.Ссылка + " " + Номер); <---
  Номер = Номер + 1;
---
Сообщить(Строка(ВыборкаДокументов.Ссылка) + " " + Строка(Номер));
---
Сообщить(ВыборкаДокументов.Ссылка + " " + Строка(Номер));
---
не проходит пробывал
---
Сообщить(Строка(ВыборкаДокументов.Ссылка) + " " + Строка(Номер));
---
СтрЗаменить(Номер, Символы(160),"")
---
Что хотите получить на выходе?
Допустим значение параметра = 100 и имеем тип Число, нужно получить значение 100 только что-бы тип был Строка? Или хотите получить это число только прописью?
---
Если в конкатенации перед числом идет строковое значение, то число и так преобразуется в строку, т.е конструкция вида " " + Номер уже вернет строку.
Всем привет. Прошу прощения за возможно туповатые вопросы, но... логики не вижу.
Повесил бы скриншот... не знаю как, но поверьте на слово, что есть у формы реквизит "ОстаткиНаСкладах" (ТЗ), в котором есть реквизит "Товар1С" типа Номенклатура. ТЗ заполняется без проблем запросом

```1c
    Если ЗначениеЗаполнено(Выборка.Остаток) Тогда
    Остатки = ОстаткиНаСкладах.Добавить();
    Остатки.ИдентификаторИМ = Набор.ИдентификаторИМ;
    Остатки.Товар1С = Выборка.Товар; // !!!
    Если ЗначениеЗаполнено(Выборка.Склад) Тогда
    Остатки.Склад = Выборка.Склад;
    Иначе
    Остатки.Склад = Справочники.Склады.ПустаяСсылка();
    КонецЕсли;
    Остатки.Приоритет = Выборка.Приоритет;
    Остатки.Остаток = Выборка.Остаток;
    Набор.Остаток1С = Выборка.Остаток;
    Иначе
    Набор.Остаток1С = 0;
    КонецЕсли;
```

В процессе формирования заказа дабы не перезапрашивать остатки (заказы читаются по НТТР единомоментно) остатки минусуются и т.д. и т.п. В какой-то момент нужно отсортировать ТЗ ОстаткиНаСкладах вот так

```1c
    ОстаткиНаСкладах.Сортировать("Товар1C Возр, Приоритет Убыв");
```

Да не тут-то было - Неизвестная колонка "Товар1С". Смутно помню, что реквизит формы типа ТЗ не есть Таблица значений, которую можно в реал тайме получить вот так

```1c
    ПозицииЗаказа = Новый ТаблицаЗначений;
```

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

Дело именно в наименовании колонки: в одном месте у Вас "1С" написано латиницей, в другом - кириллицей.
---
Не важно, под таблицей подразумевается "ТаблицаЗначений" или "ДанныеФормыКоллекция", у объектов обоих типов есть метод "Сортировать". В противном случае Вы бы увидели иное сообщение об ошибке.

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

Платформа 8.3, УТ, Обычные формы.

```1c
    ////заполняем строки ТЧ
    ОбластьСтроки = МакетОбработки.ПолучитьОбласть("Строка");

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

    //ЗаполнитьЗначенияСвойств(ОбластьСтроки.Параметры, Функ_КодТовара(ТекущаяСтрока.Номенклатура));

    ТабличныйДокумент.Вывести(ОбластьСтроки);
    КонецЦикла;
```
---
Есои у вас документ "Реализация..." - в табличной части Товары всё есть. Указываете через точку нужный реквизит.

ОбластьСтроки.Параметры.КоличествоМест = ТекущаяСтрока.Количество - например.

В общем случае наименования реквизитов в табличной части должны совпадать с паоаметром печатной формы - для того, чтобы сработала функция "ЗаполнитьЗначенияСвойств".
Или указывайте явно параметр
---
Вообще для приличия хотя бы указали какая конфа. В разных по-разному сделано. А так будут общие ответы: из справочника, из регистра и т.п.
---
Платформа 8.3 УТ, Обычные формы.
---
Есои у вас документ "Реализация..." - в табличной части Товары всё есть. Указываете через точку нужный реквизит.

ОбластьСтроки.Параметры.КоличествоМест = ТекущаяСтрока.Количество - например.

В общем случае наименования реквизитов в табличной части должны совпадать с паоаметром печатной формы - для того, чтобы сработала функция "ЗаполнитьЗначенияСвойств".
Или указывайте явно параметр
---
В том то и дело в Реализации этого реквизита нет. Где он находится и как его прикрутить вот это вопрос.
---
Блин, невнимательность. Вот это что) Спасибо.
---
Не подскажите как сделать итог по колонке?

Кодик
```1c
    СсылкаНаОбъект.Товары.Итог("Вес");
```
 не работает.
---
Не работает, если в свойствах этого реквизита не стоит галка "Итог по колонке". Или поставьте или напишите цикл и сложите.
---
Какой релиз УТ ? Какого реквизита нет? В каком конкретном документе? Вы, случайно, не партизан? Почему у вас приходится всё клещами вытаскивать?
До обновления можно было менять высоту вручную прямо в Предприятии. Сейчас такой функционал пропал. А может быть не пропал? Кто-нибудь в курсе?
---
Сделал. Нужно, чтобы группы были растянуты по вертикали/по горизонтали (смотря какое у вас расположение). Так же они не должны иметь высоты как и все содержащиеся элементы в этих группах.
---
Вам шашечки или ехать? Чего обновляли, конфа какая и тд.
---
Нетиповая конфигурация на базе УТ. Обновили платформу. Речь идет о табличной части на самой УФ. Там, где красная линия, можно было потянуть и поменять область отображения верхней частив меньшую сторону, а нижней части в большую (да уж, выразился, но так более понятно должно быть). Извиняюсь, что сразу не до конца объяснил, в чем суть.
---
Редактирование таблицы в 1С 8.3.15.1700
---
, (1), работает при выделение любой ячейки табличного документа
---
Это больше зависит от платфомы конечно
суть - нужно стоять курсором на тексте, чтобы было что редактировать )
---
Сделал. Нужно, чтобы группы были растянуты по вертикали/по горизонтали (смотря какое у вас расположение). Так же они не должны иметь высоты как и все содержащиеся элементы в этих группах.
Платформа 8.3.15.1778(x32), клиент-серверный вариант. При выполнении внешней обработки получаем такую ошибку:

Как исправить?
---
немного историй из платформы

Работа с СУБД. Система компоновки данных. Динамический список.
Длина шаблона поиска для операции языка запросов ПОДОБНО, а также при поиске в динамическом списке и при использовании отбора в системе компоновки данных, стала ограничена.

Размер ограничения зависит от используемой СУБД. В случае превышения длины шаблона будет выдаваться ошибка, не приводящая к завершению работы системы.

Использование шаблона поиска, длиной более 1024 символов, в операции языка запросов ПОДОБНО, а также при поиске в динамическом списке и отборе в системе компоновки данных, могло приводить к ошибке СУБД и аварийному завершению работы системы.
Исключены аварийные завершения работы системы, возникающие из-за указания слишком длинного шаблона поиска.

и некро-ветка
https://forum.mista.ru/topic.php?id=760643

думаю хватит чтобы переписать нетленку
---
поймать в отладке запрос, посмотреть параметры, мож там в шаблон втиснули БСЭ
если там все-лишь донос на управдома, то можем продолжить исследования.
---
Это два дня назад работало.
---
Может энциклопедию два дня назад писали на бересте, а сейчас там 100 томов.
где результаты из отладчика?
---
Это моя обработка.
---
обработка может и ваша, а данные компании.

помню был случай, когда юзерам разрешили сохранять прикрепленные файлы толи в самомписке, толи
в ранних типовых без ограничения размера.
пользователи через прикрепленные файлы друг другу передавали немецкие фильмы в хорошем качестве.
ну а че, на документы это не влияет - подумаешь база пухнет.
---
немного историй из платформы

Работа с СУБД. Система компоновки данных. Динамический список.
Длина шаблона поиска для операции языка запросов ПОДОБНО, а также при поиске в динамическом списке и при использовании отбора в системе компоновки данных, стала ограничена.

Размер ограничения зависит от используемой СУБД. В случае превышения длины шаблона будет выдаваться ошибка, не приводящая к завершению работы системы.

Использование шаблона поиска, длиной более 1024 символов, в операции языка запросов ПОДОБНО, а также при поиске в динамическом списке и отборе в системе компоновки данных, могло приводить к ошибке СУБД и аварийному завершению работы системы.
Исключены аварийные завершения работы системы, возникающие из-за указания слишком длинного шаблона поиска.

и некро-ветка
https://forum.mista.ru/topic.php?id=760643

думаю хватит чтобы переписать нетленку
Как программно в СКД поставить условное оформление только на группировку? Например:
Заказ покупателя -6(дни)
  Номенклатура 1 -2(дни)
  Номенклатура 2 -4(дни)
Например ставлю условие в оформлении Дни>1. Как сделать так,чтобы условие оформления действовала только на группировку( заказ покупателя)?
---
задать УО для этой группировки, а не в для всей настройки
---
задать УО для этой группировки, а не в для всей настройки
---
как добавить ОУ для этой группировки?
В СКД добавил ОУ , но в отладчике не могу найти это ОУ
---
Нашел
Здравствуйте. Подскажите, пожалуйста, как правильно в этом запросе сделать параметр по номенклатуре. Начинаю только программировать в 1с

```1c
    ВЫБРАТЬ
    ОстаткиТоваров.Номенклатура,
    ОстаткиТоваров.ХарактеристикаНоменклатуры,
    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХранения,
    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоэффициентЕдиницыХранения,
    ОстаткиТоваров.Качество,
    ОстаткиТоваров.Склад,

    СУММА(ОстаткиТоваров.КоличествоОстаток) КАК Количество,

    ВЫБОР
    КОГДА (СУММА(ОстаткиПартий.КоличествоОстаток) = 0)
    ИЛИ (СУММА(ОстаткиПартий.КоличествоОстаток) ЕСТЬ NULL) ТОГДА
    0
    ИНАЧЕ
    СУММА(ОстаткиПартий.СтоимостьОстаток)*СУММА(ОстаткиПартий.КоличествоОстаток)
    / СУММА(ОстаткиТоваров.КоличествоОстаток)
    КОНЕЦ КАК Сумма
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, {Склад})
    КАК ОстаткиТоваров

    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Период, Склад В (&ПартионныйСклад)) КАК ОстаткиПартий
    ПО
    ОстаткиТоваров.Номенклатура = ОстаткиПартий.Номенклатура
    И ОстаткиТоваров.ХарактеристикаНоменклатуры = ОстаткиПартий.ХарактеристикаНоменклатуры
    И ОстаткиТоваров.СерияНоменклатуры = ОстаткиПартий.СерияНоменклатуры
    И ОстаткиТоваров.Качество = ОстаткиПартий.Качество

    {ГДЕ ОстаткиТоваров.Номенклатура КАК Номенклатура,
    ОстаткиТоваров.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа}

    СГРУППИРОВАТЬ ПО
    ОстаткиТоваров.Номенклатура,
    ОстаткиТоваров.Склад,
    ОстаткиТоваров.ХарактеристикаНоменклатуры,
    ОстаткиТоваров.СерияНоменклатуры,
    ОстаткиТоваров.Качество
```
---
Записать оба результата запроса во временные таблицы, их проиндексировать и потом соединять. Агрегатные функции здесь лишние. Номенклатуру добавить в параметры виртуальной таблицы.
---
Вот например
РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, {Склад и Номенклатура})
и дальше по образу и подобию, как завещал нам...
---
Записать оба результата запроса во временные таблицы, их проиндексировать и потом соединять. Агрегатные функции здесь лишние. Номенклатуру добавить в параметры виртуальной таблицы.
С 6 февраля на 8.2.19 перестал работать Telegram через HTTPСоединение.

```1c
    ТекстЗапроса = "bot"+ИмяБота+"/sendMessage?chat_id="+Получатель+"&parse_mode=HTML&text="+ТекстСообщения;
    Прокси = Новый ИнтернетПрокси;
    Прокси.Пользователь = <Логин>;
    Прокси.Пароль = <Пароль>;
    Прокси.Установить("https", "socks5://<Прокси>", <Порт>);
    Соединение = Новый HTTPСоединение("api.telegram.org",443,,,Прокси,100,Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос(ТекстЗапроса);
    Ответ = Соединение.Получить(Запрос);
```
Выдает SSL connect error
Попытки переписать на COMОбъект("WinHttp.WinHttpRequest.5.1") ни к чему не приводят

```1c
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.SetProxy(2,"socks5://<Логин>:<Пароль>@<Прокси>:<Порт>");
    WinHttp.Option(4, 13056);
    WinHttp.Option(6, true);
    WinHttp.Option(12, true);
    WinHttp.Open("POST", "https://api.telegram.org/bot<ИмяБота>/sendMessage", 0);
    WinHttp.SetRequestHeader("Content-type", "application/json");
    WinHttp.Send("chat_id=<ID>&parse_mode=HTML&text=TEST");
    WinHttp.WaitForResponse(15);
    XMLОтвет = WinHttp.ResponseText();
```

Логин/пароль прокси передавал и в SetProxy и в SetCredentials, Option и прямо и через MSScriptControl.ScriptControl.
Никак не хочет.
При этом cmd через curl продолжает нормально работать.
Может кто-то решил возникшую проблему?
---
обновить платформу не предлагать?
---
обновить платформу не предлагать?
---
, телега нужна сейчас, а обновлять без нормального тестирования рабочую базу на обычных формах с 8.2 на 8.3 не хочется.

(2), прокси рабочий. Все упирается в socks: HTTPСоединение работает с ним, но не тянет TSL. WinHttpRequest тянет TSL, но работает только с https/http прокси.
---
до 8.3.5 особых проблем не должно быть.
Пару дней работы.
Но если найдете другой костыль пишите.
А так платформа не поддерживает технологию, возможно телега перешла на новый подрелиз, где поможет только свежая платформа.
---
судя по тестам, нужна 8.3.9. На ней TSL обновили до 1.3.
---
да чет читал такое.
Но я же вам не про саму платформу писал. А про режим совместимости конфигурации.
Платформу обновить это админ за вечер сделает и допилить ничего не нужно!
---
рабочий код - в публикации https://infostart.ru/public/879132/
Но я не уверен, что он подойдет для Вашего релиза платформы.
---
, Проверял на бесплатных HTTP проксях WinHttp.WinHttpRequest.5.1 - работает. Если в том коде заменить им HTTPСоединение - будет работать. Но прокси будут браться не свои, соответственно страдает безопасность и надежность.
---
А прокси вообще рабочий? может быть аккаунт отпал
---
Абсолютно такая же проблема. Решения не нашли ?
---
Решение в (3)
---
, нет. Все, что не стандартное - не работает с SOCKS. Хотя странно, что нет ни одного COM объекта с возможностью проксирования через него.
---
Кратчайший путь - обновите платформу до актуальной.
Добрый день, подскажите пожалуйста почему не получается объединить в 1 строку результат данного запроса:

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВЫБОР
    КОГДА ЕСТЬNULL(ПриемНаРаботуДополнительныеРеквизиты.Значение, ") = "
    ТОГДА "Нет"
    ИНАЧЕ "Да"
    КОНЕЦ КАК НеНормированный,
    " КАК Разъездной,
    " КАК НеПолныйДень
    ИЗ
    Документ.ПриемНаРаботу.ДополнительныеРеквизиты КАК ПриемНаРаботуДополнительныеРеквизиты
    ГДЕ
    ПриемНаРаботуДополнительныеРеквизиты.Свойство.Имя ПОДОБНО "ПЛ_НенормированныйРабочийДень"
    И ПриемНаРаботуДополнительныеРеквизиты.Ссылка = &Ссылка

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ",
    ВЫБОР
    КОГДА ЕСТЬNULL(ПриемНаРаботуДополнительныеРеквизиты.Значение, ") = "
    ТОГДА "Нет"
    ИНАЧЕ "Да"
    КОНЕЦ,
    "
    ИЗ
    Документ.ПриемНаРаботу.ДополнительныеРеквизиты КАК ПриемНаРаботуДополнительныеРеквизиты
    ГДЕ
    ПриемНаРаботуДополнительныеРеквизиты.Свойство.Имя ПОДОБНО "ПЛ_РазъезднойХарактерРаботы"
    И ПриемНаРаботуДополнительныеРеквизиты.Ссылка = &Ссылка

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ",
    ",
    ВЫБОР
    КОГДА ЕСТЬNULL(ПриемНаРаботуДополнительныеРеквизиты.Значение, ") = "
    ТОГДА "Нет"
    ИНАЧЕ "Да"
    КОНЕЦ
    ИЗ
    Документ.ПриемНаРаботу.ДополнительныеРеквизиты КАК ПриемНаРаботуДополнительныеРеквизиты
    ГДЕ
    ПриемНаРаботуДополнительныеРеквизиты.Свойство.Имя ПОДОБНО "ПЛ_НеПолныйДень"
    И ПриемНаРаботуДополнительныеРеквизиты.Ссылка = &Ссылка
```

Причем пробовал по разному и "Объединить" и "Объединить ВСЕ".
---
объединить группирует строки, которые полностью повторяются, тут можно всё это во ВТ и потом сгруппировать по полю (допустим ссылка документа)

Я бы сделал через левое соединение к документу
---
Вам нужно не объединить, а сгруппировать
---
объединить группирует строки, которые полностью повторяются, тут можно всё это во ВТ и потом сгруппировать по полю (допустим ссылка документа)

Я бы сделал через левое соединение к документу
---
Спасибо, видимо уже зарылся) Именно так и сделал.
Добрый день. Помогите с запросом. Необходимо посчитать продолжительность смены

```1c
    ВЫБРАТЬ
    ВЫРАЗИТЬ(РАЗНОСТЬДАТ(Смены.НачалоСмены, Смены.ОкончаниеСмены, СЕКУНДА)/3600 КАК ЧИСЛО(10, 2)) КАК ПродолжительностьСмены
    ИЗ
    Справочник.Смены КАК Смены
    ГДЕ
    Смены.Ссылка = &Ссылка
```

При начале смены 20:00:00 о окончания 7.00.00 выдает -13. В чем ошибка
---
проверьте даты, если дата окончания смены меньше начала смены, то прибавить к дате день, должно помочь

```1c
    ВЫБРАТЬ
    ВЫРАЗИТЬ(РАЗНОСТЬДАТ(Смены.НачалоСмены, ВЫБОР
    КОГДА Смены.ОкончаниеСмены <= Смены.НачалоСмены
    ТОГДА ДОБАВИТЬКДАТЕ(Смены.ОкончаниеСмены, ДЕНЬ,1 )
    ИНАЧЕ Смены.ОкончаниеСмены
    КОНЕЦ, СЕКУНДА)/3600 КАК ЧИСЛО(10, 2)) КАК ПродолжительностьСмены
    ИЗ
    Справочник.Смены КАК Смены
    ГДЕ
    Смены.Ссылка = &Ссылка
```
---
а то что начало смены в один день, а окончание на следующий вы учитываете? Запрос похоже в рамках одного дня считает?
---
А как в запросе учесть разные дни, если указано только время?
---
проверьте даты, если дата окончания смены меньше начала смены, то прибавить к дате день, должно помочь

```1c
    ВЫБРАТЬ
    ВЫРАЗИТЬ(РАЗНОСТЬДАТ(Смены.НачалоСмены, ВЫБОР
    КОГДА Смены.ОкончаниеСмены <= Смены.НачалоСмены
    ТОГДА ДОБАВИТЬКДАТЕ(Смены.ОкончаниеСмены, ДЕНЬ,1 )
    ИНАЧЕ Смены.ОкончаниеСмены
    КОНЕЦ, СЕКУНДА)/3600 КАК ЧИСЛО(10, 2)) КАК ПродолжительностьСмены
    ИЗ
    Справочник.Смены КАК Смены
    ГДЕ
    Смены.Ссылка = &Ссылка
```
---
все верно, если тип даты как "Время"
7-20 = -13
---
В 8 утра будет 12 часов, а в 7 должно быть 11
---
Расчет верен, я бы добавил к полю так же разность дат в днях, тогда даже если смена продолжается несколько суток поле будет возвращать верный результат.
Мне нужно передать параметр на другую открываемую форму. Из документа Заказ покупателя в форму внешней обработки.
Для управляемых форм таких примеров достаточно много, а вот для обычных форм немного и они не подходят для решения.

Передать параметр из документа наверно можно так во внешнюю обработку, по крайней мере программа не выдает ошибку синтаксиса

```1c
    Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
    Форма.ПараметрОснование = Ссылка;
    Форма.Открыть();
```

А вот на получении параметра во внешней обработке выходит ошибка синтаксиса, не определена переменная ПараметрОснование

```1c
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    СсылкаНаОбъект = ПараметрОснование;
    КонецПроцедуры
```
---
Спасибо попробую, ради спортивного интереса.
Получилось вот так

```1c
    Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
    Форма.СсылкаНаОбъект=Ссылка;
    Форма.Открыть();
```

СсылкаНаОбъект - это реквизит на форме внешней обработки, он сам заполняется и все волшебно)
---
Ввод на основании?
---
нет, Обработка для печати счета предоплаты.
---
форма внешней обработки вряд ли образуется механизмами на основании, хотя климат меняется и людям в голову могут приходить чудовищные идеи.
---
приходить чудовищные идеи да такая идея пока не пришла, но вы сами написали, остальное от лукавого, следовательно все может быть)
---
через владельца или через хранилище - остальное от лукавого
---
через владельца Владелец, это объект или ссылка?
---
мне лень отвечать на такой вопрос, подозреваю это ураган на меня влияяет(
---
это был риторический вопрос, можно и не отвечать
---
А так: Процедура ПередОткрытием(Отказ, СтандартнаяОбработка, ПараметрОснование)
---
Спасибо попробую, ради спортивного интереса.
Получилось вот так

```1c
    Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
    Форма.СсылкаНаОбъект=Ссылка;
    Форма.Открыть();
```

СсылкаНаОбъект - это реквизит на форме внешней обработки, он сам заполняется и все волшебно)