Как известно делать проводки по счетам-группам нельзя. Однако жизнь течет и после введения бухгалтером очередного нового счета какой либо старый, который ранее не являлся счетом-группы, теперь становится групповым. И соответственно все проводки на этот счет становятся ошибочными. Для предупреждения подобной ситуации целесообразно перед записью данных по счетам имеет смысл всегда проверять счета на предмет группы. Один из возможных вариантов такой проверки привожу ниже:
Есть некий справочник с номенклатурой и Регистр накопления " Товары на складах" с измерениями: Склад,Номенклатура; ресурс: Количество.
Необходимо реализовать механизм перемещения номенклатуры между складами посредством документа "Перемещение товара". Склады определяются в документе с помощью реквизитов "Склад отправитель" и "Склад получатель". Данный документ регистрирует изменение складских остатков и так же в нём должен быть реализован контроль остатков.
Подскажите пожалуйста подробно,как с помощью конструктора запроса в Обработке проведения это реализовать?
Потребовалось в УТ быстро удалить все движения по банку, дело вроде легкое - отменить проведение всех поступлений и списаний безналичных денежных средств, но не тут то было...
При попытке отмены проведения выполнялись проверки на условия оплаты по заказу и документ ни как не отменял проведения
Ну не может типовым способом, заставим не типовым: Через запрос делаем выбору необходимых нам документов и в обработке результата пишем:
Готовая функция для использования в своих обработках или общем модуле:
Для добавления отчета или обработки нужно в модуле добавить Функцию СведенияОВнешнейОбработке()
После сохранения приступим к добавлению в программу:
Ставим галку Дополнительные отчеты и обработки
Открываем дополнительные отчеты и обработки и жмем создать, появляется окно выбора файла, после выбора:
Укажите Размещение (в каком разделе отображать данный отчет/обработку) и в списке в колонке Быстрый доступ выберите пользователей, которым будет доступен данный отчет/обработка.
Если при добавлении вы получаете ошибку:
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(2621)}: Поле объекта не обнаружено (ХранилищеВариантов)
Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда
То нужно заменить в модуле объекта, в функции СведенияОВнешнейОбработке():
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. Запрос удобно использовать, когда требуется получить сложную выборку данных, сгруппированную и отсортированную необходимым образом. Классический пример применения запроса - получение сводки по состоянию регистра накопления на определенный момент времени. Так же, механизм запросов позволяет легко получать информацию в различных временных разрезах.
Текст запроса – это инструкция, в соответствии с которой должен быть выполнен запрос. В тексте запроса описывается:
таблицы информационной базы, используемые в качестве источников данных запроса;
поля таблиц, которые требуется обрабатывать в запросе;
правила группировки;
сортировки результатов;
и т. д.
Инструкция составляется на специальном языке – языке запросов и состоит из отдельных частей – секций, предложений, ключевых слов, функций, арифметических и логических операторов, комментариев, констант и параметров.
Язык запросов платформы 1С очень похож на синтаксис других SQL-языков, но имеются отличия. Основными преимуществами встроенного языка запросов являются: разыменование полей, наличие виртуальных таблиц, удобная работа с итогами, нетипизированные поля в запросах.
Рекомендации по написанию запросов к базе данных на языке запросов платформы 1С:
1) Текст запроса может содержать предопределенные данные конфигурации, такие как:
значения перечислений;
предопределенные данные:
справочников;
планов видов характеристик;
планов счетов;
планов видов расчетов;
пустые ссылки;
значения точек маршрута бизнес-процессов.
Также текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии. Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа ЗНАЧЕНИЕ. Данный литерал позволяет повысить удобочитаемость запроса и уменьшить количество параметров запроса.
Пример использования литерала ЗНАЧЕНИЕ:
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.Москва)
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.ПустаяСсылка)
ГДЕ ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)
ГДЕ ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
ГДЕ ТочкаМаршрута = ЗНАЧЕНИЕ(БизнесПроцесс.БизнесПроцесс1.ТочкаМаршрута.Действие1
2) Использование инструкции АВТОУПОРЯДОЧИВАНИЕ в запросе может сильно время выполнения запроса, поэтому, если сортировка не требуется, то лучше вообще ее не использовать. Во большинстве случаях лучше всего применять сортировку с помощью инструкции УПОРЯДОЧИТЬ ПО.
Автоупорядочивание работает по следующим принципам:
Если в запросе было указано предложение УПОРЯДОЧИТЬ ПО, то каждая ссылка на таблицу, находящаяся в этом предложении, будет заменена полями, по которым по умолчанию сортируется таблица (для справочников это код или наименование, для документов – дата документа). Если поле для упорядочивания ссылается на иерархический справочник, то будет применена иерархическая сортировка по этому справочнику.
Если в запросе отсутствует предложение УПОРЯДОЧИТЬ ПО, но есть предложение ИТОГИ, тогда результат запроса будет упорядочен по полям, присутствующим в предложении ИТОГИ после ключевого слова ПО, в той же последовательности и, в случае если итоги рассчитывались по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
Если в запросе отсутствуют предложения УПОРЯДОЧИТЬ ПО и ИТОГИ, но есть предложение СГРУППИРОВАТЬ ПО, тогда результат запроса будет упорядочен по полям, присутствующим в предложении, в той же последовательности и, в случае если группировка велась по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
В случае же, если в запросе отсутствуют предложения и УПОРЯДОЧИТЬ ПО, ИТОГИ и СГРУППИРОВАТЬ ПО, результат будет упорядочен по полям сортировки по умолчанию для таблиц, из которых выбираются данные, в порядке их появления в запросе.
В случае, если запрос содержит предложение ИТОГИ, каждый уровень итогов упорядочивается отдельно.
3) Что бы избежать повторного запроса к базе данных при выводе результата запроса пользователю (например, построение запроса или отображение результата запроса с помощью табличного документа) полезно использовать инструкцию ПРЕДСТАВЛЕНИЕССЫЛКИ, которая позволяет получать представление ссылочного значения. Пример:
Так же возможно использование инструкции ПРЕДСТАВЛЕНИЕ - предназначена для получения строкового представления значения произвольного типа. Отличие этих инструкций в том, что в первом случае, если инструкции передать ссылку, результатом будет строка, В остальных случаях результатом будет значение переданного параметра. Во втором случае, результатом инструкции всегда будет строка!
4) Если в запросе имеется поле с составным типом, то для таких полей возникает необходимость привести значения поля к какому-либо определенному типу с помощью инструкции ВЫРАЗИТЬ, что позволит убрать лишние таблицы из левого соединения с полем составного типа данных и ускорить выполнение запроса. Пример:
Имеется регистра накопления ОстаткиТоваров, у которого поле Регистратор имеет составной тип. В запросе выбираются Дата и Номер документов ПоступлениеТоваров, при этом при обращении к реквизитам документа через поле Регистратор не происходит множество левых соединений таблицы регистра накопления с таблицами документов-регистраторов.
Если приведение типа считается не осуществимым, то результатом приведения типа будет значение NULL.
5) Не стоит забывать про инструкцию РАЗРЕШЕННЫЕ, которая означает, что запрос выберет только те записи, на которые у текущего пользователя есть права. Если данное слово не указать, то в случае, когда запрос выберет записи, на которые у пользователя нет прав, запрос отработает с ошибкой.
6) В случае, если в запросе используется объединение, и в некоторых частях объединения присутствуют вложенные таблицы (документ с табличной частью), а в некоторых нет, возникает необходимость дополнения списка выборки полями – пустыми вложенными таблицами. Делается это при помощи ключевого слова ПУСТАЯТАБЛИЦА, после которого в скобках указываются псевдонимы полей, из которых будет состоять вложенная таблица. Пример:
7) Что бы в результат запроса не попали повторяющиеся строки, следует использовать инструкцию РАЗЛИЧНЫЕ, потому что так нагляднее и понятнее, а инструкция СГРУППИРОВАТЬ ПО применяется для группировки с помощью агрегатных функций. Ксати, при использовании агрегатных функций предложение СГРУППИРОВАТЬ ПО может быть и не указано совсем, при этом все результаты запроса будут сгруппированы в одну единственную строку. Пример:
8) Инструкция СГРУППИРОВАТЬ ПО позволяет обращаться к полям верхнего уровня, без группировки результатов по этим полям, если агрегатные функции применены к полям вложенной таблицы. Хотя в справке 1С написано, при группировке результатов запроса в списке полей выборки обязательно должны быть указаны агрегатные функции, а помимо агрегатных функций в списке полей выборки допускается указывать только поля, по которым осуществляется группировка. Пример:
9) Инструкция ЕСТЬNULL предназначена для замены значения NULL на другое значение, но не забываем, что второй параметр будет преобразован к типу первого в случае, если тип первого параметра является строкой или числом.
10) При обращении к главной таблице можно в условии обратиться к данным подчиненной таблицы. Такая возможность называется разыменование полей подчиненной таблицы.
Пример (поиск документов, содержащих в табличной части определенный товар):
Преимущество этого запроса перед запросом к подчиненной таблице Приходная.Товары в том, что если есть дубли в документах, результат запроса вернет только уникальные документы без использования ключевого слова РАЗЛИЧНЫЕ.
11) Интересный вариант оператора В - это проверка вхождения упорядоченного набора в множество таких наборов (Поле1, Поле2, ... , ПолеN) В (Поле1, Поле2, ... , ПолеN).
Пример:
12) При любой возможности используйте виртуальные таблицы запросов. При создании запроса система предоставляет в качестве источников данных некоторое количество виртуальных таблиц - это таблицы, которые так же являются результатом запроса, который система формирует в момент выполнения соответствующего участка кода.
Разработчик может самостоятельно получить те же самые данные, которые система предоставляет ему в качестве виртуальных таблиц, однако алгоритм получения этих данных не будет оптимизирован, так как:
Все виртуальные таблицы параметризованы, т. е. разработчику предоставляется возможность задать некоторые параметры, которые система будет использовать при формировании запроса создания виртуальной таблицы. В зависимости от того, какие параметры виртуальной таблицы указаны разработчиком, система может формировать РАЗЛИЧНЫЕ запросы для получения одной и той же виртуальной таблицы, причем они будут оптимизированы с точки зрения переданных параметров.
Не всегда разработчик имеет возможность получить доступ к тем данным, к которым имеет доступ система.
13) В клиент-серверном варианте работы функция ПОДСТРОКА() реализуется при помощи функции SUBSTRING() соответствующего оператора SQL, передаваемого серверу баз данных SQL Server, который вычисляет тип результата функции SUBSTRING() по сложным правилам в зависимости от типа и значений ее параметров, а так же в зависимости от контекста, в котором она используется. В большинстве случаев эти правила не оказывают влияния на выполнение запроса, но бывают случаи, когда для выполнения запроса существенна максимальная длина строки результата, вычисленная SQL Server. Важно иметь в виду, что в некоторых контекстах использования функции ПОДСТРОКА() максимальная длина ее результата может оказаться равной максимальной длине строки ограниченной длины, которая в SQL Server равна 4000 символам. Это может привести к неожиданному аварийному завершению выполнения запроса:
Microsoft OLE DB Provider for SQL Server: Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes.
HRESULT=80040E14, SQLSTATE=42000, native=8618
Чтобы избежать такой ошибки, не рекомендуют использовать функцию ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ().
14) С осторожностью используйте ИЛИ в конструкции ГДЕ, так как использование условия с ИЛИ может значительно "утяжелить" запрос. Решить проблему можно конструкцией ОБЪЕДИНИТЬ ВСЕ. Пример:
15) Условие НЕ В в конструкции ГДЕ увеличивает время исполнения запроса, так как это своего рода НЕ (ИЛИ1 ИЛИ2 ... ИЛИn), поэтому для больших таблиц старайтесь использовать ЛЕВОЕ СОЕДИНЕНИЕ с условием ЕСТЬ NULL. Пример:
16) При использовании Временных таблиц нужно индексировать поля условий и соединений в этих таблицах, НО, при использовании индексов запрос может выполняться еще медленнее. Поэтому необходимо анализировать каждый запрос с применением индекса и без, замерять скорость выполнения запроса и принимать окончательное решение.
Если вы помещаете во временную таблицу данные, которые изначально индексированы по некоторым полям, то во временной таблице индекса по этим полям уже не будет.
17) Если вы не используете Менеджер временных таблиц, то явно удалять временную таблицу не требуется, она будет удалена после завершения выполнения пакетного запроса, иначе следует удалить временную таблицу одним из способов: командой УНИЧТОЖИТЬ в запросе, вызвать метод МенеджерВременныхТаблиц.Закрыть().
В рамках выполнения проекта столкнулся с интересной задачей ускорения загрузки данных из других информационных баз. Задача загрузки данных предполагала выполнение к внешней базе несвязанных между собой запросов, результаты которых помещаются в одну таблицу значений. Когда на оптимизацию запроса рука уже не поднималась, приступил к ускорению загрузки с помощью распараллеливания процессов. Отмечу, что элементы кода в данном посте приведены для клиент-серверного варианта и укрупнено для общего понимания подхода.
Что у нас в 1с Предприятии 8.2 имеется для распараллеливания & это фоновые задачи. Метод, который будет вызываться в фоновой задаче, должен быть прописан в серверном общем модуле и быть экспортным. Естественно нам понадобиться в фоновую задачу передавать и забирать значения.
В моем случае передача значений в фоновую задачу происходила через параметры. Метод ЗагрузитьИзВИБ имеет два параметра это ВходнойПараметр и АдресВХранилище. ВходнойПараметр это структура, в которую сгружаются все данные, необходимые для проведения загрузки. АдресВХранилище это адрес во временном хранилище, по которому будет передан результат загрузки. Сам код метода фонового задания выглядит так:
Зачем нам в фоновую задачу передавать адрес во временном хранилище. Наша фоновая задача должна куда-то положить результат, причем так чтобы мы знали где его потом взять.
Для того чтобы запустить фоновые задачи выполняется следующий код:
Перед запуском фоновой задачи через ФоновыеЗадания.Выполнить() мы формируем массив параметров. Значения из массива параметров переходят в метод фонового задания в качестве параметров. В МассивЗапущенныхЗаданий хранятся все фоновые задачи, которые мы запустили. Теперь надо подождать их ожидания.
После того как все задачи были завершены, можем приступить к получению из них данных. Для этого мы проходим по всем адресам в хранилище, которые хранятся в массиве МассивАдресовВХранилище. После получения результата фонового задания перегоняем его в общую таблицу.
Вопрос определения оптимального количества потоков выходит за рамки данного поста. А после получения некоторых результатов на рабочих данных пока что выходит и за рамки моего сознания . Но если у вас есть идеи как посчитать нужное количество потоков, пишите в комментариях, с радостью почитаю.
Обратился ко мне клиент с задачей: Нужно запретить изменение всех видов платежных документов (ПП, РКО, ПКО) спустя 8 часов с момента проведения соответствующего документа
Для реализации этого я использовал Подписку на событие: ПередЗаписьюДокументаДатаЗапретаРедактирования
В конце процедуры обработчика добавил вызов своей процедуры
Вот ее код:
Пока документ не проведен, его можно менять сколько угодно, но после первого проведения и истечения указанного количества часов, документ заблокируется, и при проведении будет выведено сообщение:
Проводки по начислению и уплате страховых взносов ИП за себя формируют квартальные регламентные операции по закрытию месяца. В ООО это документы начисления ЗП.
Если вы хотите ввести сами, то:
Операции - Операции, введенные вручную, через 69.06 - Расчеты по страховым взносам, уплачиваемым исходя из стоимости страхового года.
Для организаций:
Д 44,20,26 К 69.06.1 (Взносы в ПФР (страховая часть))
К 69.06.2 (Взносы в ПФР (накопительная часть)) - отменена с 2015г
К 69.06.3 (Взносы в ФОМС)
Когда будете разносить выписку
Д 69.06.1 К 51
Д 69.06.2 К 51
Д 69.06.3 К 51
Для ИП проводки следующие:
Д 44,20,26 К 69.06.5 (Взносы в ПФР (страховая часть))
К 69.06.3 (Взносы в ФОМС)
Когда будете разносить выписку
Д 69.06.5 К 51
Д 69.06.3 К 51
Для того, чтобы сумма страховых взносов отразилась в КУДиР, необходимо внести их вручную. А именно: "Операции" - "Прочие операции" - "Запись КУДиР", добавляете новую запись и вносите сведения об уплаченных страховых взносах в раздел IV "Расходы, уменьшающие сумму налога".
Обратился ко мне старый клиент и говорит - беда с нумерацией счетов!
Менеджеры, кто как хотел - так и изменял номера документов. с префиксом, без, писали даже б/н. Но тут пришел новый бухгалтер и сказал - нужно с 1 октября запустить авто нумерацию с номера 00010000, но старые счета не трогать!
Попросили - сделали:
т.к. Старые трогать нельзя - простое восстановление нумерации отпадает
Первое решение, которое пришло в голову, сделать выборку по моментувремени создания счета - обратная сортировка - получить первый - и к полученному номеру документа +1
Но оказалось, что бывает такое: менеджеры создают счета сегодня, но ставят дату вчера - и получается только что созданный документ уже не последний пришлось переделать алгоритм.
Только алгоритм решили немного переделать - не получаем дату создания документа, а сортируем по части ГУИДа, которая является началом периода создания документа.
Пример создания внешней печатной формы АКТа для Бухгалтерии 3.0
1. В конфигураторе 1C Предприятия 8 создаем внешнюю обработку (Файл->Новый->Внешняя обработка), задаем имя.
2. В модуле обработки пишем код. Постараюсь его максимально комментировать. Главное должно быть:
функция ПечатьВнешнейПечатнойФормы табличного документа - которая выведет данные в макет
функция Печать - вызывается из конфигурации! в нее передается массив печатаемых объектов
и функция СведенияОВнешнейОбработке(). Она необходима для регистрации печатной формы в справочнике ДополнительныеОтчетыИОбработки, в ней собирается структура с данными для подключения формы. Эта функция, а также ряд сопутствующих ей, практически одинаковы для всех печатных форм, поэтому их можно просто копировать в новую печатную форму ничего не меняя.
3. Добавляем макет вывода печатной формы:
4. Сохраняем и добавляем в конфигурацию:
Подключается через Администрирование - Печатные формы, отчеты и обработки:
Создаете новую обработку, записывайте и при открытии документа Реализация, нажав на Печать - появляются доступные печатные формы с разными подписывающими.
За 2015 год специалистами 1С доработаны сложные моменты, разработаны новые возможности, да и функционал постоянно развивается. Например, разработано 2 сценария перехода и переноса данных, дописан механизм учета оценочных обязательств, разработано множество новых документов. Бывали случаи, когда решения, сделанные по запросу, с выходом очередного релиза включались в типовую конфигурацию.
Тем не менее, на подводные камни можно наткнуться до сих пор.
Один из таких «камней» - галочки «по умолчанию». Например, флажок «Использовать эти же данные при расчете отпусков командировок и др.» в форме «ввод данных для расчета среднего», в документах «Больничный лист», «Отпуск», «Командировка». Этот флажок установлен «по умолчанию». Поэтому после открытия для просмотра формы «ввод данных» и последующего нажатия кнопки «ок», корректно перенесенные данные для расчета среднего заработка отпуска без предупреждений заменятся на данные для расчета больничного листа. Пока за этой галочкой нужно следить.
Настройка интерфейса
В программе реализован спектр возможностей, она предназначена для ведения учета на предприятиях различного масштаба. Часть ее функционала необходима всем предприятиям практически без исключения, часть предусмотренных в ней возможностей требуется только определенным компаниям. Поэтому в начале работы с программой можно явно указать, какой именно функционал нужен для ведения учета на данном конкретном предприятии. Изменить сделанный выбор можно и позже, даже если учет в программе уже ведется. Можно добавить или, напротив, удалить функционал. При добавлении нового функционала в интерфейсе программы появляются новые соответствующие команды, кнопки и т. п., становятся доступны новые объекты и действия (документы, справочники, начисления и т. п.). Если же некий функционал не выбран, то программа не загромождается ничем лишним, не востребованным в данный момент.
Внешний вид и поведение программы могут различаться от предприятия к предприятию в зависимости от выбранных возможностей, а также – от пользователя к пользователю, в зависимости от того, какие права доступа даны.
Возможна и «тонкая донастройка» интерфейса: управлять им можно непосредственно, включая или выключая видимость разделов, элементов, форм и т. п., а также меняя их расположение. Таким образом, теперь для того, чтобы настроить меню и внешний вид рабочего стола, не нужно приглашать программиста.
Справочник «сотрудники»
Расширена возможность создания документов из карточки сотрудника. Карточка сотрудника дополнена ссылками на документы по сотруднику.
Единые документы для кадровика и расчетчика
Единый документ выглядит для расчетчика и для кадровика по-разному. Права доступа ограничены в зависимости от роли. Если же в компании роль кадровика и расчетчика выполняет один человек, можно перенастроить программу для работы одного человека с единым документом.
Пример: Документ «Отпуск» (Кадры)
Количество кадровых документов в редакции 3.0 значительно увеличилось.
Оформление отпуска по уходу за ребенком-инвалидом по разрозненным датам можно формировать одним документом, а не создавать разные приказы на каждый период отпуска.
Некоторые доработки в расчетных документах.
Документ Расчет заработной платы:
Все начисления и удержания удобно собраны в одном документе.
Передать информацию о контрагентах из УП в БП. Данные передаются в одностороннем порядке, идентификация производится по уникальному идентификатору.Настройка правил конвертации выполняется с помощью специальной конфигурации Конвертация данных, редакция 3.0 (далее – КД 3.0).
Выполняемые действия
Этап 1. Подготовка к настройке правил.
Для настройки правил конвертации в конфигурации КД 3.0 должны содержаться сведения о структуре информационных баз, между которыми производится синхронизация данных, а также о структуре формата Enterprise Data.
Шаг 1. Выгрузка структуры информационных баз УП и БП.
Для выгрузки информации о структуре информационной базы используется обработкаMD83Exp.epf, входящая в комплект поставки конфигурации КД 3.0.
Для каждой информационной базы (УП и БП) необходимо выполнить следующие действия:
Открыть информационную базу в режиме “Предприятие”.
Указать имя файла, в который следует сохранить структуру информационной базы.
Проверить настройки в форме обработки (все флаги должны быть сняты).
Нажать кнопку Выгрузить.
Шаг 2. Экспорт xml-схемы формата обмена
Для выгрузки схемы формата обмена используются стандартные возможности платформы.
Необходимо выполнить следующие действия:
Открыть одну из информационных баз (либо УП либо БП) в режиме “Конфигуратор”.
В дереве метаданных найти XDTO пакеты с именами ExchangeMessage иEnterpriseData_1_0_beta.
Установить курсор на пакет XDTO, нажать правую кнопку мыши и в контекстном меню выбрать пункт Экспорт XML-схемы. Указать путь и имя файла для экспорта. Выполнить это действие для каждого из двух пакетов, сохранив XML-схемы в два разных файла.
Шаг 3. Загрузка структуры информационных баз в конфигурацию КД 3.0
Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”. Перечисленные ниже действия следует выполнить для каждой из конфигураций, для которых настраиваются правила конвертации (УП и БП).
Перейти в раздел Конфигурации, и выбрать команду Загрузка структуры конфигурации.
Указать путь к файлу со структурой информационной базы (см. Этап 1, Шаг 1).
Указать способ загрузки & в новую версию конфигурации.
Нажать кнопку Выполнить загрузку, дождаться окончания загрузки.
Шаг 4. Загрузка структуры формата обмена в конфигурацию КД 3.0
Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”.
Перейти в раздел Формат данных, и выбрать команду Загрузка структуры формата.
Указать файлы со структурой формата (см. Этап 1, Шаг 2). Необходимо указать сразу оба файла, используя множественный выбор.
Проверить имя основного пакета XDTO – должен совпадать с пространством имен пакета XDTO EnterpriseData_1_0_beta (см. в конфигураторе УП или БП).
Указать способ загрузки & в новую версию формата.
Нажать кнопку Выполнить загрузку, дождаться окончания загрузки.
Этап 2. Создание конвертаций
Для решения описанной задачи необходимо создать две конвертации:
УП (для выгрузки данных из УП в формат обмена)
БП (для загрузки данных из формата обмена в БП)
Создание конвертаций производится в разделе Конвертации, команда Конвертации. Для новой конвертации необходимо указать наименование, конфигурацию и формат обмена. Например, конвертация для конфигурации УП:
Наименование & “УП2.0.7”.
Конфигурация & “УправлениеПредприятием”.
Поддерживаемые версии формата & одна строка, в которой выбрана единственная позиция справочника Версии формата.
Далее для каждой из двух конвертаций требуется настроить правила:
правила обработки данных,
правила конвертации объектов,
правила конвертации предопределенных данных.
Для перехода к комплекту правил конкретной конвертации необходимо перейти в разделКонвертации, выбрать команду Настройка правил конвертации и выбрать в списке конкретную конвертацию, для которой будут настраиваться правила. В результате будет открыта форма Настройка правил обмена, в которой собраны все правила для конкретной конвертации.
Этап 3. Создание правил конвертации объектов
Шаг 1. Правило конвертации для выгрузки контрагентов из УП
Открыть настройку правил обмена для конвертации УП.
Перейти на закладку Правила конвертации объектов.
Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
В открывшейся форме нажать Автосопоставление. Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”
Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств
Вручную добавить правило конвертации свойства для ОКПО (свойство конфигурации & “КодПоОКПО”, свойство формата & “ОКПО”).
Позже потребуется вернуться к правилам конвертации свойств, чтобы заполнить правило конвертации свойства для свойства “ЮридическоеФизическоеЛицо”, которое является перечислением.
Нажать кнопку Записать и закрыть.
Шаг 2. Правило конвертации для загрузки контрагентов в БП
Открыть настройку правил обмена для конвертации БП.
Перейти на закладку Правила конвертации объектов.
Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
В открывшейся форме нажать Автосопоставление. Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”.
Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств.
Вручную добавить правило конвертации свойства для ОКПО (свойство конфигурации & “КодПоОКПО”, свойство формата & “ОКПО”).
Позже потребуется вернуться к правилам конвертации свойств, чтобы заполнить правило конвертации свойства для свойства “ЮридическоеФизическоеЛицо”, которое является перечислением.
Перейти на закладку ПередЗаписьюПолученныхДанных и написать алгоритм для заполнения страны регистрации нового контрагента. Алгоритм содержит следующий текст: «ПолученныеДанные.СтранаРегистрации = Справочники.СтраныМира.Россия;».
Нажать кнопку Записать и закрыть.
Этап 4. Создание правил конвертации предопределенных данных
Порядок действий одинаков для обоих конвертаций.
Открыть настройку правил обмена для конвертации (УП или БП)
Перейти на закладку Правила конвертации предопределенных данных
Создать новое правило конвертации и заполнить его свойства:
Объект конфигурации: “ПеречислениеСсылка.ЮридическоеФизическоеЛицо”
Объект формата: “ЮридическоеФизическоеЛицо”
Область применения: для отправки и получения
В табличном поле заполнить соответствия значений перечисления конфигурации и формата: “ФизическоеЛицо” & “ФизическоеЛицо” и “ЮридическоеЛицо” & “ЮридическоеЛицо”
Нажать кнопку Записать и закрыть
Указать новое правило в правиле конвертации свойства “ЮридическоеФизическоеЛицо” справочника Контрагенты
Перейти на закладку Правила конвертации объектов
Найти правило конвертации справочника Контрагенты, открыть форму правила
Перейти на закладку Правила конвертации свойств и найти правило для свойства “ЮридическоеФизическоеЛицо”
Открыть форму правила конвертации свойства и указать в нем правило конвертации объекта & “Перечисление_ЮридическоеФизическоеЛицо”.
Сохранить внесенные изменения
Этап 5. Создание правил обработки данных
Порядок действий одинаков для обоих конвертаций.
Открыть настройку правил обмена для конвертации (УП или БП)
Перейти на закладку Правила конвертации объектов
Найти правило конвертации справочника Контрагенты, открыть форму правила
Нажать кнопку Создать на основании & Правило обработки данных
В созданном правиле обработки данных проверить заполнившиеся автоматически свойства:
Идентификатор правила & указать такой же как для правила обработки данных (“Справочник_Контрагенты_Отправка” либо “Справочник_Контрагенты_Получение”)
Область применения & такая же как для правила обработки данных
Объект выборки:
для конвертации УП & “СправочникСсылка.Контрагенты”
для конвертации БП & “Справочник.Контрагенты”
Правило конвертации объекта & ссылка на правило конвертации объекта.
Нажать кнопку Записать и закрыть.
Этап 6. Получение модулей менеджера обмена данными
Модуль менеджера обмена данными необходим для обмена данными между конфигурациями в соответствии с настроенными в КД 3.0 правилами.
Порядок действий одинаков для обеих конвертаций:
Открыть информационную базу УП или БП в режиме “Конфигуратор”. Найти в дереве метаданных общий модуль МенеджерОбменаЧерезУниверсальныйФормат и открыть его для редактирования. Модуль должен быть пустым.
Открыть информационную базу КД 3.0 в режиме “Предприятие”.
Перейти в раздел Конвертации и выбрать команду Выгрузка модуля.
В открывшейся форме указать соответствующую конвертацию и нажать кнопку Выгрузить. Модуль будет скопирован в буфер обмена.
Перейти в конфигуратор информационной базы УП или БП и вставить содержимое буфера обмена в общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
Сохранить конфигурацию.
Выгрузка модуля в буфер обмена также может производиться из формы настройки правил обмена по кнопке Сохранить модуль менеджера обмена.
Для того чтобы по настроенным правилам выполнялся обмен данными, необходимо в обеих информационных базах в режиме “Предприятие” настроить синхронизацию данных через универсальный формат.
Для управления регистрацией документа в последовательности документов служит набор записей регистрации в последовательности документов.
У документа есть свойство ПринадлежностьПоследовательностям. Значением свойства является коллекция наборов записей регистрации в последовательности документов. Для каждой последовательности, в которой участвует документ, существует свой собственный экземпляр набора записей. Если у документа стоит режим автоматического заполнения последовательностей, то перед записью документа наборы записей регистрации будут автоматически заполнены. Для последовательностей без измерений набор записей будет содержать только одну запись. Для последовательностей с измерениями число записей зависит от содержания документа и настройки соответствия измерений последовательности реквизитам документа.
Набор записей автоматически заполняется до записи документа и записывается после записи документа в одной транзакции с ним. Это позволяет в обработчиках событий документа ПередЗаписью() и ПриЗаписи() переопределить набор записей регистрации. Так, например, если документ входит в последовательность Последовательность1 и у документа стоит признак автоматического заполнения последовательности, то для того что бы отменить его регистрацию в последовательности в зависимости от значения реквизита документа достаточно в модуль документа вставить обработчик события ПередЗаписью() следующего содержания:
В этом случае если реквизит Регистрировать имеет значение "Ложь", то документ не будет зарегистрирован в последовательности Последовательность1. Кроме отмены регистрации документа в последовательности, доступна возможность написания собственного алгоритма регистрации документа в последовательности. Для этого надо очистить набор записей регистрации и заполнить его новыми записями.