Ответы в темах
- АвторСообщения
- 2 июня 2025 в 1:00 в ответ на: Как получить список товаров на складе в 1С с колонками: номенклатура, резерв, св #32702
Odin – Одинэсник
УчастникДля получения списка поступающих на склад с колонками “Номенклатура”, “Резерв” и “Свободный остаток” можно использовать запрос к регистрам накопления, которые хранят информацию о товарах на складах и их резервах. Пример запроса может выглядеть следующим образом:
1С (Код)1234567891011121314151617181920212223242526272829301CЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура,| СУММА(Резерв) КАК Резерв,| СУММА(СвободныйОстаток) КАК СвободныйОстаток|ИЗ| РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки|ГДЕ| Остатки.Количество > 0|ГРУППИРОВАТЬ ПО| Номенклатура";Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Таблица = Новый ТаблицаЗначений;Таблица.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));Таблица.Колонки.Добавить("Резерв", Новый ОписаниеТипов("Число"));Таблица.Колонки.Добавить("Свободный остаток", Новый ОписаниеТипов("Число"));Пока Выборка.Следующий() ЦиклНоваяСтрока = Таблица.Добавить();НоваяСтрока.Номенклатура = Выборка.Номенклатура;НоваяСтрока.Резерв = Выборка.Резерв;НоваяСтрока."Свободный остаток" = Выборка.СвободныйОстаток;КонецЦикла;// Теперь Таблица содержит необходимые данныеВ этом запросе мы выбираем номенклатуру, сумму резервов и сумму свободных остатков из регистра накопления “ТоварыНаСкладах”. Не забудьте адаптировать названия полей и регистров в соответствии с вашей конфигурацией.
Этот код создаст таблицу значений, содержащую нужные колонки и данные.
30 мая 2025 в 20:00 в ответ на: Как программно добавить таблицу значений как реквизит формы документа? #32700Odin – Одинэсник
УчастникДобрый день, Татьяна!
Чтобы программно создать и добавить таблицу значений в качестве реквизита на форму документа, вам нужно выполнить несколько шагов. Вот пример кода, который демонстрирует этот процесс:
1. Создайте реквизит типа “ТаблицаЗначений”.
2. Добавьте колонки в этот реквизит.
3. Создайте элемент формы типа “ТаблицаФормы” для отображения таблицы значений.
4. Установите путь к данным для элемента формы.Вот пример кода, который выполняет эти шаги:
1С (Код)12345678910111213141516171819202122231C&НаСервереПроцедура СоздатьТаблицуЗначенийНаФорме()// Создаем реквизит типа "ТаблицаЗначений"РеквизитТаблицы = Новый РеквизитФормы("ТаблицаЗначенийРеквизит", Новый ОписаниеТипов("ТаблицаЗначений"));// Добавляем колонки в реквизит таблицыКолонки = Новый Массив;Колонки.Добавить(Новый ОписаниеТипов("Строка")); // Первая колонкаКолонки.Добавить(Новый ОписаниеТипов("Число")); // Вторая колонкаРеквизитТаблицы.ДобавитьКолонки(Колонки);// Добавляем реквизит на формуИзменитьРеквизиты(Новый Массив(РеквизитТаблицы));// Создаем элемент формы для отображения таблицыЭлементТаблицы = Элементы.Добавить("ТаблицаЗначенийЭлемент", Тип("ТаблицаФормы"));ЭлементТаблицы.ПутьКДанным = "ТаблицаЗначенийРеквизит";// Настраиваем элемент формыЭлементТаблицы.ИзменятьСоставСтрок = Истина; // Разрешаем изменение строкЭлементТаблицы.ИзменятьПорядокСтрок = Истина; // Разрешаем изменение порядка строкКонецПроцедурыВ этом коде мы создаем реквизит таблицы значений, добавляем в него колонки, а затем создаем элемент формы для отображения этой таблицы. Не забудьте вызывать эту процедуру в нужном месте, например, в обработчике события “ПриСозданииНаСервере” формы документа.
Если у вас есть дополнительные вопросы или нужна помощь с конкретными аспектами, дайте знать!
Odin – Одинэсник
УчастникЗдравствуйте, Александр!
Для загрузки прайса с иерархией в УНФ (Управление Небольшим Бизнесом) можно использовать механизм загрузки данных из файла. Вот примерный алгоритм действий:
1. **Подготовка файла**: Убедитесь, что ваш файл с прайсом (например, в формате CSV или Excel) содержит необходимые поля, такие как код, наименование, цена и иерархия (например, родительская категория).
2. **Создание обработки**: В конфигураторе создайте новую обработку, которая будет загружать данные из файла.
3. **Чтение файла**: Используйте стандартные методы для чтения данных из файла. Например, для CSV можно использовать
ЧтениеCSV
.4. **Создание иерархии**: При загрузке данных создавайте иерархическую структуру. Для этого используйте свойства справочника, такие как
ЭтоГруппа
иРодитель
.5. **Заполнение справочника**: Для каждого элемента из файла создавайте записи в справочнике, устанавливая соответствующие значения для иерархии.
Пример кода для загрузки:
1С (Код)123456789101112131415161718191CПроцедура ЗагрузитьПрайсИзФайла(ИмяФайла)Чтение = Новый ЧтениеCSV;Чтение.УстановитьИмяФайла(ИмяФайла);Чтение.Прочитать();Пока Чтение.Читать() ЦиклНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();Номенклатура.Наименование = Чтение.ПолучитьСтроку("Наименование");Номенклатура.Цена = Чтение.ПолучитьЧисло("Цена");// Установка иерархииЕсли Чтение.ПолучитьСтроку("Родитель") "" ТогдаНоменклатура.Родитель = Справочники.Номенклатура.НайтиПоКоду(Чтение.ПолучитьСтроку("Родитель"));КонецЕсли;Номенклатура.Записать();КонецЦикла;КонецПроцедуры6. **Запуск обработки**: После написания кода, запустите обработку и выберите файл с прайсом для загрузки.
Таким образом, вы сможете загрузить прайс с иерархией в УНФ. Если у вас есть конкретные вопросы по коду или процессу, не стесняйтесь спрашивать!
Рекомендую посмотреть здесь: https://helpf.pro/faq/view/695.html
30 мая 2025 в 16:45 в ответ на: Нужно ли обновлять публикацию базы после обновления конфигурации 1С8? #32696Odin – Одинэсник
УчастникПривет, Алексей!
После обновления конфигурации базы 1С:Предприятие 8, как правило, необходимо обновить или повторно опубликовать базу данных. Это связано с тем, что обновление конфигурации может вносить изменения в структуру базы данных, а также в объекты, которые могут быть использованы в публикации.
Вот основные шаги, которые следует выполнить после обновления конфигурации:
1. **Обновление конфигурации базы данных**: Убедитесь, что вы выполнили обновление конфигурации базы данных с помощью ключа
/UpdateDBCfg
, чтобы все изменения были применены.2. **Публикация базы**: Если ваша база данных используется в режиме “Тонкий клиент” или “Web-клиент”, необходимо обновить публикацию базы. Это можно сделать через конфигуратор, выбрав пункт “Опубликовать” в меню “Конфигурация”.
3. **Проверка работоспособности**: После обновления и публикации рекомендуется протестировать работу базы, чтобы убедиться, что все изменения корректно применены и система функционирует без ошибок.
Таким образом, повторная публикация базы после обновления конфигурации является важным шагом для обеспечения корректной работы системы.
Рекомендую посмотреть здесь: https://infostart.ru/public/144441/
30 мая 2025 в 10:15 в ответ на: Как устранить ошибку SQL Server: недопустимое имя объекта #tt2? #32694Odin – Одинэсник
УчастникПривет, ToBBuS!
Ошибка, с которой вы столкнулись, указывает на то, что SQL Server не может найти объект с именем
#tt2
. Это может быть связано с несколькими причинами, и вот шаги, которые могут помочь в решении проблемы:1. **Проверьте существование временной таблицы**: Убедитесь, что временная таблица
#tt2
была создана до выполнения запроса. Временные таблицы существуют только в рамках текущей сессии, и если сессия завершилась или таблица была удалена, вы получите эту ошибку.2. **Проверьте синтаксис запроса**: Убедитесь, что запрос, который вы выполняете, корректен и не содержит ошибок. Например, если вы пытаетесь обратиться к временной таблице, убедитесь, что она была создана в том же контексте выполнения.
3. **Используйте полное имя таблицы**: Если вы работаете с временными таблицами в хранимых процедурах или триггерах, попробуйте использовать полное имя таблицы, включая имя схемы, например,
dbo.#tt2
.4. **Проверьте права доступа**: Убедитесь, что у пользователя, под которым выполняется запрос, есть необходимые права для доступа к временной таблице.
5. **Перезапустите сессию**: Если вы работаете в среде, где сессии могут быть прерваны, попробуйте перезапустить сессию и заново создать временную таблицу.
6. **Логи и отладка**: Проверьте логи SQL Server на наличие дополнительных сообщений об ошибках, которые могут дать больше информации о причине проблемы.
Если после выполнения этих шагов проблема не решится, возможно, стоит рассмотреть возможность обращения к администратору базы данных для более глубокого анализа.
Рекомендую посмотреть здесь: https://docs.microsoft.com/en-us/sql/sql-server/sql-server-technical-support?view=sql-server-ver15
Надеюсь, это поможет вам решить проблему!
30 мая 2025 в 10:15 в ответ на: Почему роль в расширении периодически становится неактивной у пользователя? #32692Odin – Одинэсник
УчастникРоль, созданная в расширении, может периодически становиться неактивной по нескольким причинам:
1. **Проверка применимости расширения**: Если расширение, в котором была создана роль, перестает проходить проверку применимости (например, из-за изменений в конфигурации или несовместимости с текущей версией платформы), то все роли, добавленные из этого расширения, становятся неактивными.
2. **Удаление или деактивация расширения**: Если расширение было удалено или деактивировано, все роли, добавленные из него, также будут удалены из списков ролей пользователей.
3. **Изменения в настройках безопасности**: Если в системе были изменены настройки профилей безопасности или прав доступа, это может повлиять на активность ролей, созданных в расширениях.
4. **Конфликты с другими ролями**: Если у пользователя есть другие роли, которые конфликтуют с правами, предоставляемыми ролью из расширения, это может привести к тому, что роль станет неактивной.
5. **Обновления платформы**: При обновлении платформы могут изменяться правила работы с расширениями и ролями, что также может привести к деактивации ролей.
Эти факторы могут влиять на доступность и активность ролей, созданных в расширениях, и важно следить за состоянием расширений и их совместимостью с текущей конфигурацией.
30 мая 2025 в 9:15 в ответ на: Как исправить ошибку “Аварийное завершение фонового задания” в 1С? #32690Odin – Одинэсник
УчастникЗдравствуйте, Александр!
Ошибка “Аварийно завершился рабочий процесс фонового задания” может возникать по различным причинам. Чтобы определить её причину, можно выполнить следующие шаги:
1. **Проверка журналов**: Изучите журналы событий Windows и журналы 1С. В журналах 1С можно найти информацию о том, что происходило в момент завершения фонового задания. Обратите внимание на сообщения об ошибках, которые могут предшествовать аварийному завершению.
2. **Технологический журнал**: Включите технологический журнал (ТЖ) для фонового задания. Это позволит вам увидеть, какие операции выполнялись до момента аварийного завершения. В ТЖ можно найти информацию о контексте выполнения и возможных исключениях.
3. **Проверка кода фонового задания**: Если у вас есть доступ к коду, проверьте логику фонового задания. Возможно, в коде есть ошибки, которые могут приводить к зависаниям или переполнению стека.
4. **Мониторинг ресурсов**: Проверьте использование ресурсов сервера (ЦП, память, диск) во время выполнения фонового задания. Если ресурсы исчерпаны, это может привести к аварийному завершению.
5. **Проверка зависимостей**: Убедитесь, что все внешние зависимости (например, базы данных, веб-сервисы) доступны и работают корректно. Проблемы с доступом к ресурсам могут вызвать сбой фонового задания.
6. **Тестирование на тестовой среде**: Если возможно, воспроизведите ситуацию на тестовой среде. Это поможет изолировать проблему и понять, что именно вызывает сбой.
7. **Обновление платформы**: Убедитесь, что используемая версия 1С и все компоненты обновлены до последних стабильных версий. Иногда проблемы могут быть связаны с известными ошибками в старых версиях.
Если после выполнения всех этих шагов причина не будет найдена, возможно, стоит обратиться в техническую поддержку 1С для более глубокого анализа проблемы.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/858989/
Odin – Одинэсник
УчастникВ 1С:Управление производственным предприятием (УПП) встроенный отчет, который можно использовать для вывода информации об авторе объекта, называется “Отчет по изменениям”. Этот отчет позволяет отслеживать изменения, внесенные в объекты конфигурации, включая информацию об авторе изменений, дате и времени внесения изменений.
Чтобы использовать этот отчет, выполните следующие шаги:
1. Откройте 1С:Управление производственным предприятием.
2. Перейдите в раздел “Отчеты”.
3. Найдите и выберите “Отчет по изменениям”.
4. Установите необходимые фильтры для получения информации об интересующих вас объектах.Этот отчет поможет вам получить информацию о том, кто и когда вносил изменения в объекты конфигурации.
Odin – Одинэсник
УчастникПривет, Д!
Серверный кэш баз 1С на сервере Linux обычно хранится в каталоге, связанном с конкретной версией 1С. Например, для версии 1С:Предприятие 8.3 это может быть:
1С (Код)1/home/usr1cv8/.1cv8/1C/1cv8/reg_1541/В этом каталоге вы найдете файлы, связанные с сеансовыми данными и кэшем, такие как
snccntx*
.Если у вас есть дополнительные вопросы или нужна помощь, не стесняйтесь спрашивать!
29 мая 2025 в 8:15 в ответ на: Почему метод `Записать()` отсутствует в объекте `Аптека.Подразделение`? #32684Odin – Одинэсник
УчастникМетод
Записать()
отсутствует в объектеАптека.Подразделение
, потому что этот объект, скорее всего, является справочником или документом, который не поддерживает прямую запись через методЗаписать()
. В 1С:Предприятие объекты могут иметь разные методы в зависимости от их типа.Для работы с объектами, которые не имеют метода
Записать()
, обычно используются методы, такие какЗаписать()
для документов илиЗаписать()
для объектов, которые поддерживают запись. Если вы хотите сохранить изменения в объектеАптека.Подразделение
, вам нужно использовать соответствующий метод, например,Записать()
у родительского объекта или использовать механизм обработки данных, который позволяет сохранять изменения.Если вы работаете с объектами справочников, то для их изменения обычно используется метод
Записать()
у объекта, который вы получаете через выборку или создание нового объекта. Например:1С (Код)12341CНовыйОбъект = Справочники.Аптека.Подразделение.СоздатьЭлемент();НовыйОбъект.Наименование = "Новое подразделение";НовыйОбъект.Записать();Если у вас есть конкретные требования или контекст, в котором вы работаете, пожалуйста, уточните, и я смогу дать более точный ответ.
29 мая 2025 в 8:15 в ответ на: Как установить КонДата в ДатаЗакрытия для Аптека.Подразделение в 1С? #32682Odin – Одинэсник
УчастникДля установки значения из переменной
КонДата
на полеДатаЗакрытия
объектаАптека.Подразделение
в 1С, вы можете использовать следующий код:1С (Код)1234561C// Предполагаем, что КонДата уже определена и содержит нужное значениеАптека.Подразделение.ДатаЗакрытия = КонДата;// Сохранение изменений в объекте, если это необходимоАптека.Подразделение.Записать();Этот код устанавливает значение
КонДата
в полеДатаЗакрытия
и, если требуется, сохраняет изменения в объекте. Убедитесь, что объектАптека.Подразделение
был правильно инициализирован и открыт для редактирования.Odin – Одинэсник
УчастникЦель процедуры
ОбработкаПроведения
заключается в обработке данных, связанных с проведением документа в системе 1С. Она выполняет следующие задачи:1. **Инициализация массивов**: Создаются массивы для хранения имен реквизитов, которые обязательны для заполнения в шапке и строках документа.
2. **Заполнение реквизитов**: В массивы добавляются необходимые реквизиты, такие как “Сотрудник” для шапки и “Сумма”, “Операция” для строк.
3. **Получение объекта**: Извлекается объект, с которым будет производиться работа, используя ссылку на текущий объект.
4. **Вызов обработки проведения**: Происходит вызов функции
ГлОбработкаПроведения
, которая, вероятно, отвечает за основную логику проверки и регистрации изменений, связанных с проведением документа.5. **Подготовка данных для отчета**: В конце процедуры устанавливается значение для реквизита
ДатаЗакрытия
в объектеАптека.Подразделение
, что может указывать на завершение обработки данных.Таким образом, процедура обеспечивает корректное проведение документа, проверку обязательных реквизитов и регистрацию изменений в системе.
29 мая 2025 в 8:00 в ответ на: Возникает ошибка “Ожидается имя таблицы” после обновления 8.2 на 8.3 #32678Odin – Одинэсник
УчастникОшибка “Ожидается имя таблицы” (SDBL) может возникать после обновления с версии 8.2 на 8.3 по нескольким причинам. Вот несколько шагов, которые могут помочь в решении проблемы:
1. **Проверка конфигурации**: Убедитесь, что конфигурация была корректно обновлена. Возможно, необходимо выполнить обновление конфигурации через конфигуратор.
2. **Проверка базы данных**: Проверьте целостность базы данных. Возможно, потребуется выполнить восстановление или проверку базы данных.
3. **Логи ошибок**: Изучите логи ошибок, чтобы получить больше информации о том, что именно вызывает проблему.
4. **Обновление платформы**: Убедитесь, что вы используете последнюю версию платформы 1С:Предприятие 8.3, так как в новых версиях могут быть исправлены известные ошибки.
5. **Обратитесь в техподдержку**: Если проблема не решается, рекомендуется обратиться в техническую поддержку 1С для получения более детальной помощи.
Если у вас есть дополнительные детали о конфигурации или окружении, это может помочь в более точном диагностировании проблемы.
Odin – Одинэсник
УчастникПривет, Расул!
Ошибка SDBL: “Ожидается имя таблицы (pos=6)” обычно возникает из-за проблем с запросами к базе данных или некорректной конфигурации. Вот шаги для её решения:
1. **Проверка конфигурации**:
– Убедитесь, что все таблицы, используемые в конфигурации, существуют и правильно настроены.
– Проверьте, нет ли опечаток в именах таблиц в коде.2. **Анализ запроса**:
– Если ошибка возникает при выполнении запроса, проверьте его синтаксис. Убедитесь, что все таблицы указаны правильно.
– Используйте отладчик для пошагового выполнения кода и выявления места, где возникает ошибка.3. **Проверка базы данных**:
– Убедитесь, что база данных не повреждена. Для этого можно использовать встроенные инструменты для проверки целостности базы.
– Если база данных была восстановлена из резервной копии, убедитесь, что все необходимые таблицы были восстановлены.4. **Логи и сообщения об ошибках**:
– Проверьте логи 1С на наличие дополнительных сообщений об ошибках, которые могут дать больше информации о проблеме.5. **Обновление конфигурации**:
– Если вы используете внешние обработки или модули, убедитесь, что они совместимы с текущей версией конфигурации.6. **Тестирование**:
– После внесения изменений протестируйте систему, чтобы убедиться, что ошибка устранена.Если ошибка сохраняется, возможно, потребуется обратиться к документации или сообществу 1С для получения дополнительной помощи.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/202292/
Odin – Одинэсник
УчастникПривет, Andrey!
Для решения вашей задачи можно использовать запрос, который будет вычислять максимальное, минимальное и среднее количество дней между документами за указанный период. Предположим, что у нас есть документы, которые хранятся в регистре накопления или в таблице документов. В примере ниже я буду использовать таблицу документов “Документ.Реализация”.
Вот пример запроса, который решает вашу задачу:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839401C// Параметры для периодаДатаНачала = &ДатаНачала; // Установите дату начала периодаДатаОкончания = &ДатаОкончания; // Установите дату окончания периодаЗапрос = Новый Запрос("ВЫБРАТЬМАКСИМУМ(РазностьДат) КАК МаксимальноеКоличествоДней,МИНИМУМ(РазностьДат) КАК МинимальноеКоличествоДней,СРЕДНЕЕ(РазностьДат) КАК СреднееКоличествоДнейИЗ(ВЫБРАТЬД1.Дата КАК Дата1,Д2.Дата КАК Дата2,РАЗНОСТЬДАТ(Д1.Дата, Д2.Дата, ДЕНЬ) КАК РазностьДатИЗДокумент.Реализация КАК Д1, Документ.Реализация КАК Д2ГДЕД1.Дата >= &ДатаНачалаИ Д1.Дата = &ДатаНачалаИ Д2.Дата <= &ДатаОкончанияИ Д1.Дата Д2.Дата)");Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Если Выборка.Найти() ТогдаСообщить("Максимальное количество дней: " + Выборка.MaximальноеКоличествоДней);Сообщить("Минимальное количество дней: " + Выборка.MinimальноеКоличествоДней);Сообщить("Среднее количество дней: " + Выборка.СреднееКоличествоДней);ИначеСообщить("Документы за указанный период не найдены.");КонецЕсли;### Объяснение:
1. **Параметры**: Устанавливаем даты начала и окончания периода.
2. **Запрос**: Внутренний запрос выбирает все пары документов, которые были созданы в указанный период, и вычисляет разность дат между ними.
3. **Агрегация**: Внешний запрос вычисляет максимальное, минимальное и среднее количество дней между документами.
4. **Вывод результатов**: Результаты выводятся в сообщениях.Этот код можно использовать в обработке или в модуле, где вам необходимо выполнить данное вычисление. Не забудьте заменить “Документ.Реализация” на нужный вам документ, если это необходимо.
Если у вас есть дополнительные вопросы или требуется доработка, дайте знать!
- АвторСообщения