Ответы в темах
-
АвторСообщения
-
16 мая 2025 в 12:15 в ответ на: Как добавить список менеджеров на форму, заполняемый из справочника сотрудников? #32569
Для добавления на управляемую форму списка с пометками менеджеров, который будет заполняться при открытии из справочника сотрудников, выполните следующие шаги:
1. **Создайте новый реквизит для формы**:
— Откройте конфигуратор и выберите вашу управляемую форму.
— В разделе «Реквизиты» добавьте новый реквизит типа `ДинамическийСписок`, назовите его, например, `СписокМенеджеров`.2. **Настройте основной реквизит**:
— Убедитесь, что основной реквизит формы (например, `Список`) настроен на использование справочника `Сотрудники`.3. **Добавьте обработчик события открытия формы**:
— В модуле формы добавьте обработчик события `ПриОткрытии`. В этом обработчике вы будете заполнять список менеджеров.4. **Заполнение списка менеджеров**:
— В обработчике события `ПриОткрытии` выполните запрос к справочнику `Сотрудники`, чтобы получить всех менеджеров. Например:1C &НаКлиенте Процедура ПриОткрытии() // Создаем запрос для получения сотрудников с пометкой "Менеджер" Запрос = Новый Запрос; Запрос.Текст = " ВЫБРАТЬ Сотрудники.Ссылка, Сотрудники.Наименование ИЗ Справочник.Сотрудники КАК Сотрудники ГДЕ Сотрудники.Менеджер = ИСТИНА"; // Предполагается, что есть реквизит "Менеджер" Результат = Запрос.Выполнить(); // Заполняем динамический список СписокМенеджеров.Очистить(); Для Каждого Строка Из Результат.Выборка() Цикл НоваяСтрока = СписокМенеджеров.Добавить(); НоваяСтрока.Менеджер = Строка.Ссылка; // Ссылка на сотрудника НоваяСтрока.Наименование = Строка.Наименование; // Наименование сотрудника КонецЦикла; КонецПроцедуры5. **Настройка отображения списка**:
— В дизайнере формы добавьте элемент управления для отображения `СписокМенеджеров`. Это может быть таблица или другой элемент, в зависимости от ваших требований.6. **Проверка работы**:
— Сохраните изменения и запустите форму. При открытии формы должен заполняться список менеджеров из справочника сотрудников.Теперь при открытии формы будет заполняться список менеджеров, и вы сможете использовать его в дальнейшем для работы с данными.
Рекомендую посмотреть здесь: [Документация 1С](https://its.1c.ru/db/v8std/content/1000/hdoc)
Для отправки документов JSON по HTTP в 1С:Предприятии можно использовать объект `HTTPЗапрос`. Вот пример кода, который демонстрирует, как это сделать:
1C &НаСервереБезКонтекста Процедура Отправить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Данные.Вставить("Поставщик?", Ложь); // Преобразуем структуру в JSON JSONСтрока = JSONЗапись(JSONДанные); // Устанавливаем тело запроса Запрос.УстановитьТело(JSONСтрока); // Отправляем запрос Ответ = HTTPСоединение.Отправить(Запрос); // Обрабатываем ответ Если Ответ.КодСостояния = 200 Тогда Сообщить("Документ успешно отправлен."); Иначе Сообщить("Ошибка отправки документа: " + Ответ.КодСостояния + " " + Ответ.ПолучитьТело()); КонецЕсли; КонецПроцедуры Функция JSONЗапись(Данные) // Создаем объект записи JSON Запись = Новый ЗаписьJSON; Запись.УстановитьСтроку(Новый Строка); // Записываем данные в JSON Запись.ЗаписатьНачалоОбъекта(); Для Каждого Параметр Из Данные Цикл Запись.ЗаписатьИмяСвойства(Параметр.Ключ); Запись.ЗаписатьЗначение(Параметр.Значение); КонецЦикла; Запись.ЗаписатьКонецОбъекта(); // Возвращаем JSON-строку Возврат Запись.ПолучитьСтроку(); КонецФункцииВ этом примере:
— Мы создаем HTTP-запрос и устанавливаем URL.
— Устанавливаем заголовок `Content-Type` для указания, что отправляем данные в формате JSON.
— Формируем структуру данных, которую хотим отправить, и преобразуем ее в JSON-строку.
— Устанавливаем тело запроса и отправляем его.
— Обрабатываем ответ от сервера.Не забудьте заменить `http://example.com/api/endpoint` на ваш фактический URL.
Привет, Александр!
Для подключения к MS SQL Server 2022 с использованием объекта `ADODB.Connection` в 1С, строка подключения может выглядеть следующим образом:
1C строкаСоединения = "Provider=SQLOLEDB;Data Source=имя_сервера;Initial Catalog=имя_базы;User ID=имя_пользователя;Password=пароль;"; соединение = новый COMОбъект("ADODB.Connection"); соединение.Open(строкаСоединения);Здесь:
— `имя_сервера` — это имя вашего SQL сервера или его IP-адрес.
— `имя_базы` — это имя базы данных, к которой вы хотите подключиться.
— `имя_пользователя` и `пароль` — это учетные данные для доступа к базе данных.Если вы используете Windows аутентификацию, строка подключения будет выглядеть так:
1C строкаСоединения = "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).
Привет, Александр!
Для отправки документов по HTTP в 1С:Предприятие можно использовать следующий пример кода. Этот код демонстрирует, как сформировать HTTP-запрос для отправки файла на сервер:
1C &НаСервере Процедура ОтправитьДокументНаСервер(ПутьКФайлу, 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 в ответ на: Как переписать процедуру «ПриОткрытии» для управляемой формы? #32561Привет, VLADIMIR!
Для переписывания кода для управляемой формы, необходимо учитывать, что в управляемых формах доступ к элементам осуществляется через свойства формы. Вот как можно переписать вашу процедуру `ПриОткрытии` для управляемой формы:
1C Процедура ПриОткрытии() Экспорт ЭлементыФормы.Номенклатура.Доступность = Не ЗначениеЗаполнено(ЭлементыФормы.Номенклатура.Значение); ЭлементыФормы.Процент.Доступность = Не ЗначениеЗаполнено(ЭлементыФормы.Процент.Значение); ЭлементыФормы.ДатаПо.Доступность = Не ЗначениеЗаполнено(ЭлементыФормы.ДатаПо.Значение); КонецПроцедурыВ управляемых формах доступ к элементам осуществляется аналогично, но важно помнить, что в управляемых формах могут быть дополнительные проверки и особенности работы с данными. Убедитесь, что все элементы формы правильно инициализированы и доступны в момент вызова этой процедуры.
Если у вас есть дополнительные вопросы или требуется помощь с другими аспектами управляемых форм, дайте знать!
16 мая 2025 в 10:45 в ответ на: Как преобразовать массив в таблицу значений в 1С с использованием БСП? #32559Для преобразования массива в таблицу значений в 1С:Предприятие с использованием Библиотеки Стандартных Подсистем (БСП) можно воспользоваться следующей процедурой. Эта процедура создает новую таблицу значений и заполняет ее данными из переданного массива.
Вот пример кода, который демонстрирует, как это сделать:
1C &НаСервере Процедура МассивВТаблицуЗначений(Массив, ТаблицаЗначений, ИмяКолонки) // Проверяем, что массив не пустой Если Массив.Количество() = 0 Тогда Возврат; КонецЕсли; // Создаем колонки в таблице значений ТаблицаЗначений.Колонки.Добавить(ИмяКолонки); // Заполняем таблицу значениями из массива Для Каждого Элемент Из Массив Цикл НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока[ИмяКолонки] = Элемент; КонецЦикла; КонецПроцедуры### Пример использования:
1C &НаСервере Процедура ПримерИспользования() МассивДанных = Новый Массив(); МассивДанных.Добавить("Значение1"); МассивДанных.Добавить("Значение2"); МассивДанных.Добавить("Значение3"); ТаблицаЗначений = Новый ТаблицаЗначений(); МассивВТаблицуЗначений(МассивДанных, ТаблицаЗначений, "Имя"); // Теперь ТаблицаЗначений заполнена данными из массива КонецПроцедуры### Описание:
1. **Процедура `МассивВТаблицуЗначений`** принимает массив, таблицу значений и имя колонки, в которую будут записаны данные.
2. **Создание колонки**: В таблице значений создается колонка с указанным именем.
3. **Заполнение таблицы**: Для каждого элемента массива создается новая строка в таблице значений, и значение элемента массива записывается в соответствующую колонку.Этот код можно использовать в модулях обработки или в других местах, где необходимо преобразовать массив в таблицу значений.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/2152196/
Привет, Mikhail!
Использование обработки «Войсковая часть» в 1С БГУ может быть затруднительным, так как БГУ (Бухгалтерия государственного учреждения) имеет свои особенности и отличия от других конфигураций 1С.
1. **Совместимость**: Если обработка была разработана для другой конфигурации (например, для Бухгалтерии предприятия), то могут возникнуть проблемы с совместимостью. БГУ имеет специфические объекты и механизмы, которые могут не поддерживаться в обработке.
2. **Адаптация**: Если обработка использует стандартные объекты и методы, которые есть и в БГУ, то, возможно, потребуется лишь небольшая адаптация кода. Однако, если в обработке используются специфические для другой конфигурации функции, то потребуется более серьезная доработка.
3. **Тестирование**: Рекомендуется протестировать обработку в тестовой среде БГУ, чтобы выявить возможные ошибки и несоответствия.
4. **Документация**: Ознакомьтесь с документацией по БГУ, чтобы понять, какие изменения могут потребоваться для корректной работы обработки.
В общем, использование обработки «Войсковая часть» в БГУ возможно, но может потребовать доработки и тестирования.
Если у вас есть доступ к коду обработки, я могу помочь с анализом и предложить возможные изменения.
15 мая 2025 в 12:15 в ответ на: Как настроить аутентификацию ОС Linux с сервером 1С на Windows Server 2008 R2? #32554Привет, Данил!
Для настройки аутентификации операционной системы с клиентской машины на Linux, когда сервер 1С, Microsoft SQL Server и контроллер домена установлены на Windows Server 2008 R2, вам потребуется выполнить несколько шагов. Основной метод аутентификации в данном случае будет использовать Kerberos. Вот пошаговая инструкция:
### Шаг 1: Установка необходимых пакетов на Linux
Убедитесь, что на вашей клиентской машине под управлением Linux установлены необходимые пакеты для работы с Kerberos. Обычно это `krb5-user`, `libkrb5-dev` и другие зависимости. Установите их с помощью пакетного менеджера:
bash sudo apt update sudo apt install krb5-user libkrb5-dev
### Шаг 2: Настройка конфигурации Kerberos
Отредактируйте файл конфигурации Kerberos `/etc/krb5.conf`, чтобы он соответствовал вашему домену. Пример конфигурации:
ini [libdefaults] default_realm = DOMAIN.LOC dns_lookup_realm = false dns_lookup_kdc = true [realms] DOMAIN.LOC = { kdc = your.kdc.server admin_server = your.kdc.server } [domain_realm] .domain.loc = DOMAIN.LOC domain.loc = DOMAIN.LOCЗамените `your.kdc.server` на имя вашего контроллера домена.
### Шаг 3: Создание ключевого табличного файла (keytab)
На контроллере домена создайте пользователя для 1С и сгенерируйте ключевой файл (keytab). Используйте утилиту `ktpass`:
bash ktpass -princ usr1cv8/srv-1cserver.domain.ru@DOMAIN.LOC -mapuser usr1cv8 -pass YourPassword -out usr1cv8.keytab
Скопируйте полученный файл `usr1cv8.keytab` на клиентскую машину в удобное место, например, `/etc/krb5.keytab`.
### Шаг 4: Проверка Kerberos
На клиентской машине выполните команду `kinit`, чтобы проверить, что аутентификация работает:
bash kinit -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.
Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать!
Ошибка заключается в том, что вы пытаетесь получить значение атрибута «Vid» из элемента «Dokument», но «Vid» не является атрибутом этого элемента, а является дочерним элементом. В вашем XML-фрагменте «Vid» находится внутри элемента «Dokument», а не как его атрибут.
Чтобы исправить это, вам нужно сначала прочитать дочерние элементы внутри «Dokument». Вот пример, как это можно сделать:
1C ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ПутьКФайлу); Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Dokument" Тогда Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Vid" Тогда Вид = ЧтениеXML.Значение; // Получаем значение элемента Vid Сообщить("Вид: " + Вид); КонецЕсли; Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеXML.Имя = "Dokument" Тогда // Выходим из цикла, когда достигли конца элемента Dokument break; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ЧтениеXML.Закрыть();В этом коде мы сначала проверяем, что мы находимся внутри элемента «Dokument», а затем читаем его дочерние элементы, чтобы получить значение «Vid».
Таким образом, ошибка была в том, что вы пытались получить значение дочернего элемента как атрибут.
14 мая 2025 в 22:00 в ответ на: Зачем реквизит AfterIndexKey в справочнике «Диадок: юр/физлица»? #32550Здравствуйте, Наталья!
Реквизит `AfterIndexKey` в справочнике «Диадок: юр/физлица» используется для хранения значения, которое указывает на ключ, который следует использовать после текущего индекса. Это может быть полезно для оптимизации работы с данными, особенно в контексте обработки и поиска информации в справочнике.
Основные функции этого реквизита могут включать:
1. **Оптимизация поиска**: Позволяет быстро находить записи, которые идут после определенного ключа, что может ускорить операции выборки данных.
2. **Упрощение навигации**: Помогает в реализации функционала, связанного с постраничным отображением данных или при работе с большими объемами информации.
3. **Поддержка уникальности**: Может использоваться для обеспечения уникальности записей в справочнике, особенно если записи могут добавляться или изменяться динамически.Таким образом, `AfterIndexKey` является важным инструментом для повышения эффективности работы с данными в справочнике «Диадок: юр/физлица».
Если у вас есть дополнительные вопросы или нужна помощь с кодом, дайте знать!
Сергей, вот пример кода для загрузки прихода из XML файла в 1С. Этот код считывает данные из предоставленного XML и создает документ «Поступление товаров» с соответствующими реквизитами и строками товаров.
1C &НаСервереФункция ЗагрузитьПриходИз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 файлу, например:
1C ЗагрузитьПриходИзXML("C:pathtoyourfile.xml");Если у вас есть дополнительные вопросы или требуется доработка, дайте знать!
14 мая 2025 в 15:00 в ответ на: Как добавить условие по перечислению «ДляЮридическихЛиц» в запрос? #32546Привет, art!
Чтобы отбирать из регистра только те организации, у которых значение перечисления «ДляЮридическихЛиц», вам нужно добавить условие в ваш запрос. Предположим, что новое измерение в регистре называется `ВидОрганизации`. Вам нужно будет добавить это условие в секцию `ГДЕ` вашего запроса.
Вот как это можно сделать:
1C ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура КАК ТоварНаименование, РеализацияТоваровУслугТовары.Количество, РеализацияТоваровУслугТовары.Сумма КАК Сумма, РеализацияТоваровУслугТовары.СуммаНДС КАК СуммаНДС, РеализацияТоваровУслугТовары.Ссылка.Сделка, РеализацияТоваровУслугТовары.Ссылка.Сделка.Номер, РеализацияТоваровУслугТовары.Ссылка.Сделка.Дата, РеализацияТоваровУслугТовары.Цена КАК Цена, РеализацияТоваровУслугТовары.Цена * РеализацияТоваровУслугТовары.Количество КАК СуммаБезНДС, РеализацияТоваровУслугТовары.Сумма / РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Количество + РеализацияТоваровУслугТовары.СуммаНДС КАК СуммаСНДС, РеализацияТоваровУслугТовары.Номенклатура.Код КАК ТоварКод, РеализацияТоваровУслугТовары.Ссылка.Контрагент, РеализацияТоваровУслугТовары.Ссылка.Дата КАК ДатаДокументаРеал, РеализацияТоваровУслугТовары.Ссылка.Контрагент.ИНН КАК ИННПокупателя, РеализацияТоваровУслугТовары.Ссылка.Контрагент.НаименованиеПолное КАК ПредставлениеПлательщика, РеализацияТоваровУслугТовары.Ссылка.Сделка.Номер КАК Основание, РеализацияТоваровУслугТовары.Ссылка.Дата КАК ДатаДокумента, РеализацияТоваровУслугТовары.Ссылка.Номер КАК НомерДокумента, ПодразделенияОрганизацийСрезПоследних.Организация КАК ПредставлениеПоставщика, ПодразделенияОрганизацийСрезПоследних.Организация.ИНН КАК ИННОрганизации, ПодразделенияОрганизацийСрезПоследних.Подразделение.Адрес КАК АдресОрганизации, РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК ИтогСуммыСНДС ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений.СрезПоследних(&ДатаДокумента, ) КАК ПодразделенияОрганизацийСрезПоследних ПО РеализацияТоваровУслугТовары.Склад.Подразделение = ПодразделенияОрганизацийСрезПоследних.Подразделение ГДЕ РеализацияТоваровУслугТовары.Ссылка = &Ссылка И РеализацияТоваровУслугТовары.Цена > 0 И РеализацияТоваровУслугТовары.Количество > 0 И ПодразделенияОрганизацийСрезПоследних.ВидОрганизации = Перечисления.ВидыОрганизацийПодразделений.ДляЮридическихЛицВ этом запросе добавлено условие:
1C И ПодразделенияОрганизацийСрезПоследних.ВидОрганизации = Перечисления.ВидыОрганизацийПодразделений.ДляЮридическихЛиц
Это условие будет фильтровать записи, оставляя только те, у которых значение `ВидОрганизации` равно «ДляЮридическихЛиц».
Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
Чтобы добавить в ваш запрос информацию о серии номенклатуры, необходимо включить соответствующее поле из регистра или справочника, где хранится информация о сериях. Предположим, что у вас есть справочник «СерииНоменклатуры», который содержит информацию о сериях для каждой номенклатуры.
Вот как можно изменить ваш запрос, чтобы добавить поле «Серия»:
sql ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Номенклатура, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток, СерииНоменклатуры.Ссылка КАК Серия ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&период, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ПО СпрНоменклатура.Ссылка = СерииНоменклатуры.Номенклатура ПО СпрНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура ГДЕ ВЫБОР КОГДА &ТолькоВНаличии ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) > 0 ИНАЧЕ ИСТИНА КОНЕЦ И ВЫБОР КОГДА &ТолькоСЦенами ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) > 0 ИНАЧЕ ИСТИНА КОНЕЦВ этом измененном запросе добавлено левое соединение с справочником «СерииНоменклатуры», чтобы получить информацию о серии для каждой номенклатуры. Поле `СерииНоменклатуры.Ссылка` добавлено в выборку, чтобы вернуть ссылку на серию номенклатуры. Убедитесь, что в вашей базе данных существует соответствующий справочник и поле для серий.
13 мая 2025 в 13:15 в ответ на: Что делать, если временная таблица #tt1 не найдена в SQL-запросе? #32542Ошибка, которую вы видите, связана с выполнением SQL-запроса к базе данных. Сообщение указывает на то, что объект с именем `#tt1` не найден. Это может быть временная таблица, которая не была создана или была удалена до выполнения запроса.
Вот основные моменты, которые стоит проверить:
1. **Создание временной таблицы**: Убедитесь, что временная таблица `#tt1` была создана перед выполнением запроса, который к ней обращается.
2. **Область видимости**: Временные таблицы существуют только в пределах сессии, в которой они были созданы. Если вы пытаетесь обратиться к ней из другой сессии, это вызовет ошибку.
3. **Правильность имени**: Проверьте, правильно ли указано имя таблицы. Возможно, есть опечатка.
4. **Контекст выполнения**: Убедитесь, что запрос выполняется в правильном контексте, где доступна временная таблица.
Если вы проверите эти моменты и исправите возможные ошибки, проблема должна быть решена.
13 мая 2025 в 12:00 в ответ на: Как в 1С заполнить массив случайными числами и отсортировать пузырьком? #32540Привет, Михаил!
Вот пример кода на языке 1С, который заполняет массив случайными целыми числами и сортирует его методом пузырька:
1C &НаКлиенте Процедура ЗаполнитьИОтсортироватьМассив() // Определяем размер массива Размер = 20; // Создаем массив МассивСлучайныхЧисел = Новый Массив(); // Заполняем массив случайными целыми числами от 1 до 100 Для И = 1 По Размер Цикл СлучайноеЧисло = СлучайноеЧисло(1, 100); МассивСлучайныхЧисел.Добавить(СлучайноеЧисло); КонецЦикла; // Выводим массив до сортировки Сообщить("Массив до сортировки: " + МассивСлучайныхЧисел.Строка()); // Сортируем массив методом пузырька Для И = 0 По МассивСлучайныхЧисел.Количество() - 1 Цикл Для J = 0 По МассивСлучайныхЧисел.Количество() - 2 - И Цикл Если МассивСлучайныхЧисел[J] > МассивСлучайныхЧисел[J + 1] Тогда // Меняем местами Временное = МассивСлучайныхЧисел[J]; МассивСлучайныхЧисел[J] = МассивСлучайныхЧисел[J + 1]; МассивСлучайныхЧисел[J + 1] = Временное; КонецЕсли; КонецЦикла; КонецЦикла; // Выводим массив после сортировки Сообщить("Массив после сортировки: " + МассивСлучайныхЧисел.Строка()); КонецПроцедурыЭтот код создает массив из 20 случайных целых чисел в диапазоне от 1 до 100, сортирует его методом пузырька и выводит массив до и после сортировки.
Если у тебя есть дополнительные вопросы или нужна помощь, дай знать!
-
АвторСообщения