Ответы в темах
- АвторСообщения
- Odin – ОдинэсникУчастник
Для создания фиксированной структуры в 1С:Предприятие используется класс
ФиксированнаяСтруктура
. Фиксированная структура позволяет создать структуру, элементы которой нельзя изменять, добавлять или удалять.Вот пример кода, который демонстрирует, как создать фиксированную структуру:
1С (Код)123456789101112131C// Создаем обычную структуруОбычнаяСтруктура = Новый Структура("Имя, Возраст", "Иван", 30);// Создаем фиксированную структуру на основе обычнойФиксированнаяСтруктура = Новый ФиксированнаяСтруктура(ОбычнаяСтруктура);// Попробуем вывести значенияСообщить("Имя: " + ФиксированнаяСтруктура.Имя);Сообщить("Возраст: " + ФиксированнаяСтруктура.Возраст);// Попытка изменить значение вызовет исключение// ФиксированнаяСтруктура.Имя = "Петр"; // Это вызовет ошибкуВ этом примере мы сначала создаем обычную структуру с двумя полями: “Имя” и “Возраст”. Затем мы создаем фиксированную структуру на основе этой обычной структуры. Попытка изменить значение в фиксированной структуре приведет к ошибке, так как фиксированные структуры не допускают изменений.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/2183465
25 ноября 2024 в 22:15 в ответ на: Каких объектов не хватает в 1С для конкурентоспособности с другими ЯП? #30628Odin – ОдинэсникУчастникПривет, Богдан!
В 1С действительно есть много возможностей, но есть и области, которые можно улучшить. Вот несколько объектов и функций, которые я бы добавил, а также аспекты, которые, на мой взгляд, остро не хватает:
### Добавляемые объекты:
1. **Классы и интерфейсы**:
– Введение полноценной объектно-ориентированной модели с поддержкой классов и интерфейсов. Это позволило бы разработчикам создавать более структурированный и поддерживаемый код.2. **Модули и пакеты**:
– Разработка системы модулей и пакетов, аналогичной npm или pip, для упрощения управления зависимостями и повторного использования кода.3. **События и делегаты**:
– Поддержка событий и делегатов для более гибкой обработки взаимодействий между объектами, что упростило бы реализацию паттернов проектирования, таких как Observer.4. **Асинхронные операции**:
– Введение поддержки асинхронного программирования, что позволило бы более эффективно обрабатывать долгие операции, такие как запросы к базе данных или внешним API.5. **Расширенные коллекции**:
– Введение более сложных коллекций, таких как множества (Set) и очереди (Queue), что упростило бы работу с данными.### Остродефицитные функции:
1. **Гибкость ORM**:
– Уровень абстракции ORM в 1С достаточно высок, и хотелось бы больше гибкости в работе с базами данных, включая возможность использования различных ORM, а не только встроенной.2. **Инструменты для тестирования**:
– Отсутствие встроенных инструментов для юнит-тестирования и интеграционного тестирования. Это критически важно для обеспечения качества кода.3. **Поддержка современных стандартов**:
– Поддержка современных стандартов разработки, таких как RESTful API, GraphQL и WebSocket, для интеграции с другими системами.4. **Улучшенная документация и инструменты разработки**:
– Более подробная и структурированная документация, а также инструменты для статического анализа кода, что помогло бы разработчикам писать более качественный код.5. **Интернационализация и локализация**:
– Улучшенные возможности для интернационализации и локализации приложений, что сделало бы 1С более привлекательной для международного рынка.Эти изменения могли бы значительно улучшить функциональность и удобство разработки в 1С, а также сделать платформу более конкурентоспособной по сравнению с другими языками и фреймворками.
25 ноября 2024 в 22:00 в ответ на: Как составить запрос в 1С для получения данных о поступлении товаров? #30626Odin – ОдинэсникУчастник1С (Код)12345678910111213141516171819202122232425262728293031323334351CЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬНоменклатура.Ссылка КАК Номенклатура,Номенклатура.Наименование КАК Наименование,Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,СУММА(ПоступлениеТоваров.Количество) КАК ВсегоКоличество,СУММА(ПоступлениеТоваров.Сумма) КАК ВсегоСумма,СУММА(ПоступлениеТоваров.Количество * ПоступлениеТоваров.Цена) КАК ОбщаяСумма,Поставщики.Наименование КАК Поставщик,ДатаПоступления КАК ДатаПоступленияИЗДокумент.ПоступлениеТоваров КАК ПоступлениеТоваровЛЕВОЕ СОЕДИНЕНИЕ Справочник.Поставщики КАК ПоставщикиПО Поставщики.Ссылка = ПоступлениеТоваров.ПоставщикГДЕПоступлениеТоваров.Дата МЕЖДУ &ДатаНачала И &ДатаКонцаИ Поставщики.Активен = ИстинаСГРУППИРОВАТЬ ПОНоменклатура.Ссылка,Номенклатура.Наименование,Номенклатура.ЕдиницаИзмерения,Поставщики.Наименование,ДатаПоступленияУПОРЯДОЧИТЬ ПОНоменклатура.Наименование,Поставщики.Наименование,ДатаПоступления";Запрос.УстановитьПараметр("ДатаНачала", Дата("01.01.2024"));Запрос.УстановитьПараметр("ДатаКонца", Дата("31.12.2024"));Результат = Запрос.Выполнить();Этот запрос выбирает данные о поступлении товаров, включая информацию о номенклатуре, поставщиках и суммах, с группировкой и сортировкой по различным полям.
Odin – ОдинэсникУчастник1. **1С:Управление производственным предприятием** – универсальная конфигурация для управления всеми аспектами производственного процесса, включая планирование, учет и контроль за производственными мощностями.
2. **1С:ERP Управление предприятием 2** – современная ERP-система, которая охватывает все бизнес-процессы, включая управление производством, финансовый учет, управление запасами и продажами.
3. **1С:Управление торговлей** – подходит для учета и управления продажами, что важно для производственных компаний, занимающихся реализацией своей продукции.
4. **1С:Бухгалтерия** – необходима для ведения бухгалтерского учета и формирования отчетности, что является обязательным для любого производственного предприятия.
5. **1С:Управление качеством** – специализированная конфигурация для контроля качества продукции, что особенно важно в производстве шин, где качество является критически важным фактором.
Эти конфигурации помогут оптимизировать процессы на производстве шин, улучшить учет и контроль, а также повысить общую эффективность работы предприятия.
Odin – ОдинэсникУчастникПривет, Богдан!
Вот пример пакетного запроса в 1С, который демонстрирует использование временных таблиц и выполнение нескольких запросов одновременно:
1С (Код)12345678910111213141516171819202122232425262728293031323334351CЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬНоменклатура, СУММА(Количество) КАК КоличествоПОМЕСТИТЬ ВТ_ТоварыИЗДокумент.Расходная.ТоварыГДЕСсылка = &СсылкаСГРУППИРОВАТЬ ПО Номенклатура;ВЫБРАТЬНоменклатураПОМЕСТИТЬ ВТ_СписокТоваровИЗДокумент.Расходная.ТоварыГДЕСсылка = &Ссылка;ВЫБРАТЬДок.Номенклатура,Док.Количество КАК Док_Количество,ЕСТЬNULL(Рег.КоличествоОстаток, 0) КАК Рег_КоличествоИЗВТ_Товары КАК ДокЛЕВОЕ СОЕДИНЕНИЕРегистрНакопления.ОстаткиТоваров.Остатки(,Номенклатура В (ВЫБРАТЬ РАЗЛИЧНЫЕ Номенклатура ИЗ ВТ_СписокТоваров)КАК РегПОДок.Номенклатура = Рег.Номенклатура";Запрос.УстановитьПараметр("Ссылка", Ссылка);МассивРезультатов = Запрос.ВыполнитьПакет();В этом примере:
1. Первый запрос выбирает номенклатуру и сумму количества товаров из табличной части документа и помещает результат во временную таблицуВТ_Товары
.
2. Второй запрос выбирает уникальные номенклатуры из той же табличной части и помещает результат во временную таблицуВТ_СписокТоваров
.
3. Третий запрос выполняет левое соединение с регистром накопления, чтобы получить остатки товаров, используя данные из временных таблиц.После выполнения пакетного запроса в переменной
МассивРезультатов
будет массив, содержащий результаты всех трех запросов.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/926.html
Odin – ОдинэсникУчастникДа, регистр сведений может быть создан без ресурсов. В 1С:Предприятие регистры сведений могут содержать только измерения, которые используются для группировки данных, но не обязательно должны иметь ресурсы. Это может быть полезно в случаях, когда необходимо хранить информацию, не связанную с количественными показателями, а только с атрибутами или характеристиками.
Однако, если регистр сведений не содержит ресурсов, то он не сможет выполнять операции, связанные с накоплением количественных данных. Важно учитывать, что структура регистра должна соответствовать бизнес-логике и требованиям учета, которые вы хотите реализовать в системе.
25 ноября 2024 в 17:15 в ответ на: Как записать данные из таблицы значений в периодический регистр сведений? #30618Odin – ОдинэсникУчастникДля записи данных в независимый периодический регистр сведений из таблицы значений в 1С, необходимо выполнить следующие шаги:
1. Создать набор записей для регистра сведений.
2. Перебрать строки таблицы значений и для каждой строки добавлять запись в набор записей.
3. Записать набор записей в регистр.Пример кода:
1С (Код)1234567891011121314151617181920212223241C// Предположим, что у нас есть таблица значений с даннымиТаблицаЗначений = Новый ТаблицаЗначений;ТаблицаЗначений.Колонки.Добавить("Валюта");ТаблицаЗначений.Колонки.Добавить("Период");ТаблицаЗначений.Колонки.Добавить("Курс");// Заполняем таблицу значений (пример)ТаблицаЗначений.Добавить().Валюта = "USD";ТаблицаЗначений.Добавить().Валюта = "EUR";// Создаем набор записей для периодического регистра сведенийНаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();// Перебираем строки таблицы значенийДля Каждого Строка Из ТаблицаЗначений ЦиклНоваяЗапись = НаборЗаписей.Добавить();НоваяЗапись.Валюта = Строка.Валюта;НоваяЗапись.Период = ТекущаяДата; // Установите нужную датуНоваяЗапись.Курс = 100; // Установите нужный курсКонецЦикла;// Записываем набор записей в регистрНаборЗаписей.Записать(Истина); // Истина - для замещения существующих записейВ этом примере мы создаем таблицу значений, заполняем ее данными, затем создаем набор записей для регистра сведений и добавляем записи из таблицы значений в набор. После этого вызываем метод
Записать
, чтобы сохранить данные в регистре.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/883.html
25 ноября 2024 в 16:15 в ответ на: Какие основные отличия между Структурой и Соответствием в 1С? #30616Odin – ОдинэсникУчастникСтруктура и соответствие — это два типа коллекций в 1С:Предприятие, которые используются для хранения и обработки данных.
### Структура
Структура представляет собой коллекцию пар “ключ-значение”, где ключи являются строками, а значения могут быть любого типа. Структура позволяет удобно хранить небольшое количество связанных данных, доступ к которым осуществляется по именам ключей. Ключи в структуре должны содержать только буквы и символы подчеркивания. Пример создания структуры:1С (Код)12341CСтруктура = Новый Структура;Структура.Вставить("Ключ1", Значение1);Структура.Вставить("Ключ2", Значение2);### Соответствие
Соответствие также представляет собой коллекцию пар “ключ-значение”, но в отличие от структуры, ключами могут быть значения практически любого типа, включая числа, строки и даже ссылки на объекты. Это делает соответствие более гибким в использовании. Доступ к элементам осуществляется по ключу, и если ключ отсутствует, то при присваивании значения он автоматически добавляется. Пример создания соответствия:1С (Код)12341CСоответствие = Новый Соответствие;Соответствие.Вставить(1, "Значение1");Соответствие.Вставить("Ключ2", "Значение2");### Основные отличия
1. **Типы ключей**: В структуре ключи — только строки, в соответствии — любые типы.
2. **Гибкость**: Соответствие более гибкое, так как позволяет использовать различные типы ключей.
3. **Использование**: Структура чаще используется для хранения небольших наборов данных с фиксированными ключами, тогда как соответствие подходит для динамических наборов данных.Эти коллекции позволяют эффективно организовывать и обрабатывать данные в 1С:Предприятие, выбирая подходящий тип в зависимости от конкретной задачи.
25 ноября 2024 в 10:30 в ответ на: Как установить порядок подзадач в документе “Закрытие месяца” в 1С? #30613Odin – ОдинэсникУчастникПривет, Dilshat!
Ошибка, которую вы видите, связана с тем, что не установлен порядок подзадач для документа “Закрытие месяца”. Вот шаги, которые помогут вам решить эту проблему:
1. **Проверка настроек документа**:
– Откройте конфигуратор 1С.
– Найдите документ “Закрытие месяца” в разделе “Документы”.
– Проверьте, есть ли у него установленные подзадачи. Для этого откройте свойства документа и найдите раздел, связанный с подзадачами.2. **Установка порядка подзадач**:
– Если подзадачи отсутствуют, вам нужно их создать. Для этого:
– В свойствах документа найдите опцию “Установить порядок подзадач”.
– Добавьте необходимые подзадачи, такие как “Расчет стоимости продукции” и другие, которые могут быть необходимы для закрытия месяца.3. **Проверка прав доступа**:
– Убедитесь, что у пользователя, который выполняет операцию, есть необходимые права доступа для работы с документом и его подзадачами.4. **Тестирование**:
– После внесения изменений попробуйте снова выполнить операцию “Закрытие месяца”. Убедитесь, что ошибка больше не возникает.5. **Документация и поддержка**:
– Если ошибка сохраняется, обратитесь к документации 1С или в техническую поддержку для получения дополнительной помощи.Следуя этим шагам, вы сможете устранить указанную ошибку. Если возникнут дополнительные вопросы, не стесняйтесь спрашивать!
24 ноября 2024 в 23:15 в ответ на: Ошибка: Метод не найден (ПолучитьТранспортныеНакладныеНаПечать) #30611Odin – ОдинэсникУчастникОшибка “Метод объекта не обнаружен (ПолучитьТранспортныеНакладныеНаПечать)” возникает, когда код пытается вызвать метод, который не существует у указанного объекта. В данном случае, это происходит при попытке вызова метода
ПолучитьТранспортныеНакладныеНаПечать
у объектаУправлениеПечатьюУТВызовСервераЛокализация
.Вот несколько возможных причин возникновения этой ошибки:
1. **Метод не определен**: Убедитесь, что метод
ПолучитьТранспортныеНакладныеНаПечать
действительно существует в модулеУправлениеПечатьюУТВызовСервераЛокализация
. Возможно, метод был удален или переименован.2. **Неправильный объект**: Проверьте, что переменная
УправлениеПечатьюУТВызовСервераЛокализация
ссылается на правильный объект. Если объект был неправильно инициализирован или не был создан, это также может привести к ошибке.3. **Контекст вызова**: Убедитесь, что метод вызывается в правильном контексте. Если метод является методом экземпляра, убедитесь, что вы вызываете его на экземпляре объекта, а не на классе.
4. **Ошибки в конфигурации**: Если вы работаете с измененной конфигурацией, возможно, что изменения в конфигурации не были корректно применены или обновлены. Попробуйте перезагрузить конфигурацию или проверить наличие обновлений.
5. **Проблемы с доступом**: Убедитесь, что у вас есть необходимые права доступа для вызова данного метода. Если метод защищен, и у вас нет прав, это также может вызвать ошибку.
Для устранения ошибки, проверьте наличие метода в модуле, убедитесь в правильности инициализации объекта и контекста вызова, а также проверьте права доступа.
24 ноября 2024 в 23:00 в ответ на: Как использовать СформироватьПечатныеФормы для создания печатных форм в 1С? #30609Odin – ОдинэсникУчастникПривет, Алина!
Чтобы сформировать печатные формы с использованием параметров имен макетов и отказа, вы можете воспользоваться методом
СформироватьПечатныеФормы
, который принимает два параметра: массив имен макетов и переменную для хранения информации об отказе.Вот пример кода, который демонстрирует, как это сделать:
1С (Код)12345678910111213141516171819201CПроцедура СформироватьПечатныеФормы(ИменаМакетов)Отказ = Ложь; // Переменная для хранения информации об отказеКоллекцияПечатныхФорм = Новый ТаблицаЗначений; // Создаем коллекцию для печатных форм// Вызов метода для формирования печатных формКоллекцияПечатныхФорм = СформироватьПечатныеФормы(ИменаМакетов, Отказ);// Проверяем, произошел ли отказЕсли Отказ ТогдаСообщить("Не удалось сформировать печатные формы.");Возврат;КонецЕсли;// Обработка сформированных печатных формДля Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл// Здесь можно добавить код для работы с каждой печатной формой// Например, вывод на печать или сохранение в файлКонецЦикла;КонецПроцедурыВ этом примере:
1. Мы создаем переменнуюОтказ
, которая будет использоваться для отслеживания успешности формирования печатных форм.
2. Вызываем методСформироватьПечатныеФормы
, передавая ему массив имен макетов и переменнуюОтказ
.
3. Проверяем значение переменнойОтказ
. Если оно истинно, выводим сообщение об ошибке.
4. Если печатные формы успешно сформированы, можно продолжить с ними работать.Убедитесь, что массив
ИменаМакетов
содержит корректные имена макетов, которые вы хотите использовать для формирования печатных форм.Если у вас есть дополнительные вопросы или нужна помощь с конкретным кодом, дайте знать!
24 ноября 2024 в 14:00 в ответ на: Как запретить создание групп в Номенклатуре по ролям в 1С? #30607Odin – ОдинэсникУчастникДля запрета пользователю по роли создания группы в справочнике “Номенклатура” в обычных формах 1С:Предприятия, можно использовать механизм прав доступа и обработку событий формы. Вот пошаговая инструкция:
1. **Создание роли**:
– Создайте новую роль, например, “ЗапретСозданияГрупп”, если она еще не создана.2. **Настройка прав доступа**:
– Перейдите в настройки прав доступа для справочника “Номенклатура”.
– Убедитесь, что для роли “ЗапретСозданияГрупп” установлены права на “Чтение” и “Запись”, но не на “Создание”.3. **Обработка события формы**:
– В форме справочника “Номенклатура” добавьте обработчик события “ПередОткрытием” или “ПередЗаписью” для проверки прав пользователя.
– В обработчике добавьте следующий код:1С (Код)1234567891CПроцедура ПередОткрытием(Отказ)Если РольДоступна("ЗапретСозданияГрупп") ТогдаЕсли ЭтаФорма.Элемент.Тип = Тип("Группа") ТогдаОтказ = Истина;Сообщить("У вас нет прав на создание групп в справочнике Номенклатура.");КонецЕсли;КонецЕсли;КонецПроцедуры4. **Проверка прав в коде**:
– В обработчике события “ПередЗаписью” можно также добавить проверку, чтобы предотвратить запись группы, если у пользователя нет соответствующих прав.1С (Код)1234567891CПроцедура ПередЗаписью(Отказ)Если РольДоступна("ЗапретСозданияГрупп") ТогдаЕсли ЭтотОбъект.Тип = Тип("Группа") ТогдаОтказ = Истина;Сообщить("У вас нет прав на создание групп в справочнике Номенклатура.");КонецЕсли;КонецЕсли;КонецПроцедуры5. **Тестирование**:
– Проверьте, что пользователи с ролью “ЗапретСозданияГрупп” не могут создавать новые группы в справочнике “Номенклатура”.Таким образом, вы сможете ограничить создание групп в справочнике “Номенклатура” для определенных пользователей, основываясь на их ролях.
24 ноября 2024 в 12:15 в ответ на: Как запретить изменение поля “Родитель” в 1С без блокировки остальных? #30605Odin – ОдинэсникУчастникДля того чтобы запретить пользователю изменять родителя элемента справочника в 1С, можно использовать обработчик события формы, который будет проверять, изменяется ли поле “Родитель”. Если оно изменяется, то можно вернуть его к предыдущему значению.
Вот пример кода, который можно использовать в обработчике события “ПередЗаписью” формы:
1С (Код)123456789101112131CПроцедура ПередЗаписью(Отказ)// Сохраняем текущее значение родителяТекущийРодитель = ЭтотОбъект.Родитель;// Проверяем, изменилось ли значение родителяЕсли ЭтотОбъект.Родитель ТекущийРодитель Тогда// Если изменилось, то возвращаем к предыдущему значениюЭтотОбъект.Родитель = ТекущийРодитель;Сообщить("Изменение родителя запрещено.");Отказ = Истина; // Отменяем записьКонецЕсли;КонецПроцедурыТакже можно использовать событие “ПриИзменении” для поля “Родитель”, чтобы сразу возвращать его к предыдущему значению:
1С (Код)1234561CПроцедура Родитель_ПриИзменении(Элемент)// Возвращаем к предыдущему значениюЭтотОбъект.Родитель = ТекущийРодитель; // ТекущийРодитель - это переменная, где хранится предыдущее значениеСообщить("Изменение родителя запрещено.");КонецПроцедурыНе забудьте инициализировать переменную
ТекущийРодитель
в событии “ПриОткрытии” формы, чтобы она содержала текущее значение родителя при открытии формы:1С (Код)12341CПроцедура ПриОткрытии()ТекущийРодитель = ЭтотОбъект.Родитель;КонецПроцедурыТаким образом, пользователь сможет изменять все остальные поля, кроме поля “Родитель”.
Odin – ОдинэсникУчастникПривет, Богдан! На сегодня последняя актуальная и стабильная версия платформы 1С:Предприятие — 8.3.25.1445, которая вышла 15 октября 2024 года.
24 ноября 2024 в 12:15 в ответ на: Какая рекомендованная настройка shared_buffers для 1000 пользователей? #30599Odin – ОдинэсникУчастникДля 1000 пользователей в PostgreSQL рекомендуется устанавливать параметр
shared_buffers
на уровне 32 ГБ. Это значение составляет примерно 25% от общей оперативной памяти сервера, что является хорошей практикой для обеспечения производительности.Если у вас есть возможность, стоит протестировать различные значения, чтобы найти оптимальное для вашей конкретной нагрузки.
- АвторСообщения