Как проводятся документы в типовых конфигурациях от 1С

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

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

135
В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

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

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

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

Совсем вкратце он выглядит примерно так:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
...
    Документы.РеализацияТоваровУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства); // тут мы инициализируем таблицы для регистров
...
    ЗаказыСервер.ОтразитьЗаказыКлиентов(ДополнительныеСвойства, Движения, Отказ); // так выполняем запись
...
    ПроведениеСерверУТ.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ); // тут выполняется контроль
...
КонецПроцедуры

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

Свойства проведения документа.

Во-первых документы должны быть со следующими настройками режима проведения:

Режим проведения обязательно должен быть "Разрешить", а оперативное проведение чаще всего "Запретить". Удаление движения: "Не удалять автоматически" означает, что в "Обработке удаления" документа будут описаны процедуры, в которых явно будет прописано удаление движений при отмене проведения.

Схема проведения в событии "Обработка проведения".

Давайте для примера возьмем документ РегистрацияТранспортныхСредств (В ЕРП И УТ он должен быть). Не будем разбирать на примере документа РеализацияТоваровУслуг или других основных документах, т.к. они достаточно нагружены различными процедурами, которые будут отвлекать от нашей схемы проведения документа.

Сама обработка проведения нашего документа выглядит так:

 

К самой схеме проведения относятся процедуры:

1. ИнициализироватьДополнительныеСвойстваДляПроведения;
2. ИнициализироватьДанныеДокумента;
3. ПодготовитьНаборыЗаписейКРегистрацииДвижений;
4. ЗагрузитьТаблицыДвижений;
5. ЗаписатьНаборыЗаписей;
6. ОчиститьДополнительныеСвойстваДляПроведения;

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

Остальные процедуры:
1. РеестрДокументов.ЗаписатьДанныеДокумента;
2. ДокументыПоОС.ЗаписатьДанныеДокумента;
3. СформироватьЗаписиРегистровЗаданий;
Не относятся к схеме и могут отсутствовать в других документах. К примеру РеестрДокументов.ЗаписатьДанныеДокумента (1) используется для хранения реквизитов документов и быстрого доступа к ним, чтобы не обращаться к реквизитам самого документа (к которому у пользователей, к примеру не может быть доступа по RLS, или если и есть то эти права достаточно "тяжело" отрабатывают для SQL сервера). В результате запрос с использованием этого РС отрабатывает быстрее.

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

 Давайте разберем по очереди каждую из этих процедур схемы проведения.

1.

Эта процедура инициализирует общие структуры, используемые для проведения документа.
Изменяется свойство ДокументОбъекта ДополнительныеСвойства в которое помещаются свойства:

"ТаблицыДляДвижений" - в него будут записываться таблицы, которые будут загружаться в регистр сведений (о чем речь пойдет далее);
"ДляПроведения" - будут содержаться свойства и реквизиты документы, используемые для проведения: "СтрукутраВременныеТаблицы" - записывается МенеджерВременныхТаблиц, записывается "Режим проведения" - режим проведения нашего документа, "МетаданныеДокумента" - метаданные документа и "Ссылка" - ссылка на текущий документ;

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

2.

Эта процедура одна из самых основных.

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

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

В конце этой процедуры перебираются все колонки РезультатаЗапроса и устанавливаются параметры в Запрос. Наши будущие таблицы движений, которые будут помещены в свойство "ТаблицыДляДвижений", будут использовать эти параметры.

В Функции ЗначенияПараметровПроцедения устанавливаются параметры в Запрос, которые берутся не из реквизитов

Теперь вернемся в процедуру ИнициализироватьДанныеДокумента и увидим несколько однотипных процедур:

По параметрам этих процедур видно, что они одинаковые. И выполняют одинаковую цель - добавляют в тексты запросов для каждого из регистров, по которым будут сформированы движения, которые будут отражены в регистрах.
Названия у них, как правило: "ТекстЗапроса" + "Таблица" + ИмяРегистра, где ИмяРегистра - имя регистра, движения которого будут формироваться этим запросом.

На мой взгляд первые 2 процедуры отступают от общепринятого стандарта формирования таких процедур, и там явно не хватет "ТекстЗапросаТаблица".

Разберем одну из такий процедур (функций):

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

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

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

(Имена псевдонимов в Тексте запроса и Имена Измерений(Ресурсов, Реквизитов) регистров должны совпадать.

(Имена псевдонимов в Тексте запроса и Имена Измерений(Ресурсов, Реквизитов) регистров должны совпадать.

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

 

3.

Данная процедура, как следует из ее описания выполняет 2 основных функции:
1. Очищает наборы записей от старых записей (в настоящее время все менее актуальна, т.к. чаще работают на тонких клиентах, а не на толстых);

2. Взводит флаг записи у регистров, по которым есть ТаблицыДляДвижений с количеством записей более 0. По сути смысл процедуры в строке Объект.Движения[ИмяРегистра].Записывать = Истина.

Также в этой процедуре удаляются регистры, по которым документ является регистратором, но движения пишутся не из модуля документа или отложенно, к примеру, регламентными заданиями.

4.

Загружаются Таблицы для движений из свойства "ТаблицыДляДвижений". По сути самая главная строчка - это Движения[ИмяРегистра].Загрузить(Таблица.Значение). Обратите внимание, что разработчики решили повторно взвести флаг Записывать = Истина, хотя его уже установили на 3 этапе схемы проведения. Все таблицы для проведения должны начинаться с слова "Таблица".

В данном случае загружаются таблицы в цикле, хотя могут также встречаться сразу несколько однотипных процедур с именами "Отразить" + ИмяРегистра, где ИмяРегистра - имя регистра, по которому отражаются движения.

5.

В процедуре ЗаписатьНаборыДанных Записываются движения (строка Объект.Движения.Записать()) и копируются параметры для выполнения регистрации движений (к примеру для использования их в контролях, Объект.Движения.ТоварыОрганизаций.ДополнительныеСвойства.Вставить("РассчитыватьИзменения", Истина)).

6.

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

Схема проведения в событии "Обработка  удаления проведения".

Схема удаления проведения похожа на обычную схему проведения, только в ней основных процедур не 6 (процедур в обработке проведения "Отразить" + ИмяРегистра (3) может быть несколько), а 4 необходимых только для удаления движений. Тут вызываются процедуры только общего модуля ПроведениеСерверУТ. Если сравнивать с обработкой проведения, то в обработке удаления проведения будут использоваться процедуры 1-3-5-6, ИнициализироватьДанныеДокумента(2) и ОтразитьДвиженияДокумента(4) отсутствуют.

Схема проверки Контролей при проведении документов.

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

Схема контроля при проведении:

1. СформироватьСписокРегистровДляКонтроля;
2. ВыполнитьКонтрольРезультатовПроведения;

1.

В процедуре видно, что если РежимЗаписи документа = Проведение, то добавляется 2 регистра, по которым будет проходить контроль. В Дополнительные свойства "ДляПроведения" вставляется свойство "РегистрыДляПроведения" с массивом регистров для контроля.

2.

Процедура ВыполнитьКонтрольРезультатовПроведения выполняет контроли по различным регистрам конфигурации.

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

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

В конце процедуры выполняется ПакетЗапросов, и если в есть не пустые результаты запроса из массива результатов, то из МассивКонтролей берется ИмяКонтроля и далее в много условном операторе Если ИначеЕсли ... КонецЕсли для каждого контроля выполняется своя процедура отработки сообщений об ошибках.

Надеюсь в этой статье мне удалось немного упростить ознакомление с типовой схемой проведения для тех, кто только встретился с этим механизмом.

135

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

Комментарии
Избранное Подписка Сортировка: Древо
1. GROOVY 2490 24.07.19 23:58 Сейчас в теме
Там как бы много авторов https://its.1c.ru/db/pubmanagedui
А так выглядят материалы для типографии:
https://drive.google.com/drive/folders/0B2f7eow3JbLZcVhZOWtNN2ZUOHFydjVRM2s5MmxLZ­w?usp=sharing
:)
user774630; VooDOOPRo; creatermc; pbabincev; EMelihoff; sm.artem; +6 1 Ответить
5. skv_79 165 25.07.19 09:13 Сейчас в теме
(1) Да, авторов много, но Хрусталева шла первой в моей редацкии, поэтому запомнилось :). Да, согласен, это моя первая статья и наверно она очень далека от типографских стандартов.
2. bulpi 157 25.07.19 08:43 Сейчас в теме
Автор,
англоязычные люди не зря придумали аббревиатуру ИМХО.
конечно намного лучше и правильнее использовать типовой подход "Проведения документов" при выполнении процедуры проведения.

Вот тут вместо "конечно" напрашивается "ИМХО". Я бы плюс поставил, полезная статья. Но безапелляционно утверждать, что этот БРЕД БРЕДЯЦКИЙ (ИМХО, конечно) - это образец для подражания - .... слов нет.
rovenko.n; philya; +2 1 Ответить
6. skv_79 165 25.07.19 09:16 Сейчас в теме
(2) Вся эта статься - ИМХО, мое видение как это работает в типовых.
Трактор; +1 Ответить
3. DoctorRoza 25.07.19 08:50 Сейчас в теме
Ну такое нужно знать, как Отче Наш.
4. Aftee 25.07.19 09:09 Сейчас в теме
Увидев заголовок статьи, радостно подумал, что наконец-то смогу приблизится к пониманию алгоритмов проведения документов в ЗУП 3.1. Увы... Схема проведения - возможно, но остальное... Либо разбираемый пример в статье слишком простой (как большинство разбираемых примеров, так уж завелось), и в других документах дела обстоят "немного иначе", либо зависит от конфигурации (хотелось бы думать, что второе).
Summer_13; philya; begemot; acanta; +4 Ответить
7. skv_79 165 25.07.19 09:18 Сейчас в теме
(4) С ЗУП дела не имел, поэтому не могу сказать как там проводятся, эта статья для ЕРП и УТ. И для нее взяты самые простые документы в конфигурации, т.к. статья написана для ознакомления (читать начинающего работать с типовыми конфигурациями) со схемой проведения.
24. philya 77 31.07.19 10:11 Сейчас в теме
(7) как-как... ЗУП прекрасна. Глубина стека вызовов уровней в 10-15. Множественные вызовы функций из одной строки, которые просто вызывают следующую функцию. Запросы в 100 килобайт текста. Несколько почти одинаковых запросов по списку сотрудников.

И вишенкой на торте где-то в конце списка настроек галочка "оптимизированный расчет зарплаты" с комментарием "выключите, если зарплата считается неправильно", которая после обновления оказывается установленной.

Вспоминаем ЗУП 7.7, которая с меньшим числом свистелок, но фантастической скоростью считала ту же самую зарплату и плачем. )
28. CMK0001 02.08.19 12:53 Сейчас в теме
8. PLAstic 218 25.07.19 10:03 Сейчас в теме
(4) Пример вполне классический для УТ11. Поверхностно рассмотрен механизм контролей, в остальном достаточно для понимания.
20. Бубузяка 62 28.07.19 13:21 Сейчас в теме
(4)
либо зависит от конфигурации

В БП несколько по другому, но, в целом, подход такой же. Через МВТ набираются таблицы значений.
9. PLAstic 218 25.07.19 10:05 Сейчас в теме
Я бы рекомендовал:
1) Вернуть шрифт в стандартный для статей. Мне показалось, он мелкий и пришлось увеличивать до 120% масштаб.
2) В картинках убрать чёрный курсив и выделить имена процедур красной рамкой. Очень плохо читается.
3) Загрузить текст в ворд и исправить орфографию и пунктуацию.

В остальном нормальная статья. Добавил себе, буду новичкам скидывать.
Summer_13; Darklight; cleaner_it; +3 Ответить
10. DBOdin_Lab 25.07.19 10:07 Сейчас в теме
Знать это все хорошо и правильно.
Но давайте взглянем на эту технику проведения под иным углом.
Мы все хотим быстрого проведения. Самые большие задержки возникают от обращений к базе данных. А теперь давайте посчитаем, сколько запросов к базе данных выполняется в процессе проведения (не считая записи результирующих движений):
1. Чтение реквизитов шапки документов;
2. Чтение табличных частей;
3. Запись временных таблиц (не зря же используется МенеджерВременныхТаблиц);
4. Чтение из временных таблиц;

Но если подумать, то все (или почти все) нужные нам данные уже есть в объекте. Можно заполнить движения без дополнительных обращений к базе.

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

А вы что думаете?
11. dhurricane 25.07.19 10:21 Сейчас в теме
(10)
или почти все
Мне кажется, что как раз из-за того, что очень часто обращения к БД не избежать, получение реквизитов выполняется всегда запросом.

можно избежать просто проверив модифицированность объекта
Продолжите, пожалуйста, свою мысль. Как именно избежать? Что предполагается делать после проверки?
12. DBOdin_Lab 25.07.19 11:05 Сейчас в теме
(11)
Продолжите, пожалуйста, свою мысль. Как именно избежать? Что предполагается делать после проверки?


В обработке проведения нужно проверить модифицированность объекта, и если она Истина, то вызвать исключение с описанием ошибки.
Дальше программисту нужно устранить в ПриЗаписи и в подписках изменение объекта.
13. dhurricane 25.07.19 12:03 Сейчас в теме
(12) Думаю, что ситуация, когда объект модифицируется в обработчиках "ПриЗаписи" или "ОбработкаПроведения", является нештатной, и скорее всего это осознанный шаг, на который пошел разработчик. Следовательно и исключение бросать бессмысленно - разработчик его просто "отключит".

Полагаю, тут удобство именно в том, что далеко не все есть в табличных частях и реквизитах, и часто требуется запросом получить дополнительную информацию. Плюс есть возможность используя один и тот же программный интерфейс отразить движения документа без его перезаписи, т.е. без получения объекта, используя одну ссылку.
15. DBOdin_Lab 25.07.19 13:10 Сейчас в теме
(13)
Плюс есть возможность используя один и тот же программный интерфейс отразить движения документа без его перезаписи, т.е. без получения объекта, используя одну ссылку.


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

Как бы мне хотелось увидеть когда-нибудь групповое перепроведение без записи!
21. Бубузяка 62 28.07.19 13:27 Сейчас в теме
(15) Если перепроведение подразумевает только "толкание" регистров, то документ записывать не надо. Вызываем в модуле менеджера "ПодготовитьПараметрыПроведения" и получаем набор таблиц необходимых для подготовки вспомогательных данных и формирования движений. Далее вызываем методы модуля менеджера документа или программный интерфейс общих модулей. Таким образом можно "двинуть" только те регистры, что требуются.
14. baracuda 2 25.07.19 12:46 Сейчас в теме
годно, только много букв. надеюсь осилю этот текст
16. triviumfan 10 25.07.19 20:55 Сейчас в теме
Была похожая тема: https://infostart.ru/public/1026226/
И ещё одна, не могу найти.
17. json 2453 26.07.19 07:59 Сейчас в теме
18. pasha_2001 26.07.19 16:42 Сейчас в теме
Вопрос в тему: В процедурах ТекстОтраженияВРеглУчете() где идет выборка для проводок часто можно видеть в запросе ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаДт, ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетДт,
Каким образом и где подбираются корректные значения в данные строки?
19. Rashid80 26 28.07.19 09:51 Сейчас в теме
А потом 1с поменяет эти правила (разумеется в типовых документах она все исправит)... И ваши корректные проведения вдруг окажутся некорректными. Пока это не объявлено как интерфейс или api - это риск.
Периодически натыкаюсь что экспортные процедуры общих модулей поменяли перечень параметров или стали не экспортными
Summer_13; philya; Darklight; +3 Ответить
25. philya 77 31.07.19 10:15 Сейчас в теме
(19) Еще бывает, что их просто удаляют. Поэтому стараюсь не ленится и вытаскивать код из общих модулей во внешние обработки целиком - потом возвращать работоспособность проще.
Rashid80; +1 Ответить
29. Summer_13 07.08.19 15:03 Сейчас в теме
22. Бубузяка 62 28.07.19 13:39 Сейчас в теме
Считаю, что это полезная статья.
Она для тех, кто только начинает поддержку и сопровождение типовых конфигураций или решил закончить со свободным творчеством.
1. Если писать в стиле, принятом в типовом решении, тогда ваши последователи легко освоят ваше творчество.
2. У 1С есть ресурсы на исследование и оптимизацию процессов, связанных с изменением данных в транзакции, у меня таких ресурсов нет. Поэтому я следую стандартам разработки и повторяю приемы поставщика.

Про риски. После обновления должно выполняться минимальное тестирование. Хотя бы на открытие форм и проведение документов. Этот процесс снизит риск лишиться работы.
23. Darklight 19 30.07.19 13:44 Сейчас в теме
За статью спасибо. Но, сам механизм, конечной. бредовый. Нет, идея правильная - разделять настройки, требования, сбор данных, действия и контроль на отдельные блоки это здравая идея. Но то, как архитектурно это построено и как реализован - это кошмар. Куча лишнего кода, нерациональное использование памяти, куча циклов, повторяющиеся условия, разбросанные по куче модулей алгоритмы - это бред. И даже унификация это бреда внутри одного документа страдает. И что-то я не увидел секции наложения управляемых блокировок (ну там где остатки не контроллируются постфактум)

На мой взгляд - описание проведения должно быть более декларативным, по чётко-выделенным секциям, желательно в особой текстовой (XML?) схеме, cодержащей:

1. Требования к получению настроек (общих (обычно функциональные опции), организации (учетная политика), документа (внутренние опции и режимы))
2. Требования к получению источников данных (таблицы и поля),и их блокировки
3. Описание алгоритмов преобразования источников в движения (обычно построчные - т.е. принимающие строку к обработке)
4. Требования к источникам данных (дополнительные фильтры, настроенные исходя из текущий настроек п.1)
5. Описание ожидаемых выходных данных - наборов движений
6. Описание схемы обработки данных: ветвления условий (если таковы есть для конкретных данных) и связанные с ними алгоритмы обработки
7. Описание текстов шаблонов возможных ошибок (если общие не годятся)
8. Требования контроля данных
9. Описание алгоритмов постобработки (если требуются)

Так вот, эти секции схемы должны заполняться операциями, зарегистрированными по документу, т.е. документ может совершать целый набор разных операций (как совершенно отличных, зависящих от режима), так и связанных (выполняемых вместе/последовательно).
Каждая операция должна должна иметь своё заполнение каждой вышеназванной секции - повторяющиеся требования - сворачиваются, требования с разными условиями - объединяются (а условия будут наложены уже при обработке), источники данных объединяются (я имею в виду, в первую очередь, объединение полей, но таблицы тоже могут объединяться через "ОБЪЕДЕНИТЬ ВСЕ" при наличии сложных условий "ИЛИ" - это уже задача внутреннего оптимизатора генератора финальной схемы, который, правда, должен операться на возможные хинты, оставленные архитектором схемы)

Ну и в итоге - на основе финальной схемы (кстати, учитывающей и операции и модификации, расположенные в расширениях) должна произойти кодогенерация алгоритма выполнения проведения документа, по заданному шаблону (для разных событий модуля документа - свои блоки кодогенерации, с расстановкой управляемых блокировок).
Правда, финальных схем может быть и несколько - если у документа есть несколько различных режимов поведения или схемы сильно отличаются в зависимости от учетной политики - тогда у документа должна быть небольшая доп секция условий ветвления - для выбора нужной схемы (вернее сгенерированного алгоритма, ей соотествующего) в начале проведения.
Так же, по хорошему, при кодогенерации должны быть получены все значения функциональных опций - должны быть проверены все ветки условий, на них основанные - всё что "ЛОЖЬ" - должно быть выброшено из кодогенерации, и соответственно - выброшено из обработки алгоритмами (например, не используемые поля таблиц). Если знаения опций различны для разных организаций - то генерируются раздельные схемы для каждой организации (ну, либо опция должна иметь пометку проверки только в рантайм).

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

Вот такое моё виденье того, как должно выглядеть современное проведение документов. Основаное на предварительно выполненных этапах:
1. Регистрация операций
2. Декларирование схемы (для каждой операции, и получение финальной схемы)
3. Кодогегенерация алгоритмов проведения (но основе финальной схемы или набора финальных схем)
4. Выполнение оптимизированного алгоритма, с минимальным числом циклов и обращений к базе данных

То есть - что-то типа ещё более продвинутой компоновки данных, но для проведения! Где исхначально есть несколько схем, которые перед кодогенерацией (не только запросов, но и алгоритмов обрабтки) ещё и объединяются в единую схему, с оптимизацией и выкидыванием лишнего.

P.S.
Кстати, операции, при декларировании своих схем - могли бы ещё ссылаться на другие схемы и шаблоны, установленные в конфигурации, например на различные шаблоны отражения регл проводок.

P.P.S.
И само собой, должен быть какой-то автоматизированный мастер-конструктор, позволяющий визуально (хотя поддержка макро-скрипта тоже не помешала бы) настраивать секции схемы для каждой операции (независимо, хотя сама опрация может имеить прописанные зависимости от другой операции, и элементы, наследуемые из неё, при этом может их расширять)
26. skv_79 165 31.07.19 18:16 Сейчас в теме
(23)Интересная мысль про новую "Схему СКД" для проведения документов. Но вот мне кажется 1С сейчас сконцентрированы на другом: расширения, EDT. Про движения, наверно, вспомнят еще не скоро... Скажем так, сейчас в 1С развиваются те технологии, монетизация который достаточно высока. А обычном программисте, который пишет там свои движения, никто особо и не думает :)
27. Darklight 19 01.08.19 10:30 Сейчас в теме
(26)Не согласен с тем, что компания 1С сейчас не думает о программистах. Как раз со времён выхода 1С: Предприятие 8.3 очень даже думает. Не так много, как хотелось бы (вот, язык - вообще не развивается), но тут во много всё ограничивается консервативным настроем руководства (а может и ведущих архитекторов) компании, на то как должна развиваться платформа, в т.ч. в части конфигурирования, и внешнего вида для пользователей (и тут переход на УФ и управляемое приложение уже был гигантским скачком, надо заметить - что фактически этот скачок пока так и не завершён - и его можно смело считать не особо успешным).

А то, о чём я написал в (23) возможно только во одном из сценариев (или одном, плавно перетекающим в другой):

1. Представление совершенно нового продукта с иной архитектурой - а-ка 1С: Предприятие 9 - крайне маловероятный сценарий на ближайшие десятилетия

2. Создание расширения (плагина) для IDE EDT (хм... кстати, не только для EDT - такой плагин можно было бы создать для многих редакторов, поддерживающих редактирование 1С, например для Visual Studio Code - но в них в таком плагине нет большого смысла, без других плагинов, которые есть в составе EDT) – которое (расширение IDE) могло бы управлять новыми видами элементов проекта - генерируя классические выходные метаданные для загрузки в платформу (и в конфигуратор; без поддержки оных самим конфигуратором) - сценарий интересный, но трудно представить что кто-то за него возьмётся в ближайшие лет десять, по крайней мере, пока EDT не станет популярнее, чем конфигуратор (и не будет ему ни в чём ступать, по крайней мере при разработке управляемых приложений, ну разве что в скорости EDT наверняка всегда будет медленнее, классического конфигуратора)

3. Создание внешнего препроцессора для конфигурации (для классического конфигуратора, или для EDT - это не важно), который на основе, скажем, XML схем будет их объединять, совершать кодогенерацию и встраивать результат в целевую конфигурацию (через загрузку файлов) - этот сценарий проще 2-го, такой препроцессор сделать не очень сложно, но, хорошо бы ещё иметь визуальный редактор для XML схем - в принципе это всё можно налабать на 1С, а для препроцессора хорошо подойдёт OneScript движок). Другое дело, что таким решением пользоваться будет менее удобно (чем встроенным в IDE) - как минимум возникает две конфигурации (хотя можно и одной обойтись - тут много вариантов как это всё организовать), одна из которых будет являться исходником, а вторая - целевой после генерирования – либо рабочей, либо тестовой, либо посредником между ними. Но вряд ли это будет популярное решение из-за его извращённости

4. Ограничится только библиотечным фреймворком внутри конфигурации. Этот вариант сильно урезан по возможностям, в первую очередь по оптимизации, но основные принципы ( по крайней мере для алгоритмов проведения) предложенного мной решения вполне реализуемы просто ручным разнесением алгоритмов по заданным секциям модулей, и соблюдением определённых правил (API) такого фреймворка. Это сценарий, близкий к тому, что сейчас делается в типовых конфигурация 1С, просто подразумевает более продвинутую структуру чётких правил и требований по их соблюдению. И главное - ориентированность на модульность исходных данных и то, что их "фабричное" состояние не является финальным, и конченый потребитель может их расширять и модифицировать в широком диапазоне, не изменяя напрямую код поставщика. Тут очень хорошо подойдёт парадигма аспектно-ориентированного программирования (ну или хотя бы применение стратегии DI - Внедрение зависимостей) - чего так не хватает конфигурациям 1С (ну а если бы стратегию АОО поддерживал язык платформы 1С, как, например, нативно поддерживает язык Eiffel или AspectJ (многие другие языки поддерживают хотя бы DI через библиотеки), было бы вообще очень круто).
Тут так же хорошо бы иметь какой-то визуальный генератор хотя бы начального шаблона - правил - который проще было бы уже потом соблюдать.
Эта стратегия не сложна - и вполне реализуем уже в этом десятилетии

5. Комбинированный вариант 3. и 4. Здесь препроцессор встроен в рантайм. То есть - настройка схемы осуществляется в XML (ну или ином формате, это не важно, в виде макетов), которые сохраняются в конфигурации (алгоритмы так же сохраняются в конфигурации но в общих модулях, в схеме - только ссылки на них), а при проведении документа - схема XML "интерпретируется" на лету так же на лету происходит некоторая кодогенерация (в основном запросов, ну и некоторых коллекций) и через оператор "Выполнить" осуществляется запуск нужных алгоритмов в нужной последовательности в универсальном алгоритме обработки проведения, с применением стратегии DI - Внедрение зависимостей, с помощью которой в алгоритмы передаются некоторые сгенерированные части кода и данных.
Этот вариант очень хорош для тестирования, и несильно требовательного к производительности "продакшена" - а ну а для релизов в рабочие базу - лучше автоматически конвертировать-таки конфигурации, например, через вариант 3.
Это тоже не шибко сложный вариант, но он один из самых ограниченных по возможностям. Его можно сделать где-то за год, а базовые рабочие реализации получить за пару тройку месяцев

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

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


P.S.
Ну а вообще, говоря о сборке документов из операций, я имел в виду не только проведение. Но и формирование печатных форм, авто сборку интерфейсов форм, да и, вообще, сборку всего объекта метаданного (включаемая элементы хранения данных и прав доступа к ним). То есть предложенное мной решение - это прямая дорого к стратегии модульных конфигураций, имеющих принципиальное отличие структуры редактируемой конфигурации от конфигурации ИБ (конфигурация ИБ должна генерироваться путём сборки редактируемой конфигурации из множества отдельных составляющих, с отключением неиспользуемых элементов и блоков кода, и применением автогенерации, как алгоритмов, так и даже элементов метаданных; а в идеале ещё и с выполнением макроскриптов преобразований существующих метаданных и выражений кода и генерации новых по заданным шаблонам, параметрам, значениям функциональных опций, и анализу метаданных конфигурации).
Это всё возможно только в стратегия 1. и 2. (ну в 3. тоже возможно, но эта стратегия всё-таки подразумевает применение более простого препроцессора - так что в ней это всё только с ограничениями - а иначе - лучше переходить к стратегии 2.)

P.P.S.
Но да, это всё слишком круто для нынешнего платформы 1С Предприятие 8 - и компания 1С на это вряд ли решится в ближайшие десятилетия - они и так неплохо зарабатывают. Вот когда они нащупают пути расширения бизнеса - особенно в другие странны, тогда они, возможно, будут разрабатывать новый продукт - а-ля 1С: Предприятие 9, который изначально будут закладывать так, чтобы ему было чем потягаться с западными конкурентами. Вот там, возможно, и развернётся борьба за притязательного клиента, где нужно будет завлекать оригинальными фишками и не пасовать перед фишками, уже доступными в конкурирующих продуктах. Вот тогда, уже может и спадёт пелена консерватизма... Ну это уже не при братьях Нуралиевых случится...
Доживём?
30. Summer_13 07.08.19 15:08 Сейчас в теме
Возможно я плохо смотрю,но не могу найти примера именно формирования таблицы движений из какой-то табличной части.Мне вот это более интересно.
31. skv_79 165 07.08.19 15:13 Сейчас в теме
(30) п.2 схемы проведения:
По параметрам этих процедур видно, что они одинаковые. И выполняют одинаковую цель - добавляют в тексты запросов для каждого из регистров, по которым будут сформированы движения, которые будут отражены в регистрах.
Названия у них, как правило: "ТекстЗапроса" + "Таблица" + ИмяРегистра, где ИмяРегистра - имя регистра, движения которого будут формироваться этим запросом.
32. Cyberhawk 114 02.09.19 17:08 Сейчас в теме
В Дополнительные свойства "ДляПроведения" вставляется свойство "РегистрыДляПроведения"
Походу опечатка
Оставьте свое сообщение

См. также

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

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

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

05.09.2019    9878    ids79    42       

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

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

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

03.09.2019    3110    m-rv    1       

Чеки ККМ для расчетов с ИП по безналу. Новые обязательные реквизиты в чеке 32

Статья Программист Нет файла v8 v8::ОУ УТ11 УУ Windows Оптовая торговля Бесплатно (free) Практика программирования ККМ Разработка

Новые требования законодательства по пробитию чеков ККМ при расчетах с индивидуальными предпринимателями по безналу. Нюансы подключения интеграционной компоненты ДТО 10.5.0 на примере кассы ККТ АТОЛ 11Ф и конфигурации 1С УТ 11.4. Необходимые доработки типовой конфигурации УТ 11.4 для вывода на печать новых обязательных реквизитов: покупатель, ИНН, ГТД, страна происхождения.

22.07.2019    5529    ids79    16       

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

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

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

25.04.2019    4771    m-rv    2       

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

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

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

24.04.2019    7152    siddy    0       

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

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

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

16.04.2019    7301    m-rv    16       

Остатки в подборе товаров в документ продажи по нескольким складам 2

Статья Программист Нет файла v8 v8::ОУ УТ11 УУ Оптовая торговля Учет ТМЦ Бесплатно (free) Практика программирования Разработка

Остатки в подборе товаров в документ продажи по нескольким складам без включенной опции «Реализация товаров с нескольких складов».

12.03.2019    2541    klepser    5       

Создание акта сверки для Управления торговлей с факсимиле 1

Статья Программист Нет файла v8 v8::ОУ УТ11 Россия УУ Windows Дебиторская и кредиторская задолженность Бесплатно (free) Практика программирования Разработка

Создание обработки на основании встроенной печатной формы для формирования акта сверки взаиморасчётов с факсимиле.

11.02.2019    2385    zemskov    0       

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

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

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

15.01.2019    10394    itriot11    21       

Добавление ставки НДС 20% на старой УТ 11.0 за 2 шага 15

Статья Программист Нет файла v8::ОУ v8::УФ УТ11 Оптовая торговля, дистрибуция, логистика Россия НДС Бесплатно (free) Практика программирования

Предлагаю Вам небольшую инструкцию по добавлению ставки НДС 20% в старую "необновляемую" конфигурацию "Управление торговлей 11.0".

02.01.2019    12087    aximo    12       

Задача 1.13 1С:Специалист - запрос для отчета по стеллажам 8

Статья Программист Нет файла v8::ОУ Россия Бесплатно (free) Практика программирования Решение задач на 1С:Специалист

Описание подводных каменей отчета по стеллажам (задача 1.13 1С:Специалист) и способов их преодоления.

24.12.2018    4099    user913680    1       

Некорректно заполняются значения по умолчанию при создании документа. 1С: УТ 9

Статья Программист Нет файла v8 v8::ОУ УТ11 Россия Бесплатно (free) Адаптация типовых решений

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

21.11.2018    3613    yupi71    11       

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

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

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

14.11.2018    31650    GeterX    93       

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

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

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

10.11.2018    20770    ids79    40       

Метрики, графики, статистика = Prometheus + Grafana 108

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

Снятие метрик из базы данных 1С с хранением в Phrometheus и красивое оформление на основе Grafana. Или как мы создавали комфортные условия административному персоналу на отдельно взятом складе.

23.10.2018    9517    197    freewms    64       

Фискальный чек из 1С:Управление торговлей 10.3 2

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

Способ в фискальном чеке из документа "Реализация товаров и услуг" УТ 10.3. печатать "полный расчет" и "наличные".

16.10.2018    5125    rch    2       

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

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

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

15.10.2018    20393    tormozit    100       

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

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

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

03.09.2018    30959    SergeyN    26       

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

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

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

14.08.2018    13494    m-rv    5       

Согласование цен по заказу 5

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

Согласование цен по заказу покупателя - менеджер указывает цену с признаком "На согласование". Руководитель визирует "Согласовано". Полный контроль над ценами в два клика. Отдел продаж - 20 менеджеров, 1 руководитель.

03.07.2018    6529    Rustig    21       

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

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

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

25.06.2018    19258    olegtymko    47       

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

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

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

01.06.2018    21129    m-rv    21       

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

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

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

23.05.2018    16923    slozhenikin_com    19       

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

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

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

13.05.2018    11298    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    16183    V.Stavinsky    11       

Избавление от характеристик в УТ 11.2. Метод "Топора и педалей" 9

Статья Программист Нет файла v8 v8::ОУ УТ11 УУ Учет ТМЦ Бесплатно (free) Практика программирования

Добрый день! Как вы поняли по заголовку статьи, речь пойдет об отказе от ведения учёта по характеристикам в программе 1С Предприятие: "Управление торговлей 11.2" (далее УТ) максимально простым, топорно-педальным методом, направленным исключительно на экономию нервов/ времени/ денег при минимальной потери эффективности. Статья основана на собственном опыте и, возможно, из разряда "накипело".

11.05.2018    6545    feva    11       

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

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

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

19.02.2018    35498    ildarovich    44       

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

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

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

11.12.2017    25793    milkers    23       

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

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

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

05.12.2017    21270    itriot11    34       

Структура подчиненности в УТ 11.4 15

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

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

23.11.2017    11851    Demian888    6       

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

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

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

19.11.2017    137331    MaxS    251       

Как работает серверный вызов в 1С 456

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

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    42838    pahich    75       

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

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

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

14.11.2017    30747    nixel    85       

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

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

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

30.10.2017    21012    unichkin    17       

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

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

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

25.10.2017    18524    avk72    63       

Реализация системы скидок 9

Статья Программист Нет файла v8 v8::ОУ УТ10 Розничная и сетевая торговля (FMCG) Россия УУ Ценообразование, анализ цен Бесплатно (free) Практика программирования

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

11.10.2017    7388    bakler    11       

Подбор в управляемой форме - что может быть проще? 119

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

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

19.09.2017    27836    starik-2005    51       

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

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

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

10.09.2017    34167    tormozit    72       

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

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

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

04.09.2017    43062    m-rv    60       

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

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

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

01.09.2017    41448    unichkin    15       

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

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

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

16.06.2017    52282    kuzyara    55       

Внешние печатные формы в Альфа-Авто 5 14

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

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

01.06.2017    14194    miavolas    15       

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

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

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

05.05.2017    22547    unichkin    3       

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

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

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

16.03.2017    61765    perepetulichka    25       

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

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

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

10.03.2017    19028    ruha    14       

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

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

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

03.03.2017    51246    V.Stavinsky    21