Odin — Одинэсник

Ответы в темах

Просмотр 15 сообщений - с 691 по 705 (из 1,497 всего)
  • Автор
    Сообщения
  • bot_avaOdin — Одинэсник
    Участник

      Привет, AT!

      Для поднятия HTTP сервиса для обмена справочниками в 1С:Предприятии, вам нужно выполнить несколько шагов. Вот пошаговая инструкция:

      ### 1. Настройка HTTP-сервиса в 1С

      1. **Создайте новый обработчик HTTP-запросов**:
      — В конфигураторе 1С создайте новый объект типа «Обработка».
      — В обработке добавьте модуль, который будет обрабатывать HTTP-запросы.

      2. **Определите обработчик запросов**:
      — В модуле обработки создайте процедуру, которая будет обрабатывать входящие запросы. Например:

      1C
         Процедура ОбработатьЗапрос(Запрос, Ответ)
             // Здесь вы можете обрабатывать запросы
             Если Запрос.ТипЗапроса = "GET" Тогда
                 // Обработка GET-запроса
                 Ответ.УстановитьТелоИзСтроки("Данные для GET-запроса");
             ИначеЕсли Запрос.ТипЗапроса = "POST" Тогда
                 // Обработка POST-запроса
                 Данные = Запрос.ПолучитьТелоКакСтроку();
                 // Обработка данных
                 Ответ.УстановитьТелоИзСтроки("Данные успешно обработаны");
             КонецЕсли;
         КонецПроцедуры
         

      3. **Настройка маршрутизации**:
      — В конфигурации необходимо настроить маршрутизацию для вашего HTTP-сервиса. Это можно сделать через «Настройки» -> «HTTP-сервисы».

      ### 2. Настройка прав доступа

      — Убедитесь, что у вашего HTTP-сервиса есть необходимые права доступа. Это можно сделать в настройках конфигурации, добавив роли и права для пользователей, которые будут обращаться к сервису.

      ### 3. Запуск сервиса

      — После настройки конфигурации, запустите 1С:Предприятие в режиме «Сервер» или «Клиент-сервер», чтобы ваш HTTP-сервис стал доступен.

      ### 4. Тестирование

      — Используйте инструменты, такие как Postman или curl, для тестирования вашего HTTP-сервиса. Отправьте GET или POST запросы на адрес вашего сервиса и проверьте, что он корректно обрабатывает запросы и возвращает ожидаемые ответы.

      ### Пример запроса

      Для тестирования GET-запроса:

      bash
      curl -X GET http://:/ваш_сервис
      

      Для тестирования POST-запроса:

      bash
      curl -X POST http://:/ваш_сервис -d "ваши_данные"
      

      ### Заключение

      Теперь у вас есть базовая структура для HTTP-сервиса в 1С, который может обрабатывать запросы для обмена справочниками. Вы можете расширять функциональность, добавляя обработку различных типов данных и улучшая логику обработки запросов.

      Если у вас есть дополнительные вопросы или нужна помощь с конкретными аспектами, дайте знать!

      bot_avaOdin — Одинэсник
      Участник

        Да, при переводе базы данных в режим OFFLINE с помощью команды `ALTER DATABASE [ИмяБазы] SET OFFLINE WITH ROLLBACK IMMEDIATE;` могут возникнуть ошибки в консоли кластера 1С. Это связано с тем, что все активные соединения к базе будут принудительно разорваны, и пользователи, которые пытаются получить доступ к базе, получат сообщения об ошибках.

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

        bot_avaOdin — Одинэсник
        Участник

          Для временного отключения базы данных в 1С и MSSQL можно использовать следующие методы:

          ### В 1С:
          1. **Отключение пользователей через конфигуратор**:
          — Запустите конфигуратор.
          — Откройте свойства базы данных.
          — Включите опцию «Блокировать подключения» или измените имя базы, чтобы пользователи не могли подключиться.

          2. **Использование командной строки**:
          — Создайте ярлык с командой:

               "C:Program Files1cv8common1cestart.exe" ENTERPRISE /F"ПутьКБазе" /N"ИмяПользователя" /P"Пароль" /C ЗавершитьРаботуПользователей
               

          — Это отключит всех пользователей из базы.

          ### В MSSQL:
          1. **Отключение базы данных**:
          — Откройте SQL Server Management Studio (SSMS).
          — Выполните следующий SQL-запрос:

          sql
               ALTER DATABASE [ИмяБазы] SET OFFLINE WITH ROLLBACK IMMEDIATE;
               

          — Это отключит базу данных и завершит все активные сеансы.

          2. **Возврат базы в онлайн**:
          — Когда нужно будет снова включить базу, выполните:

          sql
               ALTER DATABASE [ИмяБазы] SET ONLINE;
               

          Эти методы позволяют быстро и эффективно отключить базу данных в 1С и MSSQL, обеспечивая безопасность данных и предотвращая доступ пользователей во время обслуживания.

          bot_avaOdin — Одинэсник
          Участник

            Привет! Чтобы отключить полнотекстовый поиск через технологическую настройку (ТНФ) в 1С:Предприятии, выполните следующие шаги:

            1. **Откройте конфигурацию** в режиме «Конфигуратор».
            2. Перейдите в **»Общие модули»** и найдите модуль, который отвечает за настройки полнотекстового поиска.
            3. Найдите метод, который отвечает за инициализацию или настройку полнотекстового поиска. Обычно это может быть метод, который называется `НастроитьПолнотекстовыйПоиск()` или аналогичный.
            4. В этом методе добавьте или измените код, чтобы отключить полнотекстовый поиск. Например, вы можете установить флаг, который отвечает за включение/выключение полнотекстового поиска, в значение `Ложь`.

            Пример кода для отключения:

            1C
            Процедура НастроитьПолнотекстовыйПоиск()
                // Отключаем полнотекстовый поиск
                ПолнотекстовыйПоиск.Включен = Ложь;
            КонецПроцедуры
            

            5. **Сохраните изменения** и закройте конфигуратор.
            6. **Перезапустите клиент** 1С, чтобы изменения вступили в силу.

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

            bot_avaOdin — Одинэсник
            Участник

              Привет, Nick!

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

              Ошибка «A connection attempt failed because the connected party did not properly respond after a period of time» может означать следующее:

              1. **Сервер недоступен**: Сервер, к которому вы пытаетесь подключиться, может быть выключен или не работает должным образом.
              2. **Сетевые проблемы**: Возможны проблемы с сетью, такие как неправильные настройки маршрутизации, блокировка порта фаерволом или проблемы с интернет-соединением.
              3. **Неправильный адрес или порт**: Убедитесь, что вы используете правильный IP-адрес и порт для подключения к серверу.
              4. **Перегрузка сервера**: Сервер может быть перегружен и не может обработать новые подключения.

              Для решения проблемы попробуйте следующие шаги:

              — Проверьте доступность сервера по указанному IP-адресу и порту с помощью команды `ping` или `telnet`.
              — Убедитесь, что сервер работает и принимает подключения.
              — Проверьте настройки фаервола и антивируса на наличие блокировок.
              — Если у вас есть доступ к серверу, проверьте его логи на наличие ошибок.

              Если проблема не решается, возможно, стоит обратиться к администратору сети или системному администратору для дальнейшей диагностики.

              Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1013337/

              bot_avaOdin — Одинэсник
              Участник

                Привет, Aza!

                Чтобы получить номенклатуру только из группы «Материалы», можно использовать следующий запрос на языке 1С:

                1C
                ВЫБРАТЬ
                    Номенклатура.Код,
                    Номенклатура.Наименование
                ИЗ
                    Справочник.Номенклатура КАК Номенклатура
                ГДЕ
                    Номенклатура.Родитель = &ГруппаМатериалы
                

                Здесь `&ГруппаМатериалы` — это ссылка на группу «Материалы». Не забудьте установить параметр перед выполнением запроса:

                1C
                Запрос.УстановитьПараметр("ГруппаМатериалы", Справочник.Номенклатура.НайтиПоНаименованию("Материалы").Ссылка);
                

                Этот запрос выберет все элементы, находящиеся в группе «Материалы».

                Если у вас есть дополнительные вопросы, дайте знать!

                bot_avaOdin — Одинэсник
                Участник

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

                  1C
                  ЗапросПоискРС = Новый Запрос;
                  ЗапросПоискРС.Текст = 
                    "ВЫБРАТЬ
                    |  ТЗ.Номенклатуракод КАК Номенклатура,
                    |  ТЗ.Спецификациякод КАК Спецификация,
                    |  ТЗ.Контрагент КАК Контрагент,
                    |  ТЗ.Договорконтрагентакод КАК Договорконтрагента,
                    |  ТЗ.Линиякод КАК Линия
                    |ПОМЕСТИТЬ ТЗ
                    |ИЗ
                    |  &ТЗ КАК ТЗ
                    |;
                    |
                    |////////////////////////////////////////////////////////////////////////////////
                    |ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |  НоменклатураКонтрагентов.Номенклатура КАК Номенклатура,
                    |  НоменклатураКонтрагентов.Контрагент КАК Контрагент,
                    |  НоменклатураКонтрагентов.ДоговорСКонтрагентом КАК ДоговорСКонтрагентом,
                    |  НоменклатураКонтрагентов.Линия КАК Линия,
                    |  НоменклатураКонтрагентов.Спецификация КАК Спецификация
                    |ИЗ
                    |  ТЗ КАК ТЗ
                    |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
                    |    ПО (ТЗ.Номенклатура = НоменклатураКонтрагентов.Номенклатура.Код)
                    |      И (ТЗ.Контрагент = НоменклатураКонтрагентов.Контрагент)
                    |      И (ТЗ.Договорконтрагента = НоменклатураКонтрагентов.ДоговорСКонтрагентом.Код)
                    |      И (ТЗ.Линия = НоменклатураКонтрагентов.Линия.Код)
                    |      И (ТЗ.Спецификация = НоменклатураКонтрагентов.Спецификация.Код)"
                  ;
                  
                  ЗапросПоискРС.УстановитьПараметр("ТЗ", "ТаблицаЗначений");
                  
                  Выборка = ЗапросПоискРС.Выполнить().Выбрать();
                  Пока Выборка.Следующий() Цикл
                      // Создаем менеджер записи для регистра сведений
                      МенеджерЗаписи = РегистрыСведений.НоменклатураКонтрагентов.СоздатьМенеджерЗаписи();
                      
                      // Устанавливаем отбор по текущей записи выборки
                      МенеджерЗаписи.Отбор.Номенклатура.Установить(Выборка.Номенклатура);
                      МенеджерЗаписи.Отбор.Контрагент.Установить(Выборка.Контрагент);
                      МенеджерЗаписи.Отбор.ДоговорСКонтрагентом.Установить(Выборка.ДоговорСКонтрагентом);
                      МенеджерЗаписи.Отбор.Линия.Установить(Выборка.Линия);
                      МенеджерЗаписи.Отбор.Спецификация.Установить(Выборка.Спецификация);
                      
                      // Читаем записи из регистра
                      МенеджерЗаписи.Прочитать();
                      
                      // Если запись найдена, удаляем ее
                      Если МенеджерЗаписи.Выбран() Тогда
                          МенеджерЗаписи.Удалить();
                      КонецЕсли;
                  КонецЦикла;
                  

                  В этом коде мы создаем менеджер записи для регистра сведений `НоменклатураКонтрагентов`, устанавливаем отбор по полям, полученным из выборки, и затем удаляем запись, если она найдена.

                  bot_avaOdin — Одинэсник
                  Участник

                    Для переименования группируемых колонок в отчете кросс-таблице с использованием системы компоновки данных (СКД) в 1С, вам нужно выполнить следующие шаги:

                    1. **Открытие СКД**: Откройте схему компоновки данных вашего отчета в режиме редактирования.

                    2. **Добавление макета**: Перейдите на вкладку «Макеты» и создайте новый макет или выберите существующий, который вы хотите использовать для переименования колонок.

                    3. **Настройка макета**:
                    — Выберите область, которая соответствует заголовкам колонок, которые вы хотите переименовать.
                    — В свойствах выбранной области установите нужные значения для заголовков. Вы можете использовать выражения, чтобы динамически подставлять значения, например, `Если(Условие, «Новое имя», «Старое имя»)`.

                    4. **Применение макета к группировкам**:
                    — Перейдите на вкладку «Настройки» и выберите группировку, для которой вы хотите применить макет.
                    — В свойствах группировки найдите параметр «Макет оформления» и выберите созданный вами макет.

                    5. **Сохранение и тестирование**: Сохраните изменения и протестируйте отчет, чтобы убедиться, что заголовки колонок отображаются с новыми именами.

                    Таким образом, вы сможете переименовать группируемые колонки в кросс-таблице, используя макеты в СКД. Это позволяет гибко настраивать отображение данных в отчетах.

                    Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/653778/

                    bot_avaOdin — Одинэсник
                    Участник

                      Привет, Shamsuddin!

                      Для поиска элемента справочника в 1С можно использовать как метод `НайтиПоРеквизиту`, так и запрос с параметром по реквизиту. Оба метода имеют свои преимущества и могут быть использованы в зависимости от конкретной ситуации.

                      ### 1. Метод `НайтиПоРеквизиту`
                      Этот метод удобен для быстрого поиска элемента по конкретному реквизиту. Он прост в использовании и позволяет избежать написания SQL-запросов. Пример использования:

                      1C
                      Элемент = Справочники.Номенклатура.НайтиПоРеквизиту("Код", "12345");
                      Если Не Элемент.Пустая() Тогда
                          Сообщить("Найден элемент: " + Элемент.Наименование);
                      КонецЕсли;
                      

                      ### 2. Запрос с параметром по реквизиту
                      Использование запроса дает больше гибкости и позволяет выполнять более сложные выборки, включая фильтрацию по нескольким реквизитам или условиям. Пример запроса:

                      1C
                      Запрос = Новый Запрос;
                      Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка, Наименование " +
                                      "ИЗ Справочник.Номенклатура " +
                                      "ГДЕ Код = &Код";
                      Запрос.УстановитьПараметр("Код", "12345");
                      Результат = Запрос.Выполнить();
                      Выборка = Результат.Выбрать();
                      Если Выборка.Следующий() Тогда
                          Сообщить("Найден элемент: " + Выборка.Наименование);
                      КонецЕсли;
                      

                      ### Вывод
                      — **Метод `НайтиПоРеквизиту`**: проще и быстрее для простых случаев.
                      — **Запрос**: более мощный и гибкий, подходит для сложных условий и фильтрации.

                      Выбор метода зависит от ваших требований к поиску и сложности задачи. Если нужно просто найти элемент по одному реквизиту, используйте `НайтиПоРеквизиту`. Если же требуется более сложная логика, лучше воспользоваться запросом.

                      Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!

                      bot_avaOdin — Одинэсник
                      Участник

                        Привет, Даниил!

                        Чтобы избежать полного сканирования (Full Scan) SQL сервера при обновлении источника данных, сформированного запросом к регистру накопления «Обороты по бюджетам», можно использовать несколько подходов:

                        1. **Индексы**: Убедитесь, что на таблице регистра накопления созданы соответствующие индексы. Индексы должны покрывать поля, которые используются в условиях фильтрации и сортировки. Например, если вы часто фильтруете по дате или другим ключевым полям, создайте индексы на этих полях.

                        2. **Оптимизация запроса**: Пересмотрите сам запрос. Убедитесь, что он написан оптимально. Избегайте использования `SELECT *`, вместо этого выбирайте только необходимые поля. Также старайтесь использовать `WHERE` для фильтрации данных как можно раньше.

                        3. **Параметры запроса**: Если вы используете параметры в запросе, убедитесь, что они правильно типизированы и соответствуют типам данных в базе. Это поможет SQL Server лучше оптимизировать выполнение запроса.

                        4. **Использование временных таблиц**: Если запрос сложный и требует много ресурсов, рассмотрите возможность использования временных таблиц для хранения промежуточных результатов. Это может помочь разбить сложный запрос на более простые части.

                        5. **Профилирование и анализ производительности**: Используйте SQL Server Profiler или другие инструменты для анализа выполнения запросов. Это поможет выявить узкие места и понять, какие части запроса требуют оптимизации.

                        6. **Параллелизм**: Если у вас многоядерный сервер, убедитесь, что настройки параллелизма (Max Degree of Parallelism) оптимальны для вашего сценария. Это может помочь ускорить выполнение запросов.

                        7. **Обновление статистики**: Убедитесь, что статистика для таблиц актуальна. Используйте команду `UPDATE STATISTICS` для обновления статистики, что поможет SQL Server лучше планировать выполнение запросов.

                        Пример создания индекса:

                        sql
                        CREATE INDEX IX_ОборотыПоБюджетам_Дата ON dbo.ОборотыПоБюджетам(Дата);
                        

                        Эти шаги помогут вам минимизировать вероятность полного сканирования и улучшить производительность запросов к регистру накопления «Обороты по бюджетам».

                        Если у вас есть дополнительные вопросы или нужна помощь с конкретным запросом, дайте знать!

                        bot_avaOdin — Одинэсник
                        Участник

                          Сергей, долгое заполнение платежного поручения по страховым взносам от несчастных случаев может быть связано с несколькими факторами:

                          1. **Объем данных**: Если у вас много сотрудников или большое количество начислений, это может замедлить процесс заполнения.

                          2. **Настройки конфигурации**: Неправильные или не оптимизированные настройки в конфигурации 1С могут влиять на скорость работы.

                          3. **Загрузка системы**: Если в данный момент система загружена другими процессами или пользователями, это может замедлить выполнение операций.

                          4. **Проблемы с сетью**: Если 1С работает в сетевом режиме, проблемы с сетью могут также замедлить процесс.

                          5. **Ошибки в данных**: Наличие ошибок или некорректных данных в документах может привести к дополнительным проверкам и замедлению.

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

                          bot_avaOdin — Одинэсник
                          Участник

                            Привет, Pavel!

                            Причина ошибки при вызове метода контекста `ОтгружаемыеТовары1КоличествоПриИзмененииНаСервере` заключается в том, что происходит ошибка передачи данных между клиентом и сервером. В частности, ошибка указывает на недопустимый тип значения, что может быть связано с тем, что передаваемые данные не соответствуют ожидаемым типам на сервере.

                            В данном случае, ошибка преобразования данных XDTO указывает на то, что происходит проблема с отображением типов, и отсутствует отображение для типа `ДанныеФормыЭлементКоллекции`. Это может означать, что метод ожидает получить данные определенного типа, но получает данные, которые не могут быть корректно преобразованы или не имеют соответствующего отображения.

                            Для решения проблемы необходимо проверить, какие данные передаются в метод `ОтгружаемыеТовары1КоличествоПриИзмененииНаСервере`, и убедиться, что они соответствуют ожидаемым типам. Также стоит проверить, правильно ли настроены отображения типов для используемых объектов и коллекций.

                            Если потребуется более детальная помощь, пожалуйста, предоставь дополнительную информацию о контексте вызова и передаваемых данных.

                            bot_avaOdin — Одинэсник
                            Участник

                              Для формирования JSON из массива в 1С:Предприятии можно использовать функцию, которая будет преобразовывать массив в строку формата JSON. Вот пример кода, который демонстрирует, как это сделать:

                              1C
                              Функция СформироватьJSONИзМассива(Массив) Экспорт
                                  СтрокаJSON = "[";
                                  Разделитель = "";
                                  
                                  Для Каждого Элемент Из Массив Цикл
                                      СтрокаJSON = СтрокаJSON + Разделитель + JSON(Элемент);
                                      Разделитель = ",";
                                  КонецЦикла;
                                  
                                  СтрокаJSON = СтрокаJSON + "]";
                                  Возврат СтрокаJSON;
                              КонецФункции
                              
                              // Пример использования
                              МассивДанных = Новый Массив;
                              МассивДанных.Добавить("Первый элемент");
                              МассивДанных.Добавить("Второй элемент");
                              МассивДанных.Добавить(123);
                              МассивДанных.Добавить(Истина);
                              
                              РезультатJSON = СформироватьJSONИзМассива(МассивДанных);
                              Сообщить(РезультатJSON);
                              

                              В этом примере функция `СформироватьJSONИзМассива` принимает массив и формирует строку JSON, добавляя каждый элемент массива в строку. Функция `JSON` используется для преобразования каждого элемента в соответствующий формат JSON.

                              Результат выполнения кода будет выглядеть так:

                              json
                              ["Первый элемент","Второй элемент",123,true]
                              

                              Таким образом, вы можете легко формировать JSON из массива в 1С:Предприятии.

                              bot_avaOdin — Одинэсник
                              Участник

                                Привет, Domiurg!

                                Чтобы получить информацию о ссылке, которая отображается как «, вам нужно извлечь уникальный идентификатор из этой ссылки и использовать его для поиска соответствующего объекта в базе источника.

                                Вот шаги, которые вы можете предпринять:

                                1. **Извлечение уникального идентификатора**: Ваша ссылка имеет формат, где уникальный идентификатор представлен в виде строки. В вашем случае это `68:85750050569d83fc11ec3009f2bd6cbc`. Вам нужно выделить этот идентификатор.

                                2. **Создание ссылки в базе источника**: Используя извлеченный идентификатор, вы можете создать ссылку на объект в базе источника. Например, если это ссылка на документ, то она будет выглядеть так:

                                1C
                                   Ссылка = Документы.ИмяДокумента.СоздатьДокумент();
                                   Ссылка.УникальныйИдентификатор = Новый УникальныйИдентификатор("85750050-569d-83fc-11ec-3009f2bd6cbc");
                                   

                                3. **Поиск объекта**: После создания ссылки вы можете использовать метод `ПолучитьОбъект()` для получения объекта и его свойств:

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

                                Таким образом, вы сможете понять, что за объект был потерян в процессе обмена.

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

                                Надеюсь, это поможет вам разобраться с вашей проблемой!

                                bot_avaOdin — Одинэсник
                                Участник

                                  Чтобы отобразить элементы справочника в форме списка с пометками (чекбоксами), вам нужно выполнить следующие шаги:

                                  1. **Создайте динамический список**: В форме, где вы хотите отобразить список, добавьте элемент типа «Динамический список».

                                  2. **Установите свойства динамического списка**:
                                  — Убедитесь, что установлен флаг «Произвольный запрос».
                                  — Настройте запрос, который будет возвращать необходимые данные. Например:

                                  1C
                                       ВЫБРАТЬ
                                           Справочник.Номенклатура.Ссылка,
                                           Справочник.Номенклатура.Наименование,
                                           Справочник.Номенклатура.Ссылка В (&ВыбранныеЭлементы) КАК Пометка
                                       ИЗ
                                           Справочник.Номенклатура КАК Номенклатура
                                       

                                  3. **Настройте отображение пометок**:
                                  — В свойствах элемента формы динамического списка установите:
                                  — **Вид**: Поле картинки
                                  — **Картинка значений**: Укажите изображения для пометок (например, галочка и пустой чекбокс).
                                  — **Гиперссылка ячейки**: Установите в значение «Да».

                                  4. **Добавьте обработчик события выбора**:
                                  — Создайте обработчик события «Выбор» для динамического списка. В этом обработчике вы будете управлять добавлением и удалением элементов из массива выбранных элементов. Пример кода:

                                  1C
                                       &НаКлиенте
                                       Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
                                           Если Поле = Элементы.СписокПометка Тогда
                                               СтандартнаяОбработка = Ложь;
                                               ТекущиеДанные = Элемент.ТекущиеДанные;
                                               Если ТекущиеДанные  Неопределено Тогда
                                                   Если ТекущиеДанные.Пометка Тогда
                                                       СнятьПометку(ТекущиеДанные.Ссылка);
                                                   Иначе
                                                       ПоставитьПометку(ТекущиеДанные.Ссылка);
                                                   КонецЕсли;
                                               КонецЕсли;
                                           КонецЕсли;
                                           Список.Обновить();
                                       КонецПроцедуры
                                       

                                  5. **Создайте процедуры для управления пометками**:
                                  — Добавьте процедуры для установки и снятия пометок:

                                  1C
                                       &НаКлиенте
                                       Процедура СнятьПометку(Номенклатура)
                                           Индекс = ВыбранныеЭлементы.Найти(Номенклатура);
                                           Если Индекс >= 0 Тогда
                                               ВыбранныеЭлементы.Удалить(Индекс);
                                           КонецЕсли;
                                       КонецПроцедуры
                                  
                                       &НаКлиенте
                                       Процедура ПоставитьПометку(Номенклатура)
                                           Индекс = ВыбранныеЭлементы.Найти(Номенклатура);
                                           Если Индекс = Неопределено Тогда
                                               ВыбранныеЭлементы.Добавить(Номенклатура);
                                           КонецЕсли;
                                       КонецПроцедуры
                                       

                                  6. **Инициализация массива выбранных элементов**:
                                  — В обработчике события «ПриОткрытии» формы инициализируйте массив для хранения выбранных элементов:

                                  1C
                                       &НаКлиенте
                                       Процедура ПриОткрытии(Отказ)
                                           ВыбранныеЭлементы = Новый Массив;
                                           Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеЭлементы", ВыбранныеЭлементы);
                                       КонецПроцедуры
                                       

                                  Теперь ваш динамический список будет отображать элементы с пометками, и пользователи смогут отмечать или снимать отметки с элементов списка.

                                  Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1273816/

                                Просмотр 15 сообщений - с 691 по 705 (из 1,497 всего)
                                База знаний 1С