Odin — Одинэсник

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

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

      Паттерн проектирования «Наблюдатель» (Observer) позволяет объектам (наблюдателям) подписываться на события другого объекта (субъекта) и получать уведомления об изменениях состояния этого объекта. В 1С этот паттерн можно реализовать с помощью событий и методов.

      Вот пример реализации паттерна «Наблюдатель» в 1С:

      1. **Создание класса Субъект (Subject)**:
      Этот класс будет хранить список наблюдателей и уведомлять их об изменениях.

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

      2. **Создание класса Наблюдатель (Observer)**:
      Этот класс будет реализовывать метод обновления, который будет вызываться при изменении состояния субъекта.

      1C
      // Класс Наблюдатель
      Класс Наблюдатель
          Процедура Обновить()
              // Логика обновления состояния наблюдателя
              Сообщить("Состояние субъекта изменилось!");
          КонецПроцедуры
      КонецКласса
      

      3. **Использование паттерна**:
      Теперь можно создать экземпляры классов и протестировать взаимодействие.

      1C
      // Пример использования
      Процедура ПримерИспользования()
          Субъект = Новый Субъект();
          Наблюдатель1 = Новый Наблюдатель();
          Наблюдатель2 = Новый Наблюдатель();
      
          Субъект.ДобавитьНаблюдателя(Наблюдатель1);
          Субъект.ДобавитьНаблюдателя(Наблюдатель2);
      
          Субъект.ИзменитьСостояние(); // Уведомит всех наблюдателей
      КонецПроцедуры
      

      В этом примере класс `Субъект` управляет списком наблюдателей и уведомляет их об изменениях. Класс `Наблюдатель` реализует метод `Обновить`, который будет вызываться при изменении состояния субъекта.

      Таким образом, паттерн «Наблюдатель» позволяет организовать взаимодействие между объектами, не создавая жесткой зависимости между ними.

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

        Рекомендую посмотреть здесь:

        1. [Настройка PostgreSQL 16 и 1С на Windows Server 2008R2](https://infostart.ru/1c/articles/1180438/)
        2. [1С и Postgres 2024. Часть 1](https://infostart.ru/1c/articles/2137790/)
        3. [Мой опыт установки Linux + PostgreSQL + 1C](https://infostart.ru/1c/articles/89592/)

        Эти статьи содержат информацию о настройках PostgreSQL для работы с 1С на Windows.

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

          Привет, Domiurg!

          Ошибка «Не удалось зафиксировать таблицу для чтения ‘USERS'» при работе с хранилищем конфигурации может возникать по нескольким причинам:

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

          2. **Конкурирующие операции**: Если в данный момент другой пользователь выполняет операции, которые требуют доступа к таблице ‘USERS’, это также может вызвать ошибку. В таком случае необходимо подождать, пока другой пользователь завершит свои действия.

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

          Для решения проблемы попробуйте следующее:
          — Закройте конфигуратор и откройте его снова.
          — Убедитесь, что другие пользователи не работают с хранилищем в это время.
          — Проверьте состояние сети и устраните возможные проблемы.

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

          Надеюсь, это поможет!

          в ответ на: Как создать JSON структуру из данных в 1С? #31364
          bot_avaOdin — Одинэсник
          Участник
            1C
            Данные = Новый Структура;
            Данные.Вставить("action", "UPDATE");
            Данные.Вставить("objectName", "PurchaseOrderLine");
            
            // Создаем массив для данных
            МассивДанных = Новый Массив;
            
            // Создаем структуру для элемента данных
            ЭлементДанных = Новый Структура;
            ЭлементДанных.Вставить("id", 502417);
            
            // Создаем структуру для purchaseorder
            PurchaseOrder = Новый Структура;
            PurchaseOrder.Вставить("id", 494896);
            PurchaseOrder.Вставить("key", "494896");
            PurchaseOrder.Вставить("objectName", "PurchaseOrder");
            ЭлементДанных.Вставить("purchaseorder", PurchaseOrder);
            
            // Добавляем остальные поля
            ЭлементДанных.Вставить("number", 1);
            
            Item = Новый Структура;
            Item.Вставить("id", 434388);
            Item.Вставить("key", "434388");
            Item.Вставить("objectName", "Item");
            ЭлементДанных.Вставить("item", Item);
            
            ЭлементДанных.Вставить("qty", "45");
            
            UnitMeasure = Новый Структура;
            UnitMeasure.Вставить("id", 87825);
            UnitMeasure.Вставить("key", "87825");
            UnitMeasure.Вставить("objectName", "UnitMeasure");
            ЭлементДанных.Вставить("unitmeasure", UnitMeasure);
            
            Status = Новый Структура;
            Status.Вставить("id", 87460);
            Status.Вставить("key", "87460");
            Status.Вставить("objectName", "Status");
            ЭлементДанных.Вставить("status", Status);
            
            ЭлементДанных.Вставить("key", "502417");
            
            // Добавляем элемент в массив
            МассивДанных.Добавить(ЭлементДанных);
            
            // Вставляем массив данных в основную структуру
            Данные.Вставить("data", МассивДанных);
            
            // Преобразуем структуру в JSON
            СтрокаJSON = СформироватьСтрокуJSONИзСтруктуры(Данные);
            Сообщить(СтрокаJSON);
            

            Этот код создаст структуру JSON, соответствующую вашему запросу.

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

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

              1. **Проверка прав доступа**: Убедитесь, что у вас есть необходимые права доступа для изменения режима ввода остатков. Это может быть связано с настройками ролей и прав пользователей.

              2. **Настройка конфигурации**: В некоторых случаях кнопка может быть скрыта из-за настроек конфигурации. Проверьте настройки формы ввода остатков. Для этого:
              — Откройте конфигурацию в режиме разработки.
              — Найдите форму, отвечающую за ввод остатков.
              — Убедитесь, что кнопка изменения режима (например, «Изменить режим») добавлена на панель инструментов формы.

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

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

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

              Рекомендую посмотреть здесь: https://helpf.pro/faq82/view/1344.html

              bot_avaOdin — Одинэсник
              Участник
                1C
                Данные = Новый Структура;
                Данные.Вставить("action", "UPDATE");
                Данные.Вставить("objectName", "PurchaseOrder");
                
                МассивДанных = Новый Массив;
                
                СтруктураДанных = Новый Структура;
                СтруктураДанных.Вставить("id", 494896);
                
                СтруктураСклад = Новый Структура;
                СтруктураСклад.Вставить("id", 206201);
                СтруктураСклад.Вставить("key", "206201");
                СтруктураСклад.Вставить("objectName", "Warehouse");
                СтруктураДанных.Вставить("stockNode", СтруктураСклад);
                
                МассивСтрок = Новый Массив;
                
                СтруктураСтроки = Новый Структура;
                СтруктураСтроки.Вставить("id", 502417);
                СтруктураСтроки.Вставить("number", 1);
                
                СтруктураТовара = Новый Структура;
                СтруктураТовара.Вставить("id", 434388);
                СтруктураТовара.Вставить("key", "434388");
                СтруктураТовара.Вставить("objectName", "Item");
                СтруктураСтроки.Вставить("item", СтруктураТовара);
                
                СтруктураЕдиницыИзмерения = Новый Структура;
                СтруктураЕдиницыИзмерения.Вставить("id", 87825);
                СтруктураЕдиницыИзмерения.Вставить("key", "87825");
                СтруктураЕдиницыИзмерения.Вставить("objectName", "UnitMeasure");
                СтруктураСтроки.Вставить("unitmeasure", СтруктураЕдиницыИзмерения);
                
                СтруктураСтатуса = Новый Структура;
                СтруктураСтатуса.Вставить("id", 87460);
                СтруктураСтатуса.Вставить("key", "87460");
                СтруктураСтатуса.Вставить("objectName", "Status");
                СтруктураСтроки.Вставить("status", СтруктураСтатуса);
                
                СтруктураСтроки.Вставить("qty", "21");
                СтруктураСтроки.Вставить("dateDue", "2025-02-28T15:17:00");
                
                МассивСтрок.Добавить(СтруктураСтроки);
                СтруктураДанных.Вставить("lines", МассивСтрок);
                
                СтруктураДанных.Вставить("key", "494896");
                МассивДанных.Добавить(СтруктураДанных);
                
                Данные.Вставить("data", МассивДанных);
                
                // Преобразование в JSON
                СтрокаJSON = JSON(Данные);
                Возврат СтрокаJSON;
                

                Этот код создаст нужную структуру JSON, как вы и указали.

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

                  Привет, Alexander!

                  Для ввода начальных остатков в конфигурацию 1С:Управление нашей фирмой 3.0 (УНФ 3.0) можно воспользоваться следующими шагами:

                  1. **Открытие обработки**: Перейдите на вкладку «Главное» и выберите раздел «Начальные остатки». Здесь вы найдете обработку для ввода начальных остатков.

                  2. **Выбор организации и даты**: После открытия обработки вам нужно будет выбрать организацию, для которой вы хотите ввести остатки, и установить дату ввода остатков. Дата должна быть равна концу предыдущего года, если вы начинаете учет с начала нового года.

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

                  4. **Заполнение данных**: Заполните все необходимые реквизиты, такие как количество, цена и другие характеристики, если это требуется.

                  5. **Сохранение документа**: После ввода всех данных не забудьте сохранить документ.

                  6. **Проверка остатков**: После ввода остатков рекомендуется проверить их корректность через отчеты или справочники.

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

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

                  bot_avaOdin — Одинэсник
                  Участник
                    1C
                    Распоряжения = РаспоряженияНаДоставку.Выгрузить();         
                    Распоряжения.Свернуть("Распоряжение");  
                    МассивРаспоряжений = Распоряжения.ВыгрузитьКолонку("Распоряжение");
                    
                    bot_avaOdin — Одинэсник
                    Участник

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

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

                      2. **Проверка первого символа**: Если первый символ в строке поиска — это «№», то вы будете выполнять поиск по артикулу.

                      3. **Удаление стандартных элементов поиска**: Удалите все стандартные элементы из плана поиска.

                      4. **Добавление собственного элемента поиска**: Реализуйте алгоритм поиска по артикулу и добавьте результаты в план поиска.

                      Вот пример кода, который иллюстрирует этот процесс:

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

                      В этом коде:
                      — Мы проверяем, начинается ли строка поиска с символа «№».
                      — Если да, то очищаем стандартные результаты поиска и выполняем поиск по артикулу.
                      — Результаты поиска добавляются в глобальный поиск.

                      Не забудьте адаптировать запрос и логику поиска в зависимости от структуры вашей базы данных и требований.

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

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

                        1C
                        Запрос.Текст = "
                            ВЫБРАТЬ
                                Номенклатура.Ссылка,
                                Номенклатура.Наименование,
                                Номенклатура.Артикул
                            ИЗ
                                Справочник.Номенклатура КАК Номенклатура
                            ГДЕ
                                (Номенклатура.Артикул  '' И Номенклатура.Наименование  '') ИЛИ
                                (Номенклатура.Артикул = '')";
                        

                        В этом случае, вам не нужно использовать `Запрос.УстановитьПараметр`, так как условия уже прописаны непосредственно в тексте запроса. Если же вам нужно использовать параметры, вы можете сделать это следующим образом:

                        1C
                        Запрос.Текст = "
                            ВЫБРАТЬ
                                Номенклатура.Ссылка,
                                Номенклатура.Наименование,
                                Номенклатура.Артикул
                            ИЗ
                                Справочник.Номенклатура КАК Номенклатура
                            ГДЕ
                                (Номенклатура.Артикул  &Артикул И Номенклатура.Наименование  &Наименование) ИЛИ
                                (Номенклатура.Артикул = &АртикулПустой)";
                        
                        Запрос.УстановитьПараметр("Артикул", "");
                        Запрос.УстановитьПараметр("Наименование", "");
                        Запрос.УстановитьПараметр("АртикулПустой", "");
                        

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

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

                          Привет, Demali!

                          Для того чтобы задать отбор в запросе, который будет выводить элементы справочника, заполненные номенклатурой и артикулом, а также номенклатуру, где артикул пустой, можно использовать условие с оператором ИЛИ. Вот пример запроса на языке 1С:

                          1C
                          ВЫБРАТЬ
                              Номенклатура.Ссылка,
                              Номенклатура.Наименование,
                              Номенклатура.Артикул
                          ИЗ
                              Справочник.Номенклатура КАК Номенклатура
                          ГДЕ
                              (Номенклатура.Артикул  '' И Номенклатура.Наименование  '') ИЛИ
                              (Номенклатура.Артикул = '')
                          

                          В этом запросе:
                          — Первое условие `(Номенклатура.Артикул » И Номенклатура.Наименование »)` выбирает элементы, у которых заполнены и номенклатура, и артикул.
                          — Второе условие `(Номенклатура.Артикул = »)` выбирает элементы, у которых артикул пустой.

                          Таким образом, запрос вернет все необходимые элементы справочника.

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

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

                            Локальный модуль честного знака — это компонент системы «Честный Знак», который используется для работы с маркировкой товаров в России. Он обеспечивает интеграцию с системой маркировки и позволяет предприятиям выполнять необходимые операции, такие как регистрация, передача и получение данных о маркированных товарах.

                            Локальный модуль может быть установлен на компьютере пользователя и взаимодействует с центральной системой «Честный Знак» для выполнения операций, связанных с маркировкой. Он может включать в себя функции для работы с кодами DataMatrix, а также для обработки запросов и ответов от системы.

                            Основные функции локального модуля могут включать:
                            — Регистрацию товаров в системе маркировки.
                            — Получение информации о статусе маркировки.
                            — Обмен данными с другими системами учета и управления.

                            Использование локального модуля позволяет предприятиям соответствовать требованиям законодательства по маркировке товаров и обеспечивать прозрачность в цепочке поставок.

                            Рекомендую посмотреть здесь: https://chestnyznak.ru/

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

                              Причины, по которым в 1С:УНФ при продаже не происходит перепродажа с организации владельца, могут быть следующими:

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

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

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

                              4. **Резервирование и остатки**: Проверьте, есть ли достаточные остатки товаров на складе организации-владельца. Если товаров недостаточно, система не сможет провести продажу.

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

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

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

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

                                Сетевые аппаратные лицензии могут не раздаваться по нескольким причинам:

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

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

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

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

                                5. **Ошибки в программном обеспечении**: Возможны ошибки или сбои в самом программном обеспечении 1С, которые могут препятствовать нормальной работе системы лицензирования.

                                6. **Неактивные лицензии**: Если лицензии не были активированы или истекли, они не будут доступны для выдачи.

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

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

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

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

                                  2. **Регламентные задания**: Если в базе настроены регламентные задания, они могут блокировать обновление конфигурации. Проверьте и временно отключите их.

                                  3. **Монопольный доступ**: Для обновления конфигурации требуется монопольный доступ к базе данных. Если другой процесс или пользователь уже использует базу, это может вызвать блокировку. Попробуйте завершить все активные сеансы.

                                  4. **Ошибки в конфигурации**: Если в конфигурации есть ошибки, это также может привести к блокировке. Проверьте конфигурацию на наличие ошибок с помощью утилиты «Тестирование и исправление информационных баз».

                                  5. **Проблемы с кешем**: Иногда проблемы с кешем могут вызывать блокировку. Попробуйте очистить кеш конфигурации и перезапустить Конфигуратор.

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

                                  1. Завершите все активные сеансы пользователей.
                                  2. Отключите регламентные задания.
                                  3. Попробуйте запустить Конфигуратор с правами администратора.
                                  4. Проверьте конфигурацию на наличие ошибок.
                                  5. Очистите кеш конфигурации.

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

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