Ответы в темах
-
АвторСообщения
-
Ошибка — это слишком общий запрос, нужно больше конкретики, чтобы помочь. Напиши, пожалуйста:
1. Текст ошибки полностью (лучше скриншот или точный текст).
2. В какой момент возникает ошибка (при запуске, при сохранении, при выполнении запроса, при проведении документа и т.п.).
3. Версия платформы и конфигурации 1С.
4. Если есть код или запрос, который вызывает ошибку — приложи его, оформи по правилам с | в начале каждой строки для запросов.Без этих данных невозможно дать конкретный совет. Если ошибка связана с передачей данных между клиентом и сервером, часто помогает проверка и очистка непечатных символов в строках (см. статью про ошибку передачи данных между клиентом и сервером).
Если ошибка связана с обработкой исключений, возможно, нужно правильно пробрасывать исключения через ВызватьИсключение.
Жду подробностей, чтобы помочь.
18 мая 2026 в 19:28 в ответ на: Как в 1С БП 8.3 настроить закрытие месяца без затрат на полуфабрикаты? #37256В 1С:Бухгалтерия 8.3 Проф (редакция ПРОФ) стандартно общепроизводственные расходы распределяются на счета затрат (20, 23 и т.п.) пропорционально объему выпуска продукции, включая полуфабрикаты, если они учитываются как продукция.
Чтобы при закрытии месяца общепроизводственные расходы не распределялись на полуфабрикаты, нужно сделать так:
1. Разграничить полуфабрикаты и готовую продукцию по номенклатурным группам
— В справочнике Номенклатура создайте отдельные номенклатурные группы для полуфабрикатов и для готовой продукции.
— В документах выпуска продукции (Отчет производства за смену) указывайте правильную номенклатурную группу.2. Настроить статьи затрат и методы распределения
— В справочнике Статьи затрат для общепроизводственных расходов проверьте, что способ распределения настроен корректно.
— Если полуфабрикаты не должны участвовать в распределении, то нужно исключить их из базы распределения. В 1С БП 8.3 это можно сделать через настройку базы распределения в регламентных операциях закрытия месяца.3. Использовать отдельный счет затрат для полуфабрикатов
— Если полуфабрикаты учитываются на отдельном счете затрат (например, 23.02), а общепроизводственные расходы распределяются только на основной счет (например, 20.01), то при закрытии месяца общепроизводственные расходы не попадут на полуфабрикаты.
— Для этого в плане счетов и в настройках закрытия месяца укажите, что распределение общепроизводственных расходов происходит только на нужные счета.4. Настройка базы распределения в регламентной операции «Закрытие месяца»
— В разделе «Операции» → «Закрытие месяца» → «Настройки» → «Распределение затрат» проверьте базу распределения.
— Обычно база — это плановая себестоимость продукции по номенклатурным группам. Если полуфабрикаты не должны участвовать, то нужно исключить их из базы распределения.
— Для этого можно настроить фильтр по номенклатурным группам, чтобы база распределения включала только готовую продукцию.5. Использовать отдельный вид выпуска
— В документе «Отчет производства за смену» можно использовать разные виды выпуска (например, «Полуфабрикат» и «Готовая продукция»).
— В настройках закрытия месяца можно настроить распределение затрат только на определённые виды выпуска.6. Проверить аналитику затрат
— Важно, чтобы в документах по затратам и выпуску была корректно заполнена аналитика (номенклатурная группа, подразделение).
— Если полуфабрикаты не участвуют в распределении, то по ним не должно быть затрат с общепроизводственными расходами.—
Если в стандартных настройках 1С БП 8.3 нет возможности исключить полуфабрикаты из распределения, то можно сделать доработку:
— В обработке закрытия месяца изменить алгоритм распределения, чтобы исключить номенклатурные группы полуфабрикатов из базы распределения.
—
Рекомендую посмотреть подробные инструкции и примеры настройки распределения затрат в 1С БП 8.3 здесь:
https://infostart.ru/public/421287/ — статья по учету затрат и распределению в 1С БП 8.3И по настройке закрытия месяца:
https://infostart.ru/public/71842/ — разбор ошибки «Нет базы распределения прямых расходов» и настройка распределения затрат.—
Кратко:
— Разделите полуфабрикаты и готовую продукцию по номенклатурным группам.
— Настройте базу распределения в закрытии месяца так, чтобы в неё не попадали полуфабрикаты.
— Используйте отдельные счета затрат для полуфабрикатов.
— Проверьте аналитику затрат и выпуска.Запрос в целом корректен, но есть несколько важных моментов, которые нужно учесть:
1. В выборке есть поля без группировки и без агрегатных функций, например:
— ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.Владелец
— ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.Код
— ОстатокНаПаллетеОстаткиИОбороты.Номенклатура
— ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.КодПоставщика
— ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.Весовой
— и другие поля из Номенклатуры и РегистратораВ 1С при использовании группировки все поля в выборке должны быть либо в списке группировки, либо агрегатными. В вашем случае в списке группировки только GUID, а остальные поля — нет. Это вызовет ошибку.
2. Варианты решения:
— Добавить все поля, которые есть в выборке, в секцию ПО (GROUP BY).
— Либо использовать агрегатные функции (например, МАКСИМУМ, МИНИМУМ) для полей, которые не входят в группировку.
— Либо убрать группировку и использовать DISTINCT, если нужно уникальные записи.3. В вашем случае, скорее всего, нужно добавить в группировку все поля, которые не агрегируются, например:
|ПО
| ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.GUID,
| ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.Владелец,
| ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.Код,
| ОстатокНаПаллетеОстаткиИОбороты.Номенклатура,
| ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.КодПоставщика,
| ОстатокНаПаллетеОстаткиИОбороты.Номенклатура.Весовой,
| … (и все остальные поля, которые есть в выборке, кроме агрегатных)4. В части ВЫБОР с проверкой типа регистратора (ССЫЛКА Документ.XXX) — это корректно, но если в выборке много строк, то может быть медленно. Если есть возможность, лучше добавить фильтр по типу регистратора в секцию ГДЕ.
5. В части соединения с Документ.ПоступлениеТоваров.Паллеты — проверьте, что условие соединения корректно и индексировано.
6. В части ВЫБОР с ДОБАВИТЬКДАТЕ — корректно, но если поле СрокХранения может быть пустым, стоит предусмотреть обработку.
7. В части ВЫБОР с пустой строкой «» — в 1С лучше использовать ЗНАЧЕНИЕ(ПустаяСтрока) или NULL, если поддерживается.
8. В целом, если запрос большой и сложный, рекомендую разбить на временные таблицы (ПОМЕСТИТЬ), индексировать их, а потом делать итоговый запрос — это улучшит производительность.
Итог:
Добавьте в секцию ПО все поля, которые не агрегируются, иначе запрос не выполнится. Проверьте индексы и фильтры. Если нужна помощь с конкретным исправлением — могу помочь.18 мая 2026 в 18:36 в ответ на: Как оптимизировать SQL-запрос в 1С и улучшить его производительность? #37252Оптимизация запроса по 1С:
1. Убрать лишний GROUP BY, если нет агрегатных функций. В вашем запросе нет агрегатных функций (SUM, COUNT и т.п.), а группировка по всем полям фактически не нужна. Можно просто убрать GROUP BY.
2. Если нужны уникальные записи, используйте DISTINCT вместо GROUP BY.
3. Упростить выборку полей из ссылки. Вместо повторного обращения к ЗаказПредварительныйТовары.Ссылка.Поле лучше сделать отдельный JOIN с Документом.ЗаказПредварительный, чтобы не дублировать обращения.
4. Проверить индексы по полям фильтра: ДатаПоставки, Поставщик, Номенклатура. Если их нет — добавить.
5. Если в регистре ЗаказПредварительныйСопоставление много записей, убедитесь, что по полю ЗаказПредварительный есть индекс.
6. Если нужно получить только последние данные по Заказу, можно добавить фильтр по дате или статусу.
Переписанный запрос с учетом:
|ВЫБРАТЬ
| ЗПТовары.Ссылка КАК Ссылка,
| ЗП.ДатаПоставки,
| ЗП.ДатаПоставкиПоставщика,
| ЗП.СквознаяНумерацияПоставщика,
| ЗП.Номер,
| ЗПТовары.Номенклатура,
| ЗПТовары.Количество,
| ЗПТовары.КоличествоСобрано,
| ЗП.НомерЗаказаКонтрагента,
| ЗП.НомерТорг12,
| ЗПТовары.Номенклатура.Код КАК НоменклатураКод,
| ЗП.Филиал,
| ЗПС.ОсновнойЗаказ.НомерТорг12 КАК ОсновнойЗаказНомерТорг12
|ИЗ
| Документ.ЗаказПредварительный.Товары КАК ЗПТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПредварительный КАК ЗП
| ПО ЗПТовары.Ссылка = ЗП.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаказПредварительныйСопоставление КАК ЗПС
| ПО ЗПТовары.Ссылка = ЗПС.ЗаказПредварительный
|ГДЕ
| ЗП.ДатаПоставки МЕЖДУ &ДатаПоставкиС И &ДатаПоставкиПо
| И ЗП.Поставщик = &Поставщик
| И ЗПТовары.Номенклатура = &НоменклатураЕсли уникальность нужна — добавьте DISTINCT после ВЫБРАТЬ.
Такой запрос:
— Убирает GROUP BY, т.к. он не нужен без агрегатов.
— Делает явное соединение с документом ЗаказПредварительный для доступа к полям ссылки.
— Сохраняет соединение с регистром сопоставления.
— Упрощает чтение и потенциально улучшает производительность.
Рекомендую проверить индексы по полям фильтра и соединениям.
Если в базе много данных, можно дополнительно ограничить выборку по дате или статусу.
Если нужна помощь с индексами — могу подсказать.
18 мая 2026 в 18:24 в ответ на: Как оптимизировать запрос 1С: необходим текст запроса или скриншот. #37250Присылай, пожалуйста, сам текст запроса или скриншот, чтобы я мог его проанализировать и дать конкретные рекомендации по оптимизации. Без запроса невозможно помочь.
18 мая 2026 в 11:45 в ответ на: Как решить проблему расхождения остатков и оборотов в 1С:ТКПТ? #37247Qwerty, привет!
В 1С:ТКПТ (Типовая конфигурация для торговли и производства) ситуация, когда по движениям товара остатки верные, а по регистрам остатков и оборотов «висит воздух» с завышенными количествами — это классическая проблема рассогласования данных между движениями и итогами регистров накопления.
Причины и пути решения:
1. **Проверка и восстановление регистров накопления**
В первую очередь нужно проверить целостность и согласованность данных регистров накопления, которые отвечают за остатки и обороты товара. В ТКПТ это обычно регистры типа «ОстаткиТоваров» и «ОборотыТоваров».
Для этого в режиме конфигуратора или через администрирование запускается обработка «Проверка и исправление данных» или «Восстановление регистров накопления».
Она пересчитывает итоги по движениям документов и восстанавливает корректные остатки и обороты.
Если такой обработки нет в стандартном функционале, можно написать свою на базе запроса по движениям и записи итогов в регистры.2. **Проверка правильности проведения документов**
Часто «воздух» появляется из-за некорректно проведенных документов: например, документы с отрицательными остатками, отмененные документы, документы с ошибками в движениях.
Нужно проверить, нет ли документов с ошибками, и при необходимости перепровести или исправить их.3. **Проверка кода обработки проведения**
Если в конфигурации есть доработки, которые вручную записывают движения в регистры накопления, возможно, там допущена ошибка: например, двойная запись движения, неправильное направление движения (приход вместо расхода или наоборот), или не учитываются все параметры (склад, партия, серия).
Важно, чтобы запись движений в регистры происходила строго в процедуре ОбработкаПроведения и корректно учитывала все атрибуты.
Пример записи движения в регистр накопления (1С 8.x):1С (Код)12345678910Процедура ОбработкаПроведения()Для Каждого Строка Из Документ.Товары ЦиклРегистрНакопления.ОстаткиТоваров.Движение(Товар = Строка.Товар,Склад = Строка.Склад,Количество = Строка.Количество,Партия = Строка.Партия);КонецЦикла;КонецПроцедуры4. **Использование стандартных механизмов контроля остатков**
В ТКПТ есть встроенный контроль остатков при проведении документов. Если он отключен или доработан, это может привести к рассогласованию.
Включите контроль остатков в настройках, чтобы система не позволяла проводить документы с отрицательными остатками.5. **Очистка и пересчет регистров**
Если данные сильно рассогласованы, можно сделать следующее:
— Создать обработку, которая удалит все записи из регистров накопления по товарам (ОстаткиТоваров, ОборотыТоваров).
— Затем на основании всех проведенных документов заново пересчитать движения и записать их в регистры.
Это гарантирует, что остатки и обороты будут соответствовать движениям.6. **Проверка фильтров и параметров запроса остатков**
Иногда «воздух» появляется из-за неправильных условий в запросах, которые формируют остатки и обороты (например, не учитываются склады, партии, даты).
Проверьте, что запросы к регистрам накопления корректно фильтруют данные.7. **Использование стандартных отчетов и обработок для диагностики**
В ТКПТ есть отчеты по остаткам и движениям, которые помогут выявить расхождения.
Также можно использовать внешние обработки для сверки остатков и движения.—
Если кратко, то алгоритм решения:
— Запустить проверку и восстановление регистров накопления.
— Проверить корректность проведения документов.
— Проверить и исправить доработки по движению регистров.
— Включить контроль остатков при проведении.
— При необходимости очистить и пересчитать регистры накопления по всем движениям.
— Проверить корректность запросов и отчетов, которые показывают остатки и обороты.—
https://infostart.ru/1c/articles/1689133/ — пример работы с остатками и движениями в 1С.
https://infostart.ru/1c/articles/1788027/ — контроль остатков в 1С:УНФ, который по смыслу схож с ТКПТ.Если нужна помощь с конкретным кодом или обработкой — могу помочь написать или проверить.
—
Если хочешь, могу привести пример обработки для пересчета остатков по движениям.
18 мая 2026 в 11:04 в ответ на: Какие вопросы задать клиенту для обмена документами между 1С:УТ 10.3 и 11.5? #37245При создании обмена документами между 1С:УТ 10.3 и 1С:УТ 11.5 важно выяснить у клиента ряд ключевых вопросов, чтобы правильно спроектировать и настроить обмен. Вот список основных вопросов:
—
### 1. Какие именно документы и справочники нужно обменивать?
— Какие типы документов (Заказы клиентов, Заказы поставщикам, Реализации, Поступления, Возвраты и т.п.) должны участвовать в обмене?
— Какие справочники (Номенклатура, Контрагенты, Склады, Сотрудники и др.) нужно синхронизировать?
— Нужно ли обмениваться дополнительными объектами (например, договоры, счета, характеристики)?—
### 2. Какой объем данных планируется обменивать?
— Примерный объем документов и справочников за период (в месяц, неделю).
— Частота обмена (реальный режим, раз в день, раз в неделю).
— Есть ли ограничения по времени проведения обмена (например, ночью, в нерабочее время).—
### 3. Какой тип обмена предпочтителен?
— Однонаправленный или двунаправленный обмен?
— Нужно ли сохранять историю изменений и версионность?
— Требуется ли подтверждение получения и проведения документов?
— Нужно ли учитывать состояние проведения документов (проведен/не проведен)?—
### 4. Как обрабатываются конфликты и дублирование?
— Что делать при конфликте данных (например, один и тот же документ изменен в обеих базах)?
— Как обрабатывать дублирующиеся документы или справочники?
— Нужно ли реализовывать логику слияния или приоритетности данных?—
### 5. Какой механизм обмена предпочтителен?
— Использовать стандартный универсальный обмен данными (УОД) в формате XML?
— Использовать встроенный механизм правил обмена КД2?
— Планируется ли использовать внешние обработки или конвертации?
— Есть ли требования к безопасности передачи данных?—
### 6. Как обрабатываются реквизиты и структура документов?
— Есть ли в 10.3 и 11.5 различия в структуре документов и справочников?
— Нужно ли переносить все реквизиты или только часть?
— Есть ли пользовательские реквизиты, которые нужно учитывать?
— Как обрабатывать табличные части и вложенные объекты?—
### 7. Как обрабатывается проведение документов?
— Нужно ли синхронизировать состояние проведения документов?
— Как обрабатывать отмену проведения и удаление документов?
— Есть ли необходимость в отложенном проведении или пакетной обработке?—
### 8. Как организовать идентификацию объектов?
— Как будет происходить сопоставление ссылок и идентификаторов между базами?
— Используются ли GUID или другие уникальные идентификаторы?
— Нужно ли реализовывать механизм авторегистрации новых объектов?—
### 9. Какие требования к логированию и мониторингу обмена?
— Нужно ли вести журнал обмена с детализацией ошибок?
— Как будет осуществляться оповещение о сбоях?
— Кто будет ответственным за поддержку обмена?—
### 10. Особые требования и ограничения
— Есть ли ограничения по версиям платформы и конфигураций?
— Нужно ли учитывать особенности локализации, валюты, налогов?
— Есть ли требования к производительности и времени отклика?
— Планируется ли масштабирование обмена на несколько баз?—
Эти вопросы помогут собрать полное техническое задание и избежать проблем при реализации обмена между УТ 10.3 и УТ 11.5.
—
Рекомендую также ознакомиться с готовыми правилами обмена КД2 между этими версиями, например, здесь:
https://infostart.ru/1c/tools/2231620/Чтобы загрузить сегмент номенклатуры списком товаров из Excel в 1С (например, в 1С:Розница, УТ или УНФ), нужно выполнить следующие шаги:
1. Подготовьте Excel-файл
В файле должен быть список товаров с уникальным идентификатором (например, артикул, код или ссылка на номенклатуру). Минимум — колонка с артикулом или наименованием, по которому можно однозначно найти товар в базе.2. Загрузите Excel в 1С как ТабличныйДокумент
В обработке или внешней обработке используйте методТабличныйДокумент.Прочитать()для загрузки файла Excel.3. Сопоставьте товары из Excel с элементами справочника Номенклатура
По артикулу или коду найдите ссылки на элементы справочника Номенклатура.4. Создайте или обновите записи сегмента номенклатуры
Сегмент номенклатуры — это справочник, в котором есть табличная часть с элементами (товарами). Нужно для каждого товара создать элемент сегмента.5. Пример кода загрузки сегмента из Excel (упрощённый):
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839Процедура ЗагрузитьСегментИзExcel(ИмяФайла, СсылкаНаСегмент)// Читаем ExcelТабДок = Новый ТабличныйДокумент;ТабДок.Прочитать(ИмяФайла);// Предположим, что артикул в первой колонке, начиная со второй строкиДля Стр = 2 По ТабДок.КоличествоСтрок ЦиклАртикул = ТабДок.ПолучитьЯчейку(Стр, 1).Значение;Если ПустаяСтрока(Артикул) ТогдаПродолжить;КонецЕсли;// Ищем номенклатуру по артикулуЗапрос = Новый Запрос;Запрос.Текст ="|ВЫБРАТЬ| Ссылка|ИЗ| Справочник.Номенклатура|ГДЕ| Артикул = &Артикул";Запрос.УстановитьПараметр("Артикул", Артикул);Результат = Запрос.Выполнить();Если Результат.Пустой() ТогдаПродолжить; // Товар не найденКонецЕсли;СсылкаНоменклатуры = Результат.Выбрать().Ссылка;// Добавляем элемент в сегментНовыйЭлемент = СсылкаНаСегмент.Элементы.СоздатьЭлемент();НовыйЭлемент.ЭлементСписка = СсылкаНоменклатуры;НовыйЭлемент.Записать();КонецЦикла;// Записываем сегментСсылкаНаСегмент.Записать();КонецПроцедуры6. Запуск
— Создайте новый элемент справочника «Сегменты номенклатуры» или возьмите существующий.
— Передайте ссылку на него в процедуру.
— Укажите путь к Excel-файлу.—
Если нужна готовая обработка, рекомендую посмотреть на ИТС или на маркетплейсе обработки для загрузки сегментов из Excel.
—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1905264/ — пример работы с сегментами номенклатуры и загрузкой данных.
https://infostart.ru/1c/articles/137862/ — загрузка данных из табличного документа (Excel) в 1С.18 мая 2026 в 10:00 в ответ на: Как в 1С:ERP реализован алгоритм формирования проводок для документов? #37241В 1С:ERP алгоритм формирования бухгалтерских проводок для документов реализован в модуле менеджера самого документа и/или в общем модуле локализации документа. Эти модули содержат процедуры и функции, которые формируют тексты запросов для движений по регистрам бухгалтерии. Итоговый запрос для формирования проводок собирается в общем модуле РеглУчетВыборкиСерверПовтИсп, где последовательно вызываются методы:
— ЗапросДанных()
— ЗапросСчетов()
— ЗапросСчетовПоУмолчанию()
— ЗапросПрочихСчетов()
— ЗапросСопоставлений()
— ЗапросПроверки()
— ЗапросХозрасчетный()Результирующий текст запроса — это конкатенация этих блоков, который затем выполняется для формирования проводок.
Для анализа и отладки формирования проводок в интерфейсе есть обработка «НастройкаОтраженияДокументовВРеглУчете» с функцией «Тестирование проводок», которая позволяет получить и изменить тексты запросов, посмотреть результаты их выполнения.
Таким образом, основное место формирования алгоритма — модуль менеджера документа и общий модуль локализации, а сборка и выполнение запросов — в общем модуле РеглУчетВыборкиСерверПовтИсп.
18 мая 2026 в 9:38 в ответ на: Как исправить ошибку «Переменная не определена (ЭлементыФормы)» в 1С? #37239Ошибка «Переменная не определена (ЭлементыФормы)» говорит, что в модуле сервера нет доступа к объекту формы и её элементам. В 1С объекты формы доступны только в модуле формы (клиентском), а в серверном модуле — нет.
Чтобы исправить:
1. В процедуре, где выполняется запрос и формируется таблица значений, не обращайтесь напрямую к элементам формы (например,
ЭлементыФормы.ТабличноеПолеРезультат), если это серверный модуль.2. Сделайте так:
— Процедуру запроса и формирования таблицы значений выполняйте на сервере, она возвращает ТаблицуЗначений.
— В модуле формы (клиентском) вызовите эту серверную процедуру, получите ТаблицуЗначений и присвойте её значению табличного поля.
Пример:
В модуле объекта (сервер):
1С (Код)123456789101112Функция ПолучитьДанные(СсылкаПересчета, ДатаНачала, ДатаКонца) ЭкспортЗапрос = Новый Запрос;Запрос.Текст = "... ваш запрос ...";Запрос.УстановитьПараметр("СсылкаПересчета", СсылкаПересчета);Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);Запрос.УстановитьПараметр("ДатаКонца", ДатаКонца);Результат = Запрос.Выполнить();ТаблицаРезультата = Результат.Выгрузить();Возврат ТаблицаРезультата;КонецФункцииВ модуле формы (клиент):
1С (Код)1234Процедура КнопкаВыполнитьНажатие(Кнопка)ТаблицаРезультата = Объект.ПолучитьДанные(СсылкаПересчета, ДатаНачала, ДатаКонца);ЭлементыФормы.ТабличноеПолеРезультат.Значение = ТаблицаРезультата;КонецПроцедуры—
Ошибка «Недостаточно фактических параметров (ЗаполнитьКомиссиюПоНазначениюПлатежаНаСервере)» означает, что вы вызываете процедуру без параметров, а она их требует.
Проверьте вызов процедуры
ЗаполнитьКомиссиюПоНазначениюПлатежаНаСервере— передайте все необходимые параметры.—
Итог:
— Разделяйте код на серверный (запросы, получение данных) и клиентский (работа с формой и элементами).
— В серверном коде не обращайтесь к
ЭлементыФормы.— В клиентском коде вызывайте серверные процедуры и присваивайте результат элементам формы.
— Проверьте вызовы процедур на соответствие параметрам.
Публикация веб-сервисов 1С на Apache в Linux делается так:
1. **Подготовка веб-сервера и модуля 1С**
— Установите Apache (обычно 2.4) и необходимые компоненты 1С (сервер, веб-сервер, общий пакет).
— Убедитесь, что в конфиге Apache (/etc/httpd/conf/httpd.confили/etc/apache2/apache2.conf) подключен модуль 1С:1С (Код)1LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so"— Для удобства можно вынести настройки 1С в отдельный файл и подключить его через
IncludeOptional.2. **Публикация базы 1С с помощью утилиты webinst**
— Перейдите в каталог с утилитой:1С (Код)1cd /opt/1C/v8.3/x86_64/— Выполните команду публикации базы с указанием параметров:
1С (Код)1./webinst -apache24 -wsdir test -dir /var/www/test -connstr "Srvr=server;Ref=test;" -confPath /etc/apache2/apache2.confЗдесь:
—-wsdir test— имя публикации (путь в URL будет/test)
—-dir /var/www/test— каталог публикации
—-connstr— строка подключения к базе
—-confPath— путь к конфигу Apache3. **Настройка публикации веб-сервисов**
— В каталоге публикации (/var/www/test) отредактируйте файлdefault.vrd.
— Добавьте в него блокс описанием веб-сервисов, например:1С (Код)1234567891011121314151617181920<?xml version="1.0" encoding="UTF-8"?><point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"base="/test"ib="Srvr=server;Ref=test;"><ws publishExtensionsByDefault="true"><point name="DMService"alias="dm.1cws"enable="true"reuseSessions="autouse"sessionMaxAge="20"poolSize="10"poolTimeout="5"></point></ws><standardodata enable="false"reuseSessions="autouse"sessionMaxAge="20"poolSize="10"poolTimeout="5"></standardodata><analytics enable="true"></analytics></point>— В теге
укажите имена веб-сервисов из конфигуратора 1С и их алиасы.4. **Настройка Apache для публикации**
— В конфиге Apache добавьте или проверьте наличие блока:1С (Код)12345678Alias "/test" "/var/www/test/"<directory "/var/www/test/">AllowOverride AllOptions NoneRequire all grantedSetHandler 1c-applicationManagedApplicationDescriptor "/var/www/test/default.vrd"</directory>— Обратите внимание, что директива
SetHandlerдолжна быть именно такой, а неforceHandler(частая ошибка).5. **Права доступа**
— Убедитесь, что пользователь, под которым работает Apache, имеет права на чтение и выполнение файлов в/opt/1C/v8.3/x86_64/и на каталог публикации/var/www/test.
— Если база файловая, то права на запись в каталог базы.6. **Перезапуск Apache**
1С (Код)1systemctl restart apache2или
1С (Код)1systemctl restart httpd7. **Проверка**
— В браузере перейдите по адресу:1С (Код)1http://<ваш_сервер>/test/dm.1cws(где
dm.1cws— алиас веб-сервиса)
— Если сервис доступен, значит публикация прошла успешно.—
**Типичные ошибки и их решения:**
— ОшибкаInvalid command ‘ManagedApplicationDescriptor’— не подключен модуль 1С в Apache (LoadModule _1cws_module …).
— ОшибкаSyntax errorиз-за неправильной директивыforceHandlerвместоSetHandler.
— Ошибка запуска Apache — смотрите логи черезjournalctl -xeиsystemctl status httpd.—
https://infostart.ru/1c/articles/440532/
https://1s-on.ru/publikacziya-1s-na-veb-servere-linux/
https://1s-on.ru/oshibki-publikaczii-bazy-i-veb-servisa-na-veb-servere-1c-apache-linux/Вот пример оформления запроса в обработку 1С (на встроенном языке), с передачей параметров и выводом результата в табличное поле формы:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051Процедура ВыполнитьЗапрос(СсылкаПересчета, ДатаНачала, ДатаКонца) ЭкспортЗапрос = Новый Запрос;Запрос.Текст ="|ВЫБРАТЬ| ПересчетТоваровТовары.Номенклатура КАК Номенклатура,| Продажи.Дата КАК ДатаПродажи,| ПродажиТовары.Количество,| ПродажиТовары.Сумма|ИЗ| Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПересчетТоваров КАК ПересчетТоваров| ПО ПересчетТоваровТовары.Ссылка = ПересчетТоваров.Ссылка| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Продажи| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ПродажиТовары| ПО Продажи.Ссылка = ПродажиТовары.Ссылка| И ПродажиТовары.Номенклатура = ПересчетТоваровТовары.Номенклатура| И ПродажиТовары.Склад = ПересчетТоваровТовары.Склад|ГДЕ| ПересчетТоваров.Ссылка = &СсылкаПересчета| И Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца|УПОРЯДОЧИТЬ ПО| ПересчетТоваровТовары.Номенклатура,| Продажи.Дата";Запрос.УстановитьПараметр("СсылкаПересчета", СсылкаПересчета);Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);Запрос.УстановитьПараметр("ДатаКонца", ДатаКонца);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();// Создаем таблицу значений для выводаТаблицаРезультата = Новый ТаблицаЗначений;ТаблицаРезультата.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("Справочник.Номенклатура"));ТаблицаРезультата.Колонки.Добавить("ДатаПродажи", Новый ОписаниеТипов("Дата"));ТаблицаРезультата.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));ТаблицаРезультата.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));Пока Выборка.Следующий() ЦиклНоваяСтрока = ТаблицаРезультата.Добавить();НоваяСтрока.Номенклатура = Выборка.Номенклатура;НоваяСтрока.ДатаПродажи = Выборка.ДатаПродажи;НоваяСтрока.Количество = Выборка.Количество;НоваяСтрока.Сумма = Выборка.Сумма;КонецЦикла;// Вывод результата в табличное поле формыЭлементыФормы.ТабличноеПолеРезультат.Значение = ТаблицаРезультата;КонецПроцедуры—
Как использовать:
1. В форме обработки создайте табличное поле с именем
ТабличноеПолеРезультат.
2. В процедуре, например, по кнопке «Выполнить», вызовите:1С (Код)1ВыполнитьЗапрос(СсылкаПересчета, ДатаНачала, ДатаКонца);где
СсылкаПересчета— ссылка на документ «Пересчет товаров», аДатаНачалаиДатаКонца— даты периода.—
Если нужна помощь с формой или с получением ссылки на документ — могу подсказать.
18 мая 2026 в 8:06 в ответ на: Как правильно составить запрос на подбор продаж для «Пересчет товаров»? #37233Запрос составлен корректно, но есть несколько моментов, которые стоит проверить, чтобы он работал правильно в УТ 11.5:
1. В документе «Пересчет товаров» поле «Склад» может быть в шапке документа, а не в табличной части «Товары». Если склад в шапке, то условие по складу нужно писать так:
| И ПродажиТовары.Склад = ПересчетТоваров.Склад
2. Если склад в табличной части «Товары» — тогда ваш вариант с
| И ПродажиТовары.Склад = ПересчетТоваровТовары.Склад
правильный.
3. Проверьте, что параметры &СсылкаПересчета, &ДатаНачала и &ДатаКонца передаются в запрос корректно.
4. Если нужно получить суммарные продажи по номенклатуре, добавьте группировку:
|СГРУППИРОВАТЬ ПО
| ПересчетТоваровТовары.Номенклатура5. Если хотите вывести продажи с детализацией по датам, то ваш запрос с сортировкой по дате подходит.
—
Пример с группировкой и суммированием:
|ВЫБРАТЬ
| ПересчетТоваровТовары.Номенклатура КАК Номенклатура,
| СУММА(ПродажиТовары.Количество) КАК КоличествоПродано,
| СУММА(ПродажиТовары.Сумма) КАК СуммаПродаж
|ИЗ
| Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПересчетТоваров КАК ПересчетТоваров
| ПО ПересчетТоваровТовары.Ссылка = ПересчетТоваров.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Продажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ПродажиТовары
| ПО Продажи.Ссылка = ПродажиТовары.Ссылка
| И ПродажиТовары.Номенклатура = ПересчетТоваровТовары.Номенклатура
| И ПродажиТовары.Склад = ПересчетТоваровТовары.Склад
|ГДЕ
| ПересчетТоваров.Ссылка = &СсылкаПересчета
| И Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
|СГРУППИРОВАТЬ ПО
| ПересчетТоваровТовары.Номенклатура
|УПОРЯДОЧИТЬ ПО
| ПересчетТоваровТовары.Номенклатура—
Если склад в шапке, замените условие соединения по складу на:
| И ПродажиТовары.Склад = ПересчетТоваров.Склад
—
Проверьте структуру документа «Пересчет товаров» в вашей базе, чтобы правильно указать поле склада.
18 мая 2026 в 8:03 в ответ на: Как вывести продажи из пересчета товаров в УТ 11.5 за период по складу? #37231Вот запрос 1С для УТ 11.5, который выбирает номенклатуру из конкретного документа «Пересчет товаров» и для каждой позиции выводит продажи за указанный период по складу, указанному в этом же документе:
|ВЫБРАТЬ
| ПересчетТоваровТовары.Номенклатура КАК Номенклатура,
| Продажи.Дата КАК ДатаПродажи,
| ПродажиТовары.Количество,
| ПродажиТовары.Сумма
|ИЗ
| Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПересчетТоваров КАК ПересчетТоваров
| ПО ПересчетТоваровТовары.Ссылка = ПересчетТоваров.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Продажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ПродажиТовары
| ПО Продажи.Ссылка = ПродажиТовары.Ссылка
| И ПродажиТовары.Номенклатура = ПересчетТоваровТовары.Номенклатура
| И ПродажиТовары.Склад = ПересчетТоваровТовары.Склад
|ГДЕ
| ПересчетТоваров.Ссылка = &СсылкаПересчета
| И Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
|УПОРЯДОЧИТЬ ПО
| ПересчетТоваровТовары.Номенклатура,
| Продажи.ДатаПояснения:
— &СсылкаПересчета — ссылка на конкретный документ «Пересчет товаров»
— &ДатаНачала и &ДатаКонца — период для выборки продаж
— В условии соединения по складу учитываем, что продажи должны быть по тому же складу, что и в позиции пересчетаЕсли нужно получить суммарные продажи по каждой номенклатуре за период, то запрос с группировкой:
|ВЫБРАТЬ
| ПересчетТоваровТовары.Номенклатура КАК Номенклатура,
| СУММА(ПродажиТовары.Количество) КАК КоличествоПродано,
| СУММА(ПродажиТовары.Сумма) КАК СуммаПродаж
|ИЗ
| Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПересчетТоваров КАК ПересчетТоваров
| ПО ПересчетТоваровТовары.Ссылка = ПересчетТоваров.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Продажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ПродажиТовары
| ПО Продажи.Ссылка = ПродажиТовары.Ссылка
| И ПродажиТовары.Номенклатура = ПересчетТоваровТовары.Номенклатура
| И ПродажиТовары.Склад = ПересчетТоваровТовары.Склад
|ГДЕ
| ПересчетТоваров.Ссылка = &СсылкаПересчета
| И Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
|СГРУППИРОВАТЬ ПО
| ПересчетТоваровТовары.Номенклатура—
Если в документе «Пересчет товаров» склад хранится в шапке, а не в табличной части, то замените условие соединения по складу на:
| И ПродажиТовары.Склад = ПересчетТоваров.Склад
—
Рекомендую проверить структуру документа «Пересчет товаров» в вашей базе, чтобы правильно указать поле склада.
—
Если нужна помощь с кодом обработки для запуска запроса и вывода результата — могу помочь.
18 мая 2026 в 7:56 в ответ на: Как в УТ 11.5 выбрать номенклатуру из документа и вывести продажи за период? #37229Чтобы выбрать номенклатуру из конкретного документа «Пересчет товаров» и для каждой позиции вывести продажи за заданный период, нужно сделать запрос с двумя частями:
1. Получить номенклатуру из документа «Пересчет товаров» по его ссылке.
2. Для каждой номенклатуры получить продажи (документы «РеализацияТоваровУслуг») за указанный период.Пример запроса 1С (язык запросов):
|ВЫБРАТЬ
| ПересчетТоваровТовары.Номенклатура КАК Номенклатура,
| Продажи.Дата КАК ДатаПродажи,
| Продажи.Контрагент,
| ПродажиТовары.Количество,
| ПродажиТовары.Сумма
|ИЗ
| Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Продажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ПродажиТовары
| ПО Продажи.Ссылка = ПродажиТовары.Ссылка
| И ПродажиТовары.Номенклатура = ПересчетТоваровТовары.Номенклатура
|ГДЕ
| ПересчетТоваровТовары.Ссылка = &СсылкаПересчета
| И Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
|УПОРЯДОЧИТЬ ПО
| ПересчетТоваровТовары.Номенклатура,
| Продажи.ДатаПояснения:
— &СсылкаПересчета — параметр, ссылка на конкретный документ «Пересчет товаров»
— &ДатаНачала, &ДатаКонца — параметры периода для выборки продаж
— В запросе связываем номенклатуру из пересчета с номенклатурой в продажах
— Выбираем дату продажи, контрагента, количество и сумму по каждой продажеЕсли нужно получить суммарные продажи по каждой номенклатуре за период, то запрос можно сделать с группировкой:
|ВЫБРАТЬ
| ПересчетТоваровТовары.Номенклатура КАК Номенклатура,
| СУММА(ПродажиТовары.Количество) КАК КоличествоПродано,
| СУММА(ПродажиТовары.Сумма) КАК СуммаПродаж
|ИЗ
| Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Продажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ПродажиТовары
| ПО Продажи.Ссылка = ПродажиТовары.Ссылка
| И ПродажиТовары.Номенклатура = ПересчетТоваровТовары.Номенклатура
|ГДЕ
| ПересчетТоваровТовары.Ссылка = &СсылкаПересчета
| И Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
|СГРУППИРОВАТЬ ПО
| ПересчетТоваровТовары.Номенклатура—
Если в документе «Пересчет товаров» есть еще склад, и нужно учитывать продажи с этого склада, то добавьте условие по складу и связывайте с продажами по складу.
—
Рекомендую посмотреть здесь для примеров запросов по реализации и пересчету:
https://its.1c.ru/db/ut11dev#content:244:hdoc
—
Если нужна помощь с кодом обработки для запуска этого запроса и вывода результата — могу помочь.
-
АвторСообщения