arefaste/1C_Forums huggingface dataset:
Добрый день. Подскажите, пожалуйста, как выбрать первый документ в запросе, если не найден искомый по условию документ? Пробовал так
```1c
    ВЫБРАТЬ
    ВЫБОР КОГДА ДокументЗапроса.Ссылка ЕСТЬ NULL
    ТОГДА ДокЗапроса.Ссылка
    КОНЕЦ КАК Документ
    ИЗ
    Документ.ЗаказПоставщику КАК ДокументЗапроса,
    (ВЫБРАТЬ ПЕРВЫЕ 1
    ДокЗапроса.Ссылка КАК Ссылка
    ИЗ
    Документ.ЗаказПоставщику КАК ДокЗапроса) КАК ДокЗапроса
    ГДЕ
    ДокументЗапроса.Комментарий ПОДОБНО "%мой комментарий%"
```
---
Скорее так:

```1c
    ВЫБРАТЬ Первые 1
    Ссылка
    ИЗ
    Документ.ЗаказПоставщику КАК ДокументЗапроса
    ГДЕ
    Ссылка В
    (ВЫБРАТЬ
    Т.Ссылка
    ИЗ
    Документ.ЗаказПоставщику КАК Т
    ГДЕ
    Т.Комментарий ПОДОБНО "%мой комментарий%")
    ИЛИ ИСТИНА
```
---
```1c
    ВЫБРАТЬ ПЕРВЫЕ 1
    ВложенныйЗапрос.Документ КАК Документ
    ИЗ
    (ВЫБРАТЬ
    ДокументЗапроса.Ссылка КАК Документ,
    0 КАК Приоритет
    ИЗ
    Документ.ЗаказПоставщику КАК ДокументЗапроса
    ГДЕ
    ДокументЗапроса.Комментарий ПОДОБНО "%мой комментарий%"

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ ПЕРВЫЕ 1
    ДокументЗапроса.Ссылка,
    1
    ИЗ
    Документ.ЗаказПоставщику КАК ДокументЗапроса) КАК ВложенныйЗапрос

    УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.Приоритет
```
---
Скорее так:

```1c
    ВЫБРАТЬ Первые 1
    Ссылка
    ИЗ
    Документ.ЗаказПоставщику КАК ДокументЗапроса
    ГДЕ
    Ссылка В
    (ВЫБРАТЬ
    Т.Ссылка
    ИЗ
    Документ.ЗаказПоставщику КАК Т
    ГДЕ
    Т.Комментарий ПОДОБНО "%мой комментарий%")
    ИЛИ ИСТИНА
```
---
Такой запрос вернёт первый попавшийся документ, ведь условие всегда будет Истина.
---
```1c
    ВЫБРАТЬ ПЕРВЫЕ 1
    ВложенныйЗапрос.Документ КАК Документ
    ИЗ
    (ВЫБРАТЬ
    ДокументЗапроса.Ссылка КАК Документ,
    0 КАК Приоритет
    ИЗ
    Документ.ЗаказПоставщику КАК ДокументЗапроса
    ГДЕ
    ДокументЗапроса.Комментарий ПОДОБНО "%мой комментарий%"

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ ПЕРВЫЕ 1
    ДокументЗапроса.Ссылка,
    1
    ИЗ
    Документ.ЗаказПоставщику КАК ДокументЗапроса) КАК ВложенныйЗапрос

    УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.Приоритет
```
---
(3) спасибо
---
Сообщение было скрыто модератором.
Добрый день. Начал обучаться 1с. Прохожу курс и столкнулся с проблемой в дз.
Сделал кнопку, для смены параметра объекта в клиентском приложении, но почему то бракует. Может кто сможет подсказать в чем проблема?
---
свойства команды.
Режим использования параметра "Множественный"?
Тогда там будет массив. У массива нет метода ПолучитьОбъект.
---
поставить точку останова и проверить, что находится в СписокНоменклатураСсылка вообще никак?
---
Скорее всего там не ссылка а список целиком передается
---
нам предлагается поиграть в битву экстрасенсов
---
угадаю эту мелодию с 7 нот :)
---
Валяй :)
То, что в параметре не ссылка - это очевидно и за ответ не считается :)
---
Начал обучаться 1с
У кого???? У форума? блин, ну есть-же книги, тематические источники, за что это все нам???
---
свойства команды.
Режим использования параметра "Множественный"?
Тогда там будет массив. У массива нет метода ПолучитьОбъект.
---
Спасибо большое.
Здравствуйте. Во внешней обработке создал две формы. Сначала открывается первая форма где я заполняю реквизиты объекта:

```1c
    Объект.ID = "строка"
    Объект.КлиентскийКод = "строка";
```

Потом открываю вторую форму:

```1c
    ЭтаФорма.Закрыть();
    Форма2 = ПолучитьФорму("ВнешняяОбработка.ТестоваяВнешняяОбработка.Форма.Форма2");
    Форма2.Открыть();
```

И уже во второй форме обращаясь к реквизитам объекта они оказываются пустые. Не понимаю почему ведь это не реквизиты формы. Заполняю реквизиты на первой форме &НаСервере,открываю вторую форму &НаКлиенте, во второй форме обращаюсь к реквизитам объекта &НаСервере.

В таком случае нужно создавать на второй форме реквизит где будет храниться ссылка на основную форму?
---
так устроены обработки, что они не хранят данные!
только пока открыта форма, в контрекстве формы
как только вы закрываете форму, все пропадает

попробуйте сделать так, в форме1 получить объект обработки и передать его ввиде параметара в форму2
 и событии при создании на сервере, заполните реквизиты объекта переданными параметрами.,
---
так устроены обработки, что они не хранят данные!
только пока открыта форма, в контрекстве формы
как только вы закрываете форму, все пропадает

попробуйте сделать так, в форме1 получить объект обработки и передать его ввиде параметара в форму2
 и событии при создании на сервере, заполните реквизиты объекта переданными параметрами.,
---
Сделал так как вы описали:

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

    ПараметрыФормы = Новый Структура("Ключ", ДанныеФормы);
    ОткрытьФорму("ВнешняяОбработка.ТестоваяВнешняяОбработка.Форма.Форма2", ПараметрыФормы);
```

Только такой момент. Не могу обойти Параметры. Она типа ДанныеформаСтруктура. Просто обратиться тоже не получается выкидывается ошибка.

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    //Объект.ID = Параметры.ID;
    //Объект.КлиентскийКод = Параметры.КлиентскийКод;

    Объект.ID = Параметры.Свойство("ID");
    Объект.КлиентскийКод = Параметры.Свойство("КлиентскийКод");

    КонецПроцедуры
```
---
Мдааа, тупанул. Надо же было через "Параметры.Ключ.ID" и т.д.
Доброго всем.
В регламентном задании, есть поле сообщение. Можно ли туда вставить текст сообщения пользователю и как если можно. Не работал раньше сними, не понимаю в каком направлении искать.
Есть ситуация, что рег.задание не выполняется, т.к. имеются специальные ограничения, но при этом ошибки нет, можно ли как-то об этом уведомить пользователя или заполнить это поле, чтоб пользователь заглянул и посмотрел что там.
---
ВызватьИсключение "Нужный произвольный текст".
Рег.Задание будет Завершено с ошибками, а в Сообщение будет этот текст и место ошибки.
---
ВызватьИсключение "Нужный произвольный текст".
Рег.Задание будет Завершено с ошибками, а в Сообщение будет этот текст и место ошибки.
---
не плохая идея, не совсем красиво в этом окне , т.к. куча лишнего текста об ошибке, но сообщение передалось. Годится.
---
Проще всего сделать запись в журнал регистрации.
---
еще как вариант просто в коде обработки РегЗадания выводить нужное сообщение, а затем в консоли заданий читать их,
полно таких примеров
например в Попытке что-то не сработало, просто выводишь Сообщить(ОписаниеОшибки());
рег задание при этом не падает и в консоли заданий ,видно это сообщение.
либо какие другие сообщения выводишь например "Обработано то-то и то-то"
и т.д.
но надо следить за количеством Сообщений, не рекомендуется выводить миллион сообщений
только что-то по делу, суммарное.

(так очень удобнее чем писат в ЖР)
Доброе время суток, уважаемые.

Задача такая.
Выводится список подразделений и должностей в этих подразделениях. (Штатное расписание в ЗКГУ 3.0). Режим вывода - иерархический. В штатном режиме конфигурации должности верхнего уровня иерархии выводятся вперемежку с папками следующего (нижнего) уровня иерархии, что, разумеется, неудобно.
Как настроить (или сконфигурировать ) вывод этого списка, чтобы вывод следовал в таком порядке:
- Папка верхнего уровня иерархии.
   - Должности (папки) верхнего уровня иерархии
   - Папки следующего уровня иерархии
     - Должности следующего уровня уровня иерархии.
       ........

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

Уточню задачу.
Как в иерархическом режиме динамического списка с вложенными папками показывать:

1. Сначала папку верхнего уровня.
2. Потом записи, вложенные в папку верхнего уровня.
3. После этого папки, вложенные в папку верхнего уровня.

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

При создании на сервере пробовал выполнить ЭтотОбъект.ЗаблокироватьДанныеФормыДляРедактирования() но не увидел блокировки объекта.
---
определить как блокировки влияют на update операции http-сервиса, выполнится ли операция обновления, упадёт ли сервис с ошибкой или пропустит обновление только этого пользователя
Операция обновления выполнится, т.к. форма объекта выполняет оптимистические блокировки.
Если окажется два программных изменения кода, то они выполнятся по очереди скорее всего.

Проверять нужно по-другому:
1. Получить объект кодом в одном сеансе
2. Получить объект кодом во втором сеансе и "заснуть" на этом.
3. Записать объект в первом сеансе.

Открыть форму объекта и изменение этого же объекта кодом вызовет ошибку записи в форме, кодом объект будет изменен.
---
Блокировка объекта:

```1c
    Объект.Заблокировать()
```

Не совсем понятно, какую цель преследуете.
---
Объект.Заблокировать()

```1c
    Справочник.Пользователи.Форма.ФормаЭлемента.Форма Возможно ошибочный метод: "Заблокировать"
```

Даже сохранить не даёт. Платформа 8.3.21
---
Вы лучше более подробно объясните, для чего вам нужно блокировать объекты?
Объекты и так блокируются платформой, но существуют оптимистические/пессемистические блокировки.
При открытии формы объекта происходит его оптимистическая блокировка, при получении объекта кодом - пессимистическая.

Так же существуют транзакционные блокировки(разделяемые/исключительные), но это уже не объекты, а записи в таблицах хранения.
---
цель: определить как блокировки влияют на update операции http-сервиса, выполнится ли операция обновления, упадёт ли сервис с ошибкой или пропустит обновление только этого пользователя.

Вот искусственную блокировку как раз хотел наиграть для объекта, чтобы проверить его обновление через postman
---
определить как блокировки влияют на update операции http-сервиса, выполнится ли операция обновления, упадёт ли сервис с ошибкой или пропустит обновление только этого пользователя
Операция обновления выполнится, т.к. форма объекта выполняет оптимистические блокировки.
Если окажется два программных изменения кода, то они выполнятся по очереди скорее всего.

Проверять нужно по-другому:
1. Получить объект кодом в одном сеансе
2. Получить объект кодом во втором сеансе и "заснуть" на этом.
3. Записать объект в первом сеансе.

Открыть форму объекта и изменение этого же объекта кодом вызовет ошибку записи в форме, кодом объект будет изменен.
---
Спасибо!
Добрый день!

Была в модуле формы документа процедура на клиенте:

&НаКлиенте
Процедура ОбновитьСтавкиВПодчиненныхДокументах(Команда)

Она вызывалась по кнопке на форме соответствующей командой и при глобальном поиске везде показывает всего 3 места, где есть такое название: имя кнопки, имя команды и имя процедуры.
Всё было хорошо, пока содержимое этой процедуры не было закомментировано и внутри не появился вызов другой процедуры с другим именем. После этого стала возникать вот эта ошибка:

Процедура или функция с указанным именем уже определена (ОбновитьСтавкиВПодчиненныхДокументах)

Повторюсь. ПРОЦЕДУР с таким именем дольше нет в базе. Может подскажет кто, что с этим делать?
---
Всё. Нашёл ошибку. закомментировал несколько процедур перед этой, а &НаКлиенте и &НаСервере остались висеть. Закомментировал их и всё пошло.
---
Всё. Нашёл ошибку. закомментировал несколько процедур перед этой, а &НаКлиенте и &НаСервере остались висеть. Закомментировал их и всё пошло.
---
Скобки не так расставили где-то.
---
Спасибо. Решение найдено.
В конфигурации БСП Демо
Для формы элемента Номенклатура создается Панель навигации, которая позволяет перейти на страницу окна подчиненного справочника Характеристики. (картинка 1)
Мне не удается понять, что требуется сделать, чтоб в моей конфигурации было так же.
Справочники копировал из конфигурации ЕРП
В Командном интерфейсе формы в разделе Перейти не появляется аналогичная строка.
Какую опцию должен иметь подчиненный справочник, кроме того, что указан Владелец?

В документации не нашел описания этой настройки.
---
у справочника, в разделе Команды, включено "Использовать стандартные команды"?
---
иногда помогает закрыть окно конфигурации и открыть его заново
---
у справочника, в разделе Команды, включено "Использовать стандартные команды"?
---
Бинго!!!! Спасибо!!!
3 дня и з ночи приятных поисков позади....
Форма, на форме:
ТЗ_Заказы - это таблица значений
ЗаказКлиента - колонка этой ТЗ. По кнопке получаю номер заказа в выделенной строке

```1c
    Ид = Элементы.ТЗ_Заказы.ВыделенныеСтроки[0];
    ЗаказДляВыгрузки = ТЗ_Заказы[Ид].ЗаказКлиента;
```

После отработки кода происходит перезаполнение таблицы, т.к. убирается строка, которая была обработана.

```1c
    ТЗ_Заказы.Загрузить(рез.Выгрузить());
```

Делала на уже готовой обработке - все работало. Компания выпустила новый релиз обработки - переношу на нее свои изменения. Первый раз отрабатывает нормально, определяет заказ. Второй раз ошибка, в отладке индекс больше, чем количество строк в ТЗ. Ощущение что Элементы.ТЗ_Заказы.ВыделенныеСтроки[0] возвращает сумму кол-во строк в таблице и порядковый номер выделенной строки).
Индекс находится за границами массива
{ВнешняяОбработка.DataMobileLoadUpload.Форма.Управляемая.Форма(30161)}:
ЗаказДляВыгрузки = ТЗ_Заказы[Ид].ЗаказКлиента;
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
Пробовала

```1c
    ТЗ_Заказы.Очистить;
    ТЗ_Заказы.Загрузить(рез.Выгрузить());
```

Все равно ошибка
---
Элементы.ТЗ_Заказы.ВыделенныеСтроки[0] возвращает сумму кол-во строк в таблице и порядковый номер выделенной строки).
Он возвращает Идентификатор строки.

```1c
    ЗаказДляВыгрузки = ТЗ_Заказы.НайтиПоИдентификатору(Ид).ЗаказКлиента;
```
---
Элементы.ТЗ_Заказы.ВыделенныеСтроки[0] возвращает сумму кол-во строк в таблице и порядковый номер выделенной строки).
Он возвращает Идентификатор строки.

```1c
    ЗаказДляВыгрузки = ТЗ_Заказы.НайтиПоИдентификатору(Ид).ЗаказКлиента;
```
Приветствую. Нужна помощь по заданию

1. Создать конфигурацию, в которой есть справочник «Номенклатура»:
иерархический, количество уровней неограниченно или максимально возможное.
Реквизиты: Наименование и Код.
2. Написать обработку для выполнения следующей задачи:
На входе: Строка неограниченной длины, куда пользователь вводит название искомой
группы с указанием всех вышестоящих групп, используя разделитель («\»).
Результат: Если искомой группы в справочнике нет, создаем ее, если есть выводим
сообщение, что группа существует.
Например:
Пользователь вводит строку «Мебель\Шкафы\Белый цвет». Результатом будет
создание группы «Мебель», группы «Шкафы» в ней и создание группы «Белый цвет» в
группе «Шкафы».
---
```1c
    ИменаГрупп = СтрРазделить(ПолныйПуть, "\", Ложь);
    Родитель = Справочники.Номенклатура.ПустаяСсылка();

    НайденныйИндекс = Неопределено;
    Для Индекс = 0 По ИменаГрупп.ВГраница() Цикл
    Группа = Справочники.Номенклатура.НайтиПоНаименованию(ИменаГрупп[Индекс], Истина, Родитель);
    Если Группа.Пустая() Тогда
    НайденныйИндекс = Индекс;
    Прервать;
    КонецЕсли;
    Родитель = Группа;
    КонецЦикла;

    Если НайденныйИндекс = Неопределено Тогда
    Сообщить("Группа существует");
    Возврат;
    КонецЕсли;

    Для Индекс = НайденныйИндекс По ИменаГрупп.ВГраница() Цикл
    НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
    НоваяГруппа.Наименование = ИменаГрупп[Индекс];
    НоваяГруппа.Родитель = Родитель;
    НоваяГруппа.Записать();
    Родитель = НоваяГруппа.Ссылка;
    КонецЦикла;
```
---
```1c
    ИменаГрупп = СтрРазделить(ПолныйПуть, "\", Ложь);
    Родитель = Справочники.Номенклатура.ПустаяСсылка();

    НайденныйИндекс = Неопределено;
    Для Индекс = 0 По ИменаГрупп.ВГраница() Цикл
    Группа = Справочники.Номенклатура.НайтиПоНаименованию(ИменаГрупп[Индекс], Истина, Родитель);
    Если Группа.Пустая() Тогда
    НайденныйИндекс = Индекс;
    Прервать;
    КонецЕсли;
    Родитель = Группа;
    КонецЦикла;

    Если НайденныйИндекс = Неопределено Тогда
    Сообщить("Группа существует");
    Возврат;
    КонецЕсли;

    Для Индекс = НайденныйИндекс По ИменаГрупп.ВГраница() Цикл
    НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
    НоваяГруппа.Наименование = ИменаГрупп[Индекс];
    НоваяГруппа.Родитель = Родитель;
    НоваяГруппа.Записать();
    Родитель = НоваяГруппа.Ссылка;
    КонецЦикла;
```
---
Показывай
---
15 тыс
Я изучаю связь перечисления с 1с 8.3. На примере, выбранного пола добавляю окончание фамилии.
Получаю при этом ошибку:

{Справочник.Пользователи.Форма.Регистрация.Форма(97)}: Преобразование значения к типу Булево не может быть выполнено
 Если ПредопределенноеЗначение("Перечисление.Пол.Мужской") Тогда

Код:

```1c
    &НаКлиенте
    Процедура ФамилияПриИзменении(Элемент)
    Объект.Фамилия = ВРег(Лев(Объект.Фамилия,1));
    Если ПредопределенноеЗначение("Перечисление.Пол.Мужской") Тогда
    Объект.Фамилия = Объект.Фамилия+"ов"
    Иначе
    Объект.Фамилия = Объект.Фамилия+"ев"
    КонецЕсли;
    КонецПроцедуры
```
---
```1c
    ПредопределенноеЗначение("Перечисление.Пол.Мужской")
```

всё верно (ошибка) -

условия-то нету здесь.
---
```1c
    ПредопределенноеЗначение("Перечисление.Пол.Мужской")
```

всё верно (ошибка) -

условия-то нету здесь.
---
а каким исправленным оно должно быть ?
---
```1c
    Если Объект.Пол = ПредопределенноеЗначение("Перечисление.Пол.Мужской") Тогда
```
---
я так и подумал, спасибо.
---
так не только думать, надо (в таких случаях, однозначно) было - а элементарно, пробовать варианты, дальше.

(такой подход - годится, именно для изучения тыком)
---
Судя по дате последнего входа, забросил он 1С, так и не освоив подход метода "тыка" =)
---
Да, глупость конечно. В данном случае метод "ПредопределенноеЗначение" должен возвращать логическое значение.
А не само значение.
ТабДок = СформироватьТабДок();
 ПутьКФайлу="C:\НазваниеФайла.xlsx";
 СоздатьНовыйExcellФайл(ПутьКФайлу);
 ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Нужно в ПутьКФайлу указать каталог на сервере?
И в правильном ли направлении я вообще думаю?
Задача: сформировать табличный документ и загрузить на сервер
---
лучше записать через получение временного каталога, а потом перенести файл на общий сетевой ресурс сервера.
---
лучше записать через получение временного каталога, а потом перенести файл на общий сетевой ресурс сервера.
---
если можно, напишите пример, пожалуйста
---
Что нибудь типа этого

```1c
    ДатаСтрокой = Формат(ТекущаяДата(), "ДФ=yyyyMMdd")+" время - " + Формат(ТекущаяДата(), "ДФ=HHmmss");
    ГдеСохранить = КаталогВременныхФайлов();
    СоздатьКаталог(ГдеСохранить+"Отправка");

    ПолноеИмяФайла = ГдеСохранить+ "Отправка\НужныеОтчеты от "+ДатаСтрокой+".xlsx";
    Поток = ФайловыеПотоки.ОткрытьДляЗаписи(ПолноеИмяФайла);
    ТабличныйДокумент.Записать(Поток, ТипФайлаТабличногоДокумента.XLSX);
    Поток.Закрыть();
```

Каталог Временных Файлов будет будет создан на сервере
Написал по памяти, может что то надо будет подправить.
---
Необходимо, чтобы ПутьКФайлу был доступен серверу 1С, вернее учетке, под которой запущен сервис.
Это не обязательно должен быть локальный диск сервера, где запущен сервис, это может быть и общий ресурс в сети
Всем здравствуйте!Возник следующий вопрос:Я делаю дипломный проект по тематике "школа",и в нем я создал журнал,в котором идет подсчет среднего балла,путем сложения всех оценок и их деление на 31(столько у меня реквизитов "День",т.е "День1,День2,День3 и т.д",что в корне неверно,т.к не все месяцы имеют такое количество дней,а потому мне нужно сделать так,чтобы деление происходило лишь на те реквизиты,которые уже имею в себе оценку,а остальные код не брал бы в расчет.Хотелось бы понять сам синтаксис этого рода действия

Вот как у меня выглядит этот самый журнал вместе с кодом:
---
ох, етить....Циклы вы не проходили вообще никак?
Количество "заполненных" дней считать простым счетчиком

```1c
    СчетчикДней = 0;
    Если ЗначениеЗаполнено(День) Тогда
    СчетчикДней = СчетчикДней + 1;
    КонецЕсли;
```

Потом, ессно, делить на значение СчетчикДней.
---
ох, етить....Циклы вы не проходили вообще никак?
Количество "заполненных" дней считать простым счетчиком

```1c
    СчетчикДней = 0;
    Если ЗначениеЗаполнено(День) Тогда
    СчетчикДней = СчетчикДней + 1;
    КонецЕсли;
```

Потом, ессно, делить на значение СчетчикДней.
---
Ну все наше обучение 1с строилось на просмотре видеоуроков от дедов с шипящими микрофонами.Спасибо за помощь,помогло!
---
При открытии и при изменении реквизита месяц узнаете сколько дней в месяце

```1c
    ДнейВМесяце=День(КонецМесяца(<Дата>))
```
 затем убираете видимость с элементов на форме (лишних колонок) в зависимости и кол-ва дней.
Сам расчет среднего лучше вынести в цикл, а не вот таким суммированием

```1c
    Сумма=0;
    Дней=0;
    Для П=1 По ДнейВМесяце Цикл
    Если НЕ СтрокаТабличнойЧасти["День"+П]=0 Тогда
    Сумма=Сумма+СтрокаТабличнойЧасти["День"+П];
    Дней=Дней+1;
    КонецЕсли;
    КонецЦикла;
    Результат=?(Дней=0,0,Сумма/Дней);
```
---
А что в этом контексте означает "П"?
---
Просто итератор. В этом цикле он пройдет от 1 до 31, например, или сколько дней в месяце
---
Поправил, там в результате не на дней в месяце делить, а на кол-во заполненных дней
---
Это все делается в событии формы,либо же напрямую через события "открытые" и "закрытие" реквизита месяц?Просто он не находится в тч,но если это никак на работоспособность не влияет,то ладно
Всем доброго времени суток! Кто-нибудь сталкивался с вопросом востановления вкладок при перезапуске 1с? Если да, то подскажите пожалуйста каким способом это можно решить?
---
лол https://infostart.ru/1c/tools/1013480/
---
По идее можно получить заголовки окон, сохранить в пользовательские настройки, при запуске приложения открыть получив сохраненные настройки пользователя.

```1c
    ОкнаКлиентскогоПриложения
```
---
Штатно такого нет. Но можно как раз через ОкнаКлиентскогоПриложения получить все навигационные ссылки и сохранить в какой-нибудь регистр со счетчиком входов пользователя. Конечно при закрытии программы нельзя делать серверных вызовов, но можно поиграться с обработчиком ПередЗавершениемРаботыСистемы.

Звучит странно, но не сложно.
---
лол https://infostart.ru/1c/tools/1013480/
---
Вроде здесь раньше было расширение СтартовыеСтраницы, правда сейчас я его что то не нахожу. Но его смысл в том что бы настроить свой список форм которые откроются при старте системы.
Подключаюсь вот так Соединение = Новый HTTPСоединение(АдресХоста, 443,,,,,Новый ЗащищенноеСоединениеOpenSSL(), Ложь);.
Все сертификаты установлены.
Отправляю запрос, в ответ получаю <!--No required SSL certificate was sent.-->
Помогите подключится, как то нужно указать этот сертификат или правильно установить?
---
мб конечно какие-то сложности на стороне сервиса, хотя это вроде из стандартных 400-х ответов. Я обычно пользуюсь такой конструкцией:

```1c
    ssl = Новый ЗащищенноеСоединениеOpenSSL(
    Новый СертификатКлиентаWindows(),
    Новый СертификатыУдостоверяющихЦентровWindows());
```
---
попробуйте так, чтобы не просил сертификата
Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено)
---
Но сертификат нужен для подключения к сайту, как указать сертификат?
---
как Прочитать справку по объекту ЗащищенноеСоединениеOpenSSL
---
мб конечно какие-то сложности на стороне сервиса, хотя это вроде из стандартных 400-х ответов. Я обычно пользуюсь такой конструкцией:

```1c
    ssl = Новый ЗащищенноеСоединениеOpenSSL(
    Новый СертификатКлиентаWindows(),
    Новый СертификатыУдостоверяющихЦентровWindows());
```
---
Ошибка при вызове метода контекста (ОтправитьДляОбработки)
{ВнешняяОбработка.Https_connect.Форма.Форма.Форма(52)}:Ответ = Соединение.ОтправитьДляОбработки(Запрос,ФайлОтвета);

по причине:
Ошибка работы с Интернет: Удаленный узел не прошел проверку
---
вот так получилось
ssl = Новый ЗащищенноеСоединениеOpenSSL(
    Новый СертификатКлиентаWindows(),
   Новый СертификатыУдостоверяющихЦентровWindows());