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

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

Разработка - Инструментарий разработчика

расширения языка запросов для СКД использование характеристик в запросах

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

Предыдущие статьи можно посмотреть по ссылкам ниже:

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

{……}

И так, для чего же необходимы расширения языка запросов?

СКД использует расширения для настройки полей компоновки и формирования запроса итогового макета компоновки. А я напомню, запрос итогового макета компоновки может существенно отличаться от запроса источника данных заданного в схеме компоновки.

Понимание, и грамотное использование расширений языка запросов позволяет более гибко управлять формированием итогового запроса макета компоновки:

Общая схема расширений языка запросов

Оглавление

  1. Автоматическое заполнение полей компоновки данных
  2. Расширение языка запроса для СКД
  1. Использование дополнительных данных, секция ХАРАКТЕРИСТИКИ

 

Автоматическое заполнение полей компоновки данных

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

Автоматическое заполнение полей копоновки

Если флаг установлен, поля компоновки данных заполняются автоматически для всех полей, указанных на верхнем уровне запроса источника данных (не зависимо от наличия секций с расширениями в тексте запроса).

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

Ограничение использования полей

Дополнительно, для виртуальных таблиц, флаг «Автозаполнение» неявно формирует отбор по периоду, создавая стандартные параметры: «Период» для таблиц остатков, «НачалоПериода» и «КонецПериода» для таблиц оборотов. Причем, указание значений этих параметров в настройках компоновки не является обязательным. В итоговый запрос макета компоновки параметры попадут только в том случае, если они заданы в настройках.

На заметку. Если для виртуальной таблицы заданы параметры отбора по периоду непосредственно в запросе схемы компоновки, и их имена отличаются от стандартных, этот отбор будет работать только в том случае, если не используются стандартные параметры отбора по периоду. Заполнение этих параметров является обязательным.

Если флаг «Автозаполнение» - отключен, автоматического формирования полей компоновки и стандартных параметров виртуальных таблиц по данным запроса источника данных не происходит. Заполнение будет происходить таким образом, как это описано в секциях расширений.

Еще несколько моментов при использовании флага «Автозаполнение»:

  1. Если в запросе источника данных используется виртуальная таблица, и в настройках компоновки добавлен отбор по какому-либо измерению, в итоговом запросе макета, СКД будет накладывать отбор на параметры виртуальных таблиц, если это возможно. Если кроме виртуальных таблиц, в запросе присутствуют и другие таблицы (не виртуальные), в итоговом запросе будет добавлен дополнительный отбор в секции ГДЕ всего запроса. То-есть будет присутствовать два отбора.
  2. Если в наборе данных используется пакет запросов, СКД будет пытаться наложить отбор на все запросы пакета, если это возможно.

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

Происходит это следующим образом. Если в настройках компоновки добавлены только группировки и ресурсы (без детальных записей), в итоговом запросе макета компоновки данные будут сгруппированы по выбранным в настройках группировкам.

 

Расширение языка запроса для СКД

Начнем с того, где именно можно использовать секции с расширениями?

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

Также выделить как расширение можно целиком таблицу запроса.

Конструкции, добавленные в расширение в итоговом тексте запроса находятся в фигурных скобках «{…}». Для работы с расширениями в конструкторе запроса существует специальная закладка – «Компоновка данных»:

Закладка "Компановка данных"

Рассмотрим более подробно использование каждой секции.

Секция ВЫБРАТЬ­

Настройка выполняется на закладке «Поля» в окне редактирования расширений:

Секция ВЫБРАТЬ расширений языка запросов

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

Обратите внимание, если в основном запросе уже используются псевдонимы для полей, в расширении отображаются именно они, а не имена самих полей:

Использование псевдонимов для полей в расширении

Если в запросе используется объединение нескольких таблиц, расширение секции ВЫБРАТЬ необходимо задавать только для первой таблицы.

Секция ГДЕ

Настройка выполняется на закладке «Условия» в окне редактирования расширений:

Секция ГДЕ в расширении языка запросов

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

Если в запросе источника данных используется объединение нескольких таблиц или пакет запросов, расширение секции ГДЕ можно указать для каждой таблицы объединения или пакета отдельно.

Важно. Если в запросе источника данных используются виртуальные таблицы, в итоговом запросе макета компоновки отбор будет указан на уровне всего запроса в целом, в секции ГДЕ, а не на уровне параметров виртуальных таблиц.

В данной секции, можно сконструировать произвольный отбор с указанием параметров:

ТоварныеЗапасыОстатки.Товар = &Товар

Если параметры, указанные в расширении, не будут заполнены в настройках компоновки, они не будут включены в итоговый запрос макета компоновки и сообщение о необходимости заполнения параметра выведено не будет (в отличии от параметров указанных в основном запросе).

Параметры виртуальных таблиц

В расширении языка запросов можно указать параметры для виртуальных таблиц запроса. Данные указываются на закладке «Таблицы», непосредственно для каждой виртуальной таблицы:

Параметры виртуальных таблиц в расширении языка запросов

Можно указать следующие параметры: 

  • Период, НачалоПериода, КонецПериода – задается отбор по периоду для виртуальных таблиц.

Если флаг «Автозаполнение» включен, данные параметры будут заполнены автоматически неявно. То-есть, в тексте запроса их нет, но фактически они будут присутствовать. Можно явно указать в качестве этих параметров произвольные имена:

РегистрНакопления.ТоварныеЗапасы.Обороты({(&ДатаНачала)}, {(&ДатаОкончания)}, , ) КАК ТоварныеЗапасыОбороты

Тогда «неявно» заданные параметры действовать не будут. Это может быть необходимо, если в запросе уже встречаются параметры отбора по периоду, и нужно привести все остальные отборы к существующим.

Если флаг «Автозаполнение» отключен, параметры не будут заполнены неявно. Если требуется отбор по периоду, необходимо их указывать явно.

  • Периодичность – можно указать параметр, с помощью которого можно будет задавать периодичность в настройках компоновки. Для параметра будет создан список выбора периода.
  • Метод дополнения – можно указать параметр, для задания в настройках компоновки метода дополнения: «Движения», «Движения и границы периода».
  • Условие – используется для выбора полей, по которым можно будет указывать отбор в настройках компоновки (аналогично секции ГДЕ). Отличие в том, что указанные пользователем отборы, в итоговом запросе макета компоновки будут наложены в параметрах виртуальных таблиц, а не в секции ГДЕ на уровне всего запроса.

 

 

Выделение в расширение отдельных таблиц запроса

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

Выделение таблиц целиком в расширение языка запросов

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

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

 

Использование дополнительных данных, секция ХАРАКТЕРИСТИКИ

Что такое дополнительные реквизиты и сведенья, думаю, знают все. Этот механизм активно используется еще с конфигураций прошлого поколения.

Так вот, значения этих дополнительных реквизитов или сведений можно АВТОМАТИЗИРОВАНО включать в схему компоновки данных. Вы конечно можете сделать это в ручную, добавив нужное количество соединений в запрос источника данных:

ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСвойства КАК ДопСвойства1  
   ПО (ДопСвойства.Номенклатура = Номенклатура.Ссылка    
    И ДопСвойства.ВидСвойства = &Свойство1)  
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСвойства КАК ДопСвойства2  
   ПО (ДопСвойства1.Номенклатура = Номенклатура.Ссылка    
    И ДопСвойства1.ВидСвойства = &Свойство2) 

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

Номенклатура.ДопРеквизит

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

Так вот, для автоматизации использования дополнительных данных (дополнительных реквизитов, сведений и прочей информации) существует специальная закладка конструктора запросов «Характеристики»:

Использование дополнительных данных в запросе

На этой закладке в таблице указывается вся необходимая информация о структуре хранения дополнительных данных. Рассмотрим поля этой таблицы подробнее:

  • Тип – вид объектов метаданных, для которых необходимо выводить характеристики (то-есть, через точку от которого они будут доступны),
  • Источник видов – способ получения видов дополнительных данных (характеристик): отдельная таблица или произвольный запрос (запрос можно использовать, если требуется наложить на таблицу дополнительные отборы),
  • Источник значений – способ получения значений дополнительных данных (характеристик): отдельная таблица или произвольный запрос.

 

Группа полей с описанием видов дополнительных данных (Виды характеристик)

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

 

Группа полей с описанием значений дополнительных данных (Значения характеристик)

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

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

После заполнения структуры хранения дополнительных данных, система добавит в нижнюю часть запроса секцию ХАРАКТЕРИСТИКИ, следующего вида:

{ХАРАКТЕРИСТИКИ            
  ТИП(ПланВидовХарактеристик.ВидыХарактеристик)            
  ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.ВидыХарактеристик            
  ПОЛЕКЛЮЧА Ссылка            
  ПОЛЕИМЕНИ Наименование            
  ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения            
  ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.Характеристики            
  ПОЛЕОБЪЕКТА Объект            
  ПОЛЕВИДА ВидХарактеристики            
  ПОЛЕЗНАЧЕНИЯ Значение }

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

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

Использование дополнительных характеристик для объектов можно настроить непосредственно в конфигураторе для каждого объекта метаданных:

Настройка использования дополнительных данных для объекта

В этом случае, в запрос не нужно будет включать секцию «Характеристики», дополнительные данные будут доступны по умолчанию (также только в режиме 1С Предприятие).

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

Отбор видов характеристик для объектов

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

В следующих статьях будут рассмотрены:

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

Для ознакомления с предыдущими статьями можно перейти по ссылкам:

Спасибо а внимание. Если материал понравился, за Вами звездочка.

  

134

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

Комментарии
Избранное Подписка Сортировка: Древо
1. YPermitin 4991 17.07.19 07:53 Сейчас в теме
(0) спасибо за полезный материал!
jaroslav.h; ids79; jif; +3 Ответить
6. ids79 4066 17.07.19 21:12 Сейчас в теме
2. lmnlmn 53 17.07.19 10:18 Сейчас в теме
Отличные материалы!
7. ids79 4066 17.07.19 21:13 Сейчас в теме
4. AllexSoft 17.07.19 12:32 Сейчас в теме
Параметры..
Условие – используется для выбора полей, по которым можно будет указывать отбор в настройках компоновки (аналогично секции ГДЕ). Отличие в том, что указанные пользователем отборы, в итоговом запросе макета компоновки будут наложены в параметрах виртуальных таблиц, а не в секции ГДЕ на уровне всего запроса.

Тут есть один забавный нюанс, а именно если у вас указано больше чем 1 отбора на этой вкладке, то СКД их объединит в одну группу условий, то есть ввод сразу всех параметров станет обязательным.
Например
РегистрСведений.CR_СтатусыОбъектовАренды.СрезПоследних(, {(Контрагент = &Контрагент
			    И Договор = &Договор)})

При попытке задать только один параметр выдаст не задано значение для параметра..
Прикрепленные файлы:
5. dhurricane 17.07.19 20:53 Сейчас в теме
(4) В Вашем примере, полагаю, это запланированное поведение от разработчика. Либо решение "по незнанию". :) Для того, чтобы параметры не зависели друг от друга, необходимо их разделять запятыми:
РегистрСведений.CR_СтатусыОбъектовАренды.СрезПоследних(, {(Контрагент = &Контрагент), (Договор = &Договор)})

Однако и такое решение оставляет желать лучшего, т.к. в этом случае пользователь может указать для отбора лишь одно значение параметра. Но не может, например, ввести список исключаемых контрагентов, либо отобрать по некоторому реквизиту контрагента так, чтобы это условие попало именно в параметры виртуальной таблицы. Поэтому для параметров виртуальных таблиц используется несколько иной синтаксис:
РегистрСведений.CR_СтатусыОбъектовАренды.СрезПоследних(, {(Контрагент).* КАК Контрагент, (Договор).* КАК Договор})
В таком случае пользователь сможет настраивать любой отбор по данным полям, и этот отбор в том же самом виде попадет в параметры виртуальной таблицы.

Все описанное справедливо в первую очередь при снятом флажке Автозаполнения на закладке наборов данных СКД.

Ну и прошу прощения, если я проявил излишнюю прыть, описав то, что Вы и без меня хорошо знали. :)
jaroslav.h; MaZaHacKa_13; SirStefan; AllexSoft; jif; Поручик; +6 Ответить
9. ids79 4066 17.07.19 21:39 Сейчас в теме
(5) Спасибо за дополнение
11. triviumfan 10 18.07.19 09:07 Сейчас в теме
(5)
справедливо в первую очередь при снятом флаже Автозаполнение

Вы хотите сказать, что с включенным поведение отличается?
13. dhurricane 18.07.19 09:39 Сейчас в теме
(11) Немного отличается, да. Например, я указал, что при использовании параметров не получится указать список исключений контрагенту, либо договору так, чтобы это условие попало в параметры виртуальной таблицы. Только строгое равенство одному значению. Это справедливо, если снят флаг автозаполнения и нет дополнительных инструкций для СКД.
Но при включенном автозаполнении произвольный отбор по данным полям установить можно. И если в отборе на уровне отчета дополнительно установить фильтр по одному из полей на неравенство, то такое условие все равно попадет в параметры виртуальной таблицы. Хоть мы его явное об этом и не просили.
16. ids79 4066 18.07.19 10:46 Сейчас в теме
(13)Да правильно.
Как раз об этом я пишу в статье:
"Еще несколько моментов при использовании флага «Автозаполнение»:
....
Если в запросе источника данных используется виртуальная таблица, и в настройках компоновки добавлен отбор по какому-либо измерению, в итоговом запросе макета, СКД будет накладывать отбор на параметры виртуальных таблиц"
15. AllexSoft 18.07.19 10:23 Сейчас в теме
(5) я кстати не знал что так можно, в то время когда я учился либо такого не было, либо на курсах в УЦ1 по СКД не показывали.. спасибо в общем, век живи век учись. Автору в статье неплохо бы дополнить этим моментом, уверен что многие не знают
17. ids79 4066 18.07.19 10:47 Сейчас в теме
(15)Вы правы, стоит указать об этом в статье. Добавлю, когда будет время
8. ids79 4066 17.07.19 21:38 Сейчас в теме
(4)Спасибо за дополнение.
Я имел в виду не параметры, а отбор:
{(Контрагент).* КАК Контрагент, (Договор).* КАК Договор},
о чем пишет Денис.
Вы правы, параметры тоже можно размещать здесь и в секции "ГДЕ".
И, если они объединены логическим оператором, то их использовать возможно только совместно.
В секции "ГДЕ", такие параметры будут находиться в одной строке:
Прикрепленные файлы:
10. triviumfan 10 18.07.19 09:06 Сейчас в теме
Множество ссылок на "справедливо для отключенного флага 'Автозаполнение'", - но ведь он почти всегда включен и поведение с ним такое же.
Да кто этот флаг вообще отключает?! Может вы просто "не умеете его готовить"?(с)
14. dhurricane 18.07.19 09:46 Сейчас в теме
(10)
Да кто этот флаг вообще отключает?! Может вы просто "не умеете его готовить"?(с)

Полегче с выводами. Я отключаю иногда именно потому, что неплохо представляю, как он работает.

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

Бывает отключаю для большого пакетного запроса, когда мне хочется лучше контролировать влияние пользовательских отборов на отбор данных в различных запросах пакета, а также на расстановку параметров виртуальных таблиц.
20. triviumfan 10 18.07.19 10:58 Сейчас в теме
(14)
В самом простом случае я его порой отключаю при выборке данных из регистра бухгалтерии, чтобы не было среди доступных полей таких как "Субконто1" и "Субконто2", а были мои, например "Контрагент" и "Договор".

Можно подробней? А то можно подумать...

(14)
Бывает отключаю для большого пакетного запроса, когда мне хочется лучше контролировать влияние пользовательских отборов на отбор данных в различных запросах пакета, а также на расстановку параметров виртуальных таблиц.

Мне пока фигурных скобок хватает и ограничения поля в параметрах набора данных.
23. dhurricane 19.07.19 09:37 Сейчас в теме
(20) Реальных примеров, к сожалению, привести не могу, т.к. действительно редко использую отключение автозаполнения. Поэтому приведу небольшой синтетический пример для ERP 2.4. Запрос следующий:
ВЫБРАТЬ
	ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
	ХозрасчетныйОстатки.Субконто2 КАК Склад,
	ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоБУ,
	0 КАК КоличествоОУ
ПОМЕСТИТЬ СверкаБУиОУ
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет В ИЕРАРХИИ (&СчетУчета), &ВидыСубконто, {(Субконто1).* КАК Номенклатура, (Субконто2).* КАК Склад}) КАК ХозрасчетныйОстатки

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

ВЫБРАТЬ
	ТоварыНаСкладахОстатки.Номенклатура,
	ТоварыНаСкладахОстатки.Склад,
	0,
	ТоварыНаСкладахОстатки.ВНаличииОстаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СверкаБУиОУ.Номенклатура КАК Номенклатура,
	СверкаБУиОУ.Склад КАК Склад,
	СУММА(СверкаБУиОУ.КоличествоБУ) КАК КоличествоБУ,
	СУММА(СверкаБУиОУ.КоличествоОУ) КАК КоличествоОУ,
	СУММА(СверкаБУиОУ.КоличествоБУ - СверкаБУиОУ.КоличествоОУ) КАК Отклонение
ИЗ
	СверкаБУиОУ КАК СверкаБУиОУ
{ГДЕ
	СУММА(СверкаБУиОУ.КоличествоБУ) КАК КоличествоБУ,
	СУММА(СверкаБУиОУ.КоличествоОУ) КАК КоличествоОУ,
	СУММА(СверкаБУиОУ.КоличествоБУ - СверкаБУиОУ.КоличествоОУ) КАК Отклонение}

СГРУППИРОВАТЬ ПО
	СверкаБУиОУ.Склад,
	СверкаБУиОУ.Номенклатура
Показать

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

Пусть проблема с лишними полями отбора решена, но что если пользователю потребуется установить отбор по ресурсам? Скажем, вывести все строки отчета, где количество БУ отрицательно, либо КоличествоОУ выше некоего порога. Да, мы добавили подсказку для СКД, как нужно устанавливать отбор по полям количества в последний запрос пакета, однако это совсем не помагает: СКД все равно добавит условия по полю количества в первый запрос пакета, при том в каждый элемент объединения. В результате такой отбор опять таки исказит результат. И решить эту проблему простой установкой флажков не получится.
24. triviumfan 10 19.07.19 11:03 Сейчас в теме
(23) Может задать разные превдонимы полей?
25. dhurricane 19.07.19 21:24 Сейчас в теме
(24) Да, можно дать другие псевдонимы, это поможет. Также, например, как помогает в параметрах виртуальных таблиц регистров, где не нужен отбор за период, указание инструкции {&ПустаяДата}. Можно также в приведенном примере попробовать уйти от использования виртуальной таблицы, заменив ее на вложенный запрос. В целом всегда можно применить тот или иной прием, дабы "отвлечь" СКД от некоторых оптимизаций при составлении запроса.

Только я решительно не понимаю: зачем? Зачем применять различные приемы "обмана" СКД, зачем перестраивать исходный текст запроса, переименовывать поля и проводить прочие эксперименты с запросом? Ведь порой проще и красивее самому явно непосредственно в запросе указать СКД, как себя следует вести, что выбирать.

Из Ваших комментариев я сделал вывод, что если есть хоть какой-либо способ изменить запрос и настроить поля так, чтобы сохранить работоспособность отчета, и при этом не снимать флаг "Автозаполнение", то всегда следует сохранять автозаполнение. Так к чему же такая однозначность? За что Вы так не любите этот флаг, или вернее его отсутствие?
18. ids79 4066 18.07.19 10:52 Сейчас в теме
(10)Согласен с Денисом.
Отключать Автозаполнение нужно только в том случае, если Вы ХОРОШО, знаете как это работает, для более гибкой настройки.
Иначе можно получить очень неожиданный результат.
21. triviumfan 10 18.07.19 11:01 Сейчас в теме
(18) Отключить автозаполнение, программное выполнение...
Тогда уже можно вернуться к "построителю отчета" :)
12. DoctorRoza 18.07.19 09:20 Сейчас в теме
19. ids79 4066 18.07.19 10:53 Сейчас в теме
22. sam441 39 18.07.19 15:16 Сейчас в теме
Если флаг установлен, поля компоновки данных заполняются автоматически для всех полей, указанных на верхнем уровне запроса
может все-таки на нижнем т.е. последнем?
Оставьте свое сообщение

См. также

СКД не только для отчетов 140

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

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

18.09.2019    6609    YPermitin    31       

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

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

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

05.09.2019    9420    ids79    42       

Обмен данными. Консистентность vs Многопоточность 25

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Интеграция

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    3006    m-rv    1       

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

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

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

08.08.2019    9774    ids79    22       

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

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

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

25.04.2019    4664    m-rv    2       

Как настроить правильную техподдержку (helpdesk, service desk на коленке) 38

Статья Программист Бизнес-аналитик Руководитель проекта Нет файла v8 УУ Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Бесплатно (free) Управление услугами и сервисом

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

24.04.2019    7018    siddy    0       

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

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

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

16.04.2019    7177    m-rv    16       

Копирование числовых ячеек из 1С в Excel 26

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Загрузка и выгрузка в Excel Администрирование данных 1С

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

15.01.2019    10256    itriot11    21       

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 457

Статья Программист Нет файла v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Зарплата Управление персоналом (HRM) Бесплатно (free) Универсальные функции

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

14.11.2018    31102    GeterX    93       

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

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

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

10.11.2018    20590    ids79    40       

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git 265

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

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    33161    stas_ganiev    72       

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

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

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

15.10.2018    20244    tormozit    100       

Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час 375

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

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

03.09.2018    30698    SergeyN    25       

Из Excel в 1С запросом 33

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Загрузка и выгрузка в Excel

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

14.08.2018    13441    m-rv    5       

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

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

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

25.06.2018    19132    olegtymko    43       

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

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

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

01.06.2018    21036    m-rv    21       

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

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

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

23.05.2018    16807    slozhenikin_com    19       

Распределение расходов пропорционально продажам 9

Статья Программист Пользователь Нет файла v8 v8::ОУ УТ10 УУ Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Бесплатно (free) Практика программирования

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    11212    Rustig    9       

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники 96

Статья Программист Нет файла v8 Бесплатно (free) Перенос данных из 1C8 в 1C8

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    16104    V.Stavinsky    11       

Минимализмы 3 350

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Универсальные функции

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    35286    ildarovich    44       

Этюды по программированию. Взаимодействие с Microsoft Word 108

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

Часто приходится заниматься созданием сложных документов Word с таблицами, вложенными фрагментами, хитрым оформлением и прочими радостями жизни. Это - попытка как-то структурировать полученный опыт, чтобы не приходилось перерывать ворох старых обработок в поисках крупиц истины. Надеюсь, эта статья будет полезна и Вам.

11.12.2017    25691    milkers    23       

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

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

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

05.12.2017    21175    itriot11    34       

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена) 717

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML

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

19.11.2017    136541    MaxS    251       

Обзор имеющихся библиотек OneScript 298

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) OneScript

Экосистема OneScript активно развивается. Количество пользователей данного интерпретатора и имеющихся библиотек неуклонно растет, количество решаемых проблем - тоже. Однако остро встает вопрос некоторой разобщенности и размазанности информации по имеющимся библиотекам, их функциональности и проблемам, которые они решают. Данная статья призвана навести порядок в этой теме.

14.11.2017    30613    nixel    85       

Программные перечисления, ч.2: приемы кэширования при разработке 65

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

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

30.10.2017    20915    unichkin    17       

Легкий способ обновления измененной конфигурации 41

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Инструментарий разработчика

Легкий способ обновления измененной конфигурации. Сервис подготовки расширения конфигурации

25.10.2017    18476    avk72    63       

Работа с Excel 287

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Загрузка и выгрузка в Excel

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

23.10.2017    24303    arakelyan    39       

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

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

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

10.09.2017    34043    tormozit    72       

Ускоряем 1С: модули с повторным использованием возвращаемых значений 136

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

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

04.09.2017    42907    m-rv    60       

Как просто запомнить алгоритм программного вывода в СКД 205

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

Порой нужно быстро вывести на экран таблицу значений, используя СКД \ получить данные отчета в таблицу значений.. Несмотря на очевидность алгоритма - раньше мне проще было загуглить программный вывод, благо эта инфа есть везде. Но постепенно понял как его можно быстро вспомнить, и лишний раз ничего не искать. Конечно эта статья не для Гуру :) Но я думаю - что любой неопытный в СКД программист сделает для себя небольшое открытие...

01.09.2017    41338    unichkin    15       

Как формируется GUID? 461

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

"Коллеги, есть идеи, как получить последнюю созданную характеристику? Реквизиты полностью идентичны(код, наименование, и т.п.)."(c) "Насколько я знаю, ссылка не обеспечивает последовательность, а только уникальность."(c) "Я сделал по Максимум(Ссылка). Но, чета, мне кажется, это неправильно."(c) "Слышал что в ГУИд содержится как раз время создания и по всей логике вещей сортировка по ссылке должна сортировать по моменту создания объекта"(c) Сколько раз вы слышали такие фразы? На удивление я не обнаружил информации по этой теме, пришлось разбираться самому...

16.06.2017    51896    kuzyara    55       

Использование инструментов разработчика для отладки обменов КД 2.0 67

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

Пара трюков, благодаря которым жить становится намного проще...

05.05.2017    22497    unichkin    3       

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

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

Поскольку к конвертации обращаюсь время от времени и какие-то детали забываются, хочу выделить несколько пунктов, чтобы "было где посмотреть". Статья сделана преимущественно «для себя», так что просьба не судить строго. (Примечание читающим/комментирующим: код в примерах очень сильно сокращен.)

16.03.2017    61461    perepetulichka    25       

Online телефонный справочник из 1С: Зарплата и управление персоналом 33

Статья Системный администратор Программист Нет файла v8 ЗУП3.x Россия Управление персоналом (HRM) Бесплатно (free) WEB

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    18959    ruha    14       

Библиотека стандартных подсистем (Механизм БСП) 74

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

Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но...!

03.03.2017    50987    V.Stavinsky    21       

Автоматизированная проверка конфигураций… и пара слов о стандартах разработки 265

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Тестирование и исправление

Предлагаю познакомиться с инструментом "Автоматизированная проверка конфигураций" и получить практику его применения

18.01.2017    43205    3    Vladimir Litvinenko    19       

Отладка подключаемых обработок 194

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

На самом деле для этого не нужно ни изменять конфигурацию, ни пользоваться вспомогательной обработкой-отладчиком.. Все просто :)

04.01.2017    43298    unichkin    77       

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

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

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

10.12.2016    29788    unichkin    45       

РИБ 200 узлов. Середина пути 116

Статья Системный администратор Программист Нет файла v8 Розница Россия Бесплатно (free) Распределенная БД (УРИБ, УРБД)

Между настройкой и поддержкой РИБ на 2 узла и на 10 большой разницы нет, а вот когда число удаленных точек переваливает за сотню, приходится решать уже совсем другие вопросы

25.10.2016    34033    comol    215       

Использование git для доработки типовых конфигураций 1С 229

Статья Программист Нет файла v8 Беларусь Украина Россия Бесплатно (free) Математика и алгоритмы

Рассмотрены способы доработок типовой конфигурации 1C для различных изменений, и на картинках продемонстрирован подход к разработке с использованием git и частично с тестами.

11.10.2016    185735    pumbaE    31       

Отладка конфигураций на мобильной платформе 107

Статья Программист Нет файла v8 Бесплатно (free) Мобильная разработка

Настройка и подключение отладчика для отладки конфигураций на мобильной платформе.

25.09.2016    34816    spezc    44       

Обновление доработанной Бухгалтерии предприятия. Как проверить и убедиться, что все сделано хорошо? 89

Статья Системный администратор Программист Бухгалтер Нет файла v8 БП2.0 Бесплатно (free) Практика программирования

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

05.09.2016    24740    kraynev-navi    33       

Старые обработки в новом (Управляемом) интерфейсе 101

Статья Программист Нет файла v8 v8::УФ Windows Бесплатно (free) Практика программирования

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

12.08.2016    57907    valerasv    7       

Регистры сведений 1С. Как это устроено. 713

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

05.08.2016    146118    Sergey.Noskov    154       

Простая и быстрая эмуляция операций с битовыми строками 67

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

Битовые строки могли бы упростить реализацию некоторых алгоритмов на языке платформы «1С: Предприятие 8». Но пока в платформе операций с битовыми строками нет. В то же время уже сделанные попытки смоделировать эти операции преобразованиями над числами опираются на циклы обработки отдельных битов, что плохо сказывается на скорости их работы. Предлагается новое простое решение, основанное на представлении битовых строк строками символов «0» и «1». Приводится примеры кода выполнения основных логических операций AND, OR, XOR, NO без использования циклов. В качестве прикладной задачи рассмотрено получение последовательных значений кода Грэя, который можно использовать для ускорения перебора вариантов.

22.06.2016    25884    ildarovich    14