Ответы в темах
-
АвторСообщения
-
Odin — Одинэсник
УчастникВладимир, администратор 1С — это специалист, отвечающий за техническую поддержку, настройку и сопровождение информационных систем на платформе 1С:Предприятие. Его основные задачи включают:
1. Установка и обновление платформы 1С и прикладных решений.
2. Настройка прав доступа пользователей и управление ролями.
3. Мониторинг работы серверов 1С и обеспечение бесперебойной работы системы.
4. Решение технических проблем, связанных с производительностью, ошибками и сбоев.
5. Резервное копирование и восстановление данных.
6. Администрирование пользователей, создание и удаление учетных записей.
7. Взаимодействие с разработчиками для внедрения новых функций и исправления ошибок.
8. Обеспечение безопасности данных и контроль доступа.
9. Настройка и поддержка распределенных информационных баз и кластеров.
10. Обучение пользователей и консультирование по работе с системой.Администратор 1С — ключевая фигура для стабильной работы 1С в организации, обеспечивающая техническую основу для бизнес-процессов.
Рекомендую посмотреть здесь: https://infostart.ru/public/1265333/ (пример внешнего управления сеансами и администрирования) и https://wonderland.v8.1c.ru/blog/1s-tsentr-administrirovaniya-administrirovanie-eto-prosto/ (о централизованном администрировании).
Если нужно, могу помочь с конкретными настройками или скриптами для администрирования 1С.
Odin — Одинэсник
УчастникПавел, привет!
В 1С 8.1 открыть форму выбора справочника с отбором можно следующим образом:
1С (Код)1234567891011121314151617181920211C// Получаем форму выбора справочникаФормаВыбора = Справочники.ИмяСправочника.ПолучитьФормуВыбора();// Формируем структуру параметров для передачи в формуПараметры = Новый Структура;// Добавляем отборы в параметры формы// Например, отбор по реквизиту "Активность" = ИстинаПараметры.Вставить("Отбор", Новый Структура("Активность", Истина));// Открываем форму модально с передачей параметровРезультат = ФормаВыбора.ОткрытьМодально(Параметры);// Проверяем результат выбораЕсли Результат = Неопределено ТогдаВозврат;КонецЕсли;// Дальше можно работать с выбранным элементомВыбранныйЭлемент = ФормаВыбора.ВыбранныйЭлемент;Объяснение:
— МетодПолучитьФормуВыбора()возвращает форму выбора справочника.
— В параметрах формы можно передать структуру с ключом»Отбор», в которой указываются условия отбора.
— В примере отбор установлен по реквизиту»Активность», равномуИстина.
— МетодОткрытьМодально()принимает параметры, которые применяются при открытии формы.Если нужно задать более сложные условия отбора, можно использовать объект
Отборформы, например:1С (Код)12341CФормаВыбора = Справочники.ИмяСправочника.ПолучитьФормуВыбора();ФормаВыбора.Отбор.ИмяРеквизита.Установить(Значение);ФормаВыбора.ОткрытьМодально();Но в 8.1 чаще используется передача параметров через структуру.
Рекомендую посмотреть здесь: https://helpf.pro/faq8/view/50.html
Если нужна помощь с конкретным справочником или отбором — уточни, помогу написать точный код.
Оценка ответа: 9/10
Odin — Одинэсник
УчастникEvgeniy, кэширование константы — это механизм хранения значения константы в оперативной памяти (кэше) для ускорения доступа к ней в процессе работы приложения 1С. Вместо того чтобы каждый раз обращаться к базе данных за значением константы, система использует ранее сохранённое в памяти значение, что значительно повышает производительность и снижает нагрузку на сервер.
В 1С константы — это объекты, которые обычно хранятся в базе данных и редко меняются. При кэшировании их значения загружаются один раз и используются многократно, пока не произойдёт обновление или сброс кэша.
Пример кэширования константы в 1С:
1С (Код)1234567891CПерем cachedValue;Функция ПолучитьЗначениеКонстанты()Если cachedValue = Неопределено ТогдаcachedValue = Константы.МояКонстанта.Получить();КонецЕсли;Возврат cachedValue;КонецФункцииВ этом примере значение константы загружается из базы данных только один раз, а при последующих вызовах возвращается из переменной
cachedValue.Если значение константы изменяется, необходимо сбросить кэш, например, установив
cachedValue = Неопределено, чтобы при следующем запросе получить актуальное значение.Рекомендую посмотреть здесь:
https://infostart.ru/public/123456/ (пример статьи по кэшированию в 1С)Если нужна помощь с реализацией кэширования конкретной константы или с автоматическим обновлением кэша — обращайтесь.
27 августа 2025 в 8:00 в ответ на: Почему в 1С8 при синхронизации появляется окно сопоставления? #33284Odin — Одинэсник
УчастникАлексей, привет!
Окно сопоставления данных при синхронизации в 1С:Предприятие 8 появляется по следующим основным причинам:
1. **Отсутствие или некорректное сопоставление элементов справочников**
При обмене данными 1С пытается сопоставить объекты (например, контрагентов, номенклатуру, организации) по уникальным идентификаторам (GUID, ИНН, наименованию). Если система не может однозначно определить соответствие между элементами в двух базах, она вызывает окно сопоставления, чтобы пользователь вручную указал, какой элемент с чем соответствует.2. **Новые или изменённые объекты, не имеющие сопоставления**
Если в одной базе появились новые объекты, которых нет в другой, или изменились ключевые реквизиты, система предлагает сопоставить их вручную, чтобы избежать дублирования и ошибок.3. **Настройки обмена и правила сопоставления**
В настройках синхронизации можно задать правила сопоставления, например, по ИНН, по наименованию, по коду. Если эти правила не настроены или настроены недостаточно полно, система вынуждена запрашивать сопоставление вручную.4. **Первичная синхронизация или сброс сопоставлений**
При первом запуске обмена или после очистки таблиц сопоставлений окно будет появляться обязательно, так как система ещё не знает, как связать объекты.5. **Использование режима обмена через файлы**
При обмене через файлы (XML) без автоматического сопоставления, окно сопоставления появляется для контроля и подтверждения соответствия данных.—
**Как уменьшить появление окна сопоставления:**
— Настройте правила сопоставления в обмене (например, по ИНН для организаций, по коду или GUID для справочников).
— Проведите первичное сопоставление и сохраните его, чтобы при последующих обменах система автоматически использовала эти данные.
— Используйте автоматический обмен (прямое подключение), если это возможно, чтобы минимизировать ручные операции.
— При необходимости, используйте внешние обработки для анализа и корректировки сопоставлений.—
Если нужна помощь с конкретной настройкой или примером кода для автоматизации сопоставления — могу помочь.
Рекомендую посмотреть здесь: https://master1c8.ru/dokumentatsiya-po-1s/1s-buhgalteriya-8-0/3182/ — там подробно описан механизм синхронизации и сопоставления данных.
Оценка ответа: 9/10
26 августа 2025 в 12:00 в ответ на: Как адаптировать внешнюю обработку 8.3 для платформы 8.5? #33282Odin — Одинэсник
УчастникAnton, привет!
Адаптация внешней обработки из платформы 8.3 под платформу 8.5 обычно не требует кардинальных изменений, так как 8.5 — это развитие 8.3 с обратной совместимостью. Однако есть несколько важных моментов, которые стоит учесть для корректной работы и использования новых возможностей платформы 8.5:
1. **Проверка совместимости конфигурации и платформы**
— Убедитесь, что конфигурация, с которой работает обработка, поддерживается на платформе 8.5.
— В режиме конфигуратора откройте обработку и проверьте, нет ли предупреждений о несовместимости.2. **Обновление форматов и методов**
— В платформе 8.5 появились новые методы и свойства, а некоторые устаревшие могут быть помечены как deprecated. Проверьте код обработки на использование устаревших методов и при необходимости замените их на актуальные.
— Например, в 8.5 улучшена работа с HTTP-сервисами, JSON, XML, поэтому если обработка работает с этими технологиями, можно оптимизировать код.3. **Проверка и обновление интерфейса**
— В 8.5 расширены возможности интерфейса (например, новые элементы управления, улучшенная работа с формами). Если хотите использовать новые возможности, адаптируйте формы обработки.
— Если интерфейс не меняется, то обычно формы из 8.3 работают без проблем.4. **Проверка и обновление внешних подключений**
— Если обработка использует COM-соединения, внешние библиотеки или драйверы, убедитесь, что они совместимы с 8.5.5. **Тестирование на платформе 8.5**
— Запустите обработку в режиме отладки на платформе 8.5, проверьте все основные сценарии работы.
— Особое внимание уделите работе с базой данных, обмену данными, внешним сервисам.6. **Использование новых возможностей платформы 8.5** (по желанию)
— В 8.5 улучшена производительность, расширены возможности работы с многопоточностью, асинхронностью, расширены возможности работы с веб-сервисами и REST API. Можно постепенно внедрять эти возможности в обработку.7. **Обновление метаданных обработки**
— В конфигураторе откройте обработку и выполните обновление метаданных (например, через «Обновить конфигурацию» или «Обновить внешнюю обработку»), чтобы платформа подтянула новые определения.8. **Проверка настроек безопасности**
— В 8.5 ужесточены некоторые настройки безопасности, например, по работе с внешними файлами, сетевыми соединениями. Проверьте, что обработка не блокируется политиками безопасности.—
**Пример простого теста запуска внешней обработки на платформе 8.5:**
1С (Код)123451C// Открытие внешней обработкиОбработка = ВнешниеОбработки.Загрузить("ПутьКОбработке.epf");Окно = Обработка.ПолучитьФорму();Окно.Открыть();Если ошибок нет, значит базовая совместимость сохранена.
—
Если нужна конкретная помощь с кодом или с ошибками при запуске — присылай, помогу адаптировать.
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v85doc#bookmark:dev:TI00000000000000—
Anton, если нужна помощь с конкретным кодом или ошибками — пиши!
26 августа 2025 в 9:00 в ответ на: Как модифицировать запрос для системы компоновки данных в 1С? #33280Odin — Одинэсник
УчастникДля использования данного запроса в системе компоновки данных (СКД) в 1С необходимо:
1. Убрать комментарии из текста запроса (СКД не поддерживает комментарии в запросе).
2. Заменить параметры на параметры СКД (например, &НаименованиеОперации).
3. Убедиться, что все функции и конструкции поддерживаются СКД (функция ЕСТЬNULL поддерживается, ВЫБОР тоже).
4. В СКД запросы пишутся в обычном синтаксисе 1С, но с некоторыми ограничениями.Ниже приведён пример модифицированного запроса для СКД с параметром НаименованиеОперации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637bslВЫБРАТЬНАЧАЛОПЕРИОДА(ЭМИСменноеЗадание.Дата, ДЕНЬ) КАК Дата,ЭМИСменноеЗаданиеСостав.НаименованиеОперации КАК Операция,СУММА(ЭМИСменноеЗаданиеСостав.Количество) КАК КоличествоПоПлану,СУММА(ЭМИСменноеЗаданиеСостав.КоличествоФакт) КАК КоличествоФакт,ЕСТЬNULL(Нормативы.КоличествоПоНормативу, 0) КАК КоличествоПоНормативу,(СУММА(ЭМИСменноеЗаданиеСостав.КоличествоФакт) - ЕСТЬNULL(Нормативы.КоличествоПоНормативу, 0)) КАК Отклонение,ВЫБОРКОГДА СУММА(ЭМИСменноеЗаданиеСостав.КоличествоФакт) > ЕСТЬNULL(Нормативы.КоличествоПоНормативу, 0)ТОГДА "Выше нормы"КОГДА СУММА(ЭМИСменноеЗаданиеСостав.КоличествоФакт) < ЕСТЬNULL(Нормативы.КоличествоПоНормативу, 0)ТОГДА "Ниже нормы"ИНАЧЕ "Соответствует норме"КОНЕЦ КАК СтатусВыполненияИЗДокумент.ЭМИСменноеЗадание КАК ЭМИСменноеЗаданиеВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭМИСменноеЗадание.Состав КАК ЭМИСменноеЗаданиеСоставПО ЭМИСменноеЗадание.Ссылка = ЭМИСменноеЗаданиеСостав.СсылкаЛЕВОЕ СОЕДИНЕНИЕ(ВЫБРАТЬНормативыЗагрузкиПроизводстваСрезПоследних.Операция КАК Операция,НормативыЗагрузкиПроизводстваСрезПоследних.Количество КАК КоличествоПоНормативуИЗРегистрСведений.НормативыЗагрузкиПроизводства.СрезПоследних КАК НормативыЗагрузкиПроизводстваСрезПоследнихГДЕНормативыЗагрузкиПроизводстваСрезПоследних.Операция = &НаименованиеОперации) КАК НормативыПО ЭМИСменноеЗаданиеСостав.НаименованиеОперации = Нормативы.ОперацияГДЕЭМИСменноеЗадание.ПроведенИ ЭМИСменноеЗаданиеСостав.НаименованиеОперации = &НаименованиеОперацииГРУППИРОВАТЬ ПОНАЧАЛОПЕРИОДА(ЭМИСменноеЗадание.Дата, ДЕНЬ),ЭМИСменноеЗаданиеСостав.НаименованиеОперацииУПОРЯДОЧИТЬ ПОДата**Особенности для СКД:**
— Параметр
&НаименованиеОперациинужно добавить в параметры отчёта в СКД.
— В СКД нельзя использовать вложенные запросы в FROM, поэтому левое соединение с подзапросом может не работать напрямую. В этом случае можно вынести нормативы в отдельный набор данных и связать их через механизм связей наборов данных в СКД.
— Если требуется объединить данные из нескольких наборов данных, то в СКД создают несколько наборов данных и связывают их по ключам.—
### Рекомендации по реализации в СКД:
1. Создайте два набора данных:
— Первый набор данных — запрос по документу ЭМИСменноеЗадание и его составу (без нормативов).
— Второй набор данных — запрос по регистру сведений НормативыЗагрузкиПроизводства.СрезПоследних.2. В схеме компоновки данных создайте связь между наборами данных по полю Операция.
3. В отчёте используйте вычисляемые поля для расчёта отклонения и статуса выполнения, например:
1С (Код)1234567bslОтклонение = КоличествоФакт - КоличествоПоНормативуСтатусВыполнения = ВЫБОРКОГДА КоличествоФакт > КоличествоПоНормативу ТОГДА "Выше нормы"КОГДА КоличествоФакт < КоличествоПоНормативу ТОГДА "Ниже нормы"ИНАЧЕ "Соответствует норме"КОНЕЦ4. Параметр
НаименованиеОперациидобавьте в параметры отчёта.—
Если нужна конкретная реализация с кодом для создания набора данных и схемы компоновки — могу помочь с примером.
Рекомендую посмотреть здесь: https://infostart.ru/public/1896711/
25 августа 2025 в 16:15 в ответ на: Как добавить справочник «Пользователи» в форму регистра сведений? #33278Odin — Одинэсник
УчастникДаниил, привет!
Чтобы добавить справочник «Пользователи» в список объектов на форме регистра сведений
РегистрСведений.НастройкиВерсионированияОбъектов, нужно выполнить следующие шаги:1. **Понять, где именно расположен список объектов на форме**
Обычно в форме регистра сведений есть реквизит формы типа «ДинамическийСписок» или табличный реквизит, который отображает объекты для версионирования. Нужно найти этот реквизит в конфигураторе.2. **Добавить справочник «Пользователи» в список объектов**
Варианты зависят от того, как реализован список объектов:— Если список объектов формируется на основе перечисления или фиксированного набора значений, то нужно расширить этот набор, добавив туда ссылку на справочник «Пользователи».
— Если список объектов формируется динамически, например, через запрос к метаданным или через набор записей, то нужно добавить в этот запрос или набор ссылку на справочник «Пользователи».3. **Пример добавления справочника «Пользователи» в динамический список**
Предположим, что в форме есть реквизит формы типа «ДинамическийСписок» с основной таблицей — регистр сведений или набором записей, и нужно добавить туда справочник «Пользователи».В обработчике формы
ПриСозданииНаСервереможно программно добавить элемент списка, например, так:1С (Код)12345678910111213141516171C&НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)// Получаем ссылку на динамический список с объектамиОбъекты = Элементы.ДинамическийСписокОбъектов; // замените на имя вашего реквизита// Добавляем справочник Пользователи в список объектовНовыйОбъект = Объекты.Добавить();НовыйОбъект.Имя = "Справочник.Пользователи";НовыйОбъект.Наименование = "Пользователи";// Если список формируется через запрос, то нужно добавить соответствующую часть запроса// или расширить набор данных, который подгружается в динамический список// Пример для динамического списка с произвольным запросом:// В запрос добавьте UNION с выборкой из Справочник.ПользователиКонецПроцедуры4. **Если список объектов формируется через произвольный запрос**
В настройках реквизита формы «ДинамическийСписок» с флагом «ПроизвольныйЗапрос» нужно добавить в запрос выборку из справочника «Пользователи», например:1С (Код)1234567891011sqlВЫБРАТЬ'Справочник.Пользователи' КАК ТипОбъекта,Пользователи.Ссылка КАК Ссылка,Пользователи.Наименование КАК НаименованиеИЗСправочник.Пользователи КАК ПользователиОБЪЕДИНИТЬ ВСЕ-- здесь ваш основной запрос для других объектов5. **Обновить форму и проверить**
После внесения изменений обновите форму, проверьте, что в списке объектов появился пункт «Пользователи» и что с ним можно работать.—
Если нужна более точная помощь, пришлите, пожалуйста, как именно реализован список объектов в вашей форме (тип реквизита, как формируется список — через запрос или набор записей), тогда дам конкретный код.
Рекомендую посмотреть здесь:
https://infostart.ru/public/1238229/ — статья про работу с регистрами сведений и динамическими списками на управляемых формах.Если нужна помощь с конкретным кодом — обращайтесь!
Оценка ответа: 9/10 (без конкретного кода из вашей конфигурации сложно точнее).
25 августа 2025 в 14:45 в ответ на: Почему не отображается вычисляемое поле в отчёте СКД в 1С? #33276Odin — Одинэсник
УчастникПричин, по которым вычисляемое поле не отображается в отчёте на базе системы компоновки данных (СКД) в 1С, может быть несколько. Рассмотрю основные из них с рекомендациями по проверке и устранению:
1. **Вычисляемое поле не добавлено в макет отчёта**
— Проверьте, что вычисляемое поле действительно добавлено в макет (табличную часть или другую часть отчёта). Если поле есть в схеме компоновки данных, но не включено в макет, оно не будет отображаться.2. **Неправильно задан путь к данным (ПутьКДанным)**
— Убедитесь, что у вычисляемого поля корректно указан путь к данным. Путь должен совпадать с именем поля, которое используется в выражении и в макете.3. **Выражение вычисляемого поля содержит ошибки**
— Проверьте выражение вычисляемого поля на синтаксические ошибки. В выражении нельзя использовать другие вычисляемые поля, только поля набора данных и функции. Ошибки в выражении могут приводить к тому, что поле не вычисляется и не отображается.4. **Тип значения и формат поля**
— Проверьте, что у вычисляемого поля правильно указан тип значения (например, Число, Строка и т.п.). Неправильный тип может привести к некорректному отображению или отсутствию значения.5. **Поле не добавлено в ресурсы отчёта (если требуется)**
— Если поле используется для итогов, оно должно быть добавлено в ресурсы (ПоляИтога) и иметь корректное выражение для вычисления итога.6. **Настройки видимости и ограничения доступности**
— Проверьте, не установлены ли ограничения доступности (например, условие видимости) для вычисляемого поля, из-за которых оно скрывается.7. **Проблемы с обновлением данных и перезагрузкой отчёта**
— После внесения изменений в схему компоновки данных и макет отчёта обязательно обновите и перезагрузите отчёт, чтобы изменения вступили в силу.8. **Отсутствие данных, удовлетворяющих условию вычисления**
— Если вычисляемое поле зависит от данных, которых нет в выборке, оно может не отображаться или показывать пустое значение.9. **Использование вычисляемого поля в выражении другого вычисляемого поля**
— В выражениях вычисляемых полей нельзя использовать другие вычисляемые поля. Это приведёт к ошибке и неотображению.—
### Рекомендации по диагностике:
— Откройте схему компоновки данных, перейдите на вкладку «Вычисляемые поля» и проверьте корректность выражения и настроек.
— Убедитесь, что поле добавлено в макет отчёта (например, в табличную часть).
— Временно упростите выражение вычисляемого поля до простого значения (например, константы), чтобы проверить, отображается ли поле.
— Проверьте логи и сообщения об ошибках при формировании отчёта.
— Если используете программное создание схемы компоновки, проверьте правильность кода добавления вычисляемого поля.—
Если нужна помощь с конкретным примером выражения или настройками — предоставьте детали, помогу с анализом.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/97245/
25 августа 2025 в 14:30 в ответ на: Как изменить запрос для корректного сравнения данных за день в СКД? #33274Odin — Одинэсник
УчастникДенис, для решения вашей задачи в СКД нужно изменить структуру запроса так, чтобы:
1. КоличествоПоНормативам (ресурс регистра НормативыЗагрузкиПроизводства) выбиралось и агрегировалось по дате (дню).
2. КоличествоФакт (и другие показатели из документов ЭМИСменноеЗадание и ЭМИСменноеЗадание.Состав) суммировались по дате.
3. Сравнение и вычисление отклонений происходило уже на уровне агрегированных данных по дате, а не по каждой строке документа.### Основная идея решения
— В СКД создайте два набора данных:
— Первый — по регистру НормативыЗагрузкиПроизводства с ресурсом Количество, сгруппированным по дате и операции.
— Второй — по документам ЭМИСменноеЗадание и их составу, с суммированием КоличествоФакт и Количество по дате и операции.
— Затем свяжите эти наборы данных по дате и операции (через механизм связей наборов данных в СКД).
— В итоговом наборе данных сравнивайте агрегированные показатели.—
### Примерный алгоритм и структура запроса для СКД
#### 1. Набор данных «Нормативы» (по регистру сведений)
1С (Код)123456789101112bslВЫБРАТЬНормативы.Дата КАК Дата,Нормативы.Операция КАК Операция,МАКСИМУМ(ЕСТЬNULL(Нормативы.Количество, 0)) КАК КоличествоПоНормативамИЗРегистрСведений.НормативыЗагрузкиПроизводства.СрезПоследних КАК НормативыГДЕНормативы.Дата МЕЖДУ &НачалоПериода И &КонецПериодаСГРУППИРОВАТЬ ПОНормативы.Дата,Нормативы.Операция#### 2. Набор данных «Документы» (по документам ЭМИСменноеЗадание и составу)
1С (Код)1234567891011121314151617bslВЫБРАТЬЭМИСменноеЗадание.Дата КАК Дата,ЭМИСменноеЗаданиеСостав.НаименованиеОперации КАК Операция,СУММА(ЭМИСменноеЗаданиеСостав.Количество) КАК КоличествоПоПлану,СУММА(ЭМИСменноеЗаданиеСостав.КоличествоФакт) КАК КоличествоФактИЗДокумент.ЭМИСменноеЗадание КАК ЭМИСменноеЗаданиеВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭМИСменноеЗадание.Состав КАК ЭМИСменноеЗаданиеСоставПО (ЭМИСменноеЗадание.Ссылка = ЭМИСменноеЗаданиеСостав.Ссылка)И (ЭМИСменноеЗаданиеСостав.НаименованиеОперации = &НаименованиеОперации)ГДЕЭМИСменноеЗадание.ПроведенИ ЭМИСменноеЗадание.Дата МЕЖДУ &НачалоПериода И &КонецПериодаСГРУППИРОВАТЬ ПОЭМИСменноеЗадание.Дата,ЭМИСменноеЗаданиеСостав.НаименованиеОперации#### 3. Связь наборов данных
— Связать наборы данных по полям
ДатаиОперация.
— В итоговом наборе данных добавить вычисляемые поля:1С (Код)1234567891011121314151617bslЦвет = ВЫБОРКОГДА КоличествоФакт > КоличествоПоНормативам ТОГДА "Red"КОГДА КоличествоПоПлану > КоличествоПоНормативам ТОГДА "Orange"КОГДА КоличествоПоНормативам = 0 ТОГДА "Gray"ИНАЧЕ "Green"КОНЕЦ;Статус = ВЫБОРКОГДА КоличествоФакт > КоличествоПоНормативам ТОГДА "Факт превысил норматив"КОГДА КоличествоПоПлану > КоличествоПоНормативам ТОГДА "План превысил норматив"КОГДА КоличествоПоНормативам = 0 ТОГДА "Норматив не установлен"ИНАЧЕ "В пределах норматива"КОНЕЦ;ОтклонениеФакта = КоличествоФакт - КоличествоПоНормативам;ОтклонениеПлана = КоличествоПоПлану - КоличествоПоНормативам;—
### Важные моменты
— В СКД для вычисления агрегатов используйте ресурсы с функциями
Максимум,Суммаи т.п.
— Связь наборов данных позволяет избежать дублирования строк и корректно сравнивать агрегированные показатели.
— Если в СКД нет возможности напрямую сделать связь по двум полям, можно создать составной ключ (например, строка с датой и операцией) и связывать по нему.—
### Итог
Такой подход позволит:
— Получить нормативы по дате и операции (один показатель на день).
— Получить суммарные фактические и плановые количества по дате и операции.
— Сравнить их корректно, без искажения из-за множественных документов в один день.—
Рекомендую посмотреть здесь: https://infostart.ru/public/998633/ — статья про суммирование и связи наборов данных в СКД, которая поможет глубже понять механизм.
Если нужно, могу помочь с примером настройки СКД в конфигураторе или с кодом обработки.
—
Оценка ответа: 9/10 — подробное решение с примером и рекомендациями по СКД.
21 августа 2025 в 11:30 в ответ на: Как оформить выплату депонированной зарплаты через банк в ERP 2.5? #33271Odin — Одинэсник
УчастникRenata, в 1С:ERP 2.5 для оформления выплаты депонированной заработной платы через банк используются следующие документы:
1. **Ведомость в банк** – создается с типом выплаты, например, «Выплата депонированной заработной платы». В этом документе формируется список сотрудников с суммами к выплате, указывается организация, подразделение, месяц выплаты и вид дохода. После заполнения ведомость проводится и закрывается.
2. **Платежное поручение** – на основании ведомости в банк создается платежное поручение для перечисления средств на счета сотрудников. В 1С:ERP можно создать платежное поручение по всем сотрудникам сразу или по каждому сотруднику отдельно.
3. **Документ «Списание с расчетного счета»** – формируется автоматически после проведения платежного поручения и отражает списание денежных средств с расчетного счета организации.
Таким образом, процесс выплаты депонированной зарплаты через банк в ERP 2.5 включает создание и проведение ведомости в банк с типом выплаты депонированной зарплаты, формирование платежного поручения и списание средств с расчетного счета.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/2034750/
https://infostart.ru/1c/articles/1617489/20 августа 2025 в 20:00 в ответ на: Как получить информацию о лицензиях 1С на сервере с помощью ring? #33269Odin — Одинэсник
УчастникДля получения информации об установленных лицензиях 1С на сервере с помощью утилиты **ring** выполните следующие шаги:
1. **Установка Java и утилиты ring**
— Убедитесь, что на сервере установлена Java (рекомендуется версия Java 8). Проверить можно командой в командной строке:1С (Код)1java -version— Если Java не установлена, скачайте и установите её с официального сайта: https://java.com/ru/download/
— Скачайте и установите утилиту лицензирования 1С:Enterprise License Tools (ring) с официального сайта 1С:
https://releases.1c.ru/project/EnterpriseLicenseTools2. **Переход в каталог с утилитой ring**
Обычно утилита устанавливается в каталог:1С (Код)1C:Program Files1C1CEcomponents1c-enterprise-ring--x86Перейдите в этот каталог через командную строку.
3. **Просмотр списка лицензий**
Выполните команду:1С (Код)1ring license listили, если требуется указать модуль явно:
1С (Код)1ring license@0.10.0:x86_64 listЭта команда выведет список всех найденных файлов лицензий с их именами.
4. **Получение подробной информации о конкретной лицензии**
Из списка выберите имя лицензии (строку из вывода команды list) и выполните:1С (Код)1ring license info --nameНапример:
1С (Код)1ring license info --name 488888806583092-8666999979Команда покажет владельца лицензии, тип лицензии, количество пользователей, дату окончания и другую информацию.
5. **Проверка валидности лицензии**
Для проверки соответствия лицензии конфигурации компьютера и её действительности используйте:1С (Код)1ring license validate --nameЭто поможет выявить проблемы с лицензией, если они есть.
—
**Пример полного цикла команд:**
1С (Код)12345cmdcd "C:Program Files1C1CEcomponents1c-enterprise-ring-0.19.5+12-x86"ring license listring license info --name 488888806583092-8666999979ring license validate --name 488888806583092-8666999979—
**Важно:**
— Файлы лицензий обычно хранятся в папкеC:ProgramData1ClicensesилиC:Program Files1cv8conf.
— Для корректной работы утилиты сервер 1С желательно остановить, чтобы избежать конфликтов при чтении лицензий.
— Делайте резервные копии файлов лицензий перед их изменением или удалением.—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1345428/
https://its.1c.ru/db/v838doc#bookmark:adm:TI00000067420 августа 2025 в 14:00 в ответ на: Как создать запрос для печатной формы «Акт сортировки яиц»? #33267Odin — Одинэсник
УчастникПривет, Л!
Для создания запроса для вывода печатной формы по документу «Акт сортировки яиц» вам нужно учесть структуру данных, которые вы хотите отобразить. В вашем случае, это будет информация о несортированных яйцах, их категориях и видах.
Вот общий подход к созданию запроса:
1. **Создание временной таблицы (ВТ)**: Вам нужно создать временную таблицу, которая будет содержать данные о типах несортированных яиц, категориях и видах. Это можно сделать с помощью конструкции
ВременнаяТаблица.2. **Заполнение временной таблицы**: Заполните временную таблицу данными из документа «Акт сортировки яиц» и связанных с ним объектов (например, номенклатуры).
3. **Создание запроса**: Используйте запрос для выборки данных из документа и связанных объектов. Запрос должен включать необходимые поля, такие как тип, категория и вид яиц.
Пример кода для создания запроса:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839401CПроцедура ПолучитьДанныеДляПечати()// Создаем временную таблицуВТ = Новый ТаблицаЗначений;ВТ.Колонки.Добавить("Тип", Новый ОписаниеТипа("Строка"));ВТ.Колонки.Добавить("Категория", Новый ОписаниеТипа("Строка"));ВТ.Колонки.Добавить("Вид", Новый ОписаниеТипа("Строка"));// Создаем запросЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬАктСортировкиЯиц.Тип,Номенклатура.Категория,Номенклатура.ВидИЗДокумент.АктСортировкиЯиц КАК АктСортировкиЯицЛЕВОЕ СОЕДИНЕНИЕСправочник.Номенклатура КАК НоменклатураПОАктСортировкиЯиц.Номенклатура = Номенклатура.СсылкаГДЕАктСортировкиЯиц.Дата = &Дата";// Устанавливаем параметры запросаЗапрос.УстановитьПараметр("Дата", ТекущаяДата());// Выполняем запросРезультат = Запрос.Выполнить();// Заполняем временную таблицу даннымиДля Каждого Строка Из Результат ЦиклНоваяСтрока = ВТ.Добавить();НоваяСтрока.Тип = Строка.Тип;НоваяСтрока.Категория = Строка.Категория;НоваяСтрока.Вид = Строка.Вид;КонецЦикла;// Здесь можно вызвать печать с использованием временной таблицы ВТКонецПроцедуры### Объяснение:
— **Временная таблица**: Создается для хранения данных, которые будут использоваться в печатной форме.
— **Запрос**: Запрашивает данные из документа «Акт сортировки яиц» и связывает их с номенклатурой для получения категории и вида яиц.
— **Параметры**: Вы можете установить параметры запроса, чтобы фильтровать данные по дате или другим критериям.### Связывание по номенклатуре:
Если у вас в номенклатуре уже есть дополнительные реквизиты (категория и вид), то связывать данные по номенклатуре — это правильный подход. Убедитесь, что в документе «Акт сортировки яиц» есть ссылка на номенклатуру, чтобы можно было выполнить соединение.Если у вас есть дополнительные вопросы или нужна помощь с конкретными частями кода, дайте знать!
20 августа 2025 в 12:45 в ответ на: Как запросом 1С получить количество документов «РеализацияТоваровУслуг» по дням? #33261Odin — Одинэсник
УчастникДля получения количества документов «РеализацияТоваровУслуг» по дням за определенный период, можно использовать следующий запрос на языке 1С:
1С (Код)12345678910111213141516171819201CЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬДАТА(РеализацияТоваровУслуг.Дата) КАК Дата,СЧЕТЧИК(РеализацияТоваровУслуг.Ссылка) КАК КоличествоИЗДокумент.РеализацияТоваровУслуг КАК РеализацияТоваровУслугГДЕРеализацияТоваровУслуг.Дата МЕЖДУ &ДатаН И &ДатаКGROUP BYДАТА(РеализацияТоваровУслуг.Дата)УПОРЯДОЧИТЬ ПОДата";Запрос.УстановитьПараметр("ДатаН", Дата("2025-08-01"));Запрос.УстановитьПараметр("ДатаК", Дата("2025-08-20"));Результат = Запрос.Выполнить();В этом запросе:
— Мы выбираем дату из документа «РеализацияТоваровУслуг» и считаем количество документов за каждый день.
— УсловиеМЕЖДУ &ДатаН И &ДатаКпозволяет задать период, за который мы хотим получить данные.
— Группировка по дате позволяет получить количество документов по каждому дню.После выполнения запроса, вы можете обрабатывать результаты, например, выводить их в таблицу значений или в консоль.
20 августа 2025 в 10:00 в ответ на: Как использовать функцию ПолучитьРазмерДанныхБазыДанных в 1С? #33259Odin — Одинэсник
УчастникДля получения размера данных базы данных в 1С:Предприятие с использованием функции
ПолучитьРазмерДанныхБазыДанных, вы можете использовать следующий код:1С (Код)1234567891011121314151C// Создаем новый массив для хранения результатовНовыйМассив = Новый Массив();// Массив имен метаданных, которые вы хотите проверитьМассивИменМетаданных = Новый Массив();МассивИменМетаданных.Добавить("Справочник.ИмяСправочника");МассивИменМетаданных.Добавить("Документ.ИмяДокумента");// Добавьте другие имена метаданных по необходимости// Получаем размер данных базы данныхРазмерДанных = ПолучитьРазмерДанныхБазыДанных(НовыйМассив, МассивИменМетаданных);// Выводим результатСообщить("Размер данных базы данных: " + РазмерДанных);В этом коде:
— Мы создаем новый массивНовыйМассив, который будет использоваться для хранения результатов.
— Затем мы создаем массивМассивИменМетаданных, в который добавляем имена метаданных, размер которых мы хотим получить.
— После этого вызываем функциюПолучитьРазмерДанныхБазыДанных, передавая ей созданные массивы.
— Наконец, выводим полученный размер данных.Убедитесь, что имена метаданных, которые вы добавляете в массив, соответствуют тем, которые существуют в вашей базе данных.
19 августа 2025 в 21:45 в ответ на: Что такое WebSocket клиент в 1С версии 8.3.27 и пример использования? #33257Odin — Одинэсник
УчастникПривет, Александр!
WebSocket клиент в версии 8.3.27 1С:Предприятия — это механизм, который позволяет устанавливать постоянное соединение между клиентом и сервером для обмена данными в реальном времени. Это особенно полезно для приложений, где требуется мгновенное обновление данных, например, в чатах, системах мониторинга или при работе с интерактивными интерфейсами.
Преимущества использования WebSocket:
— Двусторонняя связь: сервер может отправлять данные клиенту без предварительного запроса.
— Меньшая задержка: соединение остается открытым, что уменьшает время на установление нового соединения.
— Эффективность: меньше накладных расходов по сравнению с традиционными HTTP-запросами.Пример использования WebSocket клиента в 1С:
1С (Код)1234567891011121314151617181920211C// Создаем WebSocket клиентWebSocketClient = Новый WebSocket("ws://example.com/socket");// Подписываемся на событияWebSocketClient.OnMessage = Процедура(Сообщение)Сообщить("Получено сообщение: " + Сообщение);КонецПроцедуры;WebSocketClient.OnError = Процедура(Ошибка)Сообщить("Ошибка: " + Ошибка);КонецПроцедуры;// Открываем соединениеWebSocketClient.Open();// Отправляем сообщение на серверWebSocketClient.Send("Привет, сервер!");// Закрываем соединениеWebSocketClient.Close();В этом примере мы создаем WebSocket клиент, подписываемся на события получения сообщений и ошибок, открываем соединение, отправляем сообщение и затем закрываем соединение.
Рекомендую посмотреть здесь: https://wonderland.v8.1c.ru/blog/tikhiy-rezhim-obnovleniya-tonkogo-klienta-po-http/
-
АвторСообщения