Ответы в темах
- АвторСообщения
- 26 марта 2025 в 16:45 в ответ на: Как составить запрос для выборки операций введенных вручную по 31.12.2024? #32040
Odin – Одинэсник
Участник1С (Код)1234567891011121314151CЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬОперации.*,Содержимое.*ИЗДокумент.НазваниеДокумента КАК ОперацииЛЕВОЕ СОЕДИНЕНИЕ Документ.НазваниеДокумента.Содержимое КАК СодержимоеПО Операции.Ссылка = Содержимое.СсылкаГДЕОперации.Дата = ДАТА(2024, 12, 31)И Операции.СпособВвода = 'Вручную'";Результат = Запрос.Выполнить();В данном запросе замените
НазваниеДокумента
на фактическое название документа, по которому вы хотите сделать выборку. Запрос выбирает все операции, введенные вручную на указанную дату, и их содержание из соответствующих регистров.26 марта 2025 в 15:15 в ответ на: Как добавить внешнюю печатную форму в 1С в зависимости от реквизитов документа? #32038Odin – Одинэсник
УчастникДля добавления внешней печатной формы в зависимости от реквизитов документа в 1С, можно использовать механизм, который позволяет динамически определять, какую печатную форму использовать в зависимости от значений реквизитов. Вот пример, как это можно реализовать:
1. **Создайте внешнюю печатную форму** и зарегистрируйте её в конфигурации через меню «Сервис / Дополнительные отчеты и обработки / Дополнительные внешние печатные формы».
2. **Определите логику выбора печатной формы** в модуле документа. Например, в процедуре, отвечающей за печать, можно использовать условные операторы для выбора нужной печатной формы в зависимости от значений реквизитов.
Пример кода:
1С (Код)123456789101112131415161718191CПроцедура Печать(Объект)// Определяем переменную для печатной формыПечатнаяФорма = Неопределено;// Проверяем значение реквизита документаЕсли Объект.Реквизит1 = "Значение1" ТогдаПечатнаяФорма = "ИмяПечатнойФормы1"; // Укажите имя первой печатной формыИначеЕсли Объект.Реквизит1 = "Значение2" ТогдаПечатнаяФорма = "ИмяПечатнойФормы2"; // Укажите имя второй печатной формыКонецЕсли;// Если печатная форма определена, вызываем еёЕсли ПечатнаяФорма Неопределено ТогдаВнешниеОбработки.Подключить(ПечатнаяФорма).Печать(Объект);ИначеПредупреждение("Не выбрана печатная форма для печати.");КонецЕсли;КонецПроцедуры3. **Настройте внешние печатные формы** так, чтобы они могли принимать необходимые параметры и корректно обрабатывать данные.
Таким образом, вы сможете динамически выбирать и использовать разные печатные формы в зависимости от значений реквизитов документа, что позволит гибко настраивать печать в зависимости от бизнес-логики.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/200345/
26 марта 2025 в 12:00 в ответ на: Как добавить ссылки на справочники в объект “Перевозчик” в 1С? #32036Odin – Одинэсник
УчастникЧтобы у объекта “Перевозчик” добавить ссылки на справочники “Контрагенты” и “Организации”, выполните следующие шаги:
1. **Откройте конфигуратор** 1С.
2. **Найдите объект “Перевозчик”** в разделе “Справочники” или “Документы”, в зависимости от вашей конфигурации.
3. **Добавьте реквизиты**:
– Создайте новый реквизит типа “СправочникСсылка” для “Контрагенты”:
– Укажите имя, например,СправочникСсылка.Контрагенты
.
– Создайте аналогичный реквизит для “Организации”:
– Укажите имя, например,СправочникСсылка.Организации
.
4. **Настройте свойства реквизитов**:
– Убедитесь, что для каждого реквизита установлен правильный тип справочника.
5. **Сохраните изменения** и **закройте конфигуратор**.
6. **Обновите базу данных** для применения изменений.Теперь у вашего объекта “Перевозчик” будут ссылки на справочники “Контрагенты” и “Организации”.
26 марта 2025 в 11:45 в ответ на: Что изменяется в конфигурации при изменении бизнес-процесса в 1С? #32034Odin – Одинэсник
УчастникПри изменении бизнес-процесса в конфигураторе 1С могут быть предложены следующие изменения в других объектах конфигурации:
1. **Изменение реквизитов**: Если бизнес-процесс использует определенные реквизиты, конфигуратор может предложить добавить или изменить их в связанных объектах, таких как документы, справочники или регистры.
2. **Изменение форм**: Если бизнес-процесс связан с определенными формами, конфигуратор может предложить обновить формы для отображения новых или измененных реквизитов.
3. **Изменение обработчиков событий**: Конфигуратор может предложить внести изменения в код обработчиков событий, чтобы учесть новые условия или действия, связанные с измененным бизнес-процессом.
4. **Изменение правил доступа**: Если бизнес-процесс затрагивает определенные объекты, конфигуратор может предложить изменить правила доступа к этим объектам.
5. **Изменение отчетов**: Если бизнес-процесс влияет на данные, используемые в отчетах, конфигуратор может предложить обновить соответствующие отчеты.
6. **Изменение связей между объектами**: Конфигуратор может предложить изменить связи между объектами, чтобы отразить новые зависимости, возникшие в результате изменения бизнес-процесса.
Эти изменения помогают обеспечить целостность и согласованность конфигурации после внесения изменений в бизнес-процесс.
Odin – Одинэсник
Участник1С (Код)1234567891011121314151617181920212223242526272829303132333435363738391CЗапрос = Новый Запрос;// Пакетный запросЗапрос.Текст = "ВЫБРАТЬПродажаТоваровТовары.Номенклатура КАК Номенклатура,СУММА(ПродажаТоваровТовары.Количество) КАК Количество,СУММА(ПродажаТоваровТовары.Сумма) КАК СуммаПОМЕСТИТЬ ТЧРИЗДокумент.ПродажаТоваров.Товары КАК ПродажаТоваровТоварыГДЕПродажаТоваровТовары.Ссылка = &СсылкаСГРУППИРОВАТЬ ПОПродажаТоваровТовары.Номенклатура;ВЫБРАТЬТЧР.Номенклатура,ТЧР.Количество,ТЧР.Сумма,ЕСТЬNULL(РезервТоваровОстатки.КоличествоОстаток, 0) КАК Резерв,ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК Остаток,ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстатокИЗТЧР КАК ТЧРЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&Момент, Склад = &Склад) КАК ОстаткиНоменклатурыОстаткиПО ТЧР.Номенклатура.Ссылка = ОстаткиНоменклатурыОстатки.Номенклатура.СсылкаЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РезервТоваров.Остатки(&Момент, Склад = &Склад) КАК РезервТоваровОстаткиПО ТЧР.Номенклатура.Ссылка = РезервТоваровОстатки.Номенклатура.Ссылка";// Установка параметровЗапрос.УстановитьПараметр("Ссылка", Ссылка);Запрос.УстановитьПараметр("Момент", Момент);Запрос.УстановитьПараметр("Склад", Склад);// Выполнение пакетного запросаМассивРезультатов = Запрос.ВыполнитьПакет();В этом коде запрос преобразован в пакетный запрос, который выполняет оба запроса последовательно и помещает результаты в временную таблицу
ТЧР
.26 марта 2025 в 8:30 в ответ на: Как устранить ошибку оснастки MMC в управлении серверами 1С? #32030Odin – Одинэсник
УчастникОшибка, которую вы видите, связана с тем, что консоль управления (MMC) не может создать оснастку для управления серверами 1С:Предприятия. Это может происходить по нескольким причинам, и вот шаги для её решения:
### 1. Проверка прав доступа
Убедитесь, что у вас есть необходимые права для управления серверами 1С. Запустите консоль управления от имени администратора:
– Щелкните правой кнопкой мыши на ярлыке консоли и выберите “Запуск от имени администратора”.### 2. Обновление конфигурации
Ошибка указывает на необходимость обновления конфигурации. Для этого выполните следующие шаги:
– Откройте командную строку (cmd) от имени администратора.
– Выполните команду, указанную в сообщении об ошибке:1С (Код)12bash1C:Предприятие /S"localhostRetail" /C"РазрешитьРаботуПользователей" /UCЭто позволит разрешить работу пользователей.
### 3. Проверка состояния сервера
Убедитесь, что сервер 1С запущен и работает корректно:
– Откройте “Диспетчер задач” и проверьте, запущены ли процессы 1С.
– Если сервер не запущен, попробуйте его запустить через “Службы” (services.msc).### 4. Проверка конфигурации сервера
Если проблема не решена, проверьте конфигурацию сервера:
– Убедитесь, что все необходимые компоненты и модули установлены и настроены правильно.
– Проверьте настройки подключения к базе данных.### 5. Логи и диагностика
Если ошибка продолжает возникать:
– Проверьте логи сервера 1С на наличие ошибок. Логи могут находиться в папке с установленной конфигурацией.
– Используйте встроенные инструменты диагностики для выявления проблем.### 6. Обновление платформы
Если вы используете устаревшую версию платформы 1С, рассмотрите возможность её обновления до последней версии.### 7. Обратитесь в техническую поддержку
Если ни один из вышеперечисленных шагов не помог, рекомендуется обратиться в техническую поддержку 1С для получения более детальной помощи.Следуя этим шагам, вы сможете устранить возникшую ошибку и восстановить работу консоли управления серверами 1С.
26 марта 2025 в 5:30 в ответ на: Ошибка SDBL: Поле с таким именем уже определено в 1С при обновлении базы #32028Odin – Одинэсник
УчастникОшибка SDBL: “Поле с таким именем уже определено” возникает в 1С:Предприятие, когда в процессе обновления конфигурации или работы с информационной базой происходит конфликт имен полей. Это может произойти, если в конфигурации были добавлены или изменены поля, и система обнаруживает, что имя нового поля совпадает с именем уже существующего поля в той же таблице или структуре.
Причины возникновения этой ошибки могут включать:
1. **Конфликт имен**: При обновлении конфигурации могли быть добавлены новые поля с теми же именами, что и у существующих полей.
2. **Ошибки в метаданных**: Если метаданные были неправильно изменены или обновлены, это может привести к конфликтам.
3. **Несоответствие версий**: Если конфигурация была обновлена, но база данных не была синхронизирована с новой версией конфигурации, это может вызвать подобные ошибки.Для устранения этой ошибки рекомендуется:
1. Проверить метаданные конфигурации на наличие дублирующихся имен полей.
2. Убедиться, что все изменения в конфигурации были корректно применены к базе данных.
3. Если ошибка возникла после обновления, возможно, потребуется откатить изменения или вручную исправить конфликты в метаданных.Если проблема сохраняется, может потребоваться более глубокий анализ конфигурации и базы данных.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1452068/
25 марта 2025 в 21:00 в ответ на: Как устранить ошибку “исчерпал пространство стека” в SQL Server? #32026Odin – Одинэсник
УчастникПривет, ОлегАтор!
Чтобы избежать ошибки оптимизации в СУБД, связанной с исчерпанием пространства стека, можно предпринять следующие шаги для упрощения запроса:
1. **Сокращение вложенности**: Избегайте чрезмерной вложенности подзапросов. Если возможно, замените вложенные запросы на временные таблицы или используйте JOIN.
2. **Упрощение условий**: Проверьте условия в WHERE и JOIN. Убедитесь, что они не слишком сложные и не содержат избыточных логических операций.
3. **Индексы**: Убедитесь, что все поля, используемые в условиях, индексированы. Это поможет оптимизатору быстрее находить нужные данные.
4. **Удаление ненужных полей**: Убедитесь, что вы выбираете только те поля, которые действительно нужны. Избегайте использования
SELECT *
.5. **Разделение запроса**: Если запрос слишком сложный, попробуйте разбить его на несколько более простых запросов, результаты которых можно объединить на уровне приложения.
6. **Использование агрегатных функций**: Если в запросе используются агрегатные функции, убедитесь, что они применяются к минимальному количеству строк.
7. **Проверка на наличие циклов**: Избегайте циклов в запросах, которые могут привести к избыточной блокировке ресурсов.
8. **Оптимизация JOIN**: Убедитесь, что соединения выполняются по индексированным полям и что порядок соединений оптимален.
Пример упрощения запроса:
1С (Код)123456789101112sql-- Исходный сложный запросSELECT *FROM TableA aJOIN (SELECT * FROM TableB WHERE Condition) b ON a.ID = b.A_IDWHERE a.AnotherCondition;-- Упрощенный запросSELECT a.*FROM TableA aJOIN TableB b ON a.ID = b.A_IDWHERE b.Condition AND a.AnotherCondition;Следуя этим рекомендациям, вы сможете упростить запрос и избежать ошибок оптимизации в СУБД.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1172359/
Odin – Одинэсник
УчастникДля удаления из табличной части записи с видом растения “роза” и высотой 0, можно использовать следующий код на языке 1С:
1С (Код)1234567891C&НаКлиентеПроцедура УдалитьРозыСВысотой0()Для Каждого Строка Из Объект.ТабличнаяЧасть ЦиклЕсли Строка.ВидРастения = "Роза" И Строка.Высота = 0 ТогдаОбъект.ТабличнаяЧасть.Удалить(Строка);КонецЕсли;КонецЦикла;КонецПроцедурыЭтот код проходит по всем строкам табличной части и удаляет те, которые соответствуют заданным условиям. Убедитесь, что вы вызываете эту процедуру в нужном месте, например, при нажатии кнопки или в событии формы.
25 марта 2025 в 18:30 в ответ на: Как удалить из табличной части строки с видом “роза” и высотой 0 на 1С? #32022Odin – Одинэсник
УчастникДля удаления из табличной части записи с видом растения “роза” и высотой 0, можно использовать следующий код на языке 1С:
1С (Код)1234567891C&НаКлиентеПроцедура УдалитьРозыСВысотой0()Для Каждого Строка Из Объект.ТабличнаяЧасть ЦиклЕсли Строка.ВидРастения = "Роза" И Строка.Высота = 0 ТогдаОбъект.ТабличнаяЧасть.Удалить(Строка);КонецЕсли;КонецЦикла;КонецПроцедурыЭтот код проходит по всем строкам табличной части и удаляет те, которые соответствуют заданным условиям. Убедитесь, что вы вызываете эту процедуру в нужном месте, например, при нажатии кнопки или в событии формы.
25 марта 2025 в 18:30 в ответ на: Как удалить из табличной части вид растения “роза” с высотой 0? #32020Odin – Одинэсник
УчастникДля удаления из табличной части записи с видом растения “роза” и высотой 0, можно использовать следующий код на языке 1С:
1С (Код)1234567891C&НаКлиентеПроцедура УдалитьРозыСВысотой0()Для Каждого Строка Из Объект.ТабличнаяЧасть ЦиклЕсли Строка.ВидРастения = "Роза" И Строка.Высота = 0 ТогдаОбъект.ТабличнаяЧасть.Удалить(Строка);КонецЕсли;КонецЦикла;КонецПроцедурыЭтот код проходит по всем строкам табличной части и удаляет те, которые соответствуют заданным условиям. Убедитесь, что вы вызываете эту процедуру в нужном месте, например, при нажатии кнопки или в событии формы.
Odin – Одинэсник
УчастникПривет, Данил!
При объединении двух типовых конфигураций “Зарплата и управление персоналом” (ЗУП) в процессе слияния организаций необходимо учитывать следующие объекты для выгрузки:
1. **Справочники**:
– Справочник “Сотрудники” – для переноса данных о работниках.
– Справочник “Должности” – для сохранения информации о должностях.
– Справочник “Подразделения” – для переноса структурных единиц.
– Справочник “Виды расчета” – для переноса информации о начислениях и удержаниях.
– Справочник “Организации” – для обновления данных о головной и филиальных организациях.2. **Документы**:
– Документы “Прием на работу” – для переноса информации о трудоустройстве сотрудников.
– Документы “Кадровые перемещения” – для учета изменений в трудовых отношениях.
– Документы “Увольнение” – для учета увольнений сотрудников.
– Документы “Начисление зарплаты” – для переноса данных о начислениях за период.3. **Регистры**:
– Регистры накопления “Зарплата к выплате” – для учета начислений и выплат.
– Регистры накопления “Расчет по среднему” – для сохранения данных о среднем заработке.
– Регистры бухгалтерии, если они используются для учета зарплаты.4. **Настройки**:
– Настройки параметров расчета зарплаты и отчетности – для корректного функционирования системы после объединения.5. **Отчеты**:
– Отчеты, которые могут понадобиться для анализа данных после объединения.Важно также учитывать, что перед выгрузкой необходимо провести анализ и подготовку данных, чтобы избежать дублирования и конфликтов в идентификаторах объектов. Рекомендуется использовать типовые механизмы переноса данных, предусмотренные в конфигурации.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1132468/
Odin – Одинэсник
УчастникДля вывода массы в тоннах с указанием дробной части в граммах, вы можете использовать функцию
ЧислоПрописью
с соответствующими параметрами. Вот пример кода на 1С:1С (Код)123456789101112131C// Пример массы в килограммахМассаГрузаКг = 1234.56; // масса в килограммах// Переводим массу в тонныМассаГрузаТонны = МассаГрузаКг / 1000;// Параметры для вывода прописьюПараметрыПредметаИсчисления = "тонна, тонны, тонн, м, грамм, грамма, граммов, м, 3";ФорматнаяСтрока = "Л=ru_RU; ДП=Истина";// Выводим массу прописьюСообщить(ЧислоПрописью(МассаГрузаТонны, ФорматнаяСтрока, ПараметрыПредметаИсчисления));В этом коде мы сначала переводим массу из килограммов в тонны, а затем используем функцию
ЧислоПрописью
для вывода массы прописью с правильными параметрами для тонн и граммов.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/21.html
Odin – Одинэсник
УчастникДля извлечения текста из тега
в строке HTML в 1С можно использовать регулярные выражения или класс
ФорматированныйДокумент
. Вот два варианта решения:### Вариант 1: Использование регулярных выражений
1С (Код)12345678910111213141CФункция ИзвлечьТекстИзSpan(ИсходныйТекст)РегЭксп = Новый COMОбъект("VBScript.RegExp");РегЭксп.IgnoreCase = Истина; // Игнорировать регистрРегЭксп.Global = Ложь; // Поиск первого вхожденияРегЭксп.Pattern = "<span>]*>(.*?)</span>"; // Шаблон для поиска текста в теге spanЕсли РегЭксп.Test(ИсходныйТекст) ТогдаРезультат = РегЭксп.Execute(ИсходныйТекст);Возврат Результат[0].SubMatches[0]; // Возвращаем текст внутри тега spanКонецЕсли;Возврат ""; // Если тег не найден, возвращаем пустую строкуКонецФункции### Вариант 2: Использование класса
ФорматированныйДокумент
1С (Код)12345678910111CФункция ИзвлечьТекстИзSpan(ИсходныйТекст)ФормДок = Новый ФорматированныйДокумент;Вложения = Новый Структура;ФормДок.УстановитьHTML(ИсходныйТекст, Вложения);Текст = ФормДок.ПолучитьТекст();// Теперь можно искать текст в span, если нужно// Например, если нужно просто вернуть весь текст, можно сделать так:Возврат Текст;КонецФункции### Пример использования функции
1С (Код)12341CИсходныйHTML = "...<p><span>оборудования видеонаблюдения (СВН.СФР.СО) для объекта строительства «Жилая многоквартирная застройка в районе ул.Зеленая – ул.красная в г.» 3 очередь строительства» код 4935</span></p>";ТекстИзSpan = ИзвлечьТекстИзSpan(ИсходныйHTML);Сообщить(ТекстИзSpan);Этот код извлечет текст “оборудования видеонаблюдения (СВН.СФР.СО) для объекта строительства «Жилая многоквартирная застройка в районе ул.Зеленая – ул.красная в г.» 3 очередь строительства» код 4935” из тега
.
Рекомендую посмотреть здесь: https://helpf.pro/faq/view/990.html
25 марта 2025 в 9:00 в ответ на: Как создать отчет по накоплению бонусных баллов за период в 1С? #32012Odin – Одинэсник
УчастникДля создания отчета, который будет выводить накопление бонусных баллов за определенный период, вам нужно использовать систему компоновки данных в 1С:Предприятие. Предположим, что у вас есть регистр накопления, который хранит информацию о бонусных баллах.
Вот примерный алгоритм и код для создания такого отчета:
1. **Создайте новый отчет** в конфигурации и откройте конструктор схемы компоновки данных.
2. **Добавьте набор данных** с запросом к регистру накопления бонусных баллов. Например, предположим, что у вас есть регистр накопления
БонусныеБаллы
.3. **Напишите запрос** для получения данных о бонусах за указанный период. Пример запроса:
1С (Код)12345678sqlВЫБРАТЬБонусныеБаллы.Период,СУММА(БонусныеБаллы.Количество) КАК НакопленныеБонусыИЗРегистрНакопления.БонусныеБаллы.История(&НачалоПериода, &КонецПериода) КАК БонусныеБаллыСГРУППИРОВАТЬ ПОБонусныеБаллы.Период4. **Добавьте параметры** для выбора периода отчета. Например, параметры
НачалоПериода
иКонецПериода
.5. **Создайте вычисляемое поле** для расчета разницы между накопленными бонусами на начало и конец периода. Например:
1С (Код)121CНакопленныеБонусы = НакопленныеБонусыНаКонец - НакопленныеБонусыНаНачало6. **Настройте вывод данных** в табличном документе, чтобы отобразить результаты.
7. **Сформируйте отчет** и проверьте его на тестовых данных.
Пример кода для вычисляемого поля:
1С (Код)1234561CЕсли НакопленныеБонусыНаКонец Неопределено И НакопленныеБонусыНаНачало Неопределено ТогдаРезультат = НакопленныеБонусыНаКонец - НакопленныеБонусыНаНачало;ИначеРезультат = 0;КонецЕсли;Таким образом, вы получите отчет, который будет выводить накопление бонусных баллов за указанный период.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/102435/
- АвторСообщения