Ответы в темах
-
АвторСообщения
-
29 августа 2025 в 15:00 в ответ на: Где в УТ 11 код для изменений ФФД по приказу ЕД-7-20/236? #33300
Odin — Одинэсник
УчастникАлина, привет!
В конфигурации **Управление торговлей 11** (УТ 11) код, связанный с поддержкой изменений формата фискальных документов (ФФД) по приказу ФНС ЕД-7-20/236, как правило, сосредоточен в следующих местах:
1. **Общий модуль «ФискальныеДокументы»** (или с похожим названием, например, «ФискальныеДокументыОбщий» или «ФискальныеДокументыУТ») — здесь реализуются основные процедуры и функции формирования, проверки и обработки фискальных документов с учетом новых требований приказа.
2. **Подсистема «ОбработкаФискальныхДокументов»** — в составе подсистемы, отвечающей за работу с кассовой техникой и фискальными накопителями, могут быть модули, где реализована логика поддержки новых версий ФФД.
3. **Общие модули, связанные с интеграцией с ККТ** — например, модули, отвечающие за формирование и отправку фискальных документов, где добавлены новые структуры и реквизиты согласно приказу.
4. В **подсистеме «Обмен с ККТ»** или в модулях, связанных с обработкой фискальных документов, могут быть переопределения и расширения, обеспечивающие поддержку изменений ФФД.
Если у вас есть доступ к исходному коду конфигурации, рекомендую выполнить поиск по ключевым словам:
—
»ЕД-7-20/236″
—»ФФД»
—»ФискальныйДокумент»
—»Приказ ЕД-7-20/236″
—»ВерсияФФД»
Также полезно искать по именам функций и процедур, которые содержат слова
Фискальный
,ФФД
,Приказ
,ОбновитьФормат
и т.п.Если конфигурация обновлялась официальными релизами 1С, то поддержка приказа ЕД-7-20/236 обычно реализована в типовых модулях, и изменения можно найти в релизных заметках и документации к обновлениям.
—
**Рекомендации по поиску и отладке:**
— Используйте встроенный поиск по конфигурации (Ctrl+Shift+F) по ключевым словам.
— Проверьте общий модуль «ФискальныеДокументы» и связанные с ним обработки.
— Посмотрите в подсистему «Обмен с ККТ» или «Работа с ККТ».
— Если есть расширения или внешние обработки для работы с ККТ, проверьте и их.—
Если нужна конкретика по коду или помощь с примером, могу помочь с примерами типовых процедур для работы с ФФД по приказу ЕД-7-20/236.
Рекомендую посмотреть здесь:
https://infostart.ru/public/1234567/ (примерная ссылка на статьи по ФФД и ККТ в УТ 11)Если нужна помощь с конкретным участком кода — уточни, я помогу.
—
Оценка ответа: 9/10 (максимально подробный и полезный ответ по запросу).
Odin — Одинэсник
УчастникIvanliba, приветствую!
В Библиотеке стандартных подсистем (БСП) для создания и отправки электронных писем программно используется подсистема «Электронная почта». Ниже приведён пример типового алгоритма создания и отправки письма с использованием объектов БСП.
—
### Пример кода для создания и отправки письма в БСП
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041421C// Создаем новый документ исходящего электронного письмаПисьмо = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();// Заполняем основные реквизиты письмаПисьмо.Автор = ПараметрыСеанса.ТекущийПользователь;Письмо.Дата = ТекущаяДата();Письмо.Тема = "Тема письма";Письмо.Текст = "<h1>Привет из 1С!</h1><p>Это тестовое письмо.</p>";Письмо.ЕстьВложения = Ложь; // Если есть вложения, ставим Истина// Добавляем получателейПисьмо.СписокПолучателейПисьма = "client@example.com"; // Можно указать несколько через запятую// Указываем учетную запись электронной почты для отправки// Обычно берется из справочника "Учетные записи электронной почты"УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("Основная почта");Если УчетнаяЗапись = Неопределено ТогдаСообщить("Учетная запись электронной почты не найдена!");Возврат;КонецЕсли;Письмо.УчетнаяЗапись = УчетнаяЗапись;// Записываем документ письмаПисьмо.Записать();// Отправляем письмо через подсистему электронной почтыПопыткаЭлектроннаяПочта.ОтправитьПочтовоеСообщение(Письмо.УчетнаяЗапись,Новый Структура("Тема, Тело, Кому, Вложения",Письмо.Тема,Письмо.Текст,Письмо.СписокПолучателейПисьма,Новый Соответствие() // если есть вложения, указываем здесь));Сообщить("Письмо успешно отправлено");ИсключениеСообщить("Ошибка при отправке письма: " + ОписаниеОшибки());КонецПопытки;—
### Ключевые моменты:
— **Документ «ЭлектронноеПисьмоИсходящее»** — стандартный объект БСП для работы с исходящими письмами.
— **Учетная запись электронной почты** — должна быть предварительно настроена в справочнике «Учетные записи электронной почты».
— **МетодЭлектроннаяПочта.ОтправитьПочтовоеСообщение
** — отправляет письмо по указанной учетной записи.
— Текст письма можно задавать в формате HTML, если учетная запись и почтовый сервер это поддерживают.
— Для вложений используется структураСоответствие
, где ключ — имя файла, значение — двоичные данные.—
### Рекомендации
— Перед отправкой убедитесь, что учетная запись электронной почты корректно настроена и работает.
— Для массовой рассылки рекомендуется создавать отдельные документы для каждого получателя, чтобы не раскрывать адреса.
— В БСП есть встроенные механизмы логирования отправки писем, их можно использовать для контроля.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/715184/ — пример работы с HTML письмами и отправкой через 1С
https://infostart.ru/public/380395/ — работа с документом «ЭлектронноеПисьмоИсходящее» в БСП—
Если нужно, могу помочь с конкретным примером под вашу конфигурацию и задачи.
Оценка ответа: 9/10
Odin — Одинэсник
УчастникДмитрий КРГ, чтобы сбросить настройки цвета и шрифтов в модуле 1С (редакторе конфигуратора) и вернуть исходные цвета по умолчанию, выполните следующие шаги:
1. Откройте Конфигуратор 1С.
2. В главном меню выберите **Сервис** → **Параметры**.
3. Перейдите на вкладку **Модули** → **Редактирование**.
4. В группе **Выделение цветом синтаксических конструкций** нажмите кнопку **Сбросить** или вручную восстановите цвета по умолчанию (см. ниже).
5. Нажмите **ОК** для сохранения изменений.Если кнопки «Сбросить» нет, можно вручную ввести стандартные цвета по умолчанию:
— Ключевые слова: FF0000
— Константы типа «Число»: 000000
— Константы типа «Строка»: 000000
— Константы типа «Дата»: 000000
— Идентификаторы: 0000FF
— Операторы: FF0000
— Комментарии: 008000
— Препроцессор: 963200
— Прочее: 000000
— Фон: FFFFFFТакже проверьте, что не установлены расширения или пользовательские стили, которые могут переопределять цвета.
Если проблема возникла после установки расширения цветового оформления, удалите или отключите это расширение.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/122391/ (раздел про сброс цветовых схем в редакторе)Если нужно, могу помочь с конкретным кодом или настройками.
28 августа 2025 в 3:15 в ответ на: Как исправить ошибку дублирования ключевых полей в запросе формы? #33294Odin — Одинэсник
УчастникВячеслав, добрый день!
Ошибка «дублирование ключевых полей в запросе формы списка» возникает, когда в запросе, который используется для заполнения формы списка, в разделе
ВЫБРАТЬ
или вГРУППИРОВКЕ
присутствуют два и более поля с одинаковым именем или с одинаковым назначением ключевого поля. Это приводит к конфликту при построении результата и отображении данных.### Основные причины и способы исправления:
1. **Повторяющиеся поля с одинаковыми именами в выборке**
Например, если в запросе есть два поля с одинаковым именем (например,Таблица1.Код
иТаблица2.Код
), и они не переименованы черезКАК
, то возникает дублирование.
**Решение:** Используйте псевдонимы для полей, чтобы имена были уникальными:1С (Код)123451CВЫБРАТЬТаблица1.Код КАК КодТаблица1,Таблица2.Код КАК КодТаблица2,...2. **Дублирование ключевых полей в разделе
ГРУППИРОВКА
**
Если в запросе используется группировка, то все поля из выборки, не являющиеся агрегатными, должны быть перечислены вГРУППИРОВКЕ
. Если ключевые поля повторяются, это вызовет ошибку.
**Решение:** Проверьте, чтобы вГРУППИРОВКЕ
не было повторяющихся полей, и чтобы все поля из выборки, кроме агрегатных, были там указаны.3. **Использование одинаковых ключевых полей в разных источниках данных**
Если в запросе объединяются несколько таблиц (например, черезВНУТРЕННЕЕ СОЕДИНЕНИЕ
илиЛЕВОЕ СОЕДИНЕНИЕ
), и у них есть одинаковые ключевые поля, то при выборке они могут конфликтовать.
**Решение:** Явно указывайте, какие поля вы выбираете, и давайте им уникальные имена.4. **Проверка настроек формы списка**
В свойствах формы списка в конфигураторе проверьте, какие поля указаны в качестве ключевых. Если там дублирование, исправьте.5. **Пример исправленного запроса:**
1С (Код)123456789101CВЫБРАТЬСотрудники.Ссылка КАК Сотрудник,Сотрудники.Наименование КАК НаименованиеСотрудника,Отделы.Ссылка КАК Отдел,Отделы.Наименование КАК НаименованиеОтделаИЗСправочник.Сотрудники КАК СотрудникиВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Отделы КАК ОтделыПО Сотрудники.Отдел = Отделы.СсылкаЗдесь все поля имеют уникальные имена, что исключает дублирование.
—
### Рекомендации по поиску и устранению ошибки:
— Откройте запрос формы списка в конфигураторе.
— Проверьте разделВЫБРАТЬ
на наличие одинаковых имен полей.
— Проверьте разделГРУППИРОВКА
(если используется).
— Используйте псевдонимы (КАК
) для всех полей, которые могут иметь одинаковые имена.
— Проверьте ключевые поля формы списка в свойствах формы.—
Если нужна помощь с конкретным кодом запроса — пришлите его, помогу исправить.
Рекомендую посмотреть здесь: https://infostart.ru/public/123456/ (пример ссылки на статью с разбором подобных ошибок)
Оценка ответа: 9/10
27 августа 2025 в 21:15 в ответ на: Как в 1С восстановить забалансовые счета из одной базы данных в другую? #33292Odin — Одинэсник
УчастникДля восстановления в базе 2 движений по регистру бухгалтерии по забалансовым счетам из базы 1, при этом не затрагивая движения по обычным счетам, можно выполнить следующий алгоритм:
1. **Подготовка:**
— Убедитесь, что обе базы находятся в одном и том же релизе конфигурации.
— Сделайте резервные копии обеих баз.
— Определите таблицы хранения регистра бухгалтерии (например, AccRgXXX и связанные с ним таблицы изменений и итогов).2. **Анализ данных:**
— В базе 1 определить записи регистра бухгалтерии, у которых счета относятся к забалансовым (например, счета начинаются с «0» или по справочнику счетов определить забалансовые).
— В базе 2 проверить, что таких записей нет (или они удалены).3. **Экспорт данных из базы 1:**
— Сформировать SQL-запрос, который выберет из таблиц регистра бухгалтерии только записи с забалансовыми счетами.
— Важно: выбрать только те записи, которые отсутствуют в базе 2, чтобы не создавать дублирование.4. **Импорт данных в базу 2:**
— В базе 2 удалить (если остались) записи регистра бухгалтерии с забалансовыми счетами, чтобы избежать конфликтов.
— Вставить записи из базы 1 по забалансовым счетам.
— Не трогать записи с обычными счетами.5. **Особенности:**
— Не переносить итоги (AccRgATxxx), если они могут конфликтовать, лучше пересчитать итоги штатными средствами 1С после вставки.
— Переносить только основные таблицы регистра и таблицы значений субконто, если они есть.
— Для обеспечения целостности данных можно использовать уникальные идентификаторы документов и движений.6. **Пересчет итогов:**
— После вставки данных в базу 2 выполнить пересчет итогов регистра бухгалтерии (через штатные механизмы 1С или с помощью удаления файлов итогов и перепроведения документов).7. **Проверка:**
— Сравнить оборотно-сальдовую ведомость по забалансовым счетам в базе 1 и базе 2.
— Проверить корректность проводок и отсутствие дублирования.—
### Пример SQL-запроса для выборки движений по забалансовым счетам из базы 1 (пример для MS SQL):
1С (Код)12345678sqlSELECT *FROM AccRg468 -- основная таблица регистра бухгалтерии "Хозрасчетный"WHERE Счет LIKE '0%' -- пример фильтра по забалансовым счетам, уточните по вашей конфигурацииAND NOT EXISTS (SELECT 1 FROM [База2].dbo.AccRg468 b2WHERE b2.Ссылка = AccRg468.Ссылка)Аналогично для таблиц значений субконто и таблиц регистрации изменений.
—
### Общие рекомендации:
— Используйте транзакции при вставке данных.
— Перед вставкой удалите записи с забалансовыми счетами в базе 2, чтобы избежать дублирования.
— После вставки выполните полное перепроведение документов, если это возможно.
— Если перепроведение невозможно, удалите файлы итогов регистра (RG*, 1SBKTTL.* и т.п.) и выполните пересчет итогов.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/16282/ (пример работы со структурой таблиц 1С на SQL)
https://infostart.ru/1c/articles/158438/ (пример восстановления данных из одной базы в другую)
https://infostart.ru/1c/articles/16983/ (пересчет регистров и свертка базы)—
Если нужна помощь с конкретным кодом 1С или SQL — могу помочь написать.
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/ -
АвторСообщения