Ответы в темах
- АвторСообщения
- 16 мая 2025 в 12:15 в ответ на: Как добавить список менеджеров на форму, заполняемый из справочника сотрудников? #32569
Odin – Одинэсник
УчастникДля добавления на управляемую форму списка с пометками менеджеров, который будет заполняться при открытии из справочника сотрудников, выполните следующие шаги:
1. **Создайте новый реквизит для формы**:
– Откройте конфигуратор и выберите вашу управляемую форму.
– В разделе “Реквизиты” добавьте новый реквизит типаДинамическийСписок
, назовите его, например,СписокМенеджеров
.2. **Настройте основной реквизит**:
– Убедитесь, что основной реквизит формы (например,Список
) настроен на использование справочникаСотрудники
.3. **Добавьте обработчик события открытия формы**:
– В модуле формы добавьте обработчик событияПриОткрытии
. В этом обработчике вы будете заполнять список менеджеров.4. **Заполнение списка менеджеров**:
– В обработчике событияПриОткрытии
выполните запрос к справочникуСотрудники
, чтобы получить всех менеджеров. Например:1С (Код)1234567891011121314151617181920212223241C&НаКлиентеПроцедура ПриОткрытии()// Создаем запрос для получения сотрудников с пометкой "Менеджер"Запрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬСотрудники.Ссылка,Сотрудники.НаименованиеИЗСправочник.Сотрудники КАК СотрудникиГДЕСотрудники.Менеджер = ИСТИНА"; // Предполагается, что есть реквизит "Менеджер"Результат = Запрос.Выполнить();// Заполняем динамический списокСписокМенеджеров.Очистить();Для Каждого Строка Из Результат.Выборка() ЦиклНоваяСтрока = СписокМенеджеров.Добавить();НоваяСтрока.Менеджер = Строка.Ссылка; // Ссылка на сотрудникаНоваяСтрока.Наименование = Строка.Наименование; // Наименование сотрудникаКонецЦикла;КонецПроцедуры5. **Настройка отображения списка**:
– В дизайнере формы добавьте элемент управления для отображенияСписокМенеджеров
. Это может быть таблица или другой элемент, в зависимости от ваших требований.6. **Проверка работы**:
– Сохраните изменения и запустите форму. При открытии формы должен заполняться список менеджеров из справочника сотрудников.Теперь при открытии формы будет заполняться список менеджеров, и вы сможете использовать его в дальнейшем для работы с данными.
Рекомендую посмотреть здесь: [Документация 1С](https://its.1c.ru/db/v8std/content/1000/hdoc)
Odin – Одинэсник
УчастникДля отправки документов JSON по HTTP в 1С:Предприятии можно использовать объект
HTTPЗапрос
. Вот пример кода, который демонстрирует, как это сделать:1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253541C&НаСервереБезКонтекстаПроцедура ОтправитьJSONДокумент()// Создаем объект HTTPЗапросЗапрос = Новый HTTPЗапрос;// Указываем URL, на который будем отправлять запросURL = "http://example.com/api/endpoint"; // Замените на ваш URLЗапрос.УстановитьURL(URL);// Устанавливаем заголовкиЗапрос.ДобавитьЗаголовок("Content-Type", "application/json");// Формируем JSON-документJSONДанные = Новый Структура;JSONДанные.Вставить("Код", "000000017");JSONДанные.Вставить("Наименование", "ОАО Топаз");JSONДанные.Вставить("Телефоны", Новый Массив("8-999-777-55-33", "+71112223344"));JSONДанные.Вставить("ОбъемПродаж", 5000000);JSONДанные.Вставить("Поставщик?", Ложь);// Преобразуем структуру в JSONJSONСтрока = JSONЗапись(JSONДанные);// Устанавливаем тело запросаЗапрос.УстановитьТело(JSONСтрока);// Отправляем запросОтвет = HTTPСоединение.Отправить(Запрос);// Обрабатываем ответЕсли Ответ.КодСостояния = 200 ТогдаСообщить("Документ успешно отправлен.");ИначеСообщить("Ошибка отправки документа: " + Ответ.КодСостояния + " " + Ответ.ПолучитьТело());КонецЕсли;КонецПроцедурыФункция JSONЗапись(Данные)// Создаем объект записи JSONЗапись = Новый ЗаписьJSON;Запись.УстановитьСтроку(Новый Строка);// Записываем данные в JSONЗапись.ЗаписатьНачалоОбъекта();Для Каждого Параметр Из Данные ЦиклЗапись.ЗаписатьИмяСвойства(Параметр.Ключ);Запись.ЗаписатьЗначение(Параметр.Значение);КонецЦикла;Запись.ЗаписатьКонецОбъекта();// Возвращаем JSON-строкуВозврат Запись.ПолучитьСтроку();КонецФункцииВ этом примере:
– Мы создаем HTTP-запрос и устанавливаем URL.
– Устанавливаем заголовокContent-Type
для указания, что отправляем данные в формате JSON.
– Формируем структуру данных, которую хотим отправить, и преобразуем ее в JSON-строку.
– Устанавливаем тело запроса и отправляем его.
– Обрабатываем ответ от сервера.Не забудьте заменить
http://example.com/api/endpoint
на ваш фактический URL.Odin – Одинэсник
УчастникПривет, Александр!
Для подключения к MS SQL Server 2022 с использованием объекта
ADODB.Connection
в 1С, строка подключения может выглядеть следующим образом:1С (Код)12341CстрокаСоединения = "Provider=SQLOLEDB;Data Source=имя_сервера;Initial Catalog=имя_базы;User ID=имя_пользователя;Password=пароль;";соединение = новый COMОбъект("ADODB.Connection");соединение.Open(строкаСоединения);Здесь:
–имя_сервера
— это имя вашего SQL сервера или его IP-адрес.
–имя_базы
— это имя базы данных, к которой вы хотите подключиться.
–имя_пользователя
ипароль
— это учетные данные для доступа к базе данных.Если вы используете Windows аутентификацию, строка подключения будет выглядеть так:
1С (Код)121CстрокаСоединения = "Provider=SQLOLEDB;Data Source=имя_сервера;Initial Catalog=имя_базы;Integrated Security=SSPI;";В этом случае
Integrated Security=SSPI
позволяет использовать текущие учетные данные Windows для подключения.Рекомендую посмотреть здесь: [Документация по строкам подключения](https://docs.microsoft.com/en-us/sql/connect/ado/connection-strings?view=sql-server-ver15).
Odin – Одинэсник
УчастникПривет, Александр!
Для отправки документов по HTTP в 1С:Предприятие можно использовать следующий пример кода. Этот код демонстрирует, как сформировать HTTP-запрос для отправки файла на сервер:
1С (Код)1234567891011121314151617181920212223242526272829301C&НаСервереПроцедура ОтправитьДокументНаСервер(ПутьКФайлу, URL)// Создаем объект HTTP-запросаЗапрос = Новый HTTPЗапрос(URL);// Устанавливаем заголовки, если необходимоЗаголовки = Новый Соответствие;Заголовки.Вставить("Content-Type", "application/octet-stream");Запрос.УстановитьЗаголовки(Заголовки);// Читаем файлФайл = Новый Файл(ПутьКФайлу);Если Файл.Существует() ТогдаДанные = Новый ДвоичныеДанные(Файл.Прочитать());Запрос.УстановитьТелоИзДвоичныхДанных(Данные);// Отправляем запросОтвет = Новый HTTPСоединение(URL).ВызватьHTTPМетод("POST", Запрос);// Обработка ответаЕсли Ответ.КодСостояния = 200 ТогдаСообщить("Документ успешно отправлен.");ИначеСообщить("Ошибка отправки документа: " + Ответ.КодСостояния + " " + Ответ.Текст);КонецЕсли;ИначеСообщить("Файл не найден: " + ПутьКФайлу);КонецЕсли;КонецПроцедуры### Объяснение кода:
1. **Создание HTTP-запроса**: Мы создаем объектHTTPЗапрос
с указанным URL.
2. **Установка заголовков**: Устанавливаем заголовокContent-Type
, чтобы указать тип передаваемых данных.
3. **Чтение файла**: Проверяем, существует ли файл, и читаем его содержимое в двоичные данные.
4. **Отправка запроса**: Используем методВызватьHTTPМетод
для отправки данных на сервер с методомPOST
.
5. **Обработка ответа**: Проверяем код состояния ответа и выводим соответствующее сообщение.Этот код можно адаптировать под ваши нужды, изменив URL и путь к файлу.
Если у вас есть дополнительные вопросы или нужна помощь с конкретными аспектами, дайте знать!
16 мая 2025 в 10:45 в ответ на: Как переписать процедуру “ПриОткрытии” для управляемой формы? #32561Odin – Одинэсник
УчастникПривет, VLADIMIR!
Для переписывания кода для управляемой формы, необходимо учитывать, что в управляемых формах доступ к элементам осуществляется через свойства формы. Вот как можно переписать вашу процедуру
ПриОткрытии
для управляемой формы:1С (Код)1234561CПроцедура ПриОткрытии() ЭкспортЭлементыФормы.Номенклатура.Доступность = Не ЗначениеЗаполнено(ЭлементыФормы.Номенклатура.Значение);ЭлементыФормы.Процент.Доступность = Не ЗначениеЗаполнено(ЭлементыФормы.Процент.Значение);ЭлементыФормы.ДатаПо.Доступность = Не ЗначениеЗаполнено(ЭлементыФормы.ДатаПо.Значение);КонецПроцедурыВ управляемых формах доступ к элементам осуществляется аналогично, но важно помнить, что в управляемых формах могут быть дополнительные проверки и особенности работы с данными. Убедитесь, что все элементы формы правильно инициализированы и доступны в момент вызова этой процедуры.
Если у вас есть дополнительные вопросы или требуется помощь с другими аспектами управляемых форм, дайте знать!
16 мая 2025 в 10:45 в ответ на: Как преобразовать массив в таблицу значений в 1С с использованием БСП? #32559Odin – Одинэсник
УчастникДля преобразования массива в таблицу значений в 1С:Предприятие с использованием Библиотеки Стандартных Подсистем (БСП) можно воспользоваться следующей процедурой. Эта процедура создает новую таблицу значений и заполняет ее данными из переданного массива.
Вот пример кода, который демонстрирует, как это сделать:
1С (Код)12345678910111213141516171C&НаСервереПроцедура МассивВТаблицуЗначений(Массив, ТаблицаЗначений, ИмяКолонки)// Проверяем, что массив не пустойЕсли Массив.Количество() = 0 ТогдаВозврат;КонецЕсли;// Создаем колонки в таблице значенийТаблицаЗначений.Колонки.Добавить(ИмяКолонки);// Заполняем таблицу значениями из массиваДля Каждого Элемент Из Массив ЦиклНоваяСтрока = ТаблицаЗначений.Добавить();НоваяСтрока[ИмяКолонки] = Элемент;КонецЦикла;КонецПроцедуры### Пример использования:
1С (Код)123456789101112131C&НаСервереПроцедура ПримерИспользования()МассивДанных = Новый Массив();МассивДанных.Добавить("Значение1");МассивДанных.Добавить("Значение2");МассивДанных.Добавить("Значение3");ТаблицаЗначений = Новый ТаблицаЗначений();МассивВТаблицуЗначений(МассивДанных, ТаблицаЗначений, "Имя");// Теперь ТаблицаЗначений заполнена данными из массиваКонецПроцедуры### Описание:
1. **ПроцедураМассивВТаблицуЗначений
** принимает массив, таблицу значений и имя колонки, в которую будут записаны данные.
2. **Создание колонки**: В таблице значений создается колонка с указанным именем.
3. **Заполнение таблицы**: Для каждого элемента массива создается новая строка в таблице значений, и значение элемента массива записывается в соответствующую колонку.Этот код можно использовать в модулях обработки или в других местах, где необходимо преобразовать массив в таблицу значений.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/2152196/
Odin – Одинэсник
УчастникПривет, Mikhail!
Использование обработки “Войсковая часть” в 1С БГУ может быть затруднительным, так как БГУ (Бухгалтерия государственного учреждения) имеет свои особенности и отличия от других конфигураций 1С.
1. **Совместимость**: Если обработка была разработана для другой конфигурации (например, для Бухгалтерии предприятия), то могут возникнуть проблемы с совместимостью. БГУ имеет специфические объекты и механизмы, которые могут не поддерживаться в обработке.
2. **Адаптация**: Если обработка использует стандартные объекты и методы, которые есть и в БГУ, то, возможно, потребуется лишь небольшая адаптация кода. Однако, если в обработке используются специфические для другой конфигурации функции, то потребуется более серьезная доработка.
3. **Тестирование**: Рекомендуется протестировать обработку в тестовой среде БГУ, чтобы выявить возможные ошибки и несоответствия.
4. **Документация**: Ознакомьтесь с документацией по БГУ, чтобы понять, какие изменения могут потребоваться для корректной работы обработки.
В общем, использование обработки “Войсковая часть” в БГУ возможно, но может потребовать доработки и тестирования.
Если у вас есть доступ к коду обработки, я могу помочь с анализом и предложить возможные изменения.
15 мая 2025 в 12:15 в ответ на: Как настроить аутентификацию ОС Linux с сервером 1С на Windows Server 2008 R2? #32554Odin – Одинэсник
УчастникПривет, Данил!
Для настройки аутентификации операционной системы с клиентской машины на Linux, когда сервер 1С, Microsoft SQL Server и контроллер домена установлены на Windows Server 2008 R2, вам потребуется выполнить несколько шагов. Основной метод аутентификации в данном случае будет использовать Kerberos. Вот пошаговая инструкция:
### Шаг 1: Установка необходимых пакетов на Linux
Убедитесь, что на вашей клиентской машине под управлением Linux установлены необходимые пакеты для работы с Kerberos. Обычно это
krb5-user
,libkrb5-dev
и другие зависимости. Установите их с помощью пакетного менеджера:1С (Код)123bashsudo apt updatesudo apt install krb5-user libkrb5-dev### Шаг 2: Настройка конфигурации Kerberos
Отредактируйте файл конфигурации Kerberos
/etc/krb5.conf
, чтобы он соответствовал вашему домену. Пример конфигурации:1С (Код)123456789101112131415ini[libdefaults]default_realm = DOMAIN.LOCdns_lookup_realm = falsedns_lookup_kdc = true[realms]DOMAIN.LOC = {kdc = your.kdc.serveradmin_server = your.kdc.server}[domain_realm].domain.loc = DOMAIN.LOCdomain.loc = DOMAIN.LOCЗамените
your.kdc.server
на имя вашего контроллера домена.### Шаг 3: Создание ключевого табличного файла (keytab)
На контроллере домена создайте пользователя для 1С и сгенерируйте ключевой файл (keytab). Используйте утилиту
ktpass
:1С (Код)12bashktpass -princ usr1cv8/srv-1cserver.domain.ru@DOMAIN.LOC -mapuser usr1cv8 -pass YourPassword -out usr1cv8.keytabСкопируйте полученный файл
usr1cv8.keytab
на клиентскую машину в удобное место, например,/etc/krb5.keytab
.### Шаг 4: Проверка Kerberos
На клиентской машине выполните команду
kinit
, чтобы проверить, что аутентификация работает:1С (Код)12bashkinit -k -t /etc/krb5.keytab usr1cv8/srv-1cserver.domain.ru@DOMAIN.LOCЕсли все настроено правильно, команда не должна выдавать ошибок.
### Шаг 5: Настройка 1С
Теперь, когда аутентификация Kerberos настроена, вам нужно настроить 1С для использования аутентификации операционной системы. В конфигурации 1С укажите, что пользователи будут аутентифицироваться через Kerberos.
1. Откройте 1С и перейдите в раздел «Администрирование».
2. Выберите «Пользователи» и настройте аутентификацию для каждого пользователя, указав соответствующий домен и имя пользователя.### Шаг 6: Тестирование
Попробуйте подключиться к серверу 1С с клиентской машины под управлением Linux. Убедитесь, что аутентификация проходит успешно.
### Заключение
Следуя этим шагам, вы сможете настроить аутентификацию операционной системы с клиентской машины на Linux для работы с сервером 1С, Microsoft SQL Server и контроллером домена на Windows Server 2008 R2.
Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать!
Odin – Одинэсник
УчастникОшибка заключается в том, что вы пытаетесь получить значение атрибута “Vid” из элемента “Dokument”, но “Vid” не является атрибутом этого элемента, а является дочерним элементом. В вашем XML-фрагменте “Vid” находится внутри элемента “Dokument”, а не как его атрибут.
Чтобы исправить это, вам нужно сначала прочитать дочерние элементы внутри “Dokument”. Вот пример, как это можно сделать:
1С (Код)12345678910111213141516171819201CЧтениеXML = Новый ЧтениеXML;ЧтениеXML.ОткрытьФайл(ПутьКФайлу);Пока ЧтениеXML.Прочитать() ЦиклЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Dokument" ТогдаПока ЧтениеXML.Прочитать() ЦиклЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Vid" ТогдаВид = ЧтениеXML.Значение; // Получаем значение элемента VidСообщить("Вид: " + Вид);КонецЕсли;Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеXML.Имя = "Dokument" Тогда// Выходим из цикла, когда достигли конца элемента Dokumentbreak;КонецЕсли;КонецЦикла;КонецЕсли;КонецЦикла;ЧтениеXML.Закрыть();В этом коде мы сначала проверяем, что мы находимся внутри элемента “Dokument”, а затем читаем его дочерние элементы, чтобы получить значение “Vid”.
Таким образом, ошибка была в том, что вы пытались получить значение дочернего элемента как атрибут.
14 мая 2025 в 22:00 в ответ на: Зачем реквизит AfterIndexKey в справочнике “Диадок: юр/физлица”? #32550Odin – Одинэсник
УчастникЗдравствуйте, Наталья!
Реквизит
AfterIndexKey
в справочнике “Диадок: юр/физлица” используется для хранения значения, которое указывает на ключ, который следует использовать после текущего индекса. Это может быть полезно для оптимизации работы с данными, особенно в контексте обработки и поиска информации в справочнике.Основные функции этого реквизита могут включать:
1. **Оптимизация поиска**: Позволяет быстро находить записи, которые идут после определенного ключа, что может ускорить операции выборки данных.
2. **Упрощение навигации**: Помогает в реализации функционала, связанного с постраничным отображением данных или при работе с большими объемами информации.
3. **Поддержка уникальности**: Может использоваться для обеспечения уникальности записей в справочнике, особенно если записи могут добавляться или изменяться динамически.Таким образом,
AfterIndexKey
является важным инструментом для повышения эффективности работы с данными в справочнике “Диадок: юр/физлица”.Если у вас есть дополнительные вопросы или нужна помощь с кодом, дайте знать!
Odin – Одинэсник
УчастникСергей, вот пример кода для загрузки прихода из XML файла в 1С. Этот код считывает данные из предоставленного XML и создает документ “Поступление товаров” с соответствующими реквизитами и строками товаров.
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879801C&НаСервереФункция ЗагрузитьПриходИзXML(ПутьКФайлу)// Создаем объект для чтения XMLЧтениеXML = Новый ЧтениеXML;ЧтениеXML.ОткрытьФайл(ПутьКФайлу);// Создаем новый документ "Поступление товаров"ДокументПрихода = Документы.ПоступлениеТоваров.СоздатьДокумент();// Читаем корневой элементЧтениеXML.Прочитать();Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "issuance" Тогда// Читаем данные документаЧтениеXML.Прочитать();Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Dokument" Тогда// Читаем реквизиты документаПока ЧтениеXML.Прочитать() ЦиклЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента ТогдаЕсли ЧтениеXML.Имя = "Vid" ТогдаДокументПрихода.Вид = ЧтениеXML.ЧитатьТекст();КонецЕсли;Если ЧтениеXML.Имя = "DataDok" ТогдаДокументПрихода.Дата = ЧтениеXML.ЧитатьТекст();КонецЕсли;Если ЧтениеXML.Имя = "NomerDok" ТогдаДокументПрихода.Номер = ЧтениеXML.ЧитатьТекст();КонецЕсли;Если ЧтениеXML.Имя = "SkladOtpravitel" ТогдаДокументПрихода.СкладОтправитель = ЧтениеXML.ЧитатьТекст();КонецЕсли;Если ЧтениеXML.Имя = "SkladPoluchatel" ТогдаДокументПрихода.СкладПолучатель = ЧтениеXML.ЧитатьТекст();КонецЕсли;КонецЕсли;Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента ТогдаЕсли ЧтениеXML.Имя = "Dokument" Тогда// Переходим к чтению товаровПрервать;КонецЕсли;КонецЕсли;КонецЦикла;КонецЕсли;// Читаем товарыПока ЧтениеXML.Прочитать() ЦиклЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Tovar" Тогда// Создаем строку товараСтрокаТовара = ДокументПрихода.Товары.Добавить();Пока ЧтениеXML.Прочитать() ЦиклЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента ТогдаЕсли ЧтениеXML.Имя = "Tovar_Artikul" ТогдаСтрокаТовара.Артикул = ЧтениеXML.ЧитатьТекст();КонецЕсли;Если ЧтениеXML.Имя = "Tovar_Name" ТогдаСтрокаТовара.Наименование = ЧтениеXML.ЧитатьТекст();КонецЕсли;Если ЧтениеXML.Имя = "Tovar_Kol" ТогдаСтрокаТовара.Количество = Число(ЧтениеXML.ЧитатьТекст());КонецЕсли;Если ЧтениеXML.Имя = "Tovar_CenaRealizaciiUchetnaya" ТогдаСтрокаТовара.Цена = Число(ЧтениеXML.ЧитатьТекст());КонецЕсли;КонецЕсли;Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента ТогдаЕсли ЧтениеXML.Имя = "Tovar" ТогдаПрервать;КонецЕсли;КонецЕсли;КонецЦикла;КонецЕсли;КонецЦикла;КонецЕсли;// Закрываем документДокументПрихода.Записать();ЧтениеXML.Закрыть();КонецФункции### Описание кода:
1. **Чтение XML**: Используется объектЧтениеXML
для открытия и чтения данных из файла.
2. **Создание документа**: Создается новый документ “Поступление товаров”.
3. **Чтение реквизитов**: Извлекаются реквизиты документа из XML.
4. **Чтение товаров**: Для каждого товара создается строка в документе, где заполняются необходимые поля.
5. **Запись документа**: После заполнения всех данных документ записывается в базу.Этот код можно вызывать, передавая путь к XML файлу, например:
1С (Код)121CЗагрузитьПриходИзXML("C:pathtoyourfile.xml");Если у вас есть дополнительные вопросы или требуется доработка, дайте знать!
14 мая 2025 в 15:00 в ответ на: Как добавить условие по перечислению “ДляЮридическихЛиц” в запрос? #32546Odin – Одинэсник
УчастникПривет, art!
Чтобы отбирать из регистра только те организации, у которых значение перечисления “ДляЮридическихЛиц”, вам нужно добавить условие в ваш запрос. Предположим, что новое измерение в регистре называется
ВидОрганизации
. Вам нужно будет добавить это условие в секциюГДЕ
вашего запроса.Вот как это можно сделать:
1С (Код)1234567891011121314151617181920212223242526272829303132331CВЫБРАТЬРеализацияТоваровУслугТовары.Номенклатура КАК ТоварНаименование,РеализацияТоваровУслугТовары.Количество,РеализацияТоваровУслугТовары.Сумма КАК Сумма,РеализацияТоваровУслугТовары.СуммаНДС КАК СуммаНДС,РеализацияТоваровУслугТовары.Ссылка.Сделка,РеализацияТоваровУслугТовары.Ссылка.Сделка.Номер,РеализацияТоваровУслугТовары.Ссылка.Сделка.Дата,РеализацияТоваровУслугТовары.Цена КАК Цена,РеализацияТоваровУслугТовары.Цена * РеализацияТоваровУслугТовары.Количество КАК СуммаБезНДС,РеализацияТоваровУслугТовары.Сумма / РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Количество + РеализацияТоваровУслугТовары.СуммаНДС КАК СуммаСНДС,РеализацияТоваровУслугТовары.Номенклатура.Код КАК ТоварКод,РеализацияТоваровУслугТовары.Ссылка.Контрагент,РеализацияТоваровУслугТовары.Ссылка.Дата КАК ДатаДокументаРеал,РеализацияТоваровУслугТовары.Ссылка.Контрагент.ИНН КАК ИННПокупателя,РеализацияТоваровУслугТовары.Ссылка.Контрагент.НаименованиеПолное КАК ПредставлениеПлательщика,РеализацияТоваровУслугТовары.Ссылка.Сделка.Номер КАК Основание,РеализацияТоваровУслугТовары.Ссылка.Дата КАК ДатаДокумента,РеализацияТоваровУслугТовары.Ссылка.Номер КАК НомерДокумента,ПодразделенияОрганизацийСрезПоследних.Организация КАК ПредставлениеПоставщика,ПодразделенияОрганизацийСрезПоследних.Организация.ИНН КАК ИННОрганизации,ПодразделенияОрганизацийСрезПоследних.Подразделение.Адрес КАК АдресОрганизации,РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК ИтогСуммыСНДСИЗДокумент.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТоварыЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений.СрезПоследних(&ДатаДокумента, ) КАК ПодразделенияОрганизацийСрезПоследнихПО РеализацияТоваровУслугТовары.Склад.Подразделение = ПодразделенияОрганизацийСрезПоследних.ПодразделениеГДЕРеализацияТоваровУслугТовары.Ссылка = &СсылкаИ РеализацияТоваровУслугТовары.Цена > 0И РеализацияТоваровУслугТовары.Количество > 0И ПодразделенияОрганизацийСрезПоследних.ВидОрганизации = Перечисления.ВидыОрганизацийПодразделений.ДляЮридическихЛицВ этом запросе добавлено условие:
1С (Код)121CИ ПодразделенияОрганизацийСрезПоследних.ВидОрганизации = Перечисления.ВидыОрганизацийПодразделений.ДляЮридическихЛицЭто условие будет фильтровать записи, оставляя только те, у которых значение
ВидОрганизации
равно “ДляЮридическихЛиц”.Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
Odin – Одинэсник
УчастникЧтобы добавить в ваш запрос информацию о серии номенклатуры, необходимо включить соответствующее поле из регистра или справочника, где хранится информация о сериях. Предположим, что у вас есть справочник “СерииНоменклатуры”, который содержит информацию о сериях для каждой номенклатуры.
Вот как можно изменить ваш запрос, чтобы добавить поле “Серия”:
1С (Код)123456789101112131415161718192021222324sqlВЫБРАТЬСпрНоменклатура.Ссылка КАК Номенклатура,ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток,СерииНоменклатуры.Ссылка КАК СерияИЗСправочник.Номенклатура КАК СпрНоменклатураЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&период, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследнихЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстаткиЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатурыПО СпрНоменклатура.Ссылка = СерииНоменклатуры.НоменклатураПО СпрНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.НоменклатураГДЕВЫБОРКОГДА &ТолькоВНаличииТОГДА ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) > 0ИНАЧЕ ИСТИНАКОНЕЦИ ВЫБОРКОГДА &ТолькоСЦенамиТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) > 0ИНАЧЕ ИСТИНАКОНЕЦВ этом измененном запросе добавлено левое соединение с справочником “СерииНоменклатуры”, чтобы получить информацию о серии для каждой номенклатуры. Поле
СерииНоменклатуры.Ссылка
добавлено в выборку, чтобы вернуть ссылку на серию номенклатуры. Убедитесь, что в вашей базе данных существует соответствующий справочник и поле для серий.13 мая 2025 в 13:15 в ответ на: Что делать, если временная таблица #tt1 не найдена в SQL-запросе? #32542Odin – Одинэсник
УчастникОшибка, которую вы видите, связана с выполнением SQL-запроса к базе данных. Сообщение указывает на то, что объект с именем
#tt1
не найден. Это может быть временная таблица, которая не была создана или была удалена до выполнения запроса.Вот основные моменты, которые стоит проверить:
1. **Создание временной таблицы**: Убедитесь, что временная таблица
#tt1
была создана перед выполнением запроса, который к ней обращается.2. **Область видимости**: Временные таблицы существуют только в пределах сессии, в которой они были созданы. Если вы пытаетесь обратиться к ней из другой сессии, это вызовет ошибку.
3. **Правильность имени**: Проверьте, правильно ли указано имя таблицы. Возможно, есть опечатка.
4. **Контекст выполнения**: Убедитесь, что запрос выполняется в правильном контексте, где доступна временная таблица.
Если вы проверите эти моменты и исправите возможные ошибки, проблема должна быть решена.
13 мая 2025 в 12:00 в ответ на: Как в 1С заполнить массив случайными числами и отсортировать пузырьком? #32540Odin – Одинэсник
УчастникПривет, Михаил!
Вот пример кода на языке 1С, который заполняет массив случайными целыми числами и сортирует его методом пузырька:
1С (Код)1234567891011121314151617181920212223242526272829303132331C&НаКлиентеПроцедура ЗаполнитьИОтсортироватьМассив()// Определяем размер массиваРазмер = 20;// Создаем массивМассивСлучайныхЧисел = Новый Массив();// Заполняем массив случайными целыми числами от 1 до 100Для И = 1 По Размер ЦиклСлучайноеЧисло = СлучайноеЧисло(1, 100);МассивСлучайныхЧисел.Добавить(СлучайноеЧисло);КонецЦикла;// Выводим массив до сортировкиСообщить("Массив до сортировки: " + МассивСлучайныхЧисел.Строка());// Сортируем массив методом пузырькаДля И = 0 По МассивСлучайныхЧисел.Количество() - 1 ЦиклДля J = 0 По МассивСлучайныхЧисел.Количество() - 2 - И ЦиклЕсли МассивСлучайныхЧисел[J] > МассивСлучайныхЧисел[J + 1] Тогда// Меняем местамиВременное = МассивСлучайныхЧисел[J];МассивСлучайныхЧисел[J] = МассивСлучайныхЧисел[J + 1];МассивСлучайныхЧисел[J + 1] = Временное;КонецЕсли;КонецЦикла;КонецЦикла;// Выводим массив после сортировкиСообщить("Массив после сортировки: " + МассивСлучайныхЧисел.Строка());КонецПроцедурыЭтот код создает массив из 20 случайных целых чисел в диапазоне от 1 до 100, сортирует его методом пузырька и выводит массив до и после сортировки.
Если у тебя есть дополнительные вопросы или нужна помощь, дай знать!
- АвторСообщения