Некоторые полезные новичкам платформы 1С8.х приёмы работы с запросами - 2 часть

Публикация № 158617

Разработка - Практика программирования

В статье приведено несколько приёмов работы с запросами повышающие эффективность работы программиста. Целевая аудитория публикации - начинающие программисты на платформе 1С 8.*

Публикация развивает тему работы с запросами, затронутую в //catalog.mista.ru/public/80366/ сравнительно с предыдущей публикацией текста много, но по-другому совсем никак.

     1.Полная форма использования оператора В.

  Помимо формы, указанной в предыдущей публикации:

Поле В (&СписокЗначений),

 Также в запросах языка 1С допустимы следующие формы использования этого оператора:

1.Поле В (&Массив)

2.Поле В (&Значение1,....&ЗначениеN),

3.Поле В (Выбрать …..) или для нескольких полей:

(Поле1, Поле2) В (Выбрать Т.Поле5, Т.Поле6 Из Таблица Т),  где Т - таблица (физическая, виртуальная или временная)

4.Поле В (&ТаблицаЗначений) или для нескольких полей:

(Поле1, Поле2) В (&ТаблицаЗначений)

 Вариант записи №3 называют подзапросом.        

У варианта №4 есть особенность: количество полей в Таблице значений должно точно совпадать с количеством полей, по которым производится проверка. Кроме того следует учесть что при сравнении по нескольким полям условие будет принимать значение Истина только при совпадении по всем полям одновременно.

 

2.Оператор В Иерархии.

 Этот оператор может быть использован только для иерархических справочников (и других иерархических объектов, например План Счетов, План Видов Характеристик). По сути этот оператор очень схож с оператором В, но имеет совсем другой смысл: оператор производит проверку, что элемент справочника принадлежит указанной группе (или группам вложенным в указанную группу).

Пример использования: отбираем в запросе все элементы справочника номенклатура, которые находятся в группе товаров «Мебель» (для простоты элемент справочника «Номенклатура» Мебель - предопределённый).

Запрос.Текст = "ВЫБРАТЬ  Номенклатура.Ссылка  ИЗ Справочник.Номенклатура КАК Номенклатура  

|        ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ (&Группа1)"

Запрос.УстановитьПараметр("Группа1",Справочники.Номенклатура.Мебель);

Примечание1: если в качестве аргумента оператора В Иерархии указать пустой элемент – будут отобраны все элементы справочника (т.е. оператор в Иерархии будет возвращать значение Истина для любого элемента справочника, т.к. у элементов и групп самого верхнего уровня значение реквизита Родитель пустое), например: Запрос.УстановитьПараметр("Группа1",Справочники.Номенклатура.ПустаяСсылка());

Примечание2: оператор В Иерархии очень мощный и позволяет проверить принадлежность группе для элементов справочника неограниченного уровня вложенности в рамках одного запроса (что невозможно сделать другими способами), но скорость работы этого оператора не сильно велика, что особенно заметно на больших справочниках.

     3.Использование конструктора запроса.

 В среде программистов 1С не редко возникают споры о использовании конструктора запросов или отказе от использования конструктора и написании запроса вручную. Тем не менее, по мнению большинства программистов, пользоваться конструктором нужно, но иногда после этого полученный запрос «допиливают руками». Для вызова конструктора запросов в любом модуле нужно кликнут по правой кнопке манипулятора мышь и из выпавшего меню выбрать или «Конструктор запроса» или «Конструктор запроса с обработкой результата».

 Основные преимущества использования конструктора запросов:  

1.Видимость всех доступных объектов конфигурации для построения запроса (а также всех временных таблиц запроса и т.п.). 

2.Точное указание имён полей и реквизитов (т.к. они не набираются вручную а выбираются из списка).

3.Упрощенное отображение взаимосвязей между объектами запроса и условий.

4.Относительно изолированная работа над каждой частью запроса (каждым запросом в пакетном запросе или отдельном запросе при объединении запросов).

5.Абсолютно достоверные данные по «существующим» в данной конфигурации Виртуальным таблицам.

 

4.Работа с датами в запросах (дата, момент времени, граница)

 В средствах разработки 1С, начиная с версии 8.0, тип данных Дата стал составным из Даты и Времени. И всё-бы было хорошо, но и тут есть свои особенности.

1 Проблемма.Время создания документов можно определить только с точностью до секунды, т.е.если мы дважды с небольшой паузой выполним следующий код:                                                                

Док = Документы.Приход.СоздатьДокумент();Док.Дата = ТекущаяДата(); Док.Записать();

Док = Документы.Расход.СоздатьДокумент();Док.Дата = ТекущаяДата(); Док.Записать();

Док = Документы.Приход.СоздатьДокумент();Док.Дата = ТекущаяДата(); Док.Записать();

Док = Документы.Расход.СоздатьДокумент();Док.Дата = ТекущаяДата(); Док.Записать();

 А потом выполнить следующий запрос:

ВЫБРАТЬ Приход.Ссылка, Приход.Дата КАК Дата   ИЗ   Документ.Приход КАК Приход

ОБЪЕДИНИТЬ ВСЕ  

ВЫБРАТЬ Расход.Ссылка, Расход.Дата  ИЗ Документ.Расход КАК Расход  

УПОРЯДОЧИТЬ ПО Дата

То получим странный результат:

 

Документы не упорядочены даже по порядку их создания! Если заменим реквизит документа Дата на реквизит МоментВремени в запросе получим уже более лучший результат:

 

В пределах 1 секунды идут сначала документы «Приход» этой секунды, а далее документы «Расход» этой секунды, причём номера документов идут строго в порядке возрастания (в нашем случае в виду автонумерации документов это означает что в порядке создания). Осталось решить небольшую проблему – упорядочить внутри секунды документы в реальном порядке их создания а не только для каждого вида документа – если заблаговременно не было задачи решения этой проблемы – она не разрешима в принципе.

Примечание: МоментВремени  содержит дату, время и ссылку на объект базы данных. А т.к. ссылка содержит код типа объекта и уникальный номер объекта – то сортировка в пределах секунды по МоментуВремени в качестве результата выдаст группы разнотипных  объектов внутри групп упорядоченных, но между собой не «перемешанных».

Как решить эту задачу:

1вариант: если номера самих документов не принципиальны – можно создать нумератор документов и тогда номер документа будет ответствовать его порядковому номеру при создании.  Это решение очень плохо в виду отказа от сквозной нумерации документов.

2 вариант: ввести дополнительное идентификационное поле и перед сохранением документа с незаполненным значением этого поля  получать значение этого поля для этого документа из любого сеансанезависимого источника, которым может быть и специальная запись непериодического Регистра Сведений и значение записное во внешний текстовый или другой файл или специально для этого написанный Com-сервис и т.п. и писать полученное значение в это поле, а сохраненное значение  увеличить на единичку.

2 Проблема. Выбор времени для выполнения запроса получения остатков. При выполнении многих запросов нужно указывать конец периода выборки (т.е. момент на который получаются остатки). Казалось-бы  вполне правильным было так:           

Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));

Но на самом деле запрос получения остатков будет выполнен по состоянию на начало указанной даты(которая есть дата+время). Если учесть, что         КонецМесяца(Дата(2012,10,29)) =  31.10.0012 23:59:59

То получается, что у нас выпадают обороты формируемые движениями (документами) за последнюю секунду периода и мы получим остатки за секунду до конца месяца а не по состоянию на конец месяца! Особенно часто эта особенность приводит к ошибке получения остатков при импорте нечальных остатков (когда в последную секунду может поместиться огромное количество документов) и в организациях работающих в режиме 7*24.

Как решить эту проблему:

1 вариант: прибавить к концу периода 1 секунду:

Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата())+1);

2 вариант: воспользоваться специально созданным для этого объектом Граница:

ГраницаПериода = Новый Граница(КонецМесяца(ТекущаяДата())+1, ВидГраницы.Исключая);

Запрос.УстановитьПараметр("КонецПериода",ГраницаПериода);

Примечание: если в запросе необходимо производить выборку по положению какого-то документа на временной оси, то второй вариант нагляднее, например:       

 ГраницаПериода = Новый Граница(Документ.МоментВремени, ВидГраницы.Исключая);   

 или если движения и этого документа должны попасть: 

ГраницаПериода = Новый Граница(Документ.МоментВремени, ВидГраницы.Включая);        

Примечание 2: Как справедливо заметили в комментариях ещё 1 плюс работы с типом данных Граница - не надо задумываться что выбираешь остатки или обороты и нет необходимости передавать в сложный запрос в котором выбираются и остатки и обороты 2 параметра описывающих момент на который проиводится выборка (один для оборотов, второй для остатков).

5.Выборка по группировкам, итоги.

 Кроме обычной выборки результатов запроса для иерархических справочников есть возможность иерархической выборки результатов, что это значит: пусть у нас справочник номенклатура имеет следующее наполнение данными:

Мебель      

      Стол 

      Стул                                                                                                                         

Инструменты 

           Кувалда 

           Напильник

То обычная выборка запроса вида: 

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

Выдаст список элементов и групп вообще говоря в произвольном порядке (если в запросе не сделано упорядочивание), но часто нужно выбирать  результат с учётом иерархического подчинения, то эта задача выполняется небольшой модификацией запроса и чуть более сложным кодом выборки:

 Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура  ИЗ Справочник.Номенклатура КАК Номенклатура      

ИТОГИ   ПО Номенклатура ИЕРАРХИЯ";

Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Номенклатура");

Пока Выборка.Следующий() Цикл

ВыборкаДетали = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Номенклатура");

   Пока ВыборкаДетали.Следующий() Цикл

          Сообщить("Элемент="+ВыборкаДетали.Номенклатура);

   КонецЦикла;

КонецЦикла;

Кроме того есть платформа позволяет при выполнении выборки производить расчёт итогов на каждом уровне, пусть для простоты запроса итоги берём из справочника (а не из регистров накопления) :

Запрос = Новый Запрос

Запрос.Текст = "ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, Номенклатура.Продано КАК Продано

ИЗ    Справочник.Номенклатура КАК Номенклатура 

ИТОГИ СУММА(Продано

ПО   Номенклатура ИЕРАРХИЯ";

Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Номенклатура");

Пока Выборка.Следующий() Цикл

Сообщить("Группа="+Выборка.Номенклатура+" Продано="+Выборка.Продано);    

ВыборкаДетали = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Номенклатура");  

    Пока ВыборкаДетали.Следующий() Цикл       

            Сообщить("Элемент="+ВыборкаДетали.Номенклатура+" Продано="+ВыборкаДетали.Продано);  

     КонецЦикла;    

КонецЦикла;

Примечание1: есть ещё один вариант обход «ПоГруппировкам», отличается от иерархического обхода тем, что элементы выборки с иерархическими итогами будут в нем как детальные записи а не узловые.

Примечание2: для обхода справочника с более сложной структурой (количеством уровней>2) можно воспользоваться рекурсией, например вот так:

……………………..                                                                                                       

 Выборка Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
 ВыбратьРекурсивно(Выборка);                                                                                   

  ………….
КонецПроцедуры

Процедура ВыбратьРекурсивно(Выборка)

Пока Выборка.Следующий() Цикл 

Сообщить(Выборка.Номенклатура+" колво="+Выборка.Продано); 

// Попытка получить дочерние записи

    ВыбратьРекурсивно(Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
КонецЦикла;
КонецПроцедуры

Примечание3: ещё одно применение иерархической выборки – выгрузка результатов запроса в объект типа Дерево Значений, например так:

         ЗначениеВРеквизитФормы(Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Дерево");

или так:

         Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

 

6.Временные таблицы, пакетные запросы.

 Ещё одной очень мощной возможностью языка запросов 1С является работа с временными таблицами. По сути, мы результат запроса помещаем во временную таблицу, с которой далее можем работать как с обычной таблицей. Сам запрос становится составным из нескольких запросов, которые выполняются строго последовательно,  один (последний) запрос пакета выполняет выборку данных – такой составной запрос называют пакетным запросом. Каждая временная таблица имеет своё имя и т.о. в пакетном запросе может создаваться произвольное количество таблиц. Время жизни временной таблицы ограниченно временем выполнения запроса, как только запрос был выполнен – все временные таблицы уничтожаются, а память занятая хранением данных временных таблиц высвобождается.

 Для того чтобы выполнить помещение данных во временную таблицу используется оператор ПОМЕСТИТЬ, который пишется в запросе между операторами ВЫБРАТЬ  и ИЗ.  Запросы внутри пакетного запроса отделяются друг от друга строками:

;

////////////////////////////////////////////////////////////

 Пример небольшого пакетного запроса выбирающего последний документ продажи «Реализация» (у документа есть табличная часть «Товары», в которой перечислены реализованные товары) для каждой номенклатуры.  

Схема пакетного запроса:

в 1 запросе получаем полный перечень продаваемой номенклатуры и максимальную дату продажи для каждой из номенклатур, 

во 2 запросе отбираем для каждой номенклатуры из первого запроса документ реализации с датой равной для этой номенклатуры максимальной

ВЫБРАТЬ  РелизацияТовары.Номенклатура, МАКСИМУМ(РеализацияТоваровТовары.Ссылка.Дата) КАК Дата

 ПОМЕСТИТЬ Даты 

ИЗ Документ.Реализация.Товары КАК РеализацияТовары

СГРУППИРОВАТЬ ПО  РеализацияТовары.Номенклатура 

;

////////////////////////////////////////////////////////////

ВЫБРАТЬ  Даты.Номенклатура,  Даты.Дата, МАКСИМУМ(Реализация.Ссылка) КАК Ссылка 

ИЗ Даты КАК Даты

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Реализация КАК Реализация 

   ПО Даты.Дата = Реализация.Дата 

СГРУППИРОВАТЬ ПО Реализация.Ссылка

Что даёт использование пакетных запросов: даёт возможность написания более сложных запросов и при этом более читабельных запросов, оптимизирует скорость выполнения запроса, часто это единственный способ избежать выполнения запроса в цикле. Если посмотреть в исходники типовых конфигураций – все сложные запросы пишутся исключительно как пакетные.

 

     7.Последовательность чисел, дат.

 Задача: генерация числовой последовательности от 0 до 959  в запросе. При использовании пакетного запроса задача решается легко:

ВЫБРАТЬ Цифры.Поле1 КАК Цифра 

 ПОМЕСТИТЬ Цифры

ИЗ  (ВЫБРАТЬ 1 КАК Поле1 

ОБЪЕДИНИТЬ  ВЫБРАТЬ

ОБЪЕДИНИТЬ  ВЫБРАТЬ 3  

ОБЪЕДИНИТЬ  ВЫБРАТЬ 4

ОБЪЕДИНИТЬ  ВЫБРАТЬ

ОБЪЕДИНИТЬ  ВЫБРАТЬ 6

ОБЪЕДИНИТЬ  ВЫБРАТЬ 7

ОБЪЕДИНИТЬ  ВЫБРАТЬ 8

ОБЪЕДИНИТЬ  ВЫБРАТЬ 9

ОБЪЕДИНИТЬ  ВЫБРАТЬ 10) КАК Цифры 

;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ   (Цифры.Цифра-1) + (Цифры1.Цифра -1)*10+ (Цифры2.Цифра -1)*100  КАК Число 

ИЗ Цифры КАК Цифры, Цифры КАК Цифры1, Цифры КАК Цифры2 

ГДЕ (Цифры.Цифра-1) + (Цифры1.Цифра -1)*10+ (Цифры2.Цифра -1)*100 <=959 

УПОРЯДОЧИТЬ ПО  Число

 Задача: генерация последовательности дат от Дата1 до Дата2. Решается аналогично, можно как выполнить в 3 шага (первый и второй как в приведённом примере, но результат не выбрать а поместить во временную таблицу) или в 2 шага изменив второй запрос пакета на вот такой:

ВЫБРАТЬ  ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, (Цифры.Цифра-1) + (Цифры1.Цифра -1)*10+ (Цифры2.Цифра -1)*100) КАК Дата

ИЗ  Цифры КАК Цифры,   Цифры КАК Цифры1,   Цифры КАК Цифры2 

ГДЕ   ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, (Цифры.Цифра-1) + (Цифры1.Цифра -1)*10+ (Цифры2.Цифра -1)*100)

УПОРЯДОЧИТЬ ПО  Дата

Примечание: естественно этот запрос будет правильно работать только если между датами Дата1 и Дата2 не более 999 дней.

8.Использование данных из таблицы значений в запросе.

  Если в первом разделе (оператор В) мы производим сравнение набора полей с данными из Таблицы значений, то иногда этого мало. Например, из стороннего источника передаются наборы данных, например такие: штрих-код и количество единиц проданной продукции. Можно конечно в запросе обойти переданный набор значений выполняя на каждой итерации цикла запрос, но это наихудший вариант решения этой задачи. Правильнее сделать так:

1.Создать типизированную Таблицу значений (т.е. у которой указан тип для каждого поля).

2.Заполнить Таблицу значений полученными данными о продажах.

3.Произвести поиск номенклатуры в запросе.

Пример кода для 1 и 3 этапа:

Создание типизированной Таблицы значений:

// Создание описателей типов для таблицы значений 

КЧК = Новый КвалификаторыЧисла(14,3);

КЧШК = Новый КвалификаторыЧисла(13,0);

Массив = Новый Массив;

Массив.Добавить(Тип("Число"));

ОписаниеТиповЧК = Новый ОписаниеТипов(Массив, , ,КЧК);

Массив.Очистить();

Массив.Добавить(Тип("Число"));

ОписаниеТиповЧШ = Новый ОписаниеТипов(Массив, , ,КЧШК);

// Создание таблицы значений

ТаблицаЗначений = Новый ТаблицаЗначений;

// добавим в таблицу значений две колонки

ТаблицаЗначений.Колонки.Добавить("ШтрихКод",ОписаниеТиповЧШ,"ШтрихКод",13); ТаблицаЗначений.Колонки.Добавить("Продано",ОписаниеТиповЧК,"Продано",14);

 

Поиск Номенклатуры в запросе:

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ ТЗ.ШтрихКод, ТЗ.Количество 

ПОМЕСТИТЬ ТЗ

ИЗ &ТЗ КАК ТЗ

;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ ТЗ.Количество КАК ОбъемПродаж, Номенклатура.Ссылка КАК Ссылка

ИЗ ТЗ КАК ТЗ

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура

ПО ТЗ.ШтрихКод = Номенклатура.ШтрихКод";

Запрос.УстановитьПараметр("ТЗ", ТаблицаЗначений);

 

Примечание: для работы с Таблицей Значений в запросе всегда необходимо сначала данные из Таблицы Значений поместить во Временную Таблицу, а уже потом можно работать с этими данными внутри пакетного запроса.

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. psamt1k 29.10.12 17:59 Сейчас в теме
Спасибо! Сохранил в закладки, авось пригодится ;)
AlexanderEkb; +1 Ответить
4. RealEscander 823 29.10.12 19:08 Сейчас в теме
2. AnryMc 724 29.10.12 18:09 Сейчас в теме
(0) Автор! У вас в публикации 2 раза повторяется один и тот же текст (с разным форматированием)
6. RealEscander 823 29.10.12 19:10 Сейчас в теме
(2) AnryMc, спасибо, поправил!
3. Damian 894 29.10.12 18:15 Сейчас в теме
(0), читать невозможно, обилие форматов и цветов сбивает с мысли. Структурировано очень плохо. Наспех писали?
5. RealEscander 823 29.10.12 19:09 Сейчас в теме
(3) Damian, ну примерно как в редакторе кода конфигуратора от 1С.
7. Sybr 237 30.10.12 09:20 Сейчас в теме
Оператор В Иерархии в основном применяется для планов счетов, а не "только для иерархических справочников". Дальше не читал.
9. RealEscander 823 30.10.12 09:49 Сейчас в теме
(7) Sybr, мне вот как-то имхается что справочник, что пс, что пвх - с точки зрения базовода почти одно и то-же по сути, только у №2 и №3 есть спец реквизиты с которыми они великолепно решают специальные задачи.

Но всё-же, спасибо за замечание, поправил.
8. HDRX 22 30.10.12 09:30 Сейчас в теме
10. ARL 298 30.10.12 11:39 Сейчас в теме
Насколько помню по курсам 1С проблема 2 изложена некорректно.
То получается, что у нас выпадают обороты (движения, документы и т.п.) за последнюю секунду периода!


Ситуация следующая: обороты за последнюю секунду как раз и выводятся, а вот остатки выводятся на начало секунды.
Поэтому предложенное решение №1:
1 вариант: прибавить к концу периода 1 секунду:
правильно только если мы хотим получить остатки именно на конец данной секунды и только остатки, без оборотов, к оборотам же добавятся обороты следующей секунды.
Проще говоря - остатки - добавляем секунду, обороты - не добавляем.

Универсальным и беспроигрышным решением будет вариант 2 - граница, тут уже можно не задумываться - что мы выбираем - остатки или обороты, или и то и другое вместе.
Tolpinski; user712426; tenaxxx; talych; +4 Ответить
11. RealEscander 823 30.10.12 13:22 Сейчас в теме
(10) ARL, перечитал, действительно совсем невнятно что про остатки... напрочь. Спасибо, переписал немного текста и про остатки и обороты в 1 запросе заострил.
user712426; +1 Ответить
65. sacred 172 22.07.13 17:12 Сейчас в теме
(10) ARL, А вот и нет. Если в запросе параметр используется не только как параметр виртуальной таблицы, но и для сравнения с датой, например, "Подзапрос.Период < &КонецПериода", то граница в качестве параметра вызовет ошибку в таком условии. Так что у этого варианта тоже есть ограничения применимости.
67. ARL 298 22.07.13 17:32 Сейчас в теме
(65)Речь шла об остатках и оборотах, документы тут не причем. А если все-таки надо одновременно использовать и момент времени и дату - то параметры надо разделять. В типовых это так и делается (пример - универсальный отчет).
69. RealEscander 823 22.07.13 18:45 Сейчас в теме
(67) ARL, граница всегда отработает как нужно. Ну попробуйте сами!
70. sacred 172 23.07.13 11:53 Сейчас в теме
(67) ARL, Ну что вы. Речь в статье шла о запросах вообще, о некоторых их особенностях. И я по этому поводу высказался в том смысле, что в 1с не существует единого универсального типа данных, представляющего собой точку на оси времени, пригодного для использования в качестве параметра запроса во всех без исключения случаях. Т.е. "серебряной пули" - нет. Как справедливо заметил RealEscander, красивым решениям в 1с "нет места".
12. ildarovich 6997 30.10.12 13:47 Сейчас в теме
В разделе 7 правильней начинать цифры с "0" (до "9"). Это сделает ненужным последующее вычитание 1, сделает код короче и понятней, да и называть "10" цифрой просто неправильно (это число).
dj_serega; tenaxxx; mtv:); Kosstikk; SirYozha; pwn; +6 Ответить
13. Новенький_2209 30.10.12 13:47 Сейчас в теме
ГДЕ Номенклатура.Ссылка =В ИЕРАРХИИ (&Группа1)"


Статью правильнее назвать: от новичка новичку: некоторые полезные приемы.
14. galinka1c8 30.10.12 14:21 Сейчас в теме
Кое-что новенькое для себя почерпнула, спасибо. Особенно понравилось про работу с таблицами значений в запросе. Про это нигде раньше не попадалось, а вещь полезная.
15. OVladius 32 30.10.12 16:40 Сейчас в теме
Полезная информация, сохранил в закладках себе на заметку :)
16. AlexLed 30.10.12 18:15 Сейчас в теме
Спасибо за информацию, очень пригодилось.
17. petrov_al 10 30.10.12 19:32 Сейчас в теме
...ГДЕ Номенклатура.Ссылка =В ИЕРАРХИИ (&Группа1)"...Знак равно здесь лишнее.
21. RealEscander 823 31.10.12 05:48 Сейчас в теме
(17) petrov_al, (18) Yimaida, ага, спасибо, поправлю, видимо пока разметку (больше часа!!! с форматированием текста и правкой цветов)сделал ошибку...
18. Yimaida 35 30.10.12 22:17 Сейчас в теме
Поставил + за запрос с датами, правда, есть там недописка (<=&Дата2)
19. TMV 14 30.10.12 22:21 Сейчас в теме
(0) автор,
"..получим уже более лучший результат:"

Привет от Светы из Иваново!
user712426; Чародей; foxey; chemezov; gc1c; otdel1c; pwn; +7 Ответить
20. xdim 6 31.10.12 03:24 Сейчас в теме
Не знал про возможность одновременного использования двух полей с оператором "в".
Прям сейчас попробую по использовать в работе. Спасибо.
п.с. От себя бы добавил пожелания с комментариями производительности.
на 8.1 и ранних 8.2 в Иерархии очень сильно вешал запрос.
22. RealEscander 823 31.10.12 05:54 Сейчас в теме
(20) xdim, ну как-бы про скорость работы уже написал во втором примечании... может не явно указано про низкую скорость на больших справочниках, наверное акцент на это сделать будет правильнее. Кста на последник 8.2 и тестовой 8.3 тоже не летает... но вызов запроса в цикле или выгрузка выборки в таблицу значений и "ручная работа" с ней будет ещё медленнее... ну может кроме особых специфических случаев.
23. KliMich 31.10.12 06:04 Сейчас в теме
Спасибо! Есть полезные нюансы (век живи, век учись ...)
24. wolfsoft 2421 31.10.12 10:04 Сейчас в теме
> ГраницаПериода = Новый Граница(КонецМесяца(ТекущаяДата())+1, ВидГраницы.Исключая);

а так не проще?

ГраницаПериода = Новый Граница(КонецМесяца(ТекущаяДата()), ВидГраницы.Включая);
user712426; +1 Ответить
27. RealEscander 823 31.10.12 11:20 Сейчас в теме
(24) wolfsoft, сделано именно так как хотел показать, что-бы было видно от чего эта граница создаётся.
34. wolfsoft 2421 31.10.12 13:10 Сейчас в теме
(27) RealEscander, не понял я всей глубины такого написания, по мне - так в моём варианте как раз понятней, ну да дело ваше, успехов :)
25. Valerich 1677 31.10.12 10:14 Сейчас в теме
ВЫБРАТЬ  Даты.Номенклатура,  Даты.Дата, МАКСИМУМ(Реализация.Ссылка) КАК Ссылка 

 ИЗ Даты КАК Даты

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Реализация КАК Реализация 

   ПО Даты.Дата = Реализация.Дата 

СГРУППИРОВАТЬ ПО Реализация.Ссылка
Показать


Возможно я чего-то не понимаю в запросах, но здесь с группировками намой взгляд явная ошибка. Жаль новичков, которым адресована статья, которые лоб об не расшибут. Вы уж хотя бы в конструкторе запросы проверяйте перед публикацией.
28. RealEscander 823 31.10.12 11:31 Сейчас в теме
(25) Valerich, документов в течении дня может быть только 1? 1 и та-же номенклатура не может повторяться в разных строках одного документа?
30. Valerich 1677 31.10.12 12:05 Сейчас в теме
(28) при чем здесь один или не один документ? Я спросил про группировку в запросе.
Может быть я отстал от жизни и синтаксис языка СКЛ кардинально поменялся, но до сих пор я твердо знал, что поле либо должно быть перечислено в списке группировочных (в разделе СГРУППИРОВАТЬ ПО) , либо входить в агрегатную функцию. В Вашем случае одно и то же поле участвует в обоих разделах, а другие поля запроса не присутствуют ни в одной из групп полей.
33. RealEscander 823 31.10.12 12:25 Сейчас в теме
(30) Valerich, вы хотите по каждой номенклатуре получить только 1 запись в выборке? Если да - то групируйте
26. Valerich 1677 31.10.12 10:16 Сейчас в теме
Поиск Номенклатуры в запросе:


Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ ТЗ.ШтрихКод, ТЗ.Количество                                                                                                                                          ПОМЕСТИТЬ ТЗ

ИЗ &ТЗ КАК ТЗ 

;

////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ ТЗ.Количество КАК ОбъемПродаж, Номенклатура.Ссылка КАК Ссылка 

ИЗ ТЗ КАК ТЗ

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура

ПО ТЗ.ШтрихКод = Номенклатура.ШтрихКод";

Запрос.УстановитьПараметр("ТЗ", ТаблицаЗначений);
Показать




Здесь тоже отсутствует оператор помещения ТЗ во временную таблицу. Или уже не нужен?
29. RealEscander 823 31.10.12 11:32 Сейчас в теме
(26) Valerich, результат достаточный для демонстрации получен, если кому-то нужно будет прицепить цену проданой номенклатуры - он наверное это сможет сделать сам.
31. Valerich 1677 31.10.12 12:06 Сейчас в теме
(29) еще раз повторю: вы не поместили внешний источник данных во временную таблицу (отсутствует ПОМЕСТИТЬ), но используете во втором запросе. Во время исполнения будет ошибка.
32. RealEscander 823 31.10.12 12:25 Сейчас в теме
(31) Valerich, внимательно смотрим вправо - оно туда съехало.... как я "люблю" это форматирование!!!
35. aexeel 72 31.10.12 14:16 Сейчас в теме
Можно еще упомянуть, что конструктор режет комментарии и * заменяет на полный список полей. И раз уж для новичков, то что "ПОДОБНО" поддерживает поиск по шаблону.
37. RealEscander 823 31.10.12 14:31 Сейчас в теме
36. dbaser 20 31.10.12 14:22 Сейчас в теме
работа проделана не маленькая, поэтому плюсую.
информация полезная (Список чисел, ВТ, Даты)
38. bulpi 174 31.10.12 15:04 Сейчас в теме
Массив = Новый Массив;

Массив.Очистить();



Это что за эпическая конструкция ?????

В текстах запросов есть ошибки.
Автор , исправьте!!! А то рука тянется поставить минус. Уж если взялся учить, то учи правильно!
39. RealEscander 823 31.10.12 16:06 Сейчас в теме
(38) bulpi, чё-чё, дёргал из реального кода, куски удалял, да видать не всё... ща поправлю. Заодно и немного форматирование поправлю.
40. VictorK 31.10.12 17:20 Сейчас в теме
Польза от статьи есть, но для новичков очень полезно показывать результаты выполнения запросана на примерах.
41. RealEscander 823 31.10.12 17:30 Сейчас в теме
(40) VictorK, это так, но на мой взгляд материалу и так многовато (текста на каждый пример)... вот первая часть получилась компактная: приём, пример, что он даёт.... а тут уже и ужиматься некуда а многовато...
42. OrsoBear 01.11.12 09:27 Сейчас в теме
Спасибо за примеры, конструктором строил, как получится, помаленьку пришел к осмыслению и оптимизации кода. Да, ошибки попадаются, но мысль донесена доходчиво. Добавлю в закладки.
43. kurvik 02.11.12 17:04 Сейчас в теме
Реализацию ряда статей попробовал на практике-получилось.Немного расходиться с теорией. Но вполне понятно.Положил в закладку.Спасибо.
44. RealEscander 823 03.11.12 08:46 Сейчас в теме
Спасибо всем! Рад что кому-то пригодилось.
Все примеры делал так: брал что-то из реала (а он у меня достаточно специфичен) и старался адаптировать к тому, что будет более понятно: например, про выборку из таблицы значений - взял из своей обработки, которая производит загрузку показаний снятых со счётчиков с ридерами (если кто знает что это такое)... Наверное стоило-бы сделать демо конфу... это действительно упущение которое следует учесть.
45. wirg 03.11.12 09:45 Сейчас в теме
Нет, по-моему, демо конфу не надо. В конце концов всегда нужно критически относиться к любой информации и не воспринимать ее как божественное откровение. Будет повод почитать документацию или самому поковыряться в коде.
46. dimk@a 04.11.12 10:55 Сейчас в теме
для работы с Таблицей Значений в запросе всегда необходимо сначала данные из Таблицы Значений поместить во Временную Таблицу, а уже потом можно работать с этими данными внутри пакетного запроса

Вот этот момент честно не понял. Вы имеете ввиду последующее соединение со справочником номенклатура?
Еще момент:
Запрос.Текст = "ВЫБРАТЬ ТЗ.ШтрихКод, ТЗ.Количество

в таблице значений вы создали колонки ШтрихКод и Продано.
В целом за статью спасибо!
48. RealEscander 823 05.11.12 05:48 Сейчас в теме
(46) dimk@a, для работы с Таблицей Значений сначало нужно в запросе выбрать из неё данные во временную таблицу(в отдельном запросе пакета). А дальше особенностей в использвании уже нет(можно и соединять и группировать и т.п.).
47. serega3333 04.11.12 15:37 Сейчас в теме
Отличный цикл статей, очень помогли, спасбио
49. Роман_Курилов 06.11.12 19:52 Сейчас в теме
50. integragirl 07.11.12 15:20 Сейчас в теме
Очень хорошая статья для новичков, много описано, не надо искать по закоулкам интернета. Плюс автору!
зы. Эх где была эта статья, когда я начинала, столько нервов было потрачено.
54. xzorkiix 32 12.11.12 08:54 Сейчас в теме
(50) integragirl, а у Вас отличная аватарка. Тру?

UPD не тру :(
55. AnryMc 724 12.11.12 11:07 Сейчас в теме
60. tormozit 5801 14.11.12 17:49 Сейчас в теме
(54), (55) в профайле у нее аватар чрезвычайно похож на мой, только вертикально зеркально отраженный.
51. Sergeant82 08.11.12 11:33 Сейчас в теме
Очень полезная статья, спасибо.
52. severchukov 45 08.11.12 14:56 Сейчас в теме
Спасибо большое, для меня, как для новичка в освоении платформы 8.2, очень полезная информация
53. NazarovV 83 10.11.12 15:20 Сейчас в теме
Спасибо, распечатал для шпаргалки
56. wunderland 201 12.11.12 16:49 Сейчас в теме
в 7.Последовательность чисел, дат. для запроса с датами в условии не пропущено "<=&Дата2"
58. RealEscander 823 12.11.12 19:02 Сейчас в теме
(56) wunderland, да, конечно пропущено!

собирался попрвить... забыл что-ли....
57. ksai 12.11.12 17:05 Сейчас в теме
Даты по порядку в интервале. (так проще и доступнее)

ВЫБРАТЬ
0 КАК Цифра
ПОМЕСТИТЬ ЧисловойРяд
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.Цифра * 1000 + bb.Цифра * 100 + cc.Цифра * 10 + dd.Цифра) КАК ДатаИнтервала
ИЗ
ЧисловойРяд КАК aa,
ЧисловойРяд КАК bb,
ЧисловойРяд КАК cc,
ЧисловойРяд КАК dd
ГДЕ
ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.Цифра * 1000 + bb.Цифра * 100 + cc.Цифра * 10 + dd.Цифра) <= &КонецПериода
59. Rad90210 13 13.11.12 14:13 Сейчас в теме
Буду разбираться. Плюсую.
61. mikhailovaew 126 20.11.12 10:24 Сейчас в теме
Спасибо за статью, грамотно, доходчиво.
62. Goruch 8 21.11.12 22:54 Сейчас в теме
Спасибо за статью, добавил в закладки.:)
63. chemezov 31 05.12.12 05:56 Сейчас в теме
Спасибо, очень интересно, не стандартная задача с вбором чисел от 0 до 959 вообще понравилось, пойду пробовать.
64. acuta 01.05.13 11:12 Сейчас в теме
Редко занимаюсь программированием. В качестве хелпника пользую. Спасибо.
66. sacred 172 22.07.13 17:15 Сейчас в теме
При выгрузке итогов способом ОбходРезультатаЗапроса.ПоГруппировкамСИерархией в Дерево значений в 1с имеется ошибка: если есть общие итоги, то при выгрузке в дерево они не создают узла, а находятся на одном уровне с первой группировкой. Однако если делать не выгрузку, а выборку - то иерархия строится правильно. В 8.3 ошибка исправлена, но только в режиме "без совместимости с 8.2"
68. RealEscander 823 22.07.13 18:43 Сейчас в теме
(66) sacred, ну естественно что итогам нет места в стандартном дереве.
71. sacred 172 23.07.13 12:03 Сейчас в теме
(68) RealEscander,
ну естественно что итогам нет места в стандартном дереве

Отлично сказано! Прямо в точку!
Систему компоновки данных заколбасили, а в стандартном запросе при выгрузке в дерево значений у них для общих итогов места не нашлось. :) Ладно, хоть в 8.3 поправили этот косяк.
В 1с это происходит сплошь и рядом. Даже в той же СКД много чему "не нашлось места", ага.
Но куда мы денемся с подводной лодки. Будем находить и изучать эти "особенности", как политкорректно их называют работники 1с. Или баги, как откровенно их называю я. :)
72. chmv 24.07.13 15:03 Сейчас в теме
73. Al-X 23.07.14 09:24 Сейчас в теме
Спасибо ! Кое-что я даже и не знал. Обязательно пригодится !!!
74. Эсти 5 19.08.14 10:53 Сейчас в теме
спасибо. полезная статья
75. imispb 3 10.02.15 02:25 Сейчас в теме
Спасибо! Кое что пригодилось.
76. JohnConnor 39 31.05.16 11:04 Сейчас в теме
3.Использование конструктора запроса- как в конструкторе написать такое

выбрать * из бла-бла

упорядочить по
выбор
когда НомерСтроки/2 - ВЫРАЗИТЬ(НомерСтроки/2 как Число(10,0))=0
тогда 0
иначе 1
конец
77. RealEscander 823 13.06.16 17:30 Сейчас в теме
(76) JohnConnor, в конструкторе добавляете новое поле, указываете в качестве поля вот это самое выражение и потом можно по любому полю/полям (в том числе этому вычислимому) упорядочивать
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    3360    23    infostart    2    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    15486    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    15943    0    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    11083    0    kuzyara    33    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    34327    0    unichkin    45    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    12849    0    YPermitin    72    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    25693    0    Yashazz    45    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    35284    0    rpgshnik    62    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    26353    0    tormozit    100    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    37447    0    ids79    52    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    21952    0    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    21972    0    YPermitin    80    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    73852    0    tormozit    129    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

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

17.08.2019    25924    0    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    57047    0    ids79    37    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    26681    0    avalakh    21    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    44901    0    tormozit    38    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    17400    0    json    12    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    43226    0    ids79    11    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    28845    0    ids79    27    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    40735    0    tormozit    72    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    20446    0    YPermitin    34    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    21713    0    YPermitin    13    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    16584    0    SeiOkami    50    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    14272    0    m-rv    2    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    34470    0    ids79    10    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    42661    0    ids79    20    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    21559    0    dmurk    144    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    17852    0    m-rv    17    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

16.05.2019    35632    0    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    24427    0    Eret1k    23    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    29634    0    ellavs    126    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    27540    0    m-rv    21    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    23681    0    ellavs    88    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    26691    0    YPermitin    53    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    31177    0    Смешной 1С    27    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    25822    0    itriot11    34    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    18551    0    Vladimir Litvinenko    27    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    31760    0    ids79    9    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    71333    0    Serginio    108    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    22992    0    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    35338    0    ids79    72    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    31993    0    ids79    32    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    30798    0    ids79    40    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    37917    0    Unk92    21    

Произвольный код в фоновом режиме

Практика программирования v8 1cv8.cf Бесплатно (free)

Задача: реализовать выполнение произвольного кода в фоновом режиме без изменения конфигурации, т.е. во внешней обработке.

03.09.2018    24112    0    nikita0832    42    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    35033    0    Rain88    46    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    26372    0    grumagargler    26    

Работаем с дополнительными реквизитами на форме

Практика программирования v8 Бесплатно (free)

Пара полезных процедур для работы с дополнительными реквизитами на форме. Далее в статье: 1. Как называются дополнительные реквизиты на форме и в какой момент они появляются на форме? 2. Как проверить до записи корректность заполнения пользователем дополнительного реквизита? 3. Как заполнить значение дополнительного реквизита по другому событию и обновить данные на форме? 4. Как расположить дополнительный реквизит в указанном месте на форме?

15.07.2018    29711    0    papche    37    

Повышаем эффективность разработки правил обмена

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

25.06.2018    26252    0    olegtymko    47    

Введение в механизм представлений в ЗУП ред. 3

Практика программирования v8 v8::СПР ЗУП3.x Бесплатно (free)

В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".

04.06.2018    34389    0    xrrg    82    

Строим графы средствами 1С (без GraphViz)

Практика программирования v8 Бесплатно (free)

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    22938    0    slozhenikin_com    20