Ответы в темах
-
АвторЗаписи
-
7 сентября 2026 в 21:00 в ответ на: Как добавить внешний отчёт на СКД в меню «Продажи» 1С:Предприятия? #38605
Чтобы добавить внешний отчет на СКД в меню раздела «Продажи» в 1С:Предприятие, сделайте так:
1. Добавьте внешний отчет в конфигурацию:
— Откройте конфигуратор.
— В дереве конфигурации найдите раздел «Отчеты» или создайте новый.
— Правой кнопкой мыши выберите «Добавить» → «Внешний отчет».
— Укажите файл внешнего отчета (.erf) на СКД.
— Сохраните изменения и обновите конфигурацию.2. Добавьте пункт меню в раздел «Продажи»:
— В конфигураторе откройте раздел «Общие» → «Команды меню» (или «Пользовательский интерфейс» → «Меню» — зависит от конфигурации).
— Найдите или создайте группу меню «Продажи» (если её нет).
— Добавьте новый элемент меню:
— Тип: «Команда»
— Имя: например, «ОтчетПродажиСКД»
— Заголовок: «Отчет по продажам» (то, что увидит пользователь)
— Связать с внешним отчетом: укажите созданный внешний отчет.3. Настройте обработчик команды (если нужно):
— Если меню создается через подсистемы и команды, то в модуле подсистемы или общего модуля добавьте обработчик, который будет открывать внешний отчет, например:
1С (Код)12345Процедура ОткрытьОтчетПродажиСКД(Команда)Отчет = Отчеты.ВнешнийОтчетПродажиСКД.Создать();ФормаОтчета = Отчет.ПолучитьФорму();ФормаОтчета.Открыть();КонецПроцедуры— В настройках команды укажите вызов этой процедуры.
4. Перекомпилируйте и обновите конфигурацию.
5. Проверьте в режиме «Предприятие»:
— Запустите 1С в режиме предприятия.
— В меню «Продажи» должен появиться новый пункт с вашим внешним отчетом.
— При выборе пункта откроется внешний отчет на СКД.—
Если в вашей конфигурации меню строится через подсистемы и команды, то добавление пункта меню и вызов отчета происходит именно через команды и обработчики.
Если меню формируется через обычные формы, то нужно добавить кнопку или пункт в форму раздела «Продажи», который будет открывать внешний отчет.
—
Рекомендую посмотреть подробную инструкцию по добавлению внешних отчетов и настройке меню здесь:
https://helpf.pro/faq8/view/740.html
https://infostart.ru/public/1027155/ (как добавить форму для СКД, полезно для вызова отчета из меню)
Digest-аутентификация — более сложный протокол, чем Basic, и 1С штатно не умеет её автоматически обрабатывать. Чтобы отправить HTTP-запрос с Digest авторизацией из 1С, нужно реализовать весь процесс вручную:
1. Отправляете первый запрос без авторизации, получаете ответ с кодом 401 и заголовком WWW-Authenticate, в котором сервер присылает параметры (nonce, realm, qop и др.).
2. На основе этих параметров, логина, пароля и данных запроса формируете хэш (MD5) согласно RFC 2617.
3. Формируете заголовок Authorization с типом Digest и вычисленными параметрами.
4. Отправляете повторный запрос с этим заголовком.
В 1С это реализуется примерно так:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839Функция ПолучитьПараметрыDigest(ЗаголовокWWWAuthenticate)// Парсим строку WWW-Authenticate, выделяем параметры в СоответствиеПараметры = Новый Соответствие;// Пример парсинга: realm="example", nonce="abc123", qop="auth"// Реализуйте разбор строки вручную или регуляркамиВозврат Параметры;КонецФункцииФункция ВычислитьDigestАвторизацию(Параметры, Метод, URI, Логин, Пароль, ТелоЗапроса, НомерЗапроса)// Формируем HA1 = MD5(Логин:realm:Пароль)HA1 = Новый ХешированиеДанных(ХэшФункция.MD5).Вычислить(Логин + ":" + Параметры.Получить("realm") + ":" + Пароль);// Формируем HA2 = MD5(Метод:URI)HA2 = Новый ХешированиеДанных(ХэшФункция.MD5).Вычислить(Метод + ":" + URI);// Формируем response = MD5(HA1:nonce:nonceCount:cnonce:qop:HA2)// nonceCount — счётчик запросов, cnonce — случайная строкаnonceCount = Формат(НомерЗапроса, "X8");cnonce = СредстваВремени.ПолучитьТекущееВремя().Строка();response = Новый ХешированиеДанных(ХэшФункция.MD5).Вычислить(HA1 + ":" + Параметры.Получить("nonce") + ":" + nonceCount + ":" + cnonce + ":" + Параметры.Получить("qop") + ":" + HA2);// Формируем строку заголовка AuthorizationАвторизация = "Digest username=""" + Логин + """, realm=""" + Параметры.Получить("realm") + """, nonce=""" + Параметры.Получить("nonce") + """, uri=""" + URI + """, qop=" + Параметры.Получить("qop") + ", nc=" + nonceCount + ", cnonce=""" + cnonce + """, response=""" + response + """, opaque=""" + Параметры.Получить("opaque") + """";Возврат Авторизация;КонецФункцииПроцедура ОтправитьDigestЗапрос(Сервер, АдресРесурса, Логин, Пароль)Соединение = Новый HTTPСоединение(Сервер);Запрос = Новый HTTPЗапрос(АдресРесурса);Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);Если Ответ.КодСостояния = 401 ТогдаWWWAuthenticate = Ответ.Заголовки["WWW-Authenticate"];ПараметрыDigest = ПолучитьПараметрыDigest(WWWAuthenticate);Авторизация = ВычислитьDigestАвторизацию(ПараметрыDigest, "GET", АдресРесурса, Логин, Пароль, "", 1);Запрос.Заголовки.Вставить("Authorization", Авторизация);Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);КонецЕсли;Сообщить("Код ответа: " + Ответ.КодСостояния);Сообщить("Тело ответа: " + Ответ.ПолучитьТелоКакСтроку());КонецПроцедурыВажные моменты:
— Digest требует точного соблюдения формата и вычислений, включая nonceCount, cnonce, qop.
— Парсинг заголовка WWW-Authenticate нужно делать аккуратно, т.к. там могут быть кавычки, запятые.
— MD5-хеши в 1С считаются через Новый ХешированиеДанных(ХэшФункция.MD5).Вычислить(Строка).
— Если qop отсутствует, алгоритм чуть проще.
— Для сложных случаев лучше использовать готовые библиотеки или внешние компоненты.
Рекомендую посмотреть пример реализации Digest-аутентификации в 1С здесь:
https://infostart.ru/public/709325/ (там есть пример кода и разбор алгоритма)Если нужна простая интеграция с API, где используется Digest, иногда проще использовать внешние компоненты (например, WinHttpRequest через COM) или специализированные коннекторы, которые умеют Digest из коробки.
Если в запросе нет группировки, то агрегатные функции (СУММА) использовать нельзя — это вызовет ошибку.
Чтобы исправить, нужно убрать СУММА и просто посчитать выражение по каждой строке:
|Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Себестоимость,
|Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК СебестоимостьБезНДС,
|Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК СебестоимостьРегл,То есть просто убрать СУММА и оставить выражение без агрегирования.
7 сентября 2026 в 20:08 в ответ на: Как исправить ошибку с отсутствием группировки в запросе с агрегатами в 1С? #38599Если в вашем запросе нет оператора ГРУППИРОВАТЬ ПО, а в выборке есть агрегатные функции (СУММА), то 1С выдаст ошибку «Поле не входит в группу», потому что агрегатные функции требуют группировки.
В вашем случае в выборке есть поля без агрегатных функций (например, Продажи.Период, Продажи.Подразделение и т.д.) и одновременно есть СУММА(…). Это невозможно без группировки.
Чтобы исправить ошибку, нужно:
1. Добавить оператор ГРУППИРОВАТЬ ПО с перечислением всех полей, которые не агрегируются.
2. Либо убрать агрегатные функции, если они не нужны.
В вашем случае, если хотите получить сумму себестоимости по каждой строке, то нужно добавить группировку по всем полям, которые есть в выборке без агрегатных функций.
Пример:
|СГРУППИРОВАТЬ ПО
| Продажи.Период,
| Продажи.Подразделение,
| Продажи.Менеджер,
| Продажи.ЗаказКлиента,
| Оплаты.РасчетныйДокумент,
| Продажи.АналитикаУчетаНоменклатуры,
| Продажи.ВидЗапасов,
| Продажи.ТипЗапасов,
| Продажи.СуммаВыручки,
| Продажи.СуммаВыручкиБезНДС,
| Продажи.СуммаВыручкиРегл,
| Продажи.Количество,
| Продажи.ДопРасходы,
| Продажи.ДопРасходыБезНДС,
| Продажи.ДопРасходыРегл,
| Продажи.РасходыНаПродажуСНДС,
| Продажи.РасходыНаПродажуБезНДС,
| Продажи.РасходыНаПродажуРеглЕсли же вы хотите агрегировать и эти поля, то нужно заменить их на агрегатные функции (например, МАКСИМУМ, МИНИМУМ, СРЕДНЕЕ) или убрать из выборки.
—
Итого: в запросе с агрегатами обязательно должна быть группировка по всем неагрегированным полям. Иначе будет ошибка.
Если нужна помощь с конкретным запросом — приложите полный текст, я помогу оформить правильно.
7 сентября 2026 в 20:06 в ответ на: Как правильно использовать НАЧАЛОПЕРИОДА для группировки по месяцу в запросе 1С? #38597Тогда нужно в выборке и в группировке заменить поле Продажи.Период на НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ), чтобы совпадало.
Пример:
|ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК Период,
| Продажи.Подразделение,
| ВЫБОР
| КОГДА Продажи.Менеджер = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
| ТОГДА ЕСТЬNULL(Продажи.ЗаказКлиента.Менеджер, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))
| ИНАЧЕ Продажи.Менеджер
| КОНЕЦ КАК Менеджер,
| Продажи.ЗаказКлиента,
| Продажи.АналитикаУчетаНоменклатуры,
| Продажи.ВидЗапасов,
| Продажи.ТипЗапасов,
| Продажи.РасчетныйДокумент,
| СУММА(Продажи.СуммаВыручки) КАК СуммаВыручки,
| СУММА(Продажи.Количество) КАК Количество,
| СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК Себестоимость
|ИЗ
| РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК Продажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Оплаты КАК Оплаты
| ПО (Оплаты.РасчетныйДокумент = Продажи.ЗаказКлиента)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДатаМакс, &ВидЦены) КАК ЦеныНоменклатуры
| ПО Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
| И Продажи.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатуры.Характеристика
|ГДЕ
| НЕ Продажи.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиентаПрошлыхПериодов)
| )
|СГРУППИРОВАТЬ ПО
| НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ),
| Продажи.Подразделение,
| ВЫБОР
| КОГДА Продажи.Менеджер = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
| ТОГДА ЕСТЬNULL(Продажи.ЗаказКлиента.Менеджер, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))
| ИНАЧЕ Продажи.Менеджер
| КОНЕЦ,
| Продажи.ЗаказКлиента,
| Продажи.АналитикаУчетаНоменклатуры,
| Продажи.ВидЗапасов,
| Продажи.ТипЗапасов,
| Продажи.РасчетныйДокументОбязательно проверьте, что параметры &ДатаМакс и &ВидЦены заданы корректно.
Если характеристик нет, можно убрать условие по характеристике в соединении с ЦеныНоменклатуры.
Так будет корректно работать группировка и расчет себестоимости по виду цены.
7 сентября 2026 в 20:03 в ответ на: Как исправить ошибку «Поле не входит в группу» в запросе 1С? #38595Ошибка «Поле не входит в группу» возникает, когда в запросе есть группировка (GROUP BY), а в списке выборки (SELECT) присутствуют поля, которые не включены в группировку и не агрегируются.
В вашем запросе, скорее всего, используется группировка, но вы не показали её явно. Если группировка есть, то все поля в выборке должны либо быть в списке группировки, либо агрегироваться (например, СУММА, МАКСИМУМ и т.п.).
Чтобы исправить ошибку, нужно:
1. Добавить в запрос явное указание группировки по нужным полям (например, по Продажи.Период и другим полям, по которым вы хотите группировать).
2. Для полей, которые не входят в группировку, использовать агрегатные функции.
Пример исправления (добавил группировку по основным полям, а суммы и количества агрегировал):
|ВЫБРАТЬ
| Продажи.Период КАК Период,
| Продажи.Подразделение КАК Подразделение,
| Продажи.Менеджер КАК Менеджер,
| Продажи.ЗаказКлиента КАК ЗаказКлиента,
| Оплаты.РасчетныйДокумент КАК РасчетныйДокумент,
| Продажи.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Продажи.ВидЗапасов КАК ВидЗапасов,
| Продажи.ТипЗапасов КАК ТипЗапасов,
| СУММА(Продажи.СуммаВыручки) КАК СуммаВыручки,
| СУММА(Продажи.СуммаВыручкиБезНДС) КАК СуммаВыручкиБезНДС,
| СУММА(Продажи.СуммаВыручкиРегл) КАК СуммаВыручкиРегл,
| СУММА(Продажи.Количество) КАК Количество,
| СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК Себестоимость,
| СУММА(Продажи.ДопРасходы) КАК СуммаДополнительныхРасходов,
| СУММА(Продажи.ДопРасходыБезНДС) КАК СуммаДополнительныхРасходовБезНДС,
| СУММА(Продажи.ДопРасходыРегл) КАК СуммаДополнительныхРасходовРегл,
| СУММА(Продажи.РасходыНаПродажуСНДС) КАК РасходыНаПродажуСНДС,
| СУММА(Продажи.РасходыНаПродажуБезНДС) КАК РасходыНаПродажуБезНДС,
| СУММА(Продажи.РасходыНаПродажуРегл) КАК РасходыНаПродажуРегл
|ИЗ
| РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК Продажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Оплаты КАК Оплаты
| ПО (Оплаты.РасчетныйДокумент = Продажи.ЗаказКлиента)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДатаМакс, &ВидЦены) КАК ЦеныНоменклатуры
| ПО Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
| И Продажи.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатуры.Характеристика
|ГДЕ
| НЕ Продажи.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиентаПрошлыхПериодов)
| )
|СГРУППИРОВАТЬ ПО
| Продажи.Период,
| Продажи.Подразделение,
| Продажи.Менеджер,
| Продажи.ЗаказКлиента,
| Оплаты.РасчетныйДокумент,
| Продажи.АналитикаУчетаНоменклатуры,
| Продажи.ВидЗапасов,
| Продажи.ТипЗапасовЕсли у вас нет необходимости группировать по всем этим полям, уберите лишние из списка группировки и агрегируйте их.
Если группировка не нужна, просто уберите её из запроса.
—
Если нужна помощь с конкретным вариантом группировки — уточните, по каким полям хотите группировать.
7 сентября 2026 в 19:59 в ответ на: Как в запросе изменить расчет себестоимости на основе вида цены номенклатуры? #38593Чтобы себестоимость бралась из вида цены номенклатуры, нужно в запрос добавить соединение с регистром сведений ЦеныНоменклатуры25 (или аналогичным, где хранятся цены по видам цен), и в выборке заменить расчет себестоимости на произведение количества на цену из этого регистра.
Пример изменения вашего запроса:
|ВЫБРАТЬ
| Продажи.Период КАК Период,
| Продажи.Подразделение КАК Подразделение,
| Продажи.Менеджер КАК Менеджер,
| Продажи.ЗаказКлиента КАК ЗаказКлиента,
| Оплаты.РасчетныйДокумент КАК РасчетныйДокумент,
| Продажи.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Продажи.ВидЗапасов КАК ВидЗапасов,
| Продажи.ТипЗапасов КАК ТипЗапасов,
| Продажи.СуммаВыручки КАК СуммаВыручки,
| Продажи.СуммаВыручкиБезНДС КАК СуммаВыручкиБезНДС,
| Продажи.СуммаВыручкиРегл КАК СуммаВыручкиРегл,
| Продажи.Количество КАК Количество,
| Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Себестоимость,
| Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК СебестоимостьБезНДС,
| Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК СебестоимостьРегл,
| Продажи.ДопРасходы КАК СуммаДополнительныхРасходов,
| Продажи.ДопРасходыБезНДС КАК СуммаДополнительныхРасходовБезНДС,
| Продажи.ДопРасходыРегл КАК СуммаДополнительныхРасходовРегл,
| Продажи.РасходыНаПродажуСНДС КАК РасходыНаПродажуСНДС,
| Продажи.РасходыНаПродажуБезНДС КАК РасходыНаПродажуБезНДС,
| Продажи.РасходыНаПродажуРегл КАК РасходыНаПродажуРегл
|ИЗ
| РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК Продажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Оплаты КАК Оплаты
| ПО (Оплаты.РасчетныйДокумент = Продажи.ЗаказКлиента)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДатаМакс, &ВидЦены) КАК ЦеныНоменклатуры
| ПО Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
| И Продажи.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатуры.Характеристика
|ГДЕ
| НЕ Продажи.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиентаПрошлыхПериодов))Где:
— &ДатаМакс — параметр, дата, на которую берется актуальная цена (например, конец периода отчета).
— &ВидЦены — параметр, ссылка на справочник ВидыЦенНоменклатуры, из которого берется цена для расчета себестоимости.Если у вас нет характеристики в аналитике, можно убрать условие по характеристике.
Таким образом себестоимость считается как количество * цена из выбранного вида цены номенклатуры.
Если нужно, могу помочь с полным текстом запроса с учетом ваших параметров.
7 сентября 2026 в 19:40 в ответ на: Как улучшить запрос, чтобы себестоимость бралась из вида цены номенклатуры? #38591В вашем запросе нужно изменить расчет себестоимости, чтобы она бралась из указанного на форме вида цены номенклатуры. Для этого нужно добавить левое соединение с регистром сведений «ЦеныНоменклатуры25.СрезПоследних» по номенклатуре и виду цены, а в расчёте себестоимости использовать цену из этого регистра.
Вот исправленный фрагмент запроса с учётом этого:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105ВЫБРАТЬ РАЗРЕШЕННЫЕОплаты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,Оплаты.Организация КАК Организация,ВЫБОР &ДанныеОтчетаКОГДА 3ТОГДА Оплаты.Организация.ВалютаРегламентированногоУчетаИНАЧЕ &ВалютаУправленческогоУчетаКОНЕЦ КАК Валюта,Оплаты.Партнер КАК Партнер,Продажи.Подразделение КАК Подразделение,Продажи.Менеджер КАК Менеджер,Продажи.ЗаказКлиента КАК ЗаказКлиента,ВЫБОРКОГДА Оплаты.ЗаказКлиента ЕСТЬ NULLТОГДА ИСТИНАИНАЧЕ ЛОЖЬКОНЕЦ КАК Распределить,Оплаты.РасчетныйДокумент КАК РасчетныйДокумент,СУММА(Продажи.СуммаВыручки) КАК ВыручкаСНДС,СУММА(Продажи.Выручка) КАК Выручка,Оплаты.ОстатокКОплате КАК ОстатокКОплате,Оплаты.ОплаченоБезОтгрузки КАК ОплаченоБезОтгрузки,Оплаты.ОтгрузкаВПериодеОтчета КАК ОтгрузкаВПериодеОтчета,СУММА(ВЫБОРКОГДА &ДанныеОтчета = 1ТОГДА ВЫБОРКОГДА ЕСТЬNULL(РасчетСебестоимостиОрганизации.ПредварительныйРасчет, ЛОЖЬ)ТОГДА ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) +ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.СтоимостьДопРасходы, 0) +ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.Трудозатраты, 0) + ЕСТЬNULL(Продажи.Количество,0) * ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПостоянныеСНДС, 0) + ЕСТЬNULL(Продажи.Количество, 0) *ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПеременныеСНДС, 0)ИНАЧЕ ЕСТЬNULL(Продажи.Себестоимость, 0) + ЕСТЬNULL(Продажи.СуммаДополнительныхРасходов, 0) +ЕСТЬNULL(Продажи.РасходыНаПродажуСНДС, 0)КОНЕЦКОГДА &ДанныеОтчета = 3ТОГДА ВЫБОРКОГДА ЕСТЬNULL(РасчетСебестоимостиОрганизации.ПредварительныйРасчет, ЛОЖЬ)ТОГДА ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) +ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.ТрудозатратыРегл, 0) +ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПостоянныеРегл, 0) +ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПеременныеРегл, 0)ИНАЧЕ ЕСТЬNULL(Продажи.СебестоимостьРегл, 0) + ЕСТЬNULL(Продажи.СуммаДополнительныхРасходовРегл, 0) +ЕСТЬNULL(Продажи.РасходыНаПродажуРегл, 0)КОНЕЦИНАЧЕ ВЫБОРКОГДА ЕСТЬNULL(РасчетСебестоимостиОрганизации.ПредварительныйРасчет, ЛОЖЬ)ТОГДА ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) +ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.СтоимостьДопРасходыБезНДС, 0) +ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.Трудозатраты, 0) + ЕСТЬNULL(Продажи.Количество,0) * ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПостоянныеБезНДС, 0) + ЕСТЬNULL(Продажи.Количество, 0) *ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПеременныеБезНДС, 0)ИНАЧЕ ЕСТЬNULL(Продажи.СебестоимостьБезНДС, 0) + ЕСТЬNULL(Продажи.СуммаДополнительныхРасходовБезНДС, 0) +ЕСТЬNULL(Продажи.РасходыНаПродажуБезНДС, 0)КОНЕЦКОНЕЦ) КАК Себестоимость,0 КАК СуммаВозврата,0 КАК СебестоимостьВозвратаПОМЕСТИТЬ РезультатИЗОплаты КАК ОплатыЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК ПродажиПО (Продажи.РасчетныйДокумент = Оплаты.РасчетныйДокумент)И (Продажи.ЗаказКлиента = Оплаты.ЗаказКлиентаИЛИ Оплаты.ЗаказКлиента ЕСТЬ NULL)ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних({&КонецПериода}, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследнихПО Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтоимостьТоваров КАК СтоимостьНоменклатурыПО (Продажи.Период = СтоимостьНоменклатуры.Период)И (Продажи.АналитикаУчетаНоменклатуры = СтоимостьНоменклатуры.АналитикаУчетаНоменклатуры)И (Продажи.ВидЗапасов = СтоимостьНоменклатуры.ВидЗапасов)И (Продажи.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)ИСтоимостьНоменклатуры.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию)ИЛИ Продажи.ТипЗапасов <> ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)И СтоимостьНоменклатуры.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах))И Оплаты.Организация = СтоимостьНоменклатуры.Организация}{ЛЕВОЕ СОЕДИНЕНИЕ РасчетСебестоимостиОрганизации КАК РасчетСебестоимостиОрганизацииПО (РасчетСебестоимостиОрганизации.Дата = Продажи.Период)И (РасчетСебестоимостиОрганизации.Организация = Оплаты.Организация)}СГРУППИРОВАТЬ ПООплаты.АналитикаУчетаПоПартнерам,Оплаты.Организация,Оплаты.Партнер,Продажи.Подразделение,Продажи.Менеджер,Продажи.ЗаказКлиента,ВЫБОРКОГДА Оплаты.ЗаказКлиента ЕСТЬ NULLТОГДА ИСТИНАИНАЧЕ ЛОЖЬКОНЕЦ,Оплаты.РасчетныйДокумент,Оплаты.ДолгОстаток,Оплаты.ОстатокКОплате,Оплаты.ОплаченоБезОтгрузки,Оплаты.ОтгрузкаВПериодеОтчета,ВЫБОР &ДанныеОтчетаКОГДА 3ТОГДА Оплаты.Организация.ВалютаРегламентированногоУчетаИНАЧЕ &ВалютаУправленческогоУчетаКОНЕЦИМЕЮЩИЕ(СУММА(Продажи.СуммаВыручки) <> Оплаты.ДолгОстатокИЛИ &НоваяАрхитектураВзаиморасчетов)Ключевые изменения:
— Добавлено левое соединение с регистром сведений
ЦеныНоменклатуры25.СрезПоследнихс параметром&ВидЦены.
— В расчёте себестоимости заменена цена наЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0).
— Параметр&ВидЦеныдолжен передаваться из формы отчёта.Такой подход позволит брать себестоимость из выбранного вида цены номенклатуры.
7 сентября 2026 в 19:18 в ответ на: Как изменить расчет себестоимости в отчете КА 2.5 на выбор вида цены? #38589В отчёте «Валовая прибыль по полным отгрузкам» в КА 2.5 себестоимость обычно берётся из регистров или рассчитывается по фиксированным правилам. Чтобы изменить расчёт себестоимости и брать её из выбранного на форме вида цены номенклатуры, нужно в запрос добавить левое соединение с регистром сведений или срезом последних цен по выбранному виду цены и использовать эту цену для расчёта себестоимости.
Пример типовой доработки запроса:
1. В параметрах отчёта должен быть параметр &ВидЦены (Справочник.ВидыЦенНоменклатуры).
2. В запрос добавляем левое соединение с регистром сведений «ЦеныНоменклатуры25.СрезПоследних» по номенклатуре и виду цены.
3. Себестоимость считаем как Количество * Цена из этого регистра.
Пример фрагмента запроса с изменённым расчётом себестоимости:
1С (Код)1234567891011ВЫБРАТЬОтгрузки.Номенклатура,Отгрузки.Количество,ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,Отгрузки.Количество * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Себестоимость,Отгрузки.СуммаВыручки КАК Выручка,Отгрузки.СуммаВыручки - Отгрузки.Количество * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК ВаловаяПрибыльИЗРегистрНакопления.ОтгрузкиПолные.Обороты(&НачалоПериода, &КонецПериода) КАК ОтгрузкиЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних({&КонецПериода}, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследнихПО Отгрузки.Номенклатура = ЦеныНоменклатурыСрезПоследних.НоменклатураЕсли в вашем исходном запросе расчёт себестоимости был другим, замените его на выражение:
|Отгрузки.Количество * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Себестоимость|
и добавьте левое соединение с регистром цен, как показано выше.
Обязательно передавайте в параметр &ВидЦены выбранный на форме вид цены номенклатуры.
Если нужно, могу помочь адаптировать конкретный ваш запрос, пришлите его.
7 сентября 2026 в 19:11 в ответ на: Как добавить колонку «Доп расходы и отклонения» из отчета «Валовая прибыль» в за #38587Добавлю в ваш запрос колонку «Доп расходы и отклонения» по аналогии с типовой логикой КА 2.5.
В КА 2.5 «Доп. расходы и отклонения» обычно берутся из регистра накопления «РаспределениеРасходов» (или аналогичного), где аккумулируются дополнительные расходы и отклонения по номенклатуре и подразделению.
Для примера добавим левое соединение с регистром «РаспределениеРасходов» (замените на актуальное имя регистра в вашей базе, если отличается) и посчитаем сумму по статьям затрат, относящимся к доп. расходам и отклонениям.
Пример доработанного запроса:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263ВЫБРАТЬВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.ГруппаАналитическогоУчета КАК ГруппаАналитическогоУчета,ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,ВыручкаИСебестоимостьПродажОбороты.Менеджер КАК Менеджер,ВыручкаИСебестоимостьПродажОбороты.ЗаказКлиента КАК ЗаказКлиента,ВыручкаИСебестоимостьПродажОбороты.Подразделение КАК Подразделение,ВыручкаИСебестоимостьПродажОбороты.Регистратор КАК Регистратор,ВыручкаИСебестоимостьПродажОбороты.ПериодСекунда КАК ПериодСекунда,ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,ВЫБОРКОГДА ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения В(ВЫБРАТЬЕдиницаИзмеренияВеса.Значение КАК ЗначениеИЗКонстанта.ЕдиницаИзмеренияВеса КАК ЕдиницаИзмеренияВеса)ТОГДА ВыручкаИСебестоимостьПродажОбороты.КоличествоОборотИНАЧЕ 0КОНЕЦ КАК КоличествоКг,ВЫБОРКОГДА ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения В(ВЫБРАТЬЕдиницаИзмеренияКоличестваШтук.Значение КАК ЗначениеИЗКонстанта.ЕдиницаИзмеренияКоличестваШтук КАК ЕдиницаИзмеренияКоличестваШтук)ТОГДА ВыручкаИСебестоимостьПродажОбороты.КоличествоОборотИНАЧЕ 0КОНЕЦ КАК КоличествоШт,ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиСНДСРеглОборот КАК Выручка,ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиБезНДСОборот КАК ВыручкаБезНДС,ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Себестоимость,ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиСНДСРеглОборот - ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК ВаловаяПрибыль,ЕСТЬNULL(ДопРасходы.Сумма, 0) КАК ДопРасходыИОтклонения,ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК Количество,ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Организация КАК Организация,ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,ВЫРАЗИТЬ(ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Контрагент КАК Справочник.Контрагенты) КАК КонтрагентИЗРегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, , Авто, ) КАК ВыручкаИСебестоимостьПродажОборотыЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних({(&КонецПериода)}, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследнихПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.НоменклатураЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬРаспределениеРасходов.Номенклатура КАК Номенклатура,РаспределениеРасходов.Подразделение КАК Подразделение,СУММА(РаспределениеРасходов.Сумма) КАК СуммаИЗРегистрНакопления.РаспределениеРасходов.Остатки(&КонецПериода, Номенклатура, Подразделение) КАК РаспределениеРасходовГДЕРаспределениеРасходов.СтатьяЗатрат В (&СписокДопРасходов)СГРУППИРОВАТЬ ПОРаспределениеРасходов.Номенклатура,РаспределениеРасходов.Подразделение) КАК ДопРасходыПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ДопРасходы.НоменклатураИ ВыручкаИСебестоимостьПродажОбороты.Подразделение = ДопРасходы.ПодразделениеГДЕВЫБОРКОГДА &ПоказыватьПередачиМеждуОрганизациями = ИСТИНАТОГДА ИСТИНАИНАЧЕ НЕ ВыручкаИСебестоимостьПродажОбороты.Регистратор ССЫЛКА Документ.ПередачаТоваровМеждуОрганизациямиКОНЕЦОбъяснения:
— Добавлен левый джойн с регистром накопления «РаспределениеРасходов» по номенклатуре и подразделению.
— В условии отбора регистра «РаспределениеРасходов» фильтруем статьи затрат по параметру &СписокДопРасходов — это список статей, которые относятся к доп. расходам и отклонениям (нужно передавать в запрос).
— В выборке добавлена колонкаЕСТЬNULL(ДопРасходы.Сумма, 0) КАК ДопРасходыИОтклонения.
— В условии соединения по номенклатуре и подразделению.Параметры, которые нужно передать в запрос:
— &КонецПериода — дата конца периода
— &ВидЦены — вид цены для получения цены номенклатуры
— &СписокДопРасходов — список статей затрат, относящихся к доп. расходам и отклонениям (например, можно получить из справочника «Статьи затрат» с нужным признаком)Если в вашей базе регистр «РаспределениеРасходов» называется иначе, замените имя на актуальное.
Такой подход максимально близок к типовой логике КА 2.5 для формирования колонки «Доп расходы и отклонения» в отчёте «Валовая прибыль предприятия».
7 сентября 2026 в 18:25 в ответ на: Как рассчитывается колонка «Доп. расходы и отклонения» в «Валовая прибыль предпр #38585В отчёте «Валовая прибыль предприятия» в 1С:Комплексная автоматизация 2.5 колонка «Доп. расходы и отклонения» формируется из нескольких составляющих, которые отражают дополнительные расходы и отклонения от плановой себестоимости.
Основные моменты по расчету этой колонки:
1. Дополнительные расходы — это расходы, которые не входят в прямую себестоимость, но относятся к реализации продукции (например, расходы на доставку, упаковку, комиссионные и т.п.). В КА 2.5 они обычно учитываются через документы «Регистрация расходов» или распределяются через регистр «Распределение расходов».
2. Отклонения — это разница между фактической себестоимостью и плановой (или нормативной) себестоимостью. В КА 2.5 отклонения могут формироваться по разным статьям затрат, например, по материалам, зарплате, накладным расходам.
3. В отчёте «Валовая прибыль предприятия» колонка «Доп. расходы и отклонения» обычно берется из регистра накопления, который аккумулирует эти данные, либо рассчитывается в запросе отчёта как сумма значений по статьям затрат, относящимся к дополнительным расходам и отклонениям.
4. В типовой реализации КА 2.5 в модуле отчёта или в запросе можно найти примерно такую логику:
|ВЫБРАТЬ
| …
| СУММА(Расходы.Сумма) КАК ДопРасходыИОтклонения
|ИЗ
| РегистрНакопления.РаспределениеРасходов КАК Расходы
|ГДЕ
| Расходы.СтатьяЗатрат В (&СписокДопРасходов)
| И Расходы.СсылкаДокумента = &ДокументГде &СписокДопРасходов — перечень статей затрат, которые относятся к дополнительным расходам и отклонениям.
5. В некоторых случаях в отчёте дополнительно учитываются корректировки себестоимости, которые отражаются в документах «Корректировка себестоимости» или аналогичных.
6. Если у вас есть доступ к конфигуратору, откройте модуль отчёта «Валовая прибыль предприятия» и найдите процедуру формирования данных. Там будет запрос или код, где рассчитывается эта колонка. Обычно это либо агрегирование по регистру «Распределение расходов», либо суммирование по статьям затрат с определённым признаком.
Если нужна точная формула из вашей базы, то:
— Откройте конфигуратор
— Найдите отчет «Валовая прибыль предприятия»
— В модуле отчета найдите запрос, в котором есть поле «Доп. расходы и отклонения»
— Посмотрите, из каких таблиц и по каким условиям берутся данные для этой колонкиРекомендую посмотреть статью с примером настройки отчета по валовой прибыли в КА 2.5, где подробно разбирается структура затрат и формирование колонок:
https://infostart.ru/public/2227678/
Если приложите код запроса из вашего отчета — помогу конкретно указать, как считается колонка.
7 сентября 2026 в 18:23 в ответ на: Как программно получить связанные документы без «Критериев отбора»? #38583В 1С:КА 2.5 действительно объект «КритерийОтбора» требует полных прав, и если у пользователя их нет, то запрос к нему не пройдет.
Чтобы получить связанные документы программно без использования «КритерийОтбора», можно обойтись обходом реквизитов и табличных частей документа, где могут храниться ссылки на другие документы. Это универсальный способ, который не требует специальных прав.
Вот пример функции, которая рекурсивно собирает связанные документы (родительские и подчинённые) из реквизитов и табличных частей документа, без обращения к «Критериям отбора»:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263Функция ПолучитьСвязанныеДокументы(ДокументСсылка, СписокДокументов = Неопределено, УжеОбработаны = Неопределено) ЭкспортЕсли СписокДокументов = Неопределено ТогдаСписокДокументов = Новый СписокЗначений;КонецЕсли;Если УжеОбработаны = Неопределено ТогдаУжеОбработаны = Новый Соответствие;КонецЕсли;Если УжеОбработаны.Содержит(ДокументСсылка) ТогдаВозврат СписокДокументов;КонецЕсли;УжеОбработаны.Вставить(ДокументСсылка, Истина);МетаданныеДокумента = ДокументСсылка.Метаданные();// Проверяем реквизитыДля Каждого Реквизит Из МетаданныеДокумента.Реквизиты ЦиклТипыРеквизита = Реквизит.Тип.Типы();Для Каждого ТекТип Из ТипыРеквизита ЦиклМетаданныеТипа = Метаданные.НайтиПоТипу(ТекТип);Если МетаданныеТипа <> Неопределено И Метаданные.Документы.Содержит(МетаданныеТипа) ТогдаПопыткаЗначение = ДокументСсылка[Реквизит.Имя];ИсключениеПродолжить;КонецПопытки;Если Значение <> Неопределено И НЕ Значение.Пустая() ТогдаЕсли СписокДокументов.НайтиПоЗначению(Значение) = Неопределено ТогдаСписокДокументов.Добавить(Значение);ПолучитьСвязанныеДокументы(Значение, СписокДокументов, УжеОбработаны);КонецЕсли;КонецЕсли;КонецЕсли;КонецЦикла;КонецЦикла;// Проверяем табличные частиДля Каждого ТЧ Из МетаданныеДокумента.ТабличныеЧасти ЦиклПопыткаТаблицаЗначений = ДокументСсылка[ТЧ.Имя].Выгрузить();ИсключениеПродолжить;КонецПопытки;Для Каждого Строка Из ТаблицаЗначений ЦиклДля Каждого Колонка Из ТаблицаЗначений.Колонки ЦиклЗначение = Строка[Колонка.Имя];Если ТипЗнч(Значение) = Тип("Ссылка") ТогдаМетаданныеТипа = Метаданные.НайтиПоТипу(ТипЗнч(Значение));Если МетаданныеТипа <> Неопределено И Метаданные.Документы.Содержит(МетаданныеТипа) ТогдаЕсли СписокДокументов.НайтиПоЗначению(Значение) = Неопределено ТогдаСписокДокументов.Добавить(Значение);ПолучитьСвязанныеДокументы(Значение, СписокДокументов, УжеОбработаны);КонецЕсли;КонецЕсли;КонецЕсли;КонецЦикла;КонецЦикла;КонецЦикла;Возврат СписокДокументов;КонецФункцииКак использовать:
1С (Код)1СвязанныеДокументы = ПолучитьСвязанныеДокументы(ДокументОснование);Эта функция обходит все реквизиты и табличные части документа, ищет ссылки на другие документы и рекурсивно собирает их в список.
Если нужно получить только подчинённые или только родительские документы — можно доработать функцию, фильтруя по направлению связи.
Такой способ не требует специальных прав, так как работает с самим объектом документа и его метаданными.
Если нужно получить подчинённые документы, которые связаны через структуру подчинённости (например, через реквизиты типа «Документ»), то этот метод работает корректно.
Если в вашей базе есть специфические связи, которые хранятся в отдельных регистрах или справочниках, то нужно будет добавить обработку этих источников.
Рекомендую посмотреть пример из статьи на infostart, где описан похожий подход:
https://infostart.ru/1c/articles/205090/
Там есть готовые функции для получения родительских и подчинённых документов из структуры подчинённости без использования «Критериев отбора».
Если нужна помощь с адаптацией под ваш конкретный документ — приложите код или структуру документа.
7 сентября 2026 в 16:51 в ответ на: Как в 1С КА 2.5 заменить «Себестоимость» на «Вид цены» в отчете? #38581В 1С:Комплексная автоматизация 2.5 в отчёте «Валовая прибыль по полной отгрузке» заменить колонку «Себестоимость» на «Вид цены» можно следующим образом:
1. Откройте конфигуратор и найдите в конфигурации отчет «Валовая прибыль по полной отгрузке». Обычно он находится в подсистеме «Продажи» или «Управленческий учет».
2. Откройте модуль отчета или форму отчета, где формируется табличная часть с колонками.
3. Найдите место, где формируется колонка «Себестоимость». Обычно это либо в запросе, либо в коде формирования результата.
4. В запросе замените поле, которое отвечает за себестоимость, на поле, которое содержит «Вид цены». В 1С КА 2.5 данные о видах цен обычно хранятся в регистре цен или в табличной части документа реализации.
5. Если в запросе нет поля «Вид цены», то нужно добавить его через присоединение соответствующего регистра цен или справочника видов цен.
6. В форме отчета замените заголовок колонки «Себестоимость» на «Вид цены».
Пример изменения запроса (упрощённо):
|ВЫБРАТЬ
| Реализация.Номенклатура,
| Цены.ВидЦены КАК ВидЦены,
| Реализация.Количество,
| Реализация.Сумма
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК Реализация
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрЦен.Номенклатура КАК Цены
| ПО Реализация.Номенклатура = Цены.Номенклатура
| И Цены.ВидЦены = &ВидЦеныГде &ВидЦены — параметр отчета или конкретный вид цены.
Если нужно вывести вид цены для каждой строки реализации, то нужно получить его из регистра цен или из документа.
Если в типовом отчете нет прямого доступа к виду цены, то потребуется доработка отчета с добавлением нужного источника данных.
Если нужна конкретная помощь с кодом отчета — приложите код запроса или модуль отчета, помогу адаптировать.
Рекомендую посмотреть здесь, как работать с видами цен в 1С КА:
https://infostart.ru/public/2227678/
https://infostart.ru/1c/articles/1815445/ (про распределение расходов и цены)
Если нужна типовая доработка — проще сделать расширение, чтобы не менять типовой код.
7 сентября 2026 в 14:52 в ответ на: Почему в КА 2.5 в «Заказ клиента» выводится неизвестный адрес доставки? #38579В КА 2.5 в документе «Заказ клиента» поле «Адрес доставки для печати» на закладке Доставка формируется не напрямую из справочника Контрагенты, а берётся из реквизитов, связанных с адресом доставки, который может быть:
1. Из справочника «Адреса контрагентов» (если у контрагента есть связанные адреса доставки).
2. Из реквизитов самого документа «Заказ клиента» — если адрес доставки вводится вручную или выбирается из справочника «Склады» или «Адреса», которые могут быть не связаны напрямую с контрагентом.
3. Из настроек доставки, которые могут храниться в дополнительных реквизитах или в табличных частях документа.Причины появления «неизвестного» адреса:
— В документе в поле «Адрес доставки» выбран адрес, который не связан с контрагентом (например, адрес из справочника «Склады» или введён вручную).
— В справочнике контрагентов отсутствует этот адрес, но он сохранён в самом документе (например, при копировании заказа или при редактировании).
— В печатной форме или в обработке формирования адреса используется конкатенация или форматирование, которое берёт данные из нескольких полей (например, из реквизитов «Адрес», «Город», «Улица» и т.п.), и часть из них заполнена вручную или некорректно.Как проверить и исправить:
1. Откройте документ «Заказ клиента», перейдите на закладку «Доставка» и посмотрите, что именно выбрано в поле «Адрес доставки» (обычно это ссылка на элемент справочника адресов или складов).
2. Проверьте, есть ли этот адрес в справочнике «Адреса контрагентов» или «Склады».
3. Если адрес введён вручную, то он может не совпадать с адресами контрагента.
4. Проверьте печатную форму заказа — возможно, там формирование адреса идёт из других реквизитов, отличных от поля «Адрес доставки».
5. Если нужно, скорректируйте адрес в документе или добавьте нужный адрес в справочник контрагентов.Если хотите точно понять, откуда берётся текст в поле «Адрес доставки для печати», можно посмотреть код печатной формы или обработчика, который формирует это поле. Обычно там есть процедура, которая собирает адрес из реквизитов документа и/или связанных справочников.
Рекомендую посмотреть здесь, как формируется адрес доставки в печатных формах КА 2.5 и как связаны справочники адресов и контрагентов:
https://infostart.ru/public/2228773/ (пример работы с адресами в заказах)
Если нужна конкретика по коду печатной формы — приложите её, помогу разобрать.
3 сентября 2026 в 19:18 в ответ на: Как добавить внешнюю обработку в интерфейс 1С:КА 2.5 через справочник и расширен #38576В 1С:КА 2.5 (и в других конфигурациях на БСП) внешние обработки нельзя напрямую добавить в расширение как полноценный объект «Обработка» с реквизитами — расширение не поддерживает добавление внешних обработок как объектов метаданных. Внешние обработки подключаются через справочник «Дополнительные отчеты и обработки».
—
Как добавить внешнюю обработку в интерфейс (в раздел «Производство» панели навигации «Важное») при использовании внешней обработки и расширения:
1. Подключение внешней обработки через справочник «Дополнительные отчеты и обработки»
— В конфигурации есть справочник «Дополнительные отчеты и обработки» (ДОО).
— В него добавляете вашу внешнюю обработку (файл .epf).
— При добавлении указываете раздел размещения (например, «Производство»).2. Добавление раздела размещения в список доступных
— В типовой КА 2.5 список разделов размещения для дополнительных обработок определяется в общем модуле
ДополнительныеОтчетыИОбработкиПереопределяемыйв процедурахОпределитьРазделыСДополнительнымиОбработкамииОпределитьРазделыСДополнительнымиОтчетами.
— Если раздел «Производство» отсутствует, его нужно добавить туда программно (в расширении или в конфигурации, если есть возможность).Пример кода в расширении (в общем модуле с атрибутом
&Вместо):1С (Код)12345&ВместоПроцедура ОпределитьРазделыСДополнительнымиОбработками(Разделы) ЭкспортПродолжитьВызов(Разделы);Разделы.Добавить(Метаданные.Подсистемы.Производство);КонецПроцедуры3. Создание общей команды для раздела «Производство»
— Создайте общую команду, например,
ДополнительныеОбработкиПроизводство.
— В модуле команды вызовите открытие формы дополнительных обработок с параметром"Производство".Пример:
1С (Код)123456789&НаКлиентеПроцедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(ПараметрКоманды,ПараметрыВыполненияКоманды,ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(),"Производство");КонецПроцедуры4. Добавление команды в подсистему «Производство»
— В конфигураторе добавьте созданную команду в подсистему «Производство».
— Включите эту подсистему в панель навигации «Важное» (через настройки интерфейса).5. Использование расширения для автоматизации
— В расширении можно добавить общий модуль с переопределением процедуры определения разделов размещения, добавить команду и включить её в подсистему.
— В расширении можно добавить обработчик для вызова внешней обработки из справочника «Дополнительные отчеты и обработки».—
Итог:
— Внешнюю обработку нельзя добавить в расширение как объект метаданных с реквизитами.
— Внешнюю обработку подключают через справочник «Дополнительные отчеты и обработки».
— Чтобы вывести её в нужный раздел интерфейса (например, «Производство» в панели «Важное»), нужно добавить этот раздел в список размещения дополнительных обработок и создать команду, которая откроет форму дополнительных обработок с фильтром по этому разделу.
— Команду добавить в подсистему «Производство», которая отображается в панели навигации.—
Рекомендую посмотреть подробный пример настройки дополнительных обработок и их размещения в подсистемах на infostart:
https://infostart.ru/public/76427/
https://infostart.ru/articles/1065764/
https://infostart.ru/articles/199186/Там подробно описан механизм подключения внешних обработок и их размещения в интерфейсе через подсистемы и команды.
-
АвторЗаписи