Перенумерация документов

Перенумерация документов

 В своей практике я не раз сталкивался с ситуацией, когда пользователи 1С меняя нумерацию вручную убирали лидирующие нули и таким образом сбивали автоматическую нумерацию. Что делать? Как...

Нумерация документов

Нумерация документов

Достаточно отредактировать один раз номер. Например в 1С 8.2 Торговле. Описываем ситуацию. Отредактировали номер у документа, а следующий не записывается сообщая что номер не уникален или просто...

Выгрузка/Загрузка Пользователей системы 1С

Выгрузка/Загрузка Пользователей системы 1С

Внешняя обработка ВыгрузкаЗагрузкаПользователей.epf предназначена

Замена ссылок в документах и справочниках

Замена ссылок в документах и справочниках

Нередки случаи когда пользователи конфигураций 1С сталкиваются с проблемой возникновения дублей объектов информационной базы. Причины их возникновения мы рассматривать не будем,а рассмотрим как...

Свертка базы данных в 1С

Свертка базы данных в 1С

Свертка базы данных в 1С - это удаление данных, как правило документов, за прошлые отчётные периоды, по которым зафиксированы результаты хозяйственной деятельности, и данные не меняются.

Счет-фактуры выданные для указанных документов Реализация товаров и услуг

Счет-фактуры выданные для указанных документов Реализация товаров и услуг

Обработка автоматически создает документы “Счет-фактура выданный” для указанных документов “Реализация товаров и услуг” и проводит их.

Дата запрета изменения данных в 1с 8

Дата запрета изменения данных в 1с 8

Бухгалтерский и оперативный учет часто нуждается в блокировке данных за прошедший период. Особенно это актуально когда годовые отчеты сданы и документы все сверены. Период нужно "закрыть", чтобы...

Ошибка "Нарушена целостность структуры конфигурации"

Один из многих вариантов решения ошибки "Нарушена целостность структуры конфигурации".Если Вам довелось столкнуться с этой ошибкой обратитесь к специалисту 1С однозначно. Вариантов решения много,...

Удаление помеченных объектов

Удаление помеченных объектов

Модифицированная обработка «Удаление помеченных объектов»

Внутренняя ошибка компоненты dbeng8

Частая ошибка при активной работе всякого рода обработками. Поможет: Способ 1. В конфигураторе - Администрирование - Тестирование и исправление ошибок. Способ 2. Файл chdbfl.exe, который...

Реестр в ФСС

Реестр в ФСС

Данный обработка - внешний отчет, создан для конфигурации 1C "Зарплата и управление кадрами".  

Изменения конфигурации заблокированы средствами распределенной ИБ

Изменения конфигурации заблокированы средствами распределенной ИБ

Довольно редко, но встречается дополнительная блокировка информационной базы. При обновлении наталкивается что обновление и изменение поддежки не доступны, а рядом с замочком висит второй с...

Заполнение документа Реализация товаров и услуг по документу Заказ покупателя без учета остатков (УТ 10.3)

Заполнение документа Реализация товаров и услуг по документу Заказ покупателя без учета остатков (УТ 10.3)

В УТ 10.3 даже  при установленных флажках в Настройке дополнительных прав у пользователя Разрешить превышение остатка на складе и Разрешить превышение остатка товаров организации не заполняется...

Расходы будущих периодов (страхование)

Необходимо страхование гражданское отразить ввиде расходов будущих периодов, обязательно по разным подразделениям и статьям затрат (20 и 23, 25). Как это лучше реализовать в Бухгалтерии 2.0 Для...

Уполномоченные лица в 1С:Бухгалтерии 8

В 1С:Бухалтерии 8 появилась возможность в документах по реализации товаров и услуг и счетах-фактурах для автоматического вывода на печать указать ответственных лиц, подписывающих документы в полях...

Резервы по сомнительным долгам в 1С:Бухгалтерия 8

Внимание! В 1С:Бухгалтерия 8 ред. 2.0, начиная с релиза конфигурации 2.0.37.8, автоматизирован расчет резервов по сомнительным долгам в соответствии с п.70 Положения по ведению бухгалтерского учета...

Распределение входящего НДС при совмещении режимов налогообложения в программе "1С:Бухгалтерия"

При распределении НДС по косвенным расходам (совмещение ОСН и ЕНВД) в книгу покупок попадает не возмещаемая, а вся сумма входящего НДС и одновременно в книгу продаж невозмещаемая сумма. Есть две...

1С: Предприниматель 8

1С: Предприниматель 8

Программа "1С:Предприниматель 8" предназначена для индивидуальных предпринимателей (ИП). 1С Предприниматель - это готовое решение для ведения учета и составления отчетности. Программный продукт "1С...

Чтение и запись XML в языке 1С 8.3, 8.2

/// Как прочитать файл в формате XML через DOM /// в 1с 8.3, 8.2   &НаСервере Процедура ПрочитатьФайлXMLЧерезDOM(ПутьКФайлу)  

Пустая дата в 1С

В текстах модулей Если Дата = '00010101' Тогда Если Дата = '00010101000000' Тогда Если Дата = '0001-01-01' Тогда Если Дата = Дата(1, 1, 1) Тогда В запросах ГДЕ Дата =...

Как прибавить к дате день, месяц в 1С

СледующийДень = ТекущаяДата() + 60 * 60 * 24; ДобавитьМесяц(Дата(2005, 1, 31), 1); ДобавитьМесяц(Дата(2005, 2, 28), -1); КонецМесяца(ДобавитьМесяц(Дата(2005, 2, 28), -1)); Функция...

Работа с массивами в 1С 8.x

  Как создать массив? Как создать многомерный массив? Как добавить элементы в массив? Как определить размер массива? Как обратиться к элементу массива? Как перебрать элементы массива? Как...

Обновление распределенной информационной базы (РИБ)

Правильное обновление 1С при использовании обмена РИБ.

Построитель отчёта и таблица значений

Таблица значений была обработана построителем отчета 

Чтение данных с листа Excel

Функция ПрочитатьЛистExcel(ТЗ = Неопределено, ЛистЭксель = Неопределено,НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт

Функций по работе со строками

Здесь в краткой форме приведу функций по работе со строками:

GUID, ГУИД, уникальный идентификатор

«GUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без...

Дата запрета программно в УТ 10, КОРП и УПП

Если Вам необходимо программно изменить Дату запрета по своим параметрам. Добавляем в модуле сеанса:  КоличествоДней = 5; Попытка ДатаУстановки = НачалоДня(ТекущаяДата()) -...

Сократить ФИО

Функция ФИО(Сотрудник) Экспорт Перем ПолноеИмя, Фамилия, ИмяОтчество, Имя, Отчество; Перем ПозицияПервогоПробела, ПозицияВторогоПробела; ПолноеИмя = Сотрудник.Наименование; ПозицияПервогоПробела =...

Как сравнивать типы значений

В 1С есть две функции, с помощью которых можно производить операции с типами. 

Контроль остатков в УТ 10.3

Меню: Сервис - Пользователи - Настройка дополнительных прав: - Разрешить превышение остатков на складе; - Разрешить превышение остатков организации.

Учет выплаченных и полученных дивидендов в "1С:Бухгалтерии 8" ред. 3.0

Компания может распределять прибыль между участниками (акционерами) ежеквартально, раз в полгода или раз в год. О том, как изменился с 1 января порядок исчисления налогов с дивидендов по акциям мы...

Тип документа 1с 8.x

 В ЗАПРОСЕ: ... ДокументСсылка ССЫЛКА Документ.Поступление ... В ТЕКСТЕ: Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.Поступление")  Тогда

Настройка журнала регистрации в 1С 8.2 (8.3)

Журнал регистрации 1С — специальный механизм платформы 1С версий 8.2 и 8.3, который позволяет фиксировать работу пользователей с системой. С помощью журнала можно узнать кто и когда изменял объекты...

Выгрузка / Загрузка данных посредством текстовых (TXT) файлов

Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста. Разница двух подходов состоит в способе загрузки документа: ТекстовыйДокумент...

Создание документа Операция Бух программно

ДокОперация = Документы.ОперацияБух.СоздатьДокумент();

Печать ценников любого размера, УТ 10.3, БП 2.0

Обработка предназначена для редактирования ценников.

Запросы в 1С

 Примеры запросов в 1С 8 Как в запросе 1с8 установить условие проверки периода на конец дня? Как правильно обрабатывать значения NULL в запросе 1С8? Как вывести результат запроса в табличный...

Как определить программно, существует ли у документа 1С требуемый реквизит

Вопрос Как определить программно, существует ли у документа требуемый реквизит Ответ В типовых конфигурациях 1С для этой цели используется функция «ЕстьРеквизитДокумента» общего модуля...

Копирование регистра 1с

Порой для уже отрытых конфигураций необходимо создать идентичную копию регистра для работы с ней по новым правилам установленным заказчиком. Часто такую задачу делают для аналитических отделов...

тип документа в запросе 1с

ХозрасчетныйОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг

Количество субконто счета %s превышает максимально возможное!

Количество субконто счета %s превышает максимально возможное!

Ошибка выходит при обновлении или добавлении нового счета в план счетов. Заходим в Конфигурацию. Находим Планы счетов необходимый нам список. Меняем "Максимальное кличество счетов"  

Форма выбора с отбором

СтандартнаяОбработка = Ложь; ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент);Если ЗначениеЗаполнено(Значение) Тогда ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущаяСтрока =...

Как редактировать записи в списке (8.2, 8.3) ?

ЭлементыФормы.СписокДоговорыПайщиков.СпособРедактирования = СпособРедактированияСписка.ВСписке;

8.Х. Как добавить записи в независимый регистр сведений?

Случай 1.МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = ПолеВводаНоменклатура; МенеджерЗаписи.Свойство =...

Список значений в языке 1С 8.3, 8.2 (в примерах)

&НаКлиенте Процедура ВыполнитьКод(Команда)       /// Как создать список значений в 1с 8.3, 8.2   Список = Новый СписокЗначений;       /// Как добавить элемент в список значений в 1с...

Тип Структура в языке 1С 8.3, 8.2 (в примерах)

&НаКлиенте Процедура ВыполнитьКод(Команда)       /// Как создать структуру (способ 1) в 1с 8.3, 8.2  

Таблица значений в языке 1С 8.3, 8.2 (в примерах)

&НаСервере Процедура ВыполнитьКодНаСервере()       /// Как создать таблицу значений в 1с 8.3, 8.2  

Работа с файловой системой в языке 1С 8.3, 8.2 (в примерах)

&НаСервере Процедура ЧтениеИЗаписьФайловНаСервере()       /// Как записать произвольное значение в файл в 1с 8.3, 8.2  

Функция Формат в языке 1С 8.3, 8.2 (в примерах)

&НаКлиенте Процедура ВыполнитьКод(Команда)       /// Как указать общее число цифр в 1с 8.3, 8.2

Тип Соответствие в языке 1С 8.3, 8.2 (в примерах)

&НаКлиенте Процедура ВыполнитьКод(Команда)       /// Как создать соответствие в 1с 8.3, 8.2  

Как вычислить формулу в строке?

ЧисловойРезультат=Вычислить(СтроковыйПараметр)

Изменение записей независимого регистра сведений

Вариант 1. Менеджер = РегистрыСведений.МойРегистр.СоздатьМенеджерЗаписи(); Менеджер.Контрагент = ИмяКонтраг1; Менеджер.Прочитать(); Если Менеджер.Выбран() Тогда ...

Транзакция

Разработчик может и сам создать транзакцию. Для выполнения действий в транзакции необходимо в код активировать её: НачатьТранзакцию(); По окончании транзакции её необходимо...

1С отборы в форме выбора

Процедура СобытиеНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ФормаВыбора = Документы.Документ1.ПолучитьФормуВыбора(,...

Обнаружена незавершенная операция обновления конфигурации бд

Восстановление при некорректном обновлении конфигурации. Обнаружена незавершенная операция обновления конфигурации бд

Перенос строки

Пример: НаборСтрок = "Первая строка"+Символы.ПС+ "Вторая строка"+Символы.ПС+ "Третья строка"; В конструкции Символы также содержаться: ВК (CR) — возврат...

Табличное поле в 1С 8.x

Табличное поле в 1С 8.x Как запретить пользователю изменять порядок следования колонок в табличном поле? Как запретить пользователю изменять любые настройки колонок табличного поля? Как...

  • Перенумерация документов

    Перенумерация документов

  • Нумерация документов

    Нумерация документов

  • Выгрузка/Загрузка Пользователей системы 1С

    Выгрузка/Загрузка Пользователей системы 1С

  • Замена ссылок в документах и справочниках

    Замена ссылок в документах и справочниках

  • Свертка базы данных в 1С

    Свертка базы данных в 1С

  • Счет-фактуры выданные для указанных документов Реализация товаров и услуг

    Счет-фактуры выданные для указанных документов Реализация товаров и услуг

  • Дата запрета изменения данных в 1с 8

    Дата запрета изменения данных в 1с 8

  • Ошибка "Нарушена целостность структуры конфигурации"

  • Удаление помеченных объектов

    Удаление помеченных объектов

  • Внутренняя ошибка компоненты dbeng8

  • Реестр в ФСС

    Реестр в ФСС

  • Изменения конфигурации заблокированы средствами распределенной ИБ

    Изменения конфигурации заблокированы средствами распределенной ИБ

  • Заполнение документа Реализация товаров и услуг по документу Заказ покупателя без учета остатков (УТ 10.3)

    Заполнение документа Реализация товаров и услуг по документу Заказ покупателя без учета остатков (УТ 10.3)

  • Расходы будущих периодов (страхование)

  • Уполномоченные лица в 1С:Бухгалтерии 8

  • Резервы по сомнительным долгам в 1С:Бухгалтерия 8

  • Распределение входящего НДС при совмещении режимов налогообложения в программе "1С:Бухгалтерия"

  • 1С: Предприниматель 8

    1С: Предприниматель 8

  • Чтение и запись XML в языке 1С 8.3, 8.2

  • Пустая дата в 1С

  • Как прибавить к дате день, месяц в 1С

  • Табличный документ, текстовый документ в 1С 8.x

  • Функция Формат в языке 1С 8.3, 8.2 (в примерах)

  • Работа с массивами в 1С 8.x

  • Обновление распределенной информационной базы (РИБ)

  • Построитель отчёта и таблица значений

  • Чтение данных с листа Excel

  • Функций по работе со строками

  • GUID, ГУИД, уникальный идентификатор

  • Дата запрета программно в УТ 10, КОРП и УПП

  • Сократить ФИО

  • Как сравнивать типы значений

  • Контроль остатков в УТ 10.3

  • Учет выплаченных и полученных дивидендов в "1С:Бухгалтерии 8" ред. 3.0

  • Тип документа 1с 8.x

  • Настройка журнала регистрации в 1С 8.2 (8.3)

  • Выгрузка / Загрузка данных посредством текстовых (TXT) файлов

  • Создание документа Операция Бух программно

  • Печать ценников любого размера, УТ 10.3, БП 2.0

  • Запросы в 1С

  • Как определить программно, существует ли у документа 1С требуемый реквизит

  • Как программно изменить проводку в Регистре Бухгалтерии?

  • Копирование регистра 1с

  • тип документа в запросе 1с

  • Количество субконто счета %s превышает максимально возможное!

    Количество субконто счета %s превышает максимально возможное!

  • Форма выбора с отбором

  • Как редактировать записи в списке (8.2, 8.3) ?

  • 8.Х. Как добавить записи в независимый регистр сведений?

  • Список значений в языке 1С 8.3, 8.2 (в примерах)

  • Тип Структура в языке 1С 8.3, 8.2 (в примерах)

  • Таблица значений в языке 1С 8.3, 8.2 (в примерах)

  • Работа с файловой системой в языке 1С 8.3, 8.2 (в примерах)

  • Функция Формат в языке 1С 8.3, 8.2 (в примерах)

  • Тип Соответствие в языке 1С 8.3, 8.2 (в примерах)

  • Как вычислить формулу в строке?

  • Изменение записей независимого регистра сведений

  • Транзакция

  • 1С отборы в форме выбора

  • Обнаружена незавершенная операция обновления конфигурации бд

  • Перенос строки

  • Табличное поле в 1С 8.x

Запросы в 1С

 Примеры запросов в 1С 8

  1. Как в запросе 1с8 установить условие проверки периода на конец дня?
  2. Как правильно обрабатывать значения NULL в запросе 1С8?
  3. Как вывести результат запроса в табличный документ?
  4. Как посчитать возраст по дате рождения в запросе 1С8?
  5. Почему в результате запроса 1С8 появляется ошибка «Ошибка чтения значения» при отладке?
  6. Как запросом получить все подчиненные документы?
  7. Как выглядит недокументированный синтаксис оператора ВЫБОР?
  8. Как составить запрос к табличной части документа?
  9. Как запросом для документа найти все подчинённые ему документы?
  10. Как сравнить строки в запросе?
  11. Как в запросе проверить поле на пустую ссылку?
  12. Как в запросе убрать фильтр на значение параметра?

 


Как в запросе 1с8 установить условие проверки периода на конец дня?

В запросе воспользуемся функцией КОНЕЦПЕРИОДА(&ДатаКонец, ДЕНЬ), она приведет дату к виду «23:59:59».

 

Запрос = Новый Запрос;
Запрос.Текст = «
|ВЫБРАТЬ
| СчетНаОплатуПокупателю.Дата
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
|ГДЕ
| СчетНаОплатуПокупателю.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
| И КОНЕЦПЕРИОДА(&ДатаКонец, ДЕНЬ)»;
Запрос.УстановитьПараметр(«ДатаКонец», ДатаКонец);
Запрос.УстановитьПараметр(«ДатаНачала», ДатаНачала);
РезультатЗапроса = Запрос.Выполнить();

 

Как правильно обрабатывать значения NULL в запросе 1С8?

В запросе значения типа NULL образуются в результате соединений (ЛЕВОЕ, ПРАВОЕ), когда элементу из одной таблицы по условию не находится соответствующего элемента из другой. Значение типа NULL имею специфические особенности:

    • Cравнение значения NULL с любым другим аргументом всегда возвращает ложь. Например, если в запросе поле «Количество» возвращает NULL, то если использовать операции сравнения «<», «>», или «=» с числом 1000, то результатом всегда будет «Ложь». Даже, если сравнить с самим значением NULL, то все равно результатом будет «Ложь»:
ГДЕ
	ГТД.Количество = NULL
    • Применение арифметических операций к значению типа NULL всегда возвращает NULL. Например, если в запросе к полю «Количество», которое возвращает NULL, прибавить числовое значение или отнять от него числовое значение, то будет возвращено значение NULL:
	ГТД.Количество+300 КАК Поле1
    • Для определения значения NULL используется функция конструкция «IS NULL». Чтобы получить записи со значением NULL воспользуемся следующей конструкцией:
      ГДЕ
      	ГТД.Регистратор.Организация IS NULL
      

      если нужно получить записи без NULL, тогда:

      ГДЕ
      	НЕ ГТД.Регистратор.Организация IS NULL
      
    • Для преобразования типа NULL используется функция «isNULL» или «ЕСТЬNULL». Теперь можно сравнивать с полученным значением или применять к нему арифметические операции, не боясь за конечный результат:
	ЕСТЬNULL(ГТД.Количество, 0)+300 КАК Поле1
    • Для того, чтобы в результате запроса отсечь записи, содержащие значения NULL применяются следующие конструкции: «IS NOT NULL», «NOT <поле> is NULL»:
ГДЕ
	ГТД.Регистратор.Организация IS NOT NULL

или

ГДЕ
	NOT ГТД.Регистратор.Организация IS NULL

Как вывести результат запроса в табличный документ?

Для этого можно использовать объект ПостроительОтчета:

 

ТабДок = Новый ТабличныйДокумент;
Результат = РезультатЗапроса.Выгрузить();

 

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат);
Построитель.Вывести(ТабДок);
ТабДок.Записать(«D:\mxl\Таблица.mxl»);

 

Как посчитать возраст по дате рождения в запросе 1С8?

Использовать функцию языка запроса РАЗНОСТЬДАТ:

 

ВЫБРАТЬ
Сотрудники.Сотрудник,
Сотрудники.Пол,
РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, &ТекДата, ГОД) КАК Возраст
ИЗ
Сотрудники КАК Сотрудники
ПОЛНОЕ СОЕДИНЕНИЕ ПриемНаРаботу КАК ПриемНаРаботу
ПО Сотрудники.Сотрудник = ПриемНаРаботу.Сотрудник
ПОЛНОЕ СОЕДИНЕНИЕ Пенсия КАК Пенсия
ПО Сотрудники.Сотрудник = Пенсия.Сотрудник

 

Почему в результате запроса 1С8 появляется ошибка «Ошибка чтения значения» при отладке?

Бывает, что в консоли запрос отрабатывается нормально, но в рабочем режиме падает с ошибкой «Значение не является значением объектного типа (Сумма)». При этом отладчик показывает, что в коллекции «ВыборкаИзРезультатаЗапроса» находиться сумма со значением «Ошибка чтения значения». При отладке выдается «Ошибка чтения значения», если в функции написать так:

 

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Возврат Выборка;

 

Ошибка чтения значений результата запроса, возникает из-за того, что в выборке еще не осуществлена установка на первый элемент выборки. Для этого существует метод «Следующий()» коллекции «ВыборкаИзРезультатаЗапроса». Поэтому надо писать так:

 

Если Выборка.Следующий() Тогда
ДоговорКонтрагента = Выборка.Наименование;
КонецЕсли;

 

Как запросом получить все подчиненные документы?

С помощью Функции «ПолучитьСписокВводимыхДокументовНаОсновании» получим список документов, которые вводятся на основании заданного документа:

 

//  Параметры: ДокументПоиска: Тип — Метаданные объекта
Функция ПолучитьСписокВводимыхДокументовНаОсновании(ДокументПоиска) Экспорт

 

СписокДокументов = Новый СписокЗначений;
Для Каждого Документ Из Метаданные.Документы Цикл
Если Документ.ВводитсяНаОсновании.Содержит(ДокументПоиска) Тогда
СписокДокументов.Добавить(Документ.Имя, Документ.Синоним);
КонецЕсли;
КонецЦикла;
Возврат СписокДокументов;

КонецФункции

 

Теперь, на основании списка документов найдем все подчинненные заданному документу:

Функция ПолучитьПодчиненныеДокументы()

 

СписокЗаполнения = ПолучитьСписокВводимыхДокументовНаОсновании(СсылкаНаОбъект.Метаданные());
ТекстЗапросаПоСтатусу = «»;
Для Каждого ЭлементСписка Из СписокЗаполнения Цикл
Если НЕ ПустаяСтрока(ТекстЗапросаПоСтатусу) Тогда
ТекстЗапросаПоСтатусу = ТекстЗапросаПоСтатусу + «
|ОБЪЕДИНИТЬ ВСЕ
;
КонецЕсли;

ТекстЗапросаПоСтатусу = ТекстЗапросаПоСтатусу + «
|ВЫБРАТЬ « + ?(ПустаяСтрока(ТекстЗапросаПоСтатусу), «РАЗРЕШЕННЫЕ», «») + «
| Док.Ссылка КАК ПодчиненныйДокумент
|ИЗ
| Документ.» + ЭлементСписка.Значение + » КАК Док
|ГДЕ
| Док.ДокументОснование = &парамОснование
| И Док.Проведен
;
КонецЦикла;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«парамОснование», СсылкаНаОбъект);
Запрос.Текст = ТекстЗапросаПоСтатусу;
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(«ПодчиненныйДокумент»);

КонецФункции // ПолучитьПодчиненныеДокументы()

 

Выведем полученные документы:

 

Процедура ВывестиПодчиненныеДокументы()
Массив = ПолучитьПодчиненныеДокументы();
Для каждого Эл Из Массив Цикл
Сообщить(Эл);
КонецЦикла;
КонецПроцедуры

 

Как выглядит недокументированный синтаксис оператора ВЫБОР?

Вот нестандартный вариант синтаксиса оператора ВЫБОР:

 


ВЫБРАТЬ
ВЫБОР ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ(2015, 4, 1))
КОГДА 1
ТОГДА «Понедельник»
КОГДА 2
ТОГДА «Вторник»
КОГДА 3
ТОГДА «Среда»
КОГДА 4
ТОГДА «Четверг»
КОГДА 5
ТОГДА «Пятница»
КОГДА 6
ТОГДА «Суббота»
ИНАЧЕ «Воскресенье»
КОНЕЦ КАК ДеньНедели

 

В этом примере показано, как с помощью опрератора ВЫБОР выводить текстовое представление дня недели.

Как составить запрос к табличной части документа?

Пример запроса:

 

Построитель.Текст = «ВЫБРАТЬ
| Товары.Ответственный,
| Товары.Ссылка КАК Документ,
| Товары.Номенклатура,
| СУММА(Товары.Сумма) КАК Сумма
|ИЗ
| Документ.ЧекККМ.Товары КАК Товары
|ГДЕ
| Товары.Ссылка.Дата Между &ДатаНач и &ДатаКон
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.Ответственный,
| Товары.Номенклатура»;

Особенность этого запроса в том, что мы обращаемся к табличной части «Товары».
Поэтому к реквизитам документа «ЧекККМ» мы обращаемся через свойство «Ссылка».
Только в этом случае мы сможем получить строки табличной части документа.
Если не указать свойство «Ссылка», то появится ошибка, примерно такого вида:

{(7, 5)}: Поле не найдено «Документ.ЧекККМ.Дата»

Как запросом для документа найти все подчинённые ему документы?

Воспользуемся следующим запросом:

 

Запрос = Новый Запрос;
Запрос.Текст = «
|ВЫБРАТЬ
| СчетФактураВыданный.Ссылка
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный
|ГДЕ
| СчетФактураВыданный.ДокументОснование = &ДокументОснование»;
Запрос.УстановитьПараметр(«ДокументОснование», Накладная);

 

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
СФ = Выборка.Ссылка.ПолучитьОбъект();
СФ.ДокументОснование = «»;
СФ.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;

 

Как сравнить строки в запросе?

 

|  ГДЕ  (Номер ПОДОБНО &НомерНакладной)
Запрос.УстановитьПараметр(«НомерНакладной», «%»+НомерНакладной+«%»);

 

Как в запросе проверить поле на пустую ссылку?

 

ВЫБРАТЬ
Начисление.Ссылка,
Увольнение.Ссылка КАК Ссылка1,
Начисление.ДокументОснование,
Увольнение.ДокументОснование КАК ДокументОснование1
ИЗ
Документ.НачислениеЗарплатыРаботникамОрганизаций КАК Начисление
СОЕДИНЕНИЕ
Документ.УвольнениеИзОрганизаций КАК Увольнение
ПО
Начисление.ДокументОснование = Увольнение.ДокументОснование
ГДЕ
(Начисление.ДокументОснование<>
ЗНАЧЕНИЕ(Документ.ТабельУчетаРабочегоВремениОрганизации.ПустаяСсылка))

 

Заметим, что в параметре пишем «Документ», а не «Документы» и «ПустаяСсылка» без скобок.

Как в запросе убрать фильтр на значение параметра?

Например, нам нужно вывести данные о продажах, отфильтровав их по значению в поле формы «Товар», если в этом поле выбран нужный нам товар. И если товар не выбран, то вывести данные по всем товарам. Пример запроса такой:

 

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ПродажиОбороты.Номенклатура,
| ПродажиОбороты.СуммаОборот КАК Сумма
|ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатаНачала,
| &ДатаОкончания, ,
| &Товар) КАК ПродажиОбороты»;

 

Запрос.УстановитьПараметр(«ДатаНачала», ДатаНачала);
Запрос.УстановитьПараметр(«ДатаОкончания», ДатаОкончания);
Запрос.УстановитьПараметр(«Товар», Товар);

 

Рассмотрим четыре способа, как избавится от фильтра в запросе.

  1. Изменим параметр запроса с помощью функции «СтрЗаменить»:
    Если Товар.Пустая() Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, «&Товар», «»);
    Иначе
    Запрос.Текст = СтрЗаменить(Запрос.Текст, «&Товар», «Номенклатура = &Товар»);
    КонецЕсли;
  2. В параметре виртуальной таблицы вместо значения «&Товар» запишем следующее выражение:
    |&Товар = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) 
    | ИЛИ Номенклатура = &Товар

     

    Если параметр товар не заполнен, то первое выражение примет значение ИСТИНА, тогда значение всего выражения примет значение ИСТИНА. В этом случае как-будто и нет никакого фильтра. Но если товар заполнен, то первое выражение принимает значение ЛОЖЬ. Тогда сработает второе выражение и произойдет фильтрация по товару.

  3. Еще один способ возможен благодаря новому объекту платформы «СхемаЗапроса (QuerySchema)», который появился в версии 1С 8.3.5:
    СхемаЗапроса = Новый СхемаЗапроса;
    СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);

     

    Если ЗначениеЗаполнено(Товар) Тогда
    СхемаЗапроса.ПакетЗапросов[0].Операторы[0].Источники[0].Источник.Параметры[3].Выражение =
    Новый ВыражениеСхемыЗапроса(«Номенклатура = &Товар»);
    КонецЕсли;
    Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();

  4. Последний способ очень громоздкий, но его тоже можно использовать:
    Если Товар.Пустая() Тогда
    Запрос.Текст =
    «ВЫБРАТЬ
    | ПродажиОбороты.Номенклатура,
    | ПродажиОбороты.СуммаОборот КАК Сумма
    |ИЗ
    | РегистрНакопления.Продажи.Обороты(&ДатаНачала,
    | &ДатаОкончания,
    | , ) КАК ПродажиОбороты»;
    Иначе
    Запрос.Текст =
    «ВЫБРАТЬ
    | ПродажиОбороты.Номенклатура,
    | ПродажиОбороты.СуммаОборот КАК Сумма
    |ИЗ
    | РегистрНакопления.Продажи.Обороты(&ДатаНачала,
    | &ДатаОкончания,
    | , Номенклатура = &Товар) КАК ПродажиОбороты»;
    КонецЕсли;

     

    Как видите, в запросе изменилось только значение условия виртуальной таблицы.

 

Хочу обратить ваше внимание на бесплатный курс по «Языку запросов 1С» от Сотникова Анатолия. Этот опытный преподаватель наглядно покажет вам, как строить запросы в 1С. Вот некоторые вопросы, которые будут обсуждаться:
  • Что такое запросы?
  • Для чего нужны параметры запроса?
  • Какие есть параметры у виртуальной таблицы?
  • Как писать условия в запросах?
  • Что такое псевдонимы?
  • Как сделать запрос к справочнику?
  • Как работать с результатом запроса во встроенном языке 1С?
  • Далее увидите сами...
Материал подобран весьма великолепный! Поэтому не стоит тратить время на его поиски во всемирной сети! Не теряйте драгоценное время! Все подробности о том, что есть в бесплатных видеоуроках на странице автора.

 

Похожие статьи:

Полезные обработки и отчеты

Полезные советы по БУ в 1С

JoomShaper Яндекс.Метрика Проверка PR и ТИЦ