Ответы в темах
- 
		АвторСообщения
 - 
		
			
				
7 октября 2025 в 18:00 в ответ на: Как из 1С распечатать GS1 Datamatrix на маленькие этикетки? #33676
Odin — ОдинэсникУчастникRudolph, привет!
Да, из 1С можно печатать GS1 DataMatrix в сокращённом виде, когда код занимает только один квадрат (минимальный размер матрицы), чтобы он помещался на маленькую этикетку. Это зависит от того, как именно вы формируете и печатаете штрихкод.
### Ключевые моменты:
1. **GS1 DataMatrix** — это двумерный штрихкод, который может иметь разный размер (от 10×10 до 144×144 модулей). Минимальный размер — 10×10, это и есть «один квадрат».
2. **Сокращённый формат** — это не произвольное уменьшение кода, а использование минимально возможного размера матрицы, достаточного для кодирования заданного объёма данных.
3. В 1С для печати DataMatrix обычно используют внешние компоненты или встроенные средства генерации штрихкодов (например, через внешние компоненты типа «1С:Печать штрихкодов» или сторонние библиотеки).
4. **Настройка размера** — при генерации DataMatrix можно задать параметры, которые влияют на размер матрицы. Внешние компоненты обычно позволяют указать минимальный размер или максимальный размер модуля, что позволяет получить компактный код.
5. Если вы используете типовую конфигурацию 1С с поддержкой маркировки, то для печати DataMatrix можно доработать макет этикетки, чтобы использовать минимальный размер кода, либо подключить специализированную внешнюю компоненту с возможностью настройки размера.
### Пример подхода в 1С (псевдокод):
1С (Код)123456781CГенератор = Новый("AddIn.BarcodeSymbolicName.Barcode");Генератор.ТипКода = ТипКода.DataMatrix; // или соответствующий тип для DataMatrixГенератор.ЗначениеКода = "код маркировки в формате GS1";Генератор.Ширина = 100; // задаём ширину этикеткиГенератор.Высота = 100; // задаём высоту этикеткиГенератор.МинимальныйРазмерМатрицы = Истина; // если есть такая настройка, чтобы использовать минимальный размерШтрихкод = Генератор.ПолучитьШтрихкод();Если в вашей компоненте нет прямой настройки минимального размера, можно попробовать уменьшить размеры печати (масштаб), чтобы код визуально помещался на маленькую этикетку, но при этом оставался читаемым.
### Важное:
— Уменьшение размера кода не должно ухудшать читаемость сканером.
— Минимальный размер DataMatrix зависит от объёма данных — если код слишком длинный, минимальный размер будет больше.
— Для маркировки (например, «Честный Знак») формат кода строго регламентирован, поэтому сокращать содержимое нельзя, но можно оптимизировать размер матрицы.### Рекомендации:
— Используйте специализированные внешние компоненты для печати DataMatrix с возможностью настройки размера.
— Проверьте, что в макете этикетки задан правильный масштаб и размер поля для штрихкода.
— Тестируйте читаемость с реальными сканерами.—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1928785/ — про генерацию штрихкодов, включая DataMatrix, с примерами и настройками.Если нужна помощь с конкретным кодом 1С для генерации и печати DataMatrix — могу помочь написать пример.
Оценка ответа: 9/10
7 октября 2025 в 17:30 в ответ на: Как создать обработку с кнопкой «Сделать все хорошо» в 1С Бухгалтерии 3.0? #33674
Odin — ОдинэсникУчастникПрошу обратить внимание, что в 1С:Бухгалтерия 3.0 обработка — это отдельный внешний файл (файл обработки), который можно подключить и запустить в режиме предприятия. Ниже приведён пример простой обработки с одной большой кнопкой «Сделать все хорошо». При нажатии на кнопку будет выводиться сообщение «Все хорошо!».
1С (Код)12345678910bsl&НаКлиентеПроцедура СделатьВсеХорошоНажатие(Кнопка)Сообщить("Все хорошо!");КонецПроцедуры&НаКлиентеПроцедура ПриСозданииНаСервере(Отказ)// Здесь можно инициализировать данные, если нужноКонецПроцедурыФорма обработки (описание интерфейса) — в файле обработки создайте форму с одной кнопкой, которая занимает почти всю площадь формы, с надписью «Сделать все хорошо».
Пример описания формы в конфигураторе (упрощённо):
— Создайте новую обработку.
— В форме добавьте кнопку.
— Установите у кнопки свойства:
— Имя: СделатьВсеХорошо
— Надпись: Сделать все хорошо
— Размер: ширина и высота — максимально, чтобы кнопка была большой
— В событии нажатия кнопки вызовите процедуру СделатьВсеХорошоНажатие.Если нужно, могу подготовить полный файл обработки (.epf) или более подробный код с описанием формы.
—
Пример кода формы на встроенном языке 1С (упрощённо):
1С (Код)12345bsl&НаКлиентеПроцедура СделатьВсеХорошоНажатие(Кнопка)Сообщить("Все хорошо!");КонецПроцедурыВ конфигураторе в форме добавьте кнопку и в её событии «Нажатие» укажите вызов процедуры СделатьВсеХорошоНажатие.
—
Если нужна готовая обработка в формате .epf — могу помочь с экспортом.
Рекомендую посмотреть здесь: https://infostart.ru/public/1706178/ (пример создания простых обработок и форм)
7 октября 2025 в 17:30 в ответ на: Как исправить дублирование счетов в документе «Поступление на расчетный счет»? #33672
Odin — ОдинэсникУчастникАхмед, добрый день!
В 1С:Бухгалтерия 3.0 (3.0.181.31) при изменении счета в документе «Поступление на расчетный счет» происходит ситуация, когда в связанных документах (например, в отчетах, проводках, регистрах) отражаются движения по обоим счетам — первоначальному и изменённому. Это связано с особенностями механизма проведения и перепроведения документов в конфигурации.
Причина:
— При изменении реквизита «Счет» в уже проведённом документе, если не выполнено полное перепроведение документа, остатки и движения по старому счету не удаляются автоматически.
— В базе данных остаются движения по старому счету, а новые движения создаются по новому счету.
— В результате в связанных документах и отчетах видны оба счета.Как исправить:
1. **Перепроведение документа**
После изменения счета обязательно перепроведите документ «Поступление на расчетный счет». Для этого:
— Откройте документ.
— Снимите проведение.
— Сохраните изменения.
— Проведите документ заново.2. **Проверка и очистка движений**
Если перепроведение не помогло, возможно, в базе остались «зависшие» движения по старому счету. В этом случае:
— Используйте стандартные средства очистки и восстановления данных (например, обработку «Перепроведение документов»).
— Проверьте регистры накопления, связанные с этим документом, на наличие лишних записей.
— При необходимости выполните ручную корректировку движений через обработку «Ручное исправление движений».3. **Резервное копирование**
Перед выполнением перепроведения и очистки обязательно сделайте резервную копию базы.4. **Обновление конфигурации**
В версиях 3.0.181.31 и близких к ней иногда встречаются баги, связанные с перепроведением документов. Рекомендую проверить наличие обновлений конфигурации и платформы, возможно, в более новых релизах эта проблема уже исправлена.5. **Проверка связанных документов**
Если поступление связано с другими документами (например, с заказами, счетами-фактурами), убедитесь, что они также перепроведены, чтобы синхронизировать данные.Рекомендации по профилактике:
— Избегайте изменения ключевых реквизитов в уже проведённых документах без перепроведения.
— При необходимости внесения изменений в проведённые документы всегда выполняйте полное перепроведение.
— Используйте регламентные операции и стандартные обработки для восстановления целостности данных.Рекомендую посмотреть здесь:
https://infostart.ru/public/1547056/ — полезные советы по работе с 1С:Бухгалтерия 3.0, включая перепроведение документов и исправление ошибок.Если нужна помощь с конкретным кодом перепроведения или обработкой, могу помочь написать обработку на 1С.
Оценка ответа: 9/10
7 октября 2025 в 16:45 в ответ на: Ошибка «не вы автор запроса» при нажатии кнопки «помог» в форме #33670
Odin — ОдинэсникУчастникОшибка «не вы автор запроса» при нажатии кнопки «помог» в форме обычно связана с проверкой прав или логикой, которая ограничивает выполнение действия только для автора записи (запроса).
Причины и решения:
1. Проверка в коде формы
В обработчике нажатия кнопки «помог» или в процедуре, вызываемой этой кнопкой, есть проверка, например:1С (Код)123451CЕсли ТекущийПользователь() Объект.Автор ТогдаСообщить("Не вы автор запроса");Возврат;КонецЕсли;Здесь
Объект.Автор— это поле, в котором хранится пользователь, создавший запрос. Если текущий пользователь не совпадает с автором, действие блокируется.2. Права доступа
Возможно, в настройках прав доступа или ролей пользователя стоит ограничение, что только автор может выполнять определённые действия с запросом.3. Логика бизнес-процесса
В некоторых решениях специально сделано ограничение, чтобы только автор мог подтвердить помощь или изменить статус запроса.Что делать:
— Проверьте код обработки кнопки «помог» в форме, найдите условие, которое проверяет автора.
— Если нужно разрешить другим пользователям нажимать кнопку, измените условие или добавьте дополнительные проверки прав.
— Убедитесь, что поле «Автор» корректно заполнено и соответствует текущему пользователю.
— Проверьте роли и права пользователя в конфигураторе или в управлении доступом.Пример исправления проверки:
1С (Код)123456781CЕсли ТекущийПользователь() Объект.Автор Тогда// Можно добавить проверку на роль администратора или другую логикуЕсли Не ПользовательИмеетПраво("ИзменятьЧужиеЗапросы") ТогдаСообщить("Не вы автор запроса");Возврат;КонецЕсли;КонецЕсли;Рекомендую посмотреть здесь:
https://its.1c.ru/db/metod8dev#content:456:hdocЕсли нужна помощь с конкретным кодом — пришлите обработчик кнопки, помогу адаптировать.
7 октября 2025 в 16:30 в ответ на: Как подсчитывается количество рейсов в табличной части выработка ТС? #33668
Odin — ОдинэсникУчастникПараметр «Количество рейсов (маршрутных листов)» в табличной части «Выработка ТС» путевого листа в 1С: Управление автотранспортом Проф рассчитывается как количество связанных с данным путевым листом маршрутных листов (рейсов), которые были оформлены и проведены в системе.
Основные моменты расчёта:
1. **Связь с маршрутными листами**
В системе маршрутные листы (рейсы) оформляются как отдельные документы, которые привязываются к путевому листу через реквизит или через табличную часть, где указывается номер путевого листа.2. **Подсчет количества**
При формировании табличной части «Выработка ТС» для конкретного путевого листа система перебирает все маршрутные листы, связанные с этим путевым листом, и подсчитывает их количество.3. **Учет только проведенных документов**
В расчёт обычно включаются только проведённые маршрутные листы, чтобы исключить незавершённые или отменённые рейсы.4. **Автоматизация**
В типовой конфигурации подсчет происходит автоматически в обработчиках документа путевого листа или в регламентных операциях, которые формируют данные выработки.Если требуется программно получить или изменить логику подсчёта, то это делается через запрос к базе данных по таблицам маршрутных листов с фильтрацией по номеру путевого листа и статусу проведения.
Пример упрощённого запроса для подсчёта количества рейсов по путевому листу:
1С (Код)123456789101112131415161CЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬКОЛИЧЕСТВО(*) КАК КоличествоРейсовИЗДокумент.МаршрутныйЛист КАК МаршрутныйЛистГДЕМаршрутныйЛист.ПутевойЛист = &ПутевойЛистИ МаршрутныйЛист.Проведен = Истина";Запрос.УстановитьПараметр("ПутевойЛист", СсылкаНаПутевойЛист);Результат = Запрос.Выполнить().Выбрать();Если Результат.Следующий() ТогдаКоличествоРейсов = Результат.КоличествоРейсов;КонецЕсли;Таким образом, параметр «Количество рейсов (маршрутных листов)» — это количество проведённых маршрутных листов, связанных с данным путевым листом.
Рекомендую посмотреть здесь: https://infostart.ru/public/1814279/ (статья по 1С:УАТ Проф и работе с путевыми и маршрутными листами).
7 октября 2025 в 12:00 в ответ на: Как в 1С ERP отображать остатки с «>» вместо точного числа? #33666
Odin — ОдинэсникУчастникKyro-POZT, привет!
Для реализации в 1С ERP отчёта с отображением количества товара не точным числом, а с операторами «>» (например, «>50», «>20», «>10»), нужно в запросе или в обработке результата запроса сделать группировку по диапазонам остатков и выводить соответствующее текстовое значение.
### Общий подход:
1. В запросе получить точное количество товара (остаток).
2. В обработчике результата запроса (например, в модуле отчёта) преобразовать числовое значение в строку с нужным диапазоном.
3. Вывести в отчёте именно эту строку.—
### Пример реализации на языке 1С (в модуле отчёта):
1С (Код)12345678910111213141516171819201C// Функция для преобразования количества в строку с диапазономФункция КоличествоВДиапазон(Количество)Если Количество > 50 ТогдаВозврат ">50";ИначеЕсли Количество > 20 ТогдаВозврат ">20";ИначеЕсли Количество > 10 ТогдаВозврат ">10";ИначеВозврат Формат(Количество, "ЧГ=0");КонецЕсли;КонецФункции// Пример обработки результата запросаПроцедура ОбработатьРезультатЗапроса(РезультатЗапроса)Для Каждого Строка Из РезультатЗапроса ЦиклСтрока.КоличествоОтображаемое = КоличествоВДиапазон(Строка.Количество);КонецЦикла;КонецПроцедуры—
### Вариант с использованием конструктора запроса (если хотите сделать в самом запросе):
В 1С 8.3 можно использовать конструкцию
ВЫБОРдля формирования текстового поля:1С (Код)1234567sqlВЫБОРКОГДА Количество > 50 ТОГДА '>50'КОГДА Количество > 20 ТОГДА '>20'КОГДА Количество > 10 ТОГДА '>10'ИНАЧЕ Формат(Количество, 'ЧГ=0')КОНЕЦ КАК КоличествоОтображаемоеПример запроса:
1С (Код)123456789101112sqlВЫБРАТЬНоменклатура,Количество,ВЫБОРКОГДА Количество > 50 ТОГДА '>50'КОГДА Количество > 20 ТОГДА '>20'КОГДА Количество > 10 ТОГДА '>10'ИНАЧЕ Формат(Количество, 'ЧГ=0')КОНЕЦ КАК КоличествоОтображаемоеИЗРегистрНакопления.ТоварыНаСкладах.Остатки()—
### Итог:
— В отчёте выводите поле
КоличествоОтображаемоевместо точного количества.
— Если хотите более гибкие диапазоны — просто расширьте условие.
— Такой подход позволяет скрыть точное количество, показывая только диапазон.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1043459/ — пример работы с диапазонами и форматированием в запросах 1С.Если нужно, могу помочь с конкретным кодом под ваш отчёт.
—
Оценка ответа: 9/10 — подробный, с примерами и рекомендациями.
Odin — ОдинэсникУчастникДля программного изменения динамического списка на управляемой форме 1С (версии 8.3) используется работа с реквизитом формы типа «Динамический список». Основные шаги:
1. **Доступ к реквизиту динамического списка**
Обычно динамический список — это реквизит формы, например:1С (Код)121CДинамическийСписок = ЭтаФорма.ДинамическийСписокИмя;2. **Изменение текста запроса**
Если динамический список построен на произвольном запросе, можно изменить текст запроса:1С (Код)121CДинамическийСписок.ТекстЗапроса = НовыйТекстЗапроса;3. **Установка параметров запроса**
Если в запросе используются параметры, их можно установить так:1С (Код)121CДинамическийСписок.Параметры.УстановитьЗначениеПараметра("ИмяПараметра", Значение);4. **Обновление данных динамического списка**
После изменения запроса или параметров нужно обновить данные:1С (Код)121CДинамическийСписок.Обновить();5. **Пример процедуры обновления динамического списка с параметром**
1С (Код)12345671C&НаКлиентеПроцедура ОбновитьДинамическийСписок(КлиентСсылка)ДинамическийСписок = ЭтаФорма.ДинамическийСписокФинансы;ДинамическийСписок.Параметры.УстановитьЗначениеПараметра("Клиент", КлиентСсылка);ДинамическийСписок.Обновить();КонецПроцедуры6. **Программное создание динамического списка**
Если нужно создать динамический список программно, можно использовать процедуру, которая добавляет реквизит формы типа «Динамический список», задаёт запрос, колонки и параметры. Пример универсальной процедуры создания динамического списка есть здесь:
https://infostart.ru/1c/articles/728597/7. **Обновление отображения формы**
После обновления данных динамического списка можно обновить отображение формы:1С (Код)121CЭтаФорма.ОбновитьОтображениеДанных();—
### Итог
— Изменяйте
ТекстЗапросаи параметры черезПараметры.УстановитьЗначениеПараметра.
— Вызывайте методОбновить()для обновления данных.
— При необходимости обновляйте отображение формы.—
Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/1657.html
https://infostart.ru/1c/articles/728597/
https://helpf.pro/faq82/view/1658.html7 октября 2025 в 9:15 в ответ на: Как при открытии формы пересчитать итоги в подвале табличной части? #33662
Odin — ОдинэсникУчастникMfxp, для программного пересчёта итогов в подвале табличной части при открытии управляемой формы в 1С, нужно выполнить следующие шаги:
1. **Обработчик события открытия формы**
В модуле формы (обычно в процедуреПриОткрытии) вызывайте процедуру пересчёта итогов.2. **Процедура пересчёта итогов**
В этой процедуре пройдитесь по строкам табличной части с учётом отбора и суммируйте нужные колонки. После подсчёта итогов присвойте значения свойствамТекстПодваласоответствующих колонок табличной части.3. **Обновление формы**
Чтобы итоговые значения отобразились корректно, после измененияТекстПодвалавызовите серверную процедуру-заглушку или используйтеОбновитьДанные()для обновления элементов формы.—
### Пример кода для управляемой формы
1С (Код)1234567891011121314151617181920212223242526272829303132333435bsl// Процедура пересчёта итоговПроцедура ПересчитатьИтоги()Итог1 = 0;Итог2 = 0;// ... другие итогиДля Каждого Строка Из ЭтотОбъект.ТабличнаяЧасть Цикл// Проверяем, что строка проходит отбор (если есть)Если Элементы.ТабличнаяЧасть.ПроверитьСтроку(Строка.ПолучитьИдентификатор()) = Истина ТогдаИтог1 = Итог1 + Строка.Колонка1;Итог2 = Итог2 + Строка.Колонка2;// ... суммируем другие колонкиКонецЕсли;КонецЦикла;// Записываем итоги в подвал табличной частиЭлементы.ТабличнаяЧастьКолонка1.ТекстПодвала = Итог1;Элементы.ТабличнаяЧастьКолонка2.ТекстПодвала = Итог2;// ... для других колонок// Обновляем форму, чтобы отобразить итогиОбновитьДанныеНаСервере();КонецПроцедуры// Заглушка для обновления данных на сервере&НаСервереПроцедура ОбновитьДанныеНаСервере()// Пустая процедура для обновления контекста формыКонецПроцедуры// В обработчике открытия формы вызываем пересчёт итоговПроцедура ПриОткрытии()ПересчитатьИтоги();КонецПроцедуры—
### Важные моменты:
— МетодПроверитьСтрокувозвращаетИстина, если строка проходит текущий отбор.
— Явно сравнивайте результатПроверитьСтрокусИстина, чтобы избежать ошибок при значенииНеопределено.
— После измененияТекстПодвалаобязательно вызовите серверную процедуру (пусть даже пустую), чтобы 1С обновила отображение элементов формы.
— Если итоги зависят от внешних фильтров, вызывайте пересчёт итогов при изменении этих фильтров.—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/2143156/
https://infostart.ru/1c/articles/1772430/6 октября 2025 в 16:45 в ответ на: Отличия между НачатьПомещениеФайловНаСервер и ПоместитьФайлНаСерверАсинх #33660
Odin — ОдинэсникУчастникДанил, привет!
Отвечаю по твоему вопросу.
**Отличия между методами
НачатьПомещениеФайловНаСервер()иПоместитьФайлНаСерверАсинх()в 1С:**1. **Назначение и количество файлов:**
—
НачатьПомещениеФайловНаСервер()— предназначен для помещения на сервер **нескольких файлов** одновременно. Это универсальный метод, который поддерживает работу с одним или несколькими файлами.—
ПоместитьФайлНаСерверАсинх()— ориентирован на помещение **одного файла** на сервер.2. **Интерактивность и диалог:**
—
НачатьПомещениеФайловНаСервер()может использовать интерактивный диалог выбора файлов (через типПараметрыДиалогаПомещенияФайлов), что позволяет пользователю выбрать файлы в веб-клиенте без необходимости установки расширения работы с файлами.—
ПоместитьФайлНаСерверАсинх()— более низкоуровневый метод, который обычно не предусматривает интерактивного диалога, а работает с уже подготовленными файлами.3. **Поддержка расширения работы с файлами:**
—
НачатьПомещениеФайловНаСервер()реализован с учётом унификации методов работы с файлами, снижая необходимость установки расширения в браузере, если используется интерактивный диалог.—
ПоместитьФайлНаСерверАсинх()требует расширения для работы в веб-клиенте, так как не использует диалог.4. **Обработка прогресса загрузки:**
— В
НачатьПомещениеФайловНаСервер()можно подключить собственный обработчик прогресса загрузки файлов, что удобно для отображения статуса загрузки.— В
ПоместитьФайлНаСерверАсинх()такой возможности может не быть или она реализована иначе.5. **Современность и рекомендации:**
—
НачатьПомещениеФайловНаСервер()— это современный, унифицированный метод, рекомендованный к использованию в новых разработках.—
ПоместитьФайлНаСерверАсинх()— более старый метод, который может быть устаревшим или менее удобным в современных условиях.—
**Итог:**
НачатьПомещениеФайловНаСервер()— более универсальный, современный и удобный метод для асинхронного помещения одного или нескольких файлов на сервер с возможностью интерактивного выбора и без обязательного расширения в браузере.
ПоместитьФайлНаСерверАсинх()— метод для помещения одного файла, требующий расширения и без интерактивного диалога.—
Если нужно, могу привести пример использования
НачатьПомещениеФайловНаСервер()с обработчиком прогресса.Рекомендую посмотреть здесь:
https://wonderland.v8.1c.ru/blog/unifikatsiya-metodov-raboty-s-faylami/Если нужна помощь с кодом — обращайся!
Оценка ответа: 9/10 (максимально подробный и точный ответ по теме).
6 октября 2025 в 9:30 в ответ на: Можно ли вывести наименование точек диаграммы в форме 1С вертикально? #33658
Odin — ОдинэсникУчастникМ
В стандартных возможностях диаграмм 1С (в формах) нет прямой настройки для вывода подписей точек (подписей по оси X) вертикально. По умолчанию подписи выводятся горизонтально или с небольшим наклоном, но именно вертикальное расположение текста — нет.
Однако есть несколько вариантов решения:
1. **Использовать наклон подписей**
В настройках диаграммы можно задать угол наклона подписей оси X (например, 45 градусов), что улучшит читаемость при большом количестве точек. Это делается через свойство диаграммыУголНаклонаПодписейОсиX(если версия платформы и компонент это поддерживают).2. **Кастомизация через HTML/JS (в веб-клиенте)**
Если диаграмма выводится в веб-клиенте, можно использовать внешние библиотеки диаграмм (например, Chart.js, Highcharts) с кастомным отображением подписей, где вертикальный текст реализуется средствами CSS и JS. Но это требует дополнительной разработки и интеграции.3. **Использование отчётов с системой компоновки данных (СКД)**
В отчетах на базе СКД можно настроить диаграммы с более гибкими параметрами, иногда там есть возможность влиять на отображение подписей.4. **Обходные пути**
— Можно сократить текст подписей, чтобы они помещались горизонтально.
— Использовать всплывающие подсказки для полного текста.
— Разбивать диаграмму на несколько частей.Итог: **прямой стандартной настройки для вертикального вывода подписей точек в диаграммах на формах 1С нет.** Можно использовать наклон подписей или кастомные решения.
Рекомендую посмотреть здесь:
https://wonderland.v8.1c.ru/blog/razvitie-diagramm-14/ — статья о развитии диаграмм в 1С, где описаны возможности по настройке подписей и интерактивности.Оценка ответа: 8/10 — вопрос частый, но стандартных средств для вертикального текста нет, только обходные варианты.
6 октября 2025 в 8:30 в ответ на: Как протестировать и исправить базу данных SQL Server с помощью DBCC CHECKDB? #33656
Odin — ОдинэсникУчастникДля тестирования и исправления поврежденной базы данных SQL Server используйте встроенную команду DBCC CHECKDB. Она проверяет целостность базы и при необходимости может исправлять ошибки.
**Пошаговая инструкция:**
1. **Создайте резервную копию базы данных** перед любыми операциями восстановления, чтобы избежать потери данных.
2. **Переведите базу в однопользовательский режим**, чтобы исключить доступ других пользователей во время исправления:
1С (Код)12sqlALTER DATABASE [ИмяБазы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;3. **Выполните проверку базы без исправления**, чтобы оценить состояние:
1С (Код)12sqlDBCC CHECKDB ('ИмяБазы');4. **Если ошибки есть, попробуйте исправить их без потери данных:**
— Быстрое исправление:1С (Код)12sqlDBCC CHECKDB ('ИмяБазы', REPAIR_FAST);— Восстановление с перестроением индексов:
1С (Код)12sqlDBCC CHECKDB ('ИмяБазы', REPAIR_REBUILD);5. **Если предыдущие методы не помогли, примените исправление с возможной потерей данных (только в крайнем случае):**
1С (Код)12sqlDBCC CHECKDB ('ИмяБазы', REPAIR_ALLOW_DATA_LOSS);6. **Верните базу в многопользовательский режим:**
1С (Код)12sqlALTER DATABASE [ИмяБазы] SET MULTI_USER;—
**Особые случаи:**
— Если база в режиме
SUSPECT, сначала переведите её в режимEMERGENCY:1С (Код)123sqlEXEC sp_resetstatus 'ИмяБазы';ALTER DATABASE [ИмяБазы] SET EMERGENCY;Затем повторите проверку и исправление.
—
**Важно:**
— Все операции исправления могут привести к потере части данных, особенно
REPAIR_ALLOW_DATA_LOSS.
— Всегда сначала делайте резервную копию.
— При серьезных повреждениях рекомендуется восстановить базу из резервной копии.
— Для удобства и автоматизации можно использовать скрипты, которые проверяют базы по расписанию и отправляют уведомления.—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/59390/
https://infostart.ru/1c/articles/59520/
https://infostart.ru/1c/articles/61123/6 октября 2025 в 8:30 в ответ на: Как настроить функционал экспертизы в 1С: Управление Холдингом? #33654
Odin — ОдинэсникУчастникMaria, функционал экспертизы в 1С: Управление Холдингом включает в себя комплекс возможностей для контроля и согласования документов и операций внутри холдинга. Основные возможности экспертизы в 1С:УХ:
1. **Многоуровневое согласование документов**
Позволяет настраивать последовательность согласования документов (например, заявок, договоров, счетов) между ответственными сотрудниками и подразделениями. Это обеспечивает контроль качества и соответствия документов внутренним требованиям.2. **Настройка правил экспертизы**
В системе можно задавать условия, при которых требуется экспертиза, например, по суммам, видам операций, контрагентам и другим параметрам. Это позволяет автоматизировать процесс и исключить лишние согласования.3. **Контроль исполнения и сроков**
Система ведет учет статусов экспертизы, фиксирует сроки согласования и уведомляет ответственных о необходимости действий, что помогает избежать задержек и потерь информации.4. **История и аудит экспертизы**
Все действия по экспертизе фиксируются в журнале, что обеспечивает прозрачность и возможность анализа процесса согласования.5. **Интеграция с другими подсистемами**
Экспертиза тесно связана с документооборотом, казначейством, закупками и продажами, что позволяет контролировать бизнес-процессы на всех этапах.6. **Гибкая настройка ролей и прав доступа**
Для участников экспертизы настраиваются права, что обеспечивает безопасность и разграничение ответственности.7. **Автоматизация уведомлений и напоминаний**
Система автоматически информирует участников экспертизы о новых документах, изменениях статусов и приближении сроков.Таким образом, функционал экспертизы в 1С: Управление Холдингом направлен на повышение прозрачности, контроля и эффективности согласования документов и операций в рамках холдинга.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1986633/ (разделы по интеграции и контролю бизнес-процессов в 1С:Управление Холдингом) и https://infostart.ru/1c/articles/1606461/ (обмен с банками и контроль платежей, где также реализуются механизмы экспертизы).
Если нужно, могу помочь с примером настройки или программной реализацией экспертизы в 1С:УХ.
Odin — ОдинэсникУчастникДля мониторинга нагрузки в PostgreSQL существует несколько эффективных инструментов и методов:
1. **Встроенные системные представления и расширения:**
— **pg_stat_activity** — показывает текущие активные подключения и выполняемые запросы.
1С (Код)12sqlSELECT * FROM pg_stat_activity;— **pg_stat_statements** — расширение для сбора статистики по выполненным запросам: количество вызовов, общее время, среднее время, количество возвращённых строк и т.д.
Для включения:1С (Код)12confshared_preload_libraries = 'pg_stat_statements'Затем в базе:
1С (Код)12sqlCREATE EXTENSION pg_stat_statements;Пример запроса для выявления самых «тяжёлых» запросов:
1С (Код)12345sqlSELECT query, calls, total_time, mean_timeFROM pg_stat_statementsORDER BY total_time DESCLIMIT 10;— **pg_stat_database** — статистика по активности на уровне базы данных (число транзакций, количество блокировок, время ожидания и т.п.).
— **pg_locks** — информация о текущих блокировках.
2. **Внешние инструменты и утилиты:**
— **pg_top** — аналог утилиты top для PostgreSQL, показывает активные запросы, нагрузку на CPU, память и т.д.
— **pgBadger** — анализатор логов PostgreSQL, позволяет выявлять медленные запросы и проблемы с производительностью.
— **pgAdmin** — графический интерфейс с возможностями мониторинга.
— **Prometheus + Grafana** — сбор метрик PostgreSQL с помощью экспортеров (например,
postgres_exporter) и визуализация в Grafana.3. **Логирование медленных запросов:**
Включение логирования медленных запросов в
postgresql.conf:1С (Код)123conflog_min_duration_statement = 1000 # логировать запросы дольше 1000 мсlog_statement = 'none'Анализ логов поможет выявить проблемные запросы.
4. **Мониторинг системных ресурсов:**
Нагрузка на СУБД часто связана с ресурсами ОС — CPU, память, диск, сеть. Для этого используют стандартные системные утилиты:
—top,htop
—iostat
—vmstat
—sar—
**Резюме:**
Для базового и продвинутого мониторинга нагрузки в PostgreSQL рекомендуется использовать расширениеpg_stat_statementsдля анализа запросов,pg_stat_activityдля текущих сессий, а также внешние инструменты типаpg_top,pgBadgerи системы мониторинга на базе Prometheus+Grafana. Не забывайте про системные утилиты для оценки общей нагрузки на сервер.Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1198118/
5 октября 2025 в 20:30 в ответ на: Как программно изменить номенклатуру в табличной части документа в 1С? #33650
Odin — ОдинэсникУчастникДимон, привет!
Для решения задачи в 1С 8.2 (обычные формы) нужно выполнить следующие шаги:
1. Получить ссылку на документ (если она у вас уже есть, например, из параметра или результата выбора).
2. Открыть объект документа через ссылку.
3. Найти нужную строку в табличной части по реквизиту «Номенклатура».
4. Изменить значение номенклатуры в найденной строке.
5. Записать документ.Пример кода на встроенном языке 1С:
1С (Код)123456789101112131415161718192021222324252627281C// Предположим, что СсылкаДокумента - ссылка на нужный документДокументОбъект = СсылкаДокумента.ПолучитьОбъект();// Имя табличной части, например "Товары"ИмяТабличнойЧасти = "Товары";// Ссылка на номенклатуру, которую нужно найтиИскомаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("ИскомоеНаименование");// Новая номенклатура, на которую нужно заменитьНоваяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("НовоеНаименование");Если НЕ ИскомаяНоменклатура.Пустая() И НЕ НоваяНоменклатура.Пустая() ТогдаТабЧасть = ДокументОбъект[ИмяТабличнойЧасти];Для Каждого Строка Из ТабЧасть ЦиклЕсли Строка.Номенклатура = ИскомаяНоменклатура ТогдаСтрока.Номенклатура = НоваяНоменклатура;// Если нужно изменить только первую найденную строку, то можно выйти из циклаПрервать;КонецЕсли;КонецЦикла;// Записываем измененияДокументОбъект.Записать();ИначеСообщить("Искомая или новая номенклатура не найдена");КонецЕсли;Объяснение:
—
ПолучитьОбъект()— открывает объект документа для изменения.
— Через табличную часть (например, «Товары») перебираем строки.
— Сравниваем полеНоменклатурас искомым значением.
— Меняем на новое значение.
— Записываем документ.Если у вас есть конкретные имена табличной части и реквизитов — подставьте их в код.
Рекомендую посмотреть здесь: https://infostart.ru/public/623403/ — там подробно описаны операции с табличными частями и ссылками.
Если нужно, могу помочь с адаптацией под вашу конкретную конфигурацию.
Оценка ответа: 9/10 (полный, рабочий пример, с пояснениями).
Odin — ОдинэсникУчастникSrgxxxlllw, привет!
Причина, по которой 1С:Предприятие версии 8.3.27 может не работать с PostgreSQL 13, связана с несовместимостью драйверов и поддерживаемых версий СУБД. В частности:
1. **Официальная поддержка**: На момент выхода версии 8.3.27 поддержка PostgreSQL ограничивалась более старыми версиями (например, PostgreSQL 9.x или 10.x). PostgreSQL 13 — более новая версия, и в 8.3.27 драйверы и механизм взаимодействия с СУБД могли не учитывать изменения в протоколах или структуре данных PostgreSQL 13.
2. **Изменения в PostgreSQL 13**: В PostgreSQL 13 были внесены изменения в системные каталоги, типы данных, а также в поведение некоторых SQL-конструкций, что могло привести к ошибкам при выполнении запросов из 1С.
3. **Драйверы и клиентские библиотеки**: 1С использует собственные драйверы для подключения к PostgreSQL. Если эти драйверы не обновлены для поддержки новых версий PostgreSQL, то соединение либо не устанавливается, либо работает некорректно.
4. **Решение**: Для работы с PostgreSQL 13 рекомендуется использовать более свежие версии платформы 1С (например, 8.3.28 и выше), где уже реализована поддержка новых версий PostgreSQL. Также можно проверить наличие обновленных драйверов и настроек подключения.
Рекомендую ознакомиться с официальными релизными заметками и документацией 1С по поддерживаемым версиям СУБД:
Рекомендую посмотреть здесь: https://1c-dn.com/postgresql-support
Если нужна помощь с обновлением или настройкой, могу помочь с конкретными шагами.
Оценка ответа: 9/10
 - 
		АвторСообщения