1с тип субконто в запросе
В плане счетов на счетах ОС первое субконто может быть Место хранения, ОС, НМА, Номенклатура.
Мне надо что бы запрос возвращал в Субкото1 всё кроме Место хранения.
Тоесть когда Субконто1 - Место хранения, то надо брать значение из Субконто2.
Можно ли в параметре запроса &Субконто установить отбор сразу на 3 вида субконто (ОС, НМА и Номенклатура)?
Честно скажу: глуповато спросил. Как в одну колонку впихнуть "все"?
Может вот это хотел?: "Выбрать итоги для записей, где условие по нужным субконто с параметрам: 1)ОС, 2)Номенклатура". А вот на каких местах эти субканты стоят я не знаю.
Примечание: Я так и не понял, "ОС, НМА, Номенклатура" - это сколько видов субконто? Три? Или "ОС, НМА" - это одно субконто с запятой в названии?
Делается так (названия не с твоими не совпадают):
Принципиальный момент в том, что массив "Субконто" передается запросу. И запрос пользуется субконто в этом же порядке. А в каком они стоят на счете, не играет роли. Лишь бы были.
Принципиальный момент в том, что массив "Субконто" передается запросу. И запрос пользуется субконто в этом же порядке. А в каком они стоят на счете, не играет роли. Лишь бы были.
Я это понимаю. Только принципиальный момент, что на одних счетах ОС, а на других НМА. И что мне передать в массив?
не совсем понятно, что значит сделать отбор? используйте ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ.
если ТИПЗНАЧЕНИЯ(МестоХранения) тогда берите Субконто2.
Или я не понял, чего именно хотите =)
Ну в общем другими словами объясню.
В запросе есть параметр субконто, и если сказать что оно должно быть типа ОС, то уже не важно каким по счету субконто будет это ОС - оно полюбому вернется в субконто1.
Проблема в том, что на одних счетах это ОС, а на других НМА и на некоторых счетах первое субконто места хранения.
А получать субконто2 нельзя - задублируются строки.
Ну или надо будет обходить выборку, проверять на тип, поместить в таблицу значений и потом свернуть.
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени ZIP-архив Чтение 0
Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий: - Открыть необходимый архив - Распаковать файлы Создание объекта ЧтениеZIPФайла можно осуществить двумя путями - создать инициализированный объект или Посмотреть все результаты поиска похожих
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Посмотреть все результаты поиска похожих
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
Для проверки типа поля в запросе 1С 8.3 можно воспользоваться функцией языка запросов ТИПЗНАЧЕНИЯ( ).
Функция ТИП( ) получает тип по его имени. Имена примитивных типов: Число, Строка, Булево, Дата. Имена ссылочных типов строятся по следующему принципу: Документ.РеализацияТоворовУслуг или Справочник.Номенклатура.
Для полей ссылочного типа существует еще один способ проверки, используя оператор ССЫЛКА.
Статья предназначена для технических специалистов – разработчиков 1С.
Взглянув на регистры в 1С 8.3 найти в запросах на языке 1С бухгалтерии такую неочевидную сложность (по крайне мере, на релизе 1С: Предприятие 8.3.10.2561).
· Если по виртуальной таблице (в частности «Остатки») регистра бухгалтерии делать выборку без разворота по субконто, то можно получить неверный результат
Обычный активно/пассивный счет «60.4» с двумя субконто: «Организация» и «Контрагенты».
Требуется получить остаток по нему с отбором по списку контрагентов.
Казалось бы, простейший запрос нам поможет:
его результат Сумма = 12 221 544,65 . Конкретное значение суммы значения не имеет, но сразу скажу, что она неверная.
Достаточно добавить поле выборки по Субконто1 и я получаю другой результат с итоговой суммой 51 765 945,85 . И это уже правильный результат.
Но как быть, если разворот по субконто счета в 1С нам не нужен, а нужна одна итоговая сумма? Простое применение агрегатной функции не помогает:
Получаю те же неправильные: Сумма = 12 221 544,65
Чтобы получить правильный результат, пришлось в запрос добавить конструкцию, которая никак не изменяет структуру выборки, но обращается к субконто:
В результате получил искомый результат 51 765 945,85, который можно было использовать в следующих запросах пакета.
Таким образом, при построении запросов по регистрам бухгалтерии, иногда требуется использовать конструкции, которые тем или иным образом обращаются к субконто, хоть в самой выборке 1С бухгалтерия субконто и не нужно.
В свое время в платформе была ошибка — после добавления субконто к счету платформа не производила рестутуризацию существующих проводок и в результате к ним не добавлялась строка с пустым значением нового субконто.
Внешне результат данной ошибки был виден в оборотке по счету. В группировке по данному субконто появлялось две пустые строки. Если выбирать запросом в консоли одна строка была пустым значением данного типа субконто а вторая NULL.
История «лечится» перепроведением или перезаписью движений.
Приведенный ниже запрос позволяет выявить такие ошибки
ВЫБРАТЬ
Хозрасчетный.Регистратор КАК Регистратор ,
Хозрасчетный.НомерСтроки КАК НомерСтроки ,
Хозрасчетный.СчетДт КАК Счет ,
Хозрасчетный.Сумма ,
Хозрасчетный.Организация ,
ЗНАЧЕНИЕ ( ВидДвиженияБухгалтерии.Дебет ) КАК ВидДвижения ,
«Д» КАК ВидДвиженияБуквой
ПОМЕСТИТЬ Движения
ИЗ
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
ВЫБРАТЬ
Хозрасчетный.Регистратор ,
Хозрасчетный.НомерСтроки ,
Хозрасчетный.СчетКт ,
Хозрасчетный.Сумма ,
Хозрасчетный.Организация ,
ЗНАЧЕНИЕ ( ВидДвиженияБухгалтерии.Кредит ),
«К»
ИЗ
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Движения.Регистратор КАК Регистратор ,
Движения.НомерСтроки КАК НомерСтроки ,
ВЫБОР
КОГДА ХозрасчетныйСубконто.ВидДвижения = ЗНАЧЕНИЕ ( ВидДвиженияБухгалтерии.Кредит )
ТОГДА «К»
ИНАЧЕ «Д»
КОНЕЦ КАК ВидДвиженияБуквой ,
ХозрасчетныйСубконто.ВидДвижения ,
ХозрасчетныйСубконто.Вид КАК ВидСубконто
ПОМЕСТИТЬ ДвиженияССубконто
ИЗ
Движения КАК Движения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
ПО Движения.Регистратор = ХозрасчетныйСубконто.Регистратор
И Движения.НомерСтроки = ХозрасчетныйСубконто.НомерСтроки
И Движения.ВидДвижения = ХозрасчетныйСубконто.ВидДвижения
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Движения.Регистратор КАК Регистратор ,
Движения.НомерСтроки КАК НомерСтроки ,
Движения.Счет ,
Движения.ВидДвижения
ИЗ
Движения КАК Движения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
ПО Движения.Счет = ХозрасчетныйВидыСубконто. Ссылка
ГДЕ
НЕ ( Движения.Регистратор , Движения.НомерСтроки , Движения.ВидДвиженияБуквой , ХозрасчетныйВидыСубконто.ВидСубконто ) В
(ВЫБРАТЬ
ДвиженияССубконто.Регистратор ,
ДвиженияССубконто.НомерСтроки ,
ДвиженияССубконто.ВидДвиженияБуквой ,
ДвиженияССубконто.ВидСубконто
ИЗ
ДвиженияССубконто КАК ДвиженияССубконто )
УПОРЯДОЧИТЬ ПО
Регистратор
ИТОГИ ПО
Регистратор ,
НомерСтроки
АВТОУПОРЯДОЧИВАНИЕ
ВыборкаДокументов = РезЗапроса . Выбрать ( ОбходРезультатаЗапроса . ПоГруппировкам );
ВремяНачалаОбработки = ТекущаяДата ();
КоличествоСтрок = ВыборкаДокументов . Количество ();
НомерСтроки = 0 ;
Пока ВыборкаДокументов . Следующий () Цикл
ТекущийМоментВремени = ТекущаяДата ();
НомерСтроки = НомерСтроки + 1 ;
КоличествоСтрокОставшихся = КоличествоСтрок — НомерСтроки ;
НаборЗаписей = РегистрыБухгалтерии . Хозрасчетный . СоздатьНаборЗаписей ();
НаборЗаписей . Отбор . Регистратор . Установить ( ВыборкаДокументов . Регистратор );
НаборЗаписей . Прочитать ();
НаборЗаписей . ОбменДанными . Загрузка =Истина;
ВыборкаПоСтрокам = ВыборкаДокументов . Выбрать ( ОбходРезультатаЗапроса . ПоГруппировкам );
Пока ВыборкаПоСтрокам . Следующий () Цикл
Проводка = НаборЗаписей [ ВыборкаПоСтрокам . НомерСтроки — 1 ];
Выборка = ВыборкаПоСтрокам . Выбрать ( ОбходРезультатаЗапроса . ПоГруппировкам );
Пока Выборка . Следующий () Цикл
Если Выборка . ВидДвижения = ВидДвиженияБухгалтерии . Дебет Тогда
Счет = Проводка . СчетДт ;
Субконто = Проводка . СубконтоДт ;
Иначе
Счет = Проводка . СчетКт ;
Субконто = Проводка . СубконтоКт ;
КонецЕсли;
СоответсвиеТекущихСубконто =Новый Соответствие ;
Для Каждого ВидСубконто ИЗ Счет . ВидыСубконто Цикл
СоответсвиеТекущихСубконто . Вставить ( ВидСубконто . ВидСубконто , Субконто [ ВидСубконто . ВидСубконто ]);
КонецЦикла;
Для Каждого ВидСубконто ИЗ Счет . ВидыСубконто Цикл
Субконто . Вставить ( ВидСубконто . ВидСубконто , ВидСубконто . ВидСубконто . ТипЗначения . ПривестиЗначение ());
Если СоответсвиеТекущихСубконто [ ВидСубконто . ВидСубконто ]<>Неопределено Тогда
Субконто . Вставить ( ВидСубконто . ВидСубконто , СоответсвиеТекущихСубконто [ ВидСубконто . ВидСубконто ]);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
НаборЗаписей . Записать ();
СреднееВремя =( ТекущаяДата ()- ВремяНачалаОбработки )/ НомерСтроки ;
Состояние ( Строка ( НомерСтроки )+ «/» + Строка ( КоличествоСтрок )+ » (» + Строка ( ТекущаяДата ()- ТекущийМоментВремени )+ «) » + Строка ( ТекущаяДата ()+ КоличествоСтрокОставшихся * СреднееВремя ));
ОбработкаПрерыванияПользователя ();
КонецЦикла;
Перед выполением на больших базах рекомендуется отключить итоги и запрет границы редактирования.
Дополнительно,для вашего удобства, выкладываю файл .sel для консоли запроса с обработкой, который содержить оба текста.
Статья предназначена для технических специалистов – разработчиков 1С.
Взглянув на регистры в 1С 8.3 найти в запросах на языке 1С бухгалтерии такую неочевидную сложность (по крайне мере, на релизе 1С: Предприятие 8.3.10.2561).
· Если по виртуальной таблице (в частности «Остатки») регистра бухгалтерии делать выборку без разворота по субконто, то можно получить неверный результат
Обычный активно/пассивный счет «60.4» с двумя субконто: «Организация» и «Контрагенты».
Требуется получить остаток по нему с отбором по списку контрагентов.
Казалось бы, простейший запрос нам поможет:
его результат Сумма = 12 221 544,65 . Конкретное значение суммы значения не имеет, но сразу скажу, что она неверная.
Достаточно добавить поле выборки по Субконто1 и я получаю другой результат с итоговой суммой 51 765 945,85 . И это уже правильный результат.
Но как быть, если разворот по субконто счета в 1С нам не нужен, а нужна одна итоговая сумма? Простое применение агрегатной функции не помогает:
Получаю те же неправильные: Сумма = 12 221 544,65
Чтобы получить правильный результат, пришлось в запрос добавить конструкцию, которая никак не изменяет структуру выборки, но обращается к субконто:
В результате получил искомый результат 51 765 945,85, который можно было использовать в следующих запросах пакета.
Таким образом, при построении запросов по регистрам бухгалтерии, иногда требуется использовать конструкции, которые тем или иным образом обращаются к субконто, хоть в самой выборке 1С бухгалтерия субконто и не нужно.
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Читайте также: