Не мог нигде найти синтаксис а оказалось:

 ОбластьТовары.Область().Шрифт = мШрифт_Курсив;  

где ОбластьТовары — область на макете

Дальше просто пример цикла когда печатаем тот или другой шрифт

мШрифт_Обычный = Новый Шрифт();       

мШрифт_Жирный = Новый Шрифт(«Arial»,18,Истина);   

    мШрифт_Курсив = Новый Шрифт(«Arial»,8,,Истина);         

                   Для Каждого ТекСтрокаТовары Из ТаблицаТоваров Цикл              

         Если   ТекСтрокаТовары.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(«00000006861») тогда                                            ОбластьТовары.Область().Шрифт = мШрифт_Курсив;                  

         иначе              

              ОбластьТовары.Область().Шрифт = мШрифт_Обычный ;              

             КонецЕсли;


После установки Python 2.7.14 при вводе команды  python в Poweshell возникает ошибка.

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

Делаем просто:

Запускаем C:\windows\sistem32\cmd.exe от имени администратора. Команда appwiz.cpl

Выбираем устанавливаемый пакет Python и переустанавливаем.

И о счастье!!!


Частенько приходится делать некий отчёт или обработку и затем проверять её работу. При этом постоянно вводить значение каких-нибудь отборов.

Между тем в типовых формах существуют кнопки «сохранить значение», «восстановить значение».

Конечно можно прописывать подстановку просто в коде типа:

Процедура ПриОткрытии()
Склад=Справочники.Склады.НайтиПоНаименованию(«НаименованиеКакое нить»);
КонецПроцедуры

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

В результате увидим две кнопки как в типовом отчёте:

форма1

Легко. Просто где вот простому смертному это увидеть. Типа учитесь… Было бы чему!

 


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

В тех. поддержке не дали ответ.


Я держу тебя под душем, Ты визжишь, приятно слушать.
Hервы режет — словно ток, Ох, не любишь кипяток!
* * *
Птица счастья завтрашнего дня,
Пролетая, клюнула меня…

* * *
Hа полу лежит дог, То ли спит, то ли сдох.
Я на хвост ему встал, Оказалось — он спал…
* * *
я спросил у ясеня— «где моя любимая?» ясень не ответил мне, голову склонил.
я спросил у тополя, «где моя любимая?» «ты б еще у тумбочки, идиот, спросил…»
* * *
Солнце вышло из-за туч. Hет на солнце пятен.
До чего же я хорош, До чего приятен !
* * *
Кто на свете всех смелее, Всех прекрасней и умнее?
Риторический вопрос Если дуло смотрит в нос!
* * *
Hаша Таня, типа, плачет — Уронила, типа, мячик.
Hет бы ей прикинуть, дуре — | Hе утонет он, в натуре.
* * *
У меня в кармане крыса — Я нашёл её в лесу.
Она дохлая и лысая, Я домой её несу.
* * *
Все было: лужа на крыльце, Знакомый профиль мусорного бака
И у забора писала собака с задумчивой улыбкой на лице
* * *
И ты молчишь, и я молчу … Hо ты серьёзно, а я шучу …
* * *
Еcть жeнщины в pуccкиx ceлeньяx — иx бaбaми нeжнo зoвут:
cлoнa нa бeгу ocтaновят, и xoбoт eму oтopвут…
* * *
Hочь наступила | Солнце зашло | Пусто в постели | Hехорошо
* * *
Если выпил граммов двести, | выпить триста — дело чести!
* * *
У попа была собака, он, как мог, её любил.
Она съела кусок мяса, он тотчас её убил.
Очень важный кусок мяса откусил коварный зверь.
И без этого кусочка поп не женится теперь.
* * *
проверил истину на деле — не пьющий дольше проживет.
попробовал не пить неделю — мне показалось — прожил год.
* * *
Я в него влепила из того, что было
А потом, что стало, то и закопала…

* * *
Сегодня с нами ты не пьешь, А завтра Родине изменишь!

* * *
В страшной и темной чаще лесной грязный, оборванный, злой, утомленный
бродит, обросший густой бородой, мальчик, забытый экскурсией школьной.

* * *
Приятней его не встречал я мужчины: Остёр, обаятелен, очень умён
И каждое утро без всякой причины Из зеркала мне улыбается он!
* * *
Ты меня на рассвете разбудишь По зубам непременно получишь.
Я тебя отучу от привычки В воскресенье будить на рассвете!
* * *
Порой бывает так паршиво, Что даже чай не лезет в глотку,
А лезет в глотку только пиво, Которым запиваешь водку.
* * *
как много девушек хороших! как много ласковых имен!
а мне досталась — с гнусной рожей и с гадким именем — антон!
* * *
Ваня пудрит носик , Федя красит глазки — Едут в войсковую часть Голубые каски.
* * *
Бывает, проснешься как птица — Крылатой пружиной на взводе
И хочется жить и трудиться!.. Hо к завтраку это проходит…
* * *
Опять приходит с обыском конвой. Опять нашли под полом пулемет.
Я думал, это тот же — нет, другой. Какая сволочь их туда кладет?
* * *
над седой равниной моря, над крутой горбиной скал, гордо реял буревестник и
метал на скалы
кал жирный пингвин очень злится, что несбыточны мечты: он не может, хоть и
птица, гордо
какать с высоты
* * *
я знаю точно наперёд — сегодня кто-нибудь умрёт.
я знаю где, я знаю как, я не гадалка — я маньяк…
* * *
Hашу веру не убить — Пили, пьём и будем пить.
* * *
вышел ежик из тумана выпил водки пол стакана вынул ножик, колбасу хорошо в
родном лесу тихо
песню затянул о несбывшемся всплакнул посмотрел в пустой стакан и опять ушел в
туман…
* * *
как-то на дороге, девятого числа встретил добрый человек человека зла.
добрый взял гранатомет, бах — и нет козла. все-таки добро-то посильнее зла!
* * *
Если в жизни любишь риск — Сформатируй жесткий диск!

Контакты

Posted: 14 июня, 2017 in Контакты

Москва, РФ


Володя ты не устал? Иди в отдых прими А я помогу.

 

Ты сегодня принесла

Не перцовая она

Ни лимонная

И Ни тминнная

Протянула робко ты

Мне бутылочку воды

Оказалася Особая

Водочка

Водочка

Белой головки букет

Водочка

Водочка

Полный букет

Как в народе говорят

Только водку все корят

У меня ж такое мнение

Захожу я в ресторан

Закидаю 200 грамм

Сходу лучше настроение

Водочка

Водочка

Белой головки примэр

Водочка

Водочка

Полный букет


На сервере

C:/Documents and Settings/All Users/Application Data/1C/1Cv8/4129dbdb-b495-41cb-99ea-ef315060a03e/1Cv8.log.

Чтобы узнать идентификатор базы нужно выполнить на сервере СУБД следующий скрипт:
USE ИмяБазы; Select DB_ID();

 

В файловой базе

если информационная база хранится в файле C:/1C_base/1Cv8.1CD, то журнал регистрации будет находиться в файле C:/1C_base/1Cv8.log.

 

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

  • Остановите кластер;
  • Скопируйте все файлы из каталога журнала регистрации, например, C:\Program Files(x86)\1cv8\srvinfo\reg_1541\ba29bc46-8a94-4e96-a3a0-ce1d60f783ed\1Cv8Log, в котором находится ошибочный файл «1Cv8.lgd», в резервное место для сохранения накопленного в них журнала;
  • Очистите каталог журнала регистрации;
  • Создайте в каталоге журнала регистрации пустой файл 1Cv8.lgf;
  • Запустите кластер.

Запускаем C:\windows\sistem32\cmd.exe от имени администратора. Команда appwiz.cpl

Выбираем устанавливаемый пакет.


Для восстановления порядка нумерации, достаточно выполнить обработку с кодом в модуле объекта:

ОбновитьНумерациюОбъектов();


Изображение  —  Posted: 20 февраля, 2017 in Курсы


Бывают случаи когда БД работает в серверном варианте, при этом есть доступ на SQL Server, а пароль от пользователя 1С с полными права потерян, в этом случае возможно снять пароль способом который описан ниже.
Итак, поехали.
Платформа 1С при работе на SQL Server хранит список пользователей в двух местах, а именно в таблице v8users и в файле users.usr который бинарно расположен в таблице Params.
Теперь попробуем заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо всего навсего переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio логинимся и создаем запрос к базе данных с содержанием:

EXEC sp_rename ‘v8users’, ‘v8users_old’
GO
UPDATE Params
SET FileName = ‘users.usr_old’
WHERE FileName = ‘users.usr’
GO

После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:

DROP TABLE v8users
GO
EXEC sp_rename ‘v8users_old’, ‘v8users’
GO
UPDATE Params
SET FileName = ‘users.usr’
WHERE FileName = ‘users.usr_old’
GO

После выполнения запроса в списке пользователей появяться все пользователи 1С, останеться только найти нужного и изменить ему пароль.

Для PostgreSQL открываем pgAdminIII и выполняем:

ALTER TABLE v8users RENAME TO v8users_old;
UPDATE Params SET FileName = ‘users.usr_old’ WHERE FileName = ‘users.usr’;

Заходим в конфигуратор без пароля и выполняем в pgAdminIII:

DROP TABLE v8users;
ALTER TABLE v8users_old RENAME TO v8users;
UPDATE Params SET FileName = ‘users.usr’ WHERE FileName = ‘users.usr_old’;


Восстановление резервной копии в другую БД

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

Решение

Создание новой временной БД
-Необходимо открыть Microsoft SQL Management Studio — Databases — ПКМ — New Database;
-В поле Database Name указать имя новой базы данных;
-В полях Logical Name указать имена точно такие же, как у оригинальной базы;
-В полях File Name указать другое месторасположение БД и лог файла (отличное от расположения оных оригинальной базы);

Восстановление
-После создания необходимо в контекстном меню базы выбрать — Tasks — Restore — Database…
-Отметить From Device — Выбрать требуемый bak файл;
-В полях Select the backup sets to restore отметить параметры в столбце Restore;
-На вкладке Options отметить параметр — Overwrite the existing database (WITH REPLACE);
-Обязательно в полях Restore As указать месторасположение файла БД и лог файла временной базы данных;

А по мне так можно с другим именем.


select @@version

или

SELECT SERVERPROPERTY(‘Edition’)
UNION ALL
SELECT SERVERPROPERTY(‘ProductVersion’)
UNION ALL
SELECT SERVERPROPERTY(‘ProductLevel ‘);


При создании нового пользователя в MS SQL, автоматом ставится галочка, что пользователь должен сменить пароль при первом подключении через Microsoft Management Studio. Через графический интерфейс эту галочку снять нельзя, будешь вылезать ошибка:
Msg 15128, Level 16, State 1, Line 1
The CHECK_POLICY and CHECK_EXPIRATION options cannot be turned OFF when
MUST_CHANGE is ON.

Но это можно обойти, если задать пароль через SQL запрос.
Заходим в Microsoft Management Studio с правами администратора, создаем новый запрос и вставляем следующий код:
USE Master
GO
ALTER LOGIN test_must_change WITH PASSWORD = ‘samepassword’
GO
ALTER LOGIN test_must_change WITH
CHECK_POLICY = OFF,
CHECK_EXPIRATION = OFF;

Где ‘samepassword’ — пароль пользователя, а test_must_change — имя пользователя, котому меняем пароль.

После выполенеия запроса, галочка смены пароля при первом подключении через Microsoft Management Studio будет отжата.


Общие сведения

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

Если в работающей системе наблюдаются какие-либо симптомы проблем с производительностью, следует проверить, что в системе правильно настроены и регулярно выполняются все рекомендуемые регламентные операции на уровне СУБД.

Выполнение регламентных процедур должно быть автоматизировано. Для автоматизации этих операций рекомендуется использовать встроенное средства MS SQL Server: Maintenance Plan. Существуют так же другие способы автоматизации выполнения этих процедур.

Для MS SQL Server рекомендуется выполнять следующие регламентные операции:
-Обновление статистик
-Очистка процедурного КЭШа
-Дефрагментация индексов
-Реиндексация таблиц базы данных

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

Обновление статистик

MS SQL Server строит план запроса на основании статистической информации о распределении значений в индексах и таблицах. Статистическая информация собирается на основании части (образца) данных и автоматически обновляется при изменении этих данных. Иногда этого оказывается недостаточно для того, что MS SQL Server стабильно строил наиболее оптимальный план выполнения всех запросов.

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

Для обновления статистик по всем таблицам базы данных необходимо выполнить следующий SQL запрос:

exec sp_msforeachtable N’UPDATE STATISTICS ? WITH FULLSCAN’

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

Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем. Рекомендуется обновлять статистики не реже одного раза в день.

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

Очистка процедурного КЭШа

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

Возможна ситуация, при которой MS SQL Server, ориентируясь на устаревшую статистическую информацию, построит неоптимальный план запроса. Этот план будет сохранен в процедурном КЭШе и использован при повторном вызове такого же запроса. Если Вы обновили статистику, но не очистили процедурный кэш, то SQL Server может выбрать старый (неоптимальный) план запроса из КЭШа вместо того, чтобы построить новый (более оптимальный) план.
Таким образом, рекомендуется всегда после обновления статистик очищать содержимое процедурного КЭШа.

Для очистки процедурного КЭШа MS SQL Server необходимо выполнить следующий SQL запрос:

DBCC FREEPROCCACHE

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

Дефрагментация индексов

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

Рекомендуется регулярное выполнение дефрагментации индексов. Для дефрагментации всех индексов всех таблиц базы данных необходимо использовать следующий SQL запрос (предварительно подставив имя базы):

sp_msforeachtable N’DBCC INDEXDEFRAG (, »?»)’

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

sp_msforeachtable N’DBCC INDEXDEFRAG (0, »?»)’

Ноль означает — текущая база.

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

Реиндексация таблиц базы данных

Реиндексация таблиц включает полное перестроение индексов таблиц базы данных, что приводит к существенной оптимизации их работы. Рекомендуется выполнять регулярную переиндексацию таблиц базы данных. Для реиндексации всех таблиц базы данных необходимо выполнить следующий SQL запрос:

sp_msforeachtable N’DBCC DBREINDEX (»?»)’

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

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

Пример скрипта для выполнения всех работ разово

USE dbname
GO
exec sp_msforeachtable N’UPDATE STATISTICS ? WITH FULLSCAN’;
GO
DBCC FREEPROCCACHE;
GO
sp_msforeachtable N’DBCC INDEXDEFRAG (0, »?»)’;
GO
sp_msforeachtable N’DBCC DBREINDEX (»?»)’;
GO

Источник — http://kb.1c.ru/articleView.jsp?id=13
Рекомендую для справки по SQL — http://www.sql.ru/docs/mssql/tsql_ref/


Бывают случаи когда БД работает в серверном варианте, при этом есть доступ на SQL Server, а пароль от пользователя 1С с полными права потерян, в этом случае возможно снять пароль способом который описан ниже.
Итак, поехали.
Платформа 1С при работе на SQL Server хранит список пользователей в двух местах, а именно в таблице v8users и в файле users.usr который бинарно расположен в таблице Params.
Теперь попробуем заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо всего навсего переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio логинимся и создаем запрос к базе данных с содержанием:

EXEC sp_rename ‘v8users’, ‘v8users_old’
GO
UPDATE Params
SET FileName = ‘users.usr_old’
WHERE FileName = ‘users.usr’
GO

После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:

DROP TABLE v8users
GO
EXEC sp_rename ‘v8users_old’, ‘v8users’
GO
UPDATE Params
SET FileName = ‘users.usr’
WHERE FileName = ‘users.usr_old’
GO

После выполнения запроса в списке пользователей появяться все пользователи 1С, останеться только найти нужного и изменить ему пароль.

Для PostgreSQL открываем pgAdminIII и выполняем:

ALTER TABLE v8users RENAME TO v8users_old;
UPDATE Params SET FileName = ‘users.usr_old’ WHERE FileName = ‘users.usr’;

Заходим в конфигуратор без пароля и выполняем в pgAdminIII:

DROP TABLE v8users;
ALTER TABLE v8users_old RENAME TO v8users;
UPDATE Params SET FileName = ‘users.usr’ WHERE FileName = ‘users.usr_old’;


Налоговые декларации, введенные для представления отчетности с 2004 года, на каждом листе содержат уникальный штрихкод листа. В формах регламентированной отчетности, распространяемых фирмой «1С», для отображения штрихкода используется специальный шрифт EanGnivc, который должен быть установлен в операционной системе.
Если этот шрифт не установлен, штрихкоды в налоговых декларациях отображаться не будут.

Скачать шрифт можно, например, http://kcbux.ru/Skachaty/C1-skah/Eang000.rar
Для установки шрифта потребуются права локального администратора.


Кажется проблема, с утечкой памяти и зависанием сервера 1с, решена. Процессы rphost со временем разъедались до огромных размеров, занимали всю память на сервере, что приводило к полному зависанию системы.
Что нужно сделать!
1. В свойствах кластера, в консоли администратора 1с, в разделе «Перезапускать рабочие процессы» Интервал перезапуска — 0. Потому, что это значение перезапуска всех процессов, а не зажравшихся, в итоге получаем тупление всей системы, т.е. если задаем интервал, допустим 60 сек. то каждые 60 секунд система перекидывает все что наработано в процессе на резервный и так по всем процессам.
2. Допустимый объем памяти — 4194303. 4 Гига достаточно, хотя более 3-х гигабайт уже явно процесс подозрительный.
3. Интервал превышения допустимого объема памяти — 60 сек. Если процесс съел больше заданного объема памяти (пунктом выше), сколько дать ему ещё пожить до выключения. При этом процесс должен завершится спустя 60 сек. и перенести все наработанное на новые резервный.
4. Выключенные процессы останавливать через — 60 сек. Как бы ясно. Тут закончили, переходим по дереву в ветку рабочих процессов, создаем 10 процессов, 6 из них рабочие, 4 использовать как резервные. Такая схема даст возможность перекидывать наработку сбойных процессов на резервные, а сбойные будут закрыты, если заберут больше отведенного максимального количества памяти.


Обновление сервера 1с с 8.2 до 8.3 не вызовет никаких проблем, если изначально предусмотреть пару моментов.
Для начала необходимо выгнать пользователей из всех баз 1с. После этого останавливаем службу — Агент сервера 1с:Предприятия 8.2. и для надежности необходимо для этой службы отключить автоматический запуск. Можно через командную строку:
sc config «1C:Enterprise 8.2 Server Agent (x86-64)» start= disabled
sc stop «1C:Enterprise 8.2 Server Agent (x86-64)»

Пробел после «start= » обязателен.
Далее в Program Files создаем папку 1cv8 и копируем туда из 1cv82 директорию srvinfo. Это очень важный момент. Если папку не скопировать, то в новый сервер не подцепится список баз.
Старый сервер 8.2 ни в коем случае нельзя удалять. В целом, его вообще можно не удалять, на всякий случай.

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

После того как сервер 1с 8.3 запущен, необходимо настроить параметры работы сервера 1с. В частности расход памяти и количество баз и пользователей на 1 рабочий процесс сервера.
В консоли администрирования сервера 1с в дереве слева ищем пункт «Локальный кластер», правой клавишей мыши — Свойства. Правим параметр — «Допустимый объем памяти». Я поставил 2097152 Kb, это 2Гб. «Интервал превышения допустимого объема памяти» — 60 секунд. Если процесс превысит допустимый объем, то он будет перезапущен, при этом пользователи все переключатся на другой процесс.
Далее в дереве раскрываем меню «Рабочие серверы» и на нашем сервере нажимаем правой клавишей мыши, выбираем свойства. Здесь необходимо установить объем памяти, который доступен серверу 1с. Это указывается в пункте «Максимальный объем памяти рабочих процессов». Т.к. у сервера всего 24Гб памяти, то я поставил 22Гб для 1с. В байтах это будет 23622320128.
Здесь же указываем количество информационных баз на процесс и количество соединений на процесс. Я указал 1 и 15 соответственно.
После внесения изменений перезапускать сервер не обязательно, все настройки подхватываются налету. Хотя для надежности перезапуск не помешает. Достаточно перезапустить службу сервера 1с.

В отличии от 8.2 в 8.3 не нужно вручную создавать рабочие процессы, они создаются автоматически по мере необходимости


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


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


Называется и находится:
ОбщиеМодули.УправлениеОтчетами

Процедура ОтправитьДокументПоЭлектроннойПочте(Документ, ИмяФайлаВложения = «», ОбъектПечати = Неопределено) Экспорт


http://infostart.ru/public/193674/

Запрос не весь, а только вот эту часть:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

DECLARE @dbid AS smallint;
use [ВАШАБАЗА];
SET @dbid=DB_ID();

/*кто кого*/
SELECT DB_NAME(pr1.dbid) AS ‘DB’
,pr1.spid AS ‘ID жертвы’
,RTRIM(pr1.loginame) AS ‘Login жертвы’
,pr2.spid AS ‘ID виновника’
,RTRIM(pr2.loginame) AS ‘Login виновника’
,pr1.program_name AS ‘программа жертвы’
,pr2.program_name AS ‘программа виновника’
,txt.[text] AS ‘Запрос виновника’
FROM MASTER.dbo.sysprocesses pr1(NOLOCK)
JOIN MASTER.dbo.sysprocesses pr2(NOLOCK)
ON (pr2.spid = pr1.blocked)
OUTER APPLY sys.[dm_exec_sql_text](pr2.[sql_handle]) AS txt
WHERE pr1.blocked 0


  1. Удалите принтер в Панели управления – устройства и принтеры.
  2. Откройте Services.msc и остановите и перезапустите Диспетчер печати.
  3. Откройте Управление печатью (откройте командную строку, введите printmanagement.msc или print management в строке поиска в меню Пуск).
  4. В папке Настраиваемые фильтры выберите Все драйверы, нажмите правой кнопкой на драйвере принтера, который хотите удалить, и нажмите Удалить пакет драйвера.(Если удалить не удается просто смотрим пути нахождения этих файлов и удаляем ручками)
  5. Установите новый драйвер для принтера.

Внешняя печатная форма не сохраняла настроек печати.  Добавил код
ТабДокумент  = Новый ТабличныйДокумент;
 
 // Зададим параметры печатной формы по умолчанию
 ТабДокумент.РазмерКолонтитулаСверху = 10;
 ТабДокумент.РазмерКолонтитулаСнизу  = 10;
 ТабДокумент.АвтоМасштаб             = Истина;
 ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;
 
 ТабДокумент.ПолеСверху=10;
 ТабДокумент.ПолеСлева=10;
 ТабДокумент.ПолеСнизу=10;
 ТабДокумент.ПолеСправа=10;
  
 // Восстановим установленные пользователем параметры печатной формы
 ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_ВнешняяПечатнаяФорма»;

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

По всему наверно достаточно строки

Восстановим установленные пользователем параметры печатной формы
 ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_ВнешняяПечатнаяФорма»;

Если будете копировать код обратите внимание какие у Вас будут кавычки!!!!

Не могу понять почему в других внешних формах этого не требовалось.
Взято с http://myconsult2.ru/?p=414


Все админы делятся на тех, кто еще не делает бэкапы и тех, кто уже делает бекапы. 

Одной из часто встречающихся причин неоптимальной работы системы является неправильное или несвоевременное выполнение регламентных операций на уровне СУБД. Особенно важно выполнять эти регламентные процедуры в средних и крупных информационных системах, которые работают под значительной нагрузкой и обслуживают одновременно большое количество пользователей. Специфика таких систем в том, что обычных действий, выполняемых СУБД автоматически (на основании настроек) оказывает недостаточно для эффективной работы. Под средними и крупными системами подразумевается: активные транзакции от 10 до 100 – это не означает что с БД будут работать 10-100 пользователей, с БД могут работать и 500 пользователей, но их работа будет неактивной.

Если в работающей системе наблюдаются какие-либо симптомы проблем с производительностью, следует проверить, что в системе правильно настроены и регулярно выполняются все рекомендуемые регламентные операции на уровне СУБД.
Выполнение регламентных процедур должно быть автоматизировано. Для автоматизации этих операций рекомендуется использовать встроенное средства MS SQL Server: Maintenance Plan. Существуют так же другие способы автоматизации выполнения этих процедур.
Для MS SQL Server рекомендуется выполнять следующие регламентные операции:

  • Обновление статистик
  • Очистка процедурного КЭШа
  • Дефрагментация индексов
  • Реиндексация таблиц базы данных

Рекомендуется регулярно контролировать своевременность и правильность выполнения данных регламентных процедур.
Обновление статистик.
MS SQL Server строит план запроса на основании статистической информации о распределении значений в индексах и таблицах. Статистическая информация собирается на основании части (образца) данных и автоматически обновляется при изменении этих данных. Иногда этого оказывается недостаточно для того, что MS SQL Server стабильно строил наиболее оптимальный план выполнения всех запросов.
В этом случае возможно проявление проблем с производительностью запросов. При этом в планах запросов наблюдаются характерные признаки неоптимальной работы (неоптимальные операции).
Для того, чтобы гарантировать максимально правильную работу оптимизатора MS SQL Server рекомендуется регулярно обновлять статистики базы данных MS SQL.
Для обновления статистик по всем таблицам базы данных необходимо выполнить следующий SQL запрос: exec sp_msforeachtable N’UPDATE STATISTICS ? WITH FULLSCAN’

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

Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем. Рекомендуется обновлять статистики не реже одного раза в день.

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

Настройка автоматического обновления статистик (MS SQL 2005)
Запустите MS SQL Server Management Studio и подключитесь к серверу СУБД. Откройте папку Management и создайте новый план обслуживания:

1

Создайте субплан (Add Sublan) и назовите его «Обновление статистик». Добавьте в него задачу Update Statistics Task из панели задач:

sql2

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

Настройте параметры задачи. Для этого следует два раза кликнуть на задачу в правом нижнем углу окна. В появившейся форме укажите имя базу данных (или несколько баз данных) для которых будет выполняться обновление статистик. Кроме этого вы можете указать для каких таблиц обновлять статистики (если точно неизвестно, какие таблицы требуется указать, то устанавливайте значение All).
Обновление статистик необходимо проводить с включенной опцией Full Scan.

sql3

Сохраните созданный план. При наступлении указанного в расписании срока обновление статистик будет запущено автоматически.

Очистка процедурного КЭШа
Оптимизатор MS SQL Server кэширует планы запросов для их повторного выполнения. Это делается для того, чтобы экономить время, затрачиваемое на компиляцию запроса в том случае, если такой же запрос уже выполнялся и его план известен.

Возможна ситуация, при которой MS SQL Server, ориентируясь на устаревшую статистическую информацию, построит неоптимальный план запроса. Этот план будет сохранен в процедурном КЭШе и использован при повторном вызове такого же запроса. Если Вы обновили статистику, но не очистили процедурный кэш, то SQL Server может выбрать старый (неоптимальный) план запроса из КЭШа вместо того, чтобы построить новый (более оптимальный) план.
Таким образом, рекомендуется всегда после обновления статистик очищать содержимое процедурного КЭШа.
Для очистки процедурного КЭШа MS SQL Server необходимо выполнить следующий SQL запрос:

DBCC FREEPROCCACHE

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

Настройка очистки процедурного КЭШа (MS SQL 2005)

Поскольку процедурный КЭШ необходимо очищать при каждом обновлении статистики, данную операцию рекомендуется добавить в уже созданный субплан «Обновление статистик». Для этого следует открыть субплан и добавить в его схему задачу Execute T-SQL Statement Task. Затем следует соединить задачу Update Statistics Task стрелочкой с новой задачей.

sql4

В тексте созданной задачи Execute T-SQL Statement Task следует указать запрос «DBCC FREEPROCCACHE»:

sql5

Дефрагментация индексов

При интенсивной работе с таблицами базы данных возникает эффект фрагментации индексов, который может привести к снижению эффективности работы запросов.
Рекомендуется регулярное выполнение дефрагментации индексов. Для дефрагментации всех индексов всех таблиц базы данных необходимо использовать следующий SQL запрос (предварительно подставив имя базы):
sp_msforeachtable N’DBCC INDEXDEFRAG (, »?»)’
Дефрагментация индексов не блокирует таблицы, и не будет мешать работе других пользователей, однако создает дополнительную нагрузку на SQL Server. Оптимальная частота выполнения данной регламентной процедуры должна подбираться в соответствии с нагрузкой на систему и эффектом, получаемым от дефрагментации. Рекомендуется выполнять дефрагментацию индексов не реже одного раза в день.
Возможно выполнение дефрагментации для одной или нескольких таблиц, а не для всех таблиц базы данных.

Настройка дефрагментации индексов (MS SQL 2005)

В ранее созданном плане обслуживания создайте новый субплан с именем «Дефрагментация индексов». Добавьте в него задачу Reorganize Index Task:

sql6

Задайте расписание выполнения для задачи дефрагментации индексов. Рекомендуется выполнять задачу не реже одного раза в неделю, а при высокой изменчивости данных в базе еще чаще – до одного раза в день.
Настройте задачу, указав базу данных (или несколько баз данных) и выбрав необходимые таблицы. Если точно неизвестно, какие таблицы следует указать, то устанавливайте значение All.

sql7

Реиндексация таблиц базы данных

Реиндексация таблиц включает полное перестроение индексов таблиц базы данных, что приводит к существенной оптимизации их работы. Рекомендуется выполнять регулярную переиндексацию таблиц базы данных. Для реиндексации всех таблиц базы данных необходимо выполнить следующий SQL запрос:
sp_msforeachtable N’DBCC DBREINDEX (»?»)’
Реиндексация таблиц блокирует их на все время своей работы, что может существенно сказаться на работе пользователей. В связи с этим реиндексацию рекомендуется выполнять во время минимальной загрузки системы.
После выполнения реиндексации нет необходимости делать дефрагментацию индексов.

Настройка реиндексации таблиц (MS SQL 2005)

В ранее созданном плане обслуживания создайте новый субплан с именем «Дефрагментация индексов». Добавьте в него задачу Rebuild Index Task:

sql8

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

sql9

Необходимо осуществлять регулярный контроль выполнения регламентных процедур на уровне СУБД.

Если заставлять ЛЮБУЮ СУБД выполнять много “ненужной работы”, то как бы вы не “тюнили” настройки, эта СУБД все равно в какой-то момент достигнет порога своих возможностей.

Материал основан на Базе знаний 1С:Предприятие 1С:Предприятие 8. База знаний
Проверено на личном опыте.
Может быть интересно по этой теме:
Проектирование сервера под 1С
Параметры сервера для работы в 1С


В директории с 1с в Program Files или Program Files(х86)/1cv8/conf/intetcfg.xml

В этом файле прописать такой код:

<InternetProxy
protocols=»имяВашегоПрокси:ПортПрокси»
user=»ИМЯПользователя»
password=»Пароль»
bypassOnLocal=»true»
bypassOnAddresses=»127.0.0.1 *. master»
/>


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


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

Или почистите кеш.


Не мог записать изменения для передачи в распределенную базу, обратился в поддержку 1с предложили следующее. У меня решилось просто перезагрузкой сервера приложений и cсервера с SQL. Вообще можно поставить галочку «Блокировка регламентных
заданий включена»
Тоже помогло без перезагрузки.

 

Регламентные операции на уровне СУБД для MS SQL Server

Краткое содержание:

Инструкция по выполнению регламентных операций на уровне СУБД.

Информация применима к клиент-серверному варианту 1С:Предприятия 8 при использовании СУБД MS SQL Server.

Общие сведения

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

Если в работающей системе наблюдаются какие-либо симптомы проблем с производительностью, следует проверить, что в системе правильно настроены и регулярно выполняются все рекомендуемые регламентные операции на уровне СУБД.

Выполнение регламентных процедур должно быть автоматизировано. Для автоматизации этих операций рекомендуется использовать встроенное средства MS SQL Server: Maintenance Plan. Существуют так же другие способы автоматизации выполнения этих процедур. В настоящей статье для каждой регламентной процедуры дан пример ее настройки при помощи Maintenance Plan для MS SQL Server 2005.

Для MS SQL Server рекомендуется выполнять следующие регламентные операции:

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

Обновление статистик

MS SQL Server строит план запроса на основании статистической информации о распределении значений в индексах и таблицах. Статистическая информация собирается на основании части (образца) данных и автоматически обновляется при изменении этих данных. Иногда этого оказывается недостаточно для того, что MS SQL Server стабильно строил наиболее оптимальный план выполнения всех запросов.

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

Для того, чтобы гарантировать максимально правильную работу оптимизатора MS SQL Server рекомендуется регулярно обновлять статистики базы данных MS SQL.

Для обновления статистик по всем таблицам базы данных необходимо выполнить следующий SQL запрос:

exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'

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

Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем. Рекомендуется обновлять статистики не реже одного раза в день.

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

Настройка автоматического обновления статистик (MS SQL 2005)

Запустите MS SQL Server Management Studio и подключитесь к серверу СУБД. Откройте папку Management и создайте новый план обслуживания:

Создайте субплан (Add Subplan) и назовите его «Обновление статистик». Добавьте в него задачу Update Statistics Task из панели задач:

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

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

Обновление статистик необходимо проводить с включенной опцией Full Scan.

Сохраните созданный план. При наступлении указанного в расписании срока обновление статистик будет запущено автоматически.

Очистка процедурного КЭШа

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

Возможна ситуация, при которой MS SQL Server, ориентируясь на устаревшую статистическую информацию, построит неоптимальный план запроса. Этот план будет сохранен в процедурном КЭШе и использован при повторном вызове такого же запроса. Если Вы обновили статистику, но не очистили процедурный кэш, то SQL Server может выбрать старый (неоптимальный) план запроса из КЭШа вместо того, чтобы построить новый (более оптимальный) план.

Таким образом, рекомендуется всегда после обновления статистик очищать содержимое процедурного КЭШа.

Для очистки процедурного КЭШа MS SQL Server необходимо выполнить следующий SQL запрос:

DBCC FREEPROCCACHE

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

Настройка очистки процедурного КЭШа (MS SQL 2005)

Поскольку процедурный КЭШ необходимо очищать при каждом обновлении статистики, данную операцию рекомендуется добавить в уже созданный субплан «Обновление статистик». Для этого следует открыть субплан и добавить в его схему задачу Execute T-SQL Statement Task. Затем следует соединить задачу Update Statistics Task стрелочкой с новой задачей.

В тексте созданной задачи Execute T-SQL Statement Task следует указать запрос «DBCC FREEPROCCACHE»:

Дефрагментация индексов

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

Рекомендуется регулярное выполнение дефрагментации индексов. Для дефрагментации всех индексов всех таблиц базы данных необходимо использовать следующий SQL запрос (предварительно подставив имя базы):

sp_msforeachtable N'DBCC INDEXDEFRAG (<имя базы данных>, ''?'')'

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

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

Настройка дефрагментации индексов (MS SQL 2005)

В ранее созданном плане обслуживания создайте новый субплан с именем «Реиндексация».Добавьте в него задачу Rebuild Index Task:

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

Настройте задачу, указав базу данных (или несколько баз данных) и выбрав необходимые таблицы. Если точно неизвестно, какие таблицы следует указать, то устанавливайте значение All.

Реиндексация таблиц базы данных

Реиндексация таблиц включает полное перестроение индексов таблиц базы данных, что приводит к существенной оптимизации их работы. Рекомендуется выполнять регулярную переиндексацию таблиц базы данных. Для реиндексации всех таблиц базы данных необходимо выполнить следующий SQL запрос:

sp_msforeachtable N'DBCC DBREINDEX (''?'')'

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

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

Настройка реиндексации таблиц (MS SQL 2005)

В ранее созданном плане обслуживания создайте новый субплан с именем «Дефрагментация индексов». Добавьте в него задачу Rebuild Index Task:

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

Настройте задачу, указав базу данных (или несколько баз данных) и выбрав необходимые таблицы. Если точно неизвестно, какие таблицы следует указать, то устанавливайте значение All.

Контроль выполнения регламентных процедур на уровне СУБД

Необходимо осуществлять регулярный контроль выполнения регламентных процедур на уровне СУБД. Ниже приведен пример контроля выполнения плана обслуживания для MS SQL Server 2005.

Откройте созданный вами план обслуживания и выберите из контекстного меню пункт «View History»:

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

Успешно выполненные задачи и задачи, выполненные с ошибками, будут помечены соответствующими иконками. Для задач, выполненных с ошибками, доступна подробная информация об ошибке.

 


Обезьянки-счетоводы WordPress.com подготовили отчет для этого блога за 2015 год.

Вот отрывок:

Лувр ежегодно посещают 8 500 000 человек. За 2015 год этот блог просматривали около 87 000 раз. Если бы это была экспозиция в Лувре, понадобилось бы около 4 дней, чтобы столько людей посмотрело ее.

Щелкните здесь, чтобы просмотреть полный отчет.


Конфигуратор-Справка-Содержание справки-Встроенный язык-Работа с запросами-Синтаксис текста запросов-Ключевые слова и функции

 

Ну не могу я запомнить. Ну кто так пишет справочную систему?  Д


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

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

USE [ИМЯ ВАШЕЙ БАЗЫ НА СЕРВЕРЕ]
GO
EXEC SP_UPDATESTATS;
GO
DBCC FREEPROCCACHE;
GO

Просто вставляем код в NEWQuery  и жмем Execute

 

 

 


В папочке с регламентными отчетами (на подобии Rp15q3.grp находим prlist.txt, в нем и ищем.


Если такое начинает надоедать пользователям, в настройках программы установите режим отложенное проведение. Можно настроить дату с какого числа действует, а также задать регламентрованным заданием режим обработки допроведения документов.


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

Задаем интервал, пользователя и комп.


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

Ещё иногда бывает, что какой-нибудь отчет у пользователя перестаёт открываться или формироваться из-за пользовательских настроек. В меню/отчеты/НАСТРОЙКИ ОТЧЕТОВ/СОХРАНЕННЫЕНАСТРОЙКИ


1. Для выполнения сей не мудрёной процедуры нам потребуется архив из  SQL, и вся папка с конфигурацией семерки.

Создаем новую базу на SQL и восстанавливаем архив.

2. Создаем папку и копируем не заморачиваясь всю папку из базы по пути где располагалась старая база.

3. Добавляем базу прописывая путь в 1с.

4. Запускаем конфигуратор, и в настройках прописываем новую базу на SQL.

5. Если при обновлении конфигурации выдает ошибки SQL, не уверен, но создайте пользователя владельца базы под тем логином и паролем по которому Вы подключаетесь в 1с.


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


Создадим внешнию обработку с формой и процедурой:

Процедура ПриОткрытии()
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

Создадим пользователя и дадим ему права Пользователь, Настройка НСИ, Право запуска внешних отчетов и обработок.

Войдем под ним в 1с предприятие. Далее под пользователем с полными правами в предприятии в окне пользователи, дополнительные сведения, настройки пользователей в папочке Другие настройки поставим маяк на Загружать актуальные курсы валют при запуске системы. Сохраняем запускаем 1с предприятие под этим пользователем. Если требуется настроить прокси настраиваем, должен выдать запрос при первом запуске, Если поставить флажок сохранить настройки, то сохранит, и в следующий раз не спросит, главное не ошибиться с настройками прокси, потому как я так и не понял как их можно исправить, пришлось ещё пользователя заводить. Ну а после такой подготовки создаем батник в блокноте примерно такого содержания:

«C:\Program Files\1cv82\common\1cestart.exe» ENTERPRISE /S имяСервера\имяБазы /N»имяПользователя» /p «Пароль» /Execute «C:\путьКОбработке\Обработка.epf» /DisableStartupMessages

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

Ну собственно в планировщике создаем задачу на запуск этого батника.


Настройки отчета, закладка «Другие настройки», Установить флажок на «Расположение полей группировок» — Отдельно и только в итогах.


В УПП в общих модулях есть «УниверсальныеМеханизмы» А в нем собственно функции ПолучитьНастройку

В СтруктуруНастройка передаем ИмяОбъекта, Пользователя, НаименованиеНастройки,

 

Функция ПолучитьНастройку(СтруктураНастройки) Экспорт

Если ТипЗнч(СтруктураНастройки) <> Тип(«Структура») Тогда

Возврат Ложь;

КонецЕсли;

Запрос = Новый Запрос(
«ВЫБРАТЬ
| СохраненныеНастройки.Пользователь,
| СохраненныеНастройки.ИмяОбъекта,
| СохраненныеНастройки.НаименованиеНастройки КАК НаименованиеНастройки,
| СохраненныеНастройки.СохраненнаяНастройка,
| СохраненныеНастройки.ИспользоватьПриОткрытии,
| СохраненныеНастройки.СохранятьАвтоматически
|ИЗ
| РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
|ГДЕ
| СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
| И СохраненныеНастройки.Пользователь = &Пользователь
| И СохраненныеНастройки.НаименованиеНастройки = &НаименованиеНастройки»);

Если СтруктураНастройки.Свойство(«Пользователь») Тогда

Запрос.УстановитьПараметр(«Пользователь», СтруктураНастройки.Пользователь);

Иначе

Запрос.УстановитьПараметр(«Пользователь», ПараметрыСеанса.ТекущийПользователь);

КонецЕсли;

Запрос.УстановитьПараметр(«ИмяОбъекта», СтруктураНастройки.ИмяОбъекта);
Запрос.УстановитьПараметр(«НаименованиеНастройки», СтруктураНастройки.НаименованиеНастройки);

РезультатЗапроса = Запрос.Выполнить();

Если РезультатЗапроса.Пустой() Тогда

Возврат Ложь;

Иначе

ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();
ВыборкаИзРезультатаЗапроса.Следующий();

СтруктураНастройки.Вставить(«СохраненнаяНастройка», ВыборкаИзРезультатаЗапроса.СохраненнаяНастройка.Получить());
СтруктураНастройки.Вставить(«ИспользоватьПриОткрытии», ВыборкаИзРезультатаЗапроса.ИспользоватьПриОткрытии);
СтруктураНастройки.Вставить(«СохранятьАвтоматически», ВыборкаИзРезультатаЗапроса.СохранятьАвтоматически);

КонецЕсли;

Возврат Истина;

КонецФункции // ПолучитьНастройку()


Взято с инфостарта.

ТабНоменклатура- табличная часть обработки.

&НаСервере
Процедура СохранитьНастройки()
КлючНастроек = «ВнешняяОбработка.ВыгрузкаНоменклатуры»;
Настройки = Новый Соответствие;
Настройки.Вставить(«ТабНоменклатура», Объект.ТабНоменклатура.Выгрузить());
Настройки.Вставить(«ИмяФайла», Объект.ИмяФайла);
Настройки.Вставить(«ПарольФТП», Объект.ПарольФТП);
Настройки.Вставить(«ПользовательФТП», Объект.ПользовательФТП);
Настройки.Вставить(«СерверФТП», Объект.СерверФТП);
Настройки.Вставить(«РабочийКаталог», Объект.РабочийКаталог);
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(«ВнешняяОбработка.ВыгрузкаНоменклатуры», КлючНастроек, Настройки);
КонецПроцедуры

&НаСервере
Процедура ВосстановитьНастройки()
КлючНастроек = «ВнешняяОбработка.ВыгрузкаНоменклатуры»;
ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(«ВнешняяОбработка.ВыгрузкаНоменклатуры», КлючНастроек);
Если ТипЗнч(ЗначениеНастроек) = Тип(«Соответствие») Тогда
ЗначениеИзНастройки = ЗначениеНастроек.Получить(«ТабНоменклатура»);
Объект.ИмяФайла = ЗначениеНастроек.Получить(«ИмяФайла»);
Объект.ПарольФТП = ЗначениеНастроек.Получить(«ПарольФТП»);
Объект.ПользовательФТП = ЗначениеНастроек.Получить(«ПользовательФТП»);
Объект.СерверФТП = ЗначениеНастроек.Получить(«СерверФТП»);
Объект.РабочийКаталог = ЗначениеНастроек.Получить(«РабочийКаталог»);
Если ТипЗнч(ЗначениеИзНастройки) = Тип(«ТаблицаЗначений») Тогда
Объект.ТабНоменклатура.Загрузить(ЗначениеИзНастройки);
КонецЕсли;
КонецЕсли;
КонецПроцедуры


  1. Скопировать папку 1сv77 в programFiles(x86) с машины на которой семерка работает, создать ярлык для запуска.
  2. Необходимо убедиться, что версия установленной платформы 1С 7.7 не ниже релиза 7.70.027
  3. Если при попытке подключения к SQL базе, появляется ошибка «требуется ms sql server 6.5 service pack 5a», необходимо скопировать (с заменой) файл BkEnd.dll в папку C:\Program Files\1Cv77\Bin
  4. Также необходимо заменить файлы odbcbcp.dll sqlsrv32.dll sqlsrv32.rll в папке C:\Windows\system32, если 64-разрядная операционная система, то еще и в C:\Windows\SysWOW64 (ODBC – не копировал, если не заработает нужно пробовать и его.)
  5. В случае, если операционная система Windows Vista или Windows 7, то прежде чем заменить эти файлы, необходимо сделать себя их владельцем и дать на них, своей учетной записи, полные права.
  6. Сначала копируем bkend из папки для загрузки, запускаем 1с, перезагружаем, затем bkend из папки для работы.

Взято с http://aminovadel.com/soft/trebuetsya-ms-sql-server-6-5-service-pack-5a.html там же можно скачать и файлы.

Случилось так что одна база запустилась в лёгкую, а другая запускалась, но при открытии обращалась к файлу rest.dll и вылетала.

Решилось до удивлении просто установкой запуска 1с в режиме совместимости с Windows XP.


Заходим в  сервис /дополнительные формы и обработки/отчеты

Находим код нужного отчета. Собственно всё. Примерчик:

Внешняя=Справочники.ВнешниеОбработки.НайтиПоКоду(«000000022»);
ЭтоОтчет = ?(Внешняя.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет, Истина, Ложь);
Если Внешняя<>Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
ДвоичныеДанные = Внешняя.ХранилищеВнешнейОбработки.Получить();
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные.Записать(ИмяФайла);
Обработка = ВнешниеОтчеты.Создать(ИмяФайла);
Обработка.ПолучитьФорму().Открыть();

 

 


Нужно при открытии ртчета формиировать его с определенным вариантом настроек пример как это можно сделать на основе создании кнопки в форме списка справочника номенклатура

Отбор=Новый Структура(«Номенклатура», ПараметрКоманды); ПараметрыФормы=новый структура(«СформироватьПриОткрытии,Отбор, КлючВарианта»,Истина,Отбор,«ИМЯВАРИАНТА»); ОткрытьФорму(«Отчет.Продажи.Форма»,ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);

Иными словами третьим параметром передаем КлючВарианта — НазваниеНужного Варианта.

 


Здесь все очень подробно описано.

Использование характеристик в СКД

На всякий случай копирайт

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

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

Когда я впервые столкнулся с необходимостью использования этого механизма, в схеме СКД, я очень долго мучился, организовывал вложенные запросы, присоединял к основной выборке и ломал голову над тем, как учесть возможность появления новых видов свойств, которых нет на момент разработки отчета. Весь механизм свойств, будучи простым и логичным с точки зрения пользователя, не поддавался никакой нормальной обработке, пока я не разобрался с закладкой “Характеристики”.

Таблица на закладке очень капризная, либо вы введете всю строку корректно, либо откажетесь от ввода строки совсем, оставить “на потом” не до конца заполненную строку система не даст.

Итак, перейдем к конкретике. Первая колонка: Тип – здесь выбираем тип объекта, к которому привяжутся характеристики, например “СправочникСсылка.Номенклатура”

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

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

В колонке Виды характеристик мы должны выбрать таблицу информационной базы, в которой хранятся нужные виды характеристик, в нашем примере это будет “ПланВидовХарактеристик.СвойстваОбъектов”.

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

Теперь перейдем к источнику значений. Источником значений у нас будет регистр сведений “ЗначенияСвойствОбъектов”, поэтому мы выбираем в колонке Источник значенийтаблица, а в колонкеЗначения характеристик – “РегистрСведений.ЗначенияСвойствОбъектов”. В колонках Объект, Свойство,Значение, выбираем соответствующие поля регистра Объект, Свойство, Значение.


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

Разворачиваем список реквизитов группировки Номенклатура и … не видим там никаких свойств:

Дело в том, что мы находимся в конфигураторе, откуда нет доступа к данным. Как же сделать нужную настройку? Удобнее всего для этого использовать консоль компоновки данных, ту что на диске ИТС, или ту что входит в подсистему “Инструменты разработчика”. Но можно и просто открыть настройку отчета в режиме предприятия.

Итак, откроем ту же настройку, но в режиме предприятия:

Как видите, у нас добавились новые “Реквизиты”, при этом свойство “Бренд” внешне не отличается от обычных реквизитов справочника. А свойство “Вид товара” взято в квадратные скобки, это связано с тем, что представление свойства содержит пробел.

Однако, у нас появилось и свойство “Вид договора” которое привязано к справочнику “Договора” и никакого отношения не имеет к “Номенклатуре“.  Если не использовать в настройке “Вид договора” то все будет работать корректно, если же его выбрать, то в результате оно окажется не заполненным, потому что ни у одного элемента номенклатуры это свойство действительно не заполнено. Но как же отфильтровать лишние свойства, чтобы они не “путались под ногами”?

Для этого нам нужно изменить настройку источника видов, в конструкторе запроса, на закладке “Характеристики”. Помните, я в начале статьи обещал рассказать, для чего нужен тип источника видов запрос? Сейчас как раз такой случай. Меняем тип источника видов на запрос. В колонке виды характеристик нажимаем кнопочку “[…]”  и открывается новое окно конструктора запросов.

Вводим туда такой запрос:


ВЫБРАТЬ
СвойстваОбъектов.Ссылка,
СвойстваОбъектов.Наименование + ” (свойство)” КАК Наименование,
СвойстваОбъектов.ТипЗначения
ИЗ
ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
ГДЕ
СвойстваОбъектов.НазначениеСвойства =ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
И (НЕ СвойстваОбъектов.ПометкаУдаления)
И (НЕ СвойстваОбъектов.Категория)


В колонках Поле ключа, Поле имени и Поле типа значения, выберем соответствующие поля выборки:Ссылка, Наименование и ТипЗначения. Получится так:

Теперь, когда мы перейдем к настройке отчета, в списке реквизитов Номенклатуры картинка изменится:

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

На этом собственно и все, но многих может смутить невозможность настройки в конфигураторе. На самом деле ничего страшного нет. Достаточно сохранить настройку (или всю схему) в файл, а в конфигураторе восстановить.

Непонятные ему реквизиты конфигуратор отобразит красными крестами, как недоступные:

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

Основная страница статьи: http://infostart.ru/public/89842/


Есть отчет на скд Дебиторская задолженность. Нужно установить в нем определенные настройки, формировать и отправлять сотрудникам по почте . Причем каждому свой. Задача стояла просто в смене параметра Подразделение.

В Отчете формируем форму, в форме в модуле при открытии прописываем код:

Процедура ПриОткрытии()
массив=новый Массив;
массив.Добавить( «000000036»);
Для Каждого ЭлементМассива из Массив Цикл
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Подразделения.Наименование,
| Подразделения.Код
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.Родитель В ИЕРАРХИИ(&Родитель)»;
Родитель= Справочники.Подразделения.НайтиПоКоду(ЭлементМассива);
Запрос.УстановитьПараметр(«Родитель», Родитель);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КодПодразделения=ВыборкаДетальныеЗаписи.Код;
подразделение=Справочники.Подразделения.НайтиПоКоду(КодПодразделения);
Если КодПодразделения=»000000072″ Тогда
ПочтовыйАдрес=»»;
ИначеЕсли КодПодразделения=»000000073″ Тогда
ПочтовыйАдрес=»»;
ИначеЕсли КодПодразделения=»000000074″ Тогда
ПочтовыйАдрес=»»;
иначе
продолжить;
КонецЕсли;
текПарам = КомпоновщикНастроек.Настройки.Отбор.Элементы.Получить(4);
текПарам.ПравоеЗначение= подразделение;
СкомпоноватьРезультат(ЭлементыФормы.Результат);
путь=»c:\1\»;
имяФайла= Строка(ВыборкаДетальныеЗаписи.Наименование)+».xls»;
ТекстПисьма= «ДебиторскаяЗадолженность по срокам»+» на «+ ТекущаяДата();
ПолноеИмяФайла= путь+имяФайла;
ТекстПисьма1= Строка(ВыборкаДетальныеЗаписи.Наименование);
ЭлементыФормы.Результат.Записать(ПолноеИмяФайла,ТипФайлаТабличногоДокумента.xls);
// ОтправкаУведомленийМенеджерам(ТекстПисьма, ПолноеИмяФайла,ПочтовыйАдрес);
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Чтобы задать отбор  ТекПарам= КомпоновщикНастроек.Настройки.Отбор.Элементы.Получить(4);

4-индекс, т.е. если в отладчике получить этот объект то можно увидеть какой индекс нас интересует, а получив его можем присвоить требуемое значение текПарам.ПравоеЗначение= подразделение;

Ну и собственно сама отправка:

Процедура ОтправкаУведомленийМенеджерам(ТекстПисьма, ПолноеИмяФайла,ПочтовыйАдрес)
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП.АдресСервераSMTP = »      «;
// ИПП.ПарольSMTP = «»;
//ИПП.ПользовательSMTP = «»;
ИПП.ПортSMTP = 25;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Кодировка = «UTF-8»;
Сообщение.Получатели.Добавить(ПочтовыйАдрес);
Сообщение.Отправитель.Адрес = » test@test.ru»;
Сообщение.Тема = ТекстПисьма;
Попытка
Сообщение.Вложения.Добавить(ПолноеИмяФайла,»Отчет»);
Исключение
ТекстПисьма = ТекстПисьма + «Не удалось добавить вложение! » + ОписаниеОшибки() + Символы.ПС;
КонецПопытки;
Сообщение.Тексты.Добавить(ТекстПисьма);
Почта = Новый ИнтернетПочта;
Почта.Подключиться(ИПП);
Почта.Послать(Сообщение);
Почта.Отключиться();
КонецПроцедуры

Файл

 


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

Создаем ярлык для 1cv8.exe и в свойствах ярлыка объект дописываем :

«C:\Program Files\1cv82\8.2.15.289\bin\1cv8.exe» /IBName «Управление торговлей (демо)» /N «Федоров (администратор)»  /p «123456» /Execute «W:\обработки\АвтозапускОбмена.epf»
где /IBName — Имя базы в списке при запуске
/N Имя пользователя
/P его пароль
/Execute путь и имя файла запускаемой обработки

Вместо параметра /IBName, лучше написать /F и указать путь к базе типа «C:\ПапкаСБазой»

при выполнении такого ярлыка запустится 1с и запустит выбранную обработку

НО
поскольку это делается по расписанию, нам скорее всего захочется чтобы обработка сделала свое грязное дело и не просто закрылась, а выключила 1с.
Это тем более не проблема.

Что мы делаем:
при запуске обработки естественно включится процедура
«ПриОткрытии» основной формы обработки
Вот в конец этой процедуры и надо просто добавить строку
ЗавершитьРаботуСистемы(Ложь);

А посклольку обработка внешняя — ее можно редактировать в конфигураторе без проблем

остается просто внести наш созданный в самом начале ярлык в стандартный шедулер виндовс, я так думаю это точно умеют все (кто не знает где это -пуск-панель управления-/если вид по категориям, то переключиться к классическому виду кнопкой переключение к классическому виду /-назначение задания)

 

Взято с Инфостарта


У документа имеется строковый реквизит Автор. Нужно чтобы при создании нового , подставлялось имя по которому пользователь вошел в систему. Функция ИмяПользователя()

Никак не получалось с проверкой ЭтоНовый(), нужно так

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.Номер=»» тогда
Объект.Автор= ИмяПользователя();
Объект.Списан=Ложь;
КонецЕсли;
КонецПроцедуры

 


 

Оказывается можно так:

Если Параметры.Ключ.Пустая() Тогда

Сообщить(«Создается новый объект»);
КонецЕсли;

А я долго мучился с ЭтоНовый().


Спросили, что делал? Что-то я растерялся.  А был ли мальчик?


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

1. Добавляем внешний отчет, открываем СКД. Создаем запрос к двум таблицам Справочник Номенклатура и Регистр сведений ШтрихКоды. Выбираем поля Наименование, Код и Штрихкод. Соединение выбираем по таблице номенклатура. Ну а теперь самое смешное, после сохранения запроса, переходим к закладке ВычисляемыеПоля и добавляем поле, Даем ему имя к примеру Штрих, а в выражение Массив(Штрихкод), где штрихкод — имя поля выборки, по которому нам надобно получить строки через запятую. Идем на закладку ресурсы, и добавляем это поле в качестве ресурса а выражении пишем СоединитьСтроки(Массив(ШтрихКод),»,»,»»). Вот собственно и вся задача. Если сочетание наименование и код однозначно добавим в ресурс ещё и код с функцией Максимум.

В настройках выбираем требуемые поля, и выбираем группировку по номенклатуре.                                              Пример

Да огромное спасибо http://softmaker.kz/files/otchety-1s/primer-ispolzovaniya-funkcij-skd-massiv-array-i-soedinitstroki-joinstrings-v-otchyote-1s-8.html

 

 

 


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

&НаСервереБезКонтекста
Процедура ВыгрузитьСервер(Ссылка)
ДокументХМЛ=Новый ЗаписьXML ;
ДокументХМЛ.ОткрытьФайл(«c:\1c\doc.xml»);
ДокументХМЛ.ЗаписатьОбъявлениеXML();
ДокументХМЛ.ЗаписатьНачалоЭлемента(«Root»);
ТипXML=XMLТипЗнч(Ссылка);
ДокументХМЛ.ЗаписатьНачалоЭлемента(ТипXML.ИмяТипа, ТипXML.URIПространстваИмен);
Для каждого Реквизит Из Ссылка.Метаданные().Реквизиты Цикл
ЗаписатьЭлементХМЛ(ДокументХМЛ, Ссылка[Реквизит.Имя],Реквизит.Имя);
КонецЦикла;
Для каждого ТабличнаяЧасть Из Ссылка.Метаданные().ТабличныеЧасти Цикл
ДокументХМЛ.ЗаписатьНачалоЭлемента(«ТабличнаяЧасть»);
ДокументХМЛ.ЗаписатьАтрибут(«Имя»,ТабличнаяЧасть.Имя);
Для каждого Строка из Ссылка[ТабличнаяЧасть.Имя] Цикл
ДокументХМЛ.ЗаписатьНачалоЭлемента(«СтрокаТабличнойЧасти»);
Для каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
ЗаписатьЭлементХМЛ(ДокументХМЛ, Строка[Реквизит.Имя],Реквизит.Имя);
КонецЦикла;
ДокументХМЛ.ЗаписатьКонецЭлемента();
КонецЦикла;
ДокументХМЛ.ЗаписатьКонецЭлемента();
КонецЦикла;
ДокументХМЛ.ЗаписатьКонецЭлемента();
ДокументХМЛ.ЗаписатьКонецЭлемента();
ДокументХМЛ.Закрыть();
КонецПроцедуры // Выгрузить()
&НаСервереБезКонтекста
Процедура ЗаписатьЭлементХМЛ(Документ, Значение, ИмяРеквизита)
ТипXML=XMLТипЗнч(Значение);
Если ТипXML=Неопределено тогда
Сообщить(«Значение не определено «+ Значение);
иначе
Документ.ЗаписатьНачалоЭлемента(ТипXML.ИмяТипа, ТипXML.URIПространстваИмен);
Документ.ЗаписатьАтрибут («Имя», ИмяРеквизита);
Документ.ЗаписатьТекст(XMLСтрока(Значение));
Документ.ЗаписатьКонецЭлемента();
КонецЕсли;
КонецПроцедуры


В управлении торговлей 11 в справочнике Контрагенты нет ни групп, ни кодов. Привожу код, если вдруг понадобится с группами выгружать. При выгрузки все передаем в Атрибуты

&НаСервереБезКонтекста
Процедура ВыгрузкаНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Контрагенты.ЭтоГруппа,
| Контрагенты.Наименование,
| Контрагенты.Код,
| Контрагенты.Родитель
|ИЗ
| Справочник.Контрагенты КАК Контрагенты»;

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Файл=Новый ЗаписьXML;
Файл.ОткрытьФайл(«c:\1c\upload.xml»);
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента(«Root»);
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
файл.ЗаписатьНачалоЭлемента(«Контрагент»);
Файл.ЗаписатьАтрибут(«Код», ВыборкаДетальныеЗаписи.Код);
Файл.ЗаписатьАтрибут(«ЭтоГруппа»,?( ВыборкаДетальныеЗаписи.ЭтоГруппа,»1″,»0″));
Файл.ЗаписатьАтрибут(«Наименование», ВыборкаДетальныеЗаписи.Наименование);
если ВыборкаДетальныеЗаписи.Родитель= Неопределено тогда
продолжить
иначе
Файл.ЗаписатьАтрибут(«Родитель»,Строка(ВыборкаДетальныеЗаписи.Родитель));
КонецЕсли;
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();

КонецПроцедуры // ()

При загрузке

&НаСервереБезКонтекста
Процедура ЗагрузитьНаСервере()

Файл=Новый ЧтениеXML;
Файл.ОткрытьФайл(«c:\1c\upload.xml»);
Пока Файл.Прочитать() Цикл
Если Файл.ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда
Если Файл.Имя<>»Контрагент» Тогда
Продолжить;
КонецЕсли;
Пока Файл.ПрочитатьАтрибут() Цикл
Если Файл.Имя=»Код» Тогда
код=Файл.Значение;
ИначеЕсли Файл.Имя=»ЭтоГруппа» тогда
ЭтоГруппа=?(Файл.Значение=»0″,Ложь,Истина);
ИначеЕсли Файл.Имя=»Наименование» тогда
Наименование=Файл.Значение;
ИначеЕсли Файл.Имя=»Родитель» тогда
Родитель=Файл.Значение;
КонецЕсли;
КонецЦикла;
Если НЕ ЗначениеЗаполнено(Справочники.Контрагенты.НайтиПоНаименованию(Наименование)) Тогда
Если ЭтоГруппа Тогда
продолжить
// Контрагент=Справочники.Контрагенты.СоздатьГруппу();
Иначе
Контрагент=Справочники.Контрагенты.СоздатьЭлемент();
КонецЕсли;
Контрагент.Наименование=Наименование;
//Если не ЭтоГруппа Тогда
//Контрагент.Родитель=Родитель;
// КонецЕсли;
Контрагент.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Файл.Закрыть();
КонецПроцедуры // ЗагрузитьНаСервере()


Обработка.

&НаКлиенте
Процедура Выгрузка(Команда)
ВыгрузкаНаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВыгрузкаНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Контрагенты.ЭтоГруппа,
| Контрагенты.Наименование,
| Контрагенты.Код
|ИЗ
| Справочник.Контрагенты КАК Контрагенты»;

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Файл=Новый ЗаписьXML;
Файл.ОткрытьФайл(«c:\1c\upload.xml»);
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента(«Root»);
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
файл.ЗаписатьНачалоЭлемента(«Контрагент»);
Файл.ЗаписатьАтрибут(«Код», ВыборкаДетальныеЗаписи.Код);
Файл.ЗаписатьАтрибут(«ЭтоГруппа»,?( ВыборкаДетальныеЗаписи.ЭтоГруппа,»1″,»0″));
Файл.ЗаписатьТекст(ВыборкаДетальныеЗаписи.Наименование);
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();

КонецПроцедуры // ()

Обработка. В демо бухгалтерии 3.0 получаем:

Получаем:

 

 


А выведите нам пожалуйста код, номенклатуру и штрихкода, причем последние через запятую. И еще чтоб можно было выбирать по группам номенклатуры. Да я смог сделать только так, но все можно было получит и в СКД вот пример:http://softmaker.kz/files/otchety-1s/primer-ispolzovaniya-funkcij-skd-massiv-array-i-soedinitstroki-joinstrings-v-otchyote-1s-8.html

Ну если кто знает как это сделать только в СКД подскажите. Теперь и я знаю.

Мне удалось тока так:

Создал ВнешниюОбработку, добавил форму. В форме создал реквизит ТЗ — собственно таблица значений и в ней три реквизита: Код, Наименование, Штрикод. Ну и команду Сформировать и реквизит  с типом СправочникСсылка.Номенклатура. Переносим все на форму. И создаем обработчик команды. Собственно вся идея сначала получаем запросом всю номенклатуру, группируем её, чтоб исключить повторяющиеся, А потом перебираем значения результата запроса и подставляем в ТЗ, а когда дело доходит до колонки штрих кодов создаем запрос региструСведений.Штрихкодов и устанавливаем параметр наименование номенклатуры, получаем все штрихкоды этой номенклатуры, перебираем все добавляя  последовательно в переменную через запятую, и после обхода выводим результат в колонку, и всё сначала.

&НаКлиенте
Процедура Сформировать(Команда)
СоздатьНаСервере();
КонецПроцедуры
&НаСервере
Процедура СоздатьНаСервере()
тз.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Товар.Код,
| Товар.Наименование
|ИЗ
| Справочник.Номенклатура КАК Товар
|ГДЕ
| Товар.ЭтоГруппа = ЛОЖЬ
| И Товар.Родитель В ИЕРАРХИИ(&Родитель)
|
|СГРУППИРОВАТЬ ПО
| Товар.Код,
| Товар.Наименование»;
запрос.УстановитьПараметр(«Родитель»,Группа);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Код= ВыборкаДетальныеЗаписи.Код;
НоваяСтрока.Наименование=ВыборкаДетальныеЗаписи.Наименование;
Запрос1=Новый Запрос;
Запрос1.Текст=
«ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Штрихкод
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура.Наименование = &Наименование»;

запрос1.УстановитьПараметр(«Наименование»,ВыборкаДетальныеЗаписи.Наименование);
РезультатЗапроса1 = Запрос1.Выполнить();
ВыборкаДетальныеЗаписи1 = РезультатЗапроса1.Выбрать();
ШтрихКод= «»;
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
штрихКод= ШтрихКод+Строка(ВыборкаДетальныеЗаписи1.ШтрихКод+»,»);
КонецЦикла;
НоваяСтрока.ШтрихКод=ШтрихКод;
КонецЦикла
КонецПроцедуры

Самое прикольное это вывод результата на форму. Запрос возвращает ТаблицуЗначений, а в тонком клиенте ТаблицаЗначений не работает. Поэтому директива НаСервере. Пытался найти в решение в интернете и гуглил и яндил. Чушня какая-то только. Наверно это настолько тривиальная задача, или на практике боссам  по продажам никогда не требовалась. А может подвох в том что нужно решить именно только в СКД.

копирайт

Задача: Нужно все номера реализаций по одному товару вставить в одну ячейку.

Что-то вроде: номенклатура | кол-во | 001, 002, и т.д. |

Будем использовать запрос к регистру накопления «РеализацияТМЗ».

ВЫБРАТЬ
	РеализацияТМЗ.Регистратор.Номер,
	РеализацияТМЗ.Номенклатура,
	РеализацияТМЗ.Регистратор,
	РеализацияТМЗ.КоличествоОборот
ИЗ
	РегистрНакопления.РеализацияТМЗ.Обороты
	(, , Регистратор, ) КАК РеализацияТМЗ

Регистру накопления «РеализацияТМЗ» существует как в конфигурации Бухгалтерия, так и в конфигурации Управление торговым предприятием (УТП). Узнайте, как в конфигурации УТП установить свойство «Услуга» в элементе справочника «Номенклатура». Поэтому, после скачивания, для проверки его работоспособности вы можете запускать этот отчёт в обеих конфигурациях.

Реализация поставленной задачи с применением функций СКД Массив и СоединитьСтроки

  1. Создадим новый набор данных.
  2. Вставим в него, вышеуказанный запрос.
  3. Перейдём на закладку «Вычисляемые поля» и добавим новую запись.
  4. В поле «Путь к данным» напишем МассивНомеров.
  5. В поле «Выражение» напишем Массив(РегистраторНомер).

    Создание вычисляемого поля с функцией СКД Массив (Array)

  6. Перейдём на закладку «Ресурсы» и добавим новые записи из раздела «Доступные поля», используя кнопку «>».
  7. Добавим МассивНомеров.
  8. В поле «Выражение» напишем СоединитьСтроки(Массив(РегистраторНомер),»,»,»»).
  9. В поле «Рассчитывать по…» выберем Номенклатура.
  10. Добавим КоличествоОборот.
  11. В поле «Выражение» напишем Сумма(КоличествоОборот).
  12. В поле «Рассчитывать по…» выберем Номенклатура.

    Создание ресурсов поля с функцией СКД СоединитьСтроки (JoinStrings)

  13. Перейдём на закладку «Настройки» и добавим новую группировку номенклатура.
  14. Зесь же на закладке «Выбранные поля» добавим новые поля из раздела «Доступные поля», используя кнопку «>». Выберем три поля «Номенклатура», «МассивНомеров», «КоличествоОборот».

    Настройка группировок и полей отчёта СКД

  15. И наконец, перейдём на закладку «Другие настройки» и изменим две строки «Расположение общих итогов по горизонтали» и «Расположение общих итогов по вертикали».
  16. В поле «Значение» установим значение «Нет». Это необходимо для запрета вывода итогов.

    Настройка вывода итогов СКД

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

Описание функции СоединитьСтроки (JoinStrings)

СоединитьСтроки (JoinStrings)

Используется для объединения строк в одну строку.

Синтаксис:

СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок)

Параметры:

  1. Значение — выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы;
  2. РазделительЭлементов — строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
  3. РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию «;».

Вопросы на собеседовании ООО «Вайлдберриз». О я даже что помнил,  но сразу влет не воспроизвел, а может от меня чего другого хотели….Чьёрт его знает, я такое здесь уже писал, но здесь более полно.

Последовательность запуска событий при записи: 

1)    Модуль формы  ПередЗаписью(Отказ, ПараметрыЗаписи)  

2)  Модуль формы  ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

3)  Модуль объекта  ОбработкаПроверкиЗаполнения (Отказ, ПроверяемыеРеквизиты)

4)  Модуль формы ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Начало транзакции

5)   Модуль объекта ПередЗаписью(Отказ)

Запись

6)  Модуль объекта ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)

Или

ПриУстановкеНовогоКода(СтандартнаяОбработка,Префикс)

7)  Модуль объекта ПриЗаписи(Отказ)

8)      Модуль формы  ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Завершение  транзакции

9)      Модуль формы ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

10)      Модуль формы ПослеЗаписи(ПараметрыЗаписи) 


На сервере создаем  WEB-сервис ОбменДанными

обменДанными1

и на закладке прочие

обменДанными

Добавляем операции и параметр

операции1

операции2

 

Прописываем модуль.

Функция ВыполнитьОбмен(Данные)
Соответствие = Десериализовать(Данные);
Для Каждого Дан из Соответствие Цикл
Если Дан.Ключ = Тип(«СправочникСсылка.Номенклатура») Тогда
ЗагрузитьСправочники(Дан.Значение)
ИначеЕсли Дан.Ключ = Тип(«ДокументСсылка.ПоступлениеТоваровИУслуг») Тогда
ЗагрузитьДокумент(Дан.Значение)
КонецЕсли;
КонецЦикла;

Возврат СоздатьОтветКлиенту();
КонецФункции

#Область Сериализаци
Функция Десериализовать(XMLСтруктураСериализованногоОбъекта)
ЧтениеXMLДанных = Новый ЧтениеXML;
ЧтениеXMLДанных.УстановитьСтроку(XMLСтруктураСериализованногоОбъекта);
ТЗ = СериализаторXDTO.ПрочитатьXML(ЧтениеXMLДанных);
ЧтениеXMLДанных.Закрыть();
Возврат ТЗ;
КонецФункции
Функция Сериализовать(ОбъектСериализации)
ДеревоВОбъектеXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации);
МойXML = Новый ЗаписьXML;
МойXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(МойXML, ДеревоВОбъектеXDTO);
Возврат МойXML.Закрыть();
КонецФункции
#КонецОбласти

Функция СоздатьОтветКлиенту()
Соответствие = Новый Соответствие;
Соответствие.Вставить(ТипЗнч(Справочники.Номенклатура.ПустаяСсылка()),СформироватьСправочники());
Соответствие.Вставить(ТипЗнч(Документы.ПоступлениеТоваровИУслуг.ПустаяСсылка()),СформироватьДокументы());
Возврат Сериализовать(Соответствие)
КонецФункции

Функция СформироватьСправочники()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Номенклатура.Ссылка,
| Номенклатура.ПометкаУдаления,
| Номенклатура.Родитель,
| Номенклатура.ЭтоГруппа,
| Номенклатура.Код,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура»;

Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

Функция СформироватьДокументы()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ПоступлениеТоваровИУслуг.Ссылка,
| ПоступлениеТоваровИУслуг.ПометкаУдаления,
| ПоступлениеТоваровИУслуг.Номер,
| ПоступлениеТоваровИУслуг.Дата,
| ПоступлениеТоваровИУслуг.Проведен
|ИЗ
| Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг»;
Массив = Новый Массив;

Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Док Из Результат Цикл
Структура = Новый Структура();
СтруктураРек = Новый Структура;
Для Каждого Кол Из Результат.Колонки Цикл
СтруктураРек.Вставить(Кол.Имя,Док[Кол.Имя]);
КонецЦикла;

Структура.Вставить(«Реквизиты»,СтруктураРек);
Структура.Вставить(«Товары»,Док.Ссылка.Товары.Выгрузить());
Массив.Добавить(Структура);
КонецЦикла;

Возврат Массив;

КонецФункции

Процедура ЗагрузитьСправочники(ТЗ)
Для Каждого Спр Из ТЗ Цикл
Если ЗначениеЗаполнено(Спр.Ссылка.Код) Тогда
НовСпр = Спр.Ссылка.ПолучитьОбъект();
Иначе
НовСпр = Справочники.Номенклатура.СоздатьЭлемент();
НовСпр.УстановитьСсылкуНового(Спр.Ссылка);
КонецЕсли;
НовСпр.Код = Спр.Код;
НовСпр.Наименование = Спр.Наименование;
НовСпр.Записать();
КонецЦикла;
КонецПроцедуры

Процедура ЗагрузитьДокумент(Массив)
Для Каждого Док Из Массив Цикл
Если ЗначениеЗаполнено(Док.Реквизиты.Ссылка.Номер) Тогда
НовДок = Док.Реквизиты.Ссылка.ПолучитьОбъект();
Иначе
НовДок = Документы.ПоступлениеТоваровИУслуг.СоздатьДокумент();
НовДок.УстановитьСсылкуНового(Док.Реквизиты.Ссылка);
КонецЕсли;
НовДок.Номер = Док.Реквизиты.Номер;
НовДок.Дата = Док.Реквизиты.Дата;
НовДок.Комментарий = ТекущаяДата();
НовДок.Товары.Загрузить(Док.Товары);

НовДок.Записать();
КонецЦикла;
КонецПроцедуры

 

Публикуем web-сервис, получаем ws-ссылку и прописываем её на клиенте.

 

На клиенте создаем общую команду команду ВыполнитьОбменДанными:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ВыполнитьОбменДанными()
КонецПроцедуры
&НаСервере
Функция ВыполнитьОбменДанными()
Соединение = WSСсылки.ОбменДанными.СоздатьWSПрокси(«ОбменДанными»,»ОбменДанными»,»ОбменДаннымиSoap»);
Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить(«ВыполнитьОбмен»);
СтрокаДанных = Соединение.ФабрикаXDTO.Создать(Операция.Параметры.Получить(«Данные»).Тип,СформироватьДанныеДляСервера());
Ответ = Десериализовать(Соединение.ВыполнитьОбмен(СтрокаДанных));
Для Каждого Дан из Ответ Цикл
Если Дан.Ключ = Тип(«СправочникСсылка.Номенклатура») Тогда
ЗагрузитьСправочники(Дан.Значение)
ИначеЕсли Дан.Ключ = Тип(«ДокументСсылка.ПоступлениеТоваровИУслуг») Тогда
ЗагрузитьДокумент(Дан.Значение)
КонецЕсли;
КонецЦикла;
КонецФункции

Процедура ЗагрузитьСправочники(ТЗ)
Для Каждого Спр Из ТЗ Цикл
Если ЗначениеЗаполнено(Спр.Ссылка.Код) Тогда
НовСпр = Спр.Ссылка.ПолучитьОбъект();
Иначе
НовСпр = Справочники.Номенклатура.СоздатьЭлемент();
НовСпр.УстановитьСсылкуНового(Спр.Ссылка);
КонецЕсли;
НовСпр.Код = Спр.Код;
НовСпр.Наименование = Спр.Наименование;
НовСпр.Записать();
КонецЦикла;
КонецПроцедуры

Процедура ЗагрузитьДокумент(Массив)
Для Каждого Док Из Массив Цикл
Если ЗначениеЗаполнено(Док.Реквизиты.Ссылка.Номер) Тогда
НовДок = Док.Реквизиты.Ссылка.ПолучитьОбъект();
Иначе
НовДок = Документы.ПоступлениеТоваровИУслуг.СоздатьДокумент();
НовДок.УстановитьСсылкуНового(Док.Реквизиты.Ссылка);
КонецЕсли;
НовДок.Номер = Док.Реквизиты.Номер;
НовДок.Дата = Док.Реквизиты.Дата;

НовДок.Товары.Загрузить(Док.Товары);

НовДок.Записать();
КонецЦикла;
КонецПроцедуры

&НаСервере
Функция СформироватьДанныеДляСервера()

Соответствие = Новый Соответствие;
Спр = Справочники.Номенклатура.Выбрать();
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Код»);
ТЗ.Колонки.Добавить(«Ссылка»);
ТЗ.Колонки.Добавить(«Наименование»);
Пока Спр.Следующий() Цикл
НовСтр = ТЗ.Добавить();
НовСтр.Код = Спр.Код;
НовСтр.Ссылка = Спр.Ссылка;
НовСтр.Наименование = Спр.Наименование;
КонецЦикла;
Соответствие.Вставить(ТипЗнч(Справочники.Номенклатура.ПустаяСсылка()),ТЗ);

Док = Документы.ПоступлениеТоваровИУслуг.Выбрать();
Массив = Новый Массив;
Пока Док.Следующий() Цикл
Структура = Новый Структура();
СтруктураРек = Новый Структура;
СтруктураРек.Вставить(«Номер»,Док.Номер);
СтруктураРек.Вставить(«Дата»,Док.Дата);
СтруктураРек.Вставить(«Ссылка»,Док.Ссылка);
Структура.Вставить(«Реквизиты»,СтруктураРек);
Структура.Вставить(«Товары»,Док.Ссылка.Товары.Выгрузить());
Массив.Добавить(Структура);
КонецЦикла;
Соответствие.Вставить(ТипЗнч(Документы.ПоступлениеТоваровИУслуг.ПустаяСсылка()),Массив);
Возврат Сериализовать(Соответствие);
КонецФункции

#Область Сериализаци
&НаСервере
Функция Десериализовать(XMLСтруктураСериализованногоОбъекта)
ЧтениеXMLДанных = Новый ЧтениеXML;
ЧтениеXMLДанных.УстановитьСтроку(XMLСтруктураСериализованногоОбъекта);
ТЗ = СериализаторXDTO.ПрочитатьXML(ЧтениеXMLДанных);
ЧтениеXMLДанных.Закрыть();
Возврат ТЗ;
КонецФункции
&НаСервере
Функция Сериализовать(ОбъектСериализации)
ДеревоВОбъектеXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации);
МойXML = Новый ЗаписьXML;
МойXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(МойXML, ДеревоВОбъектеXDTO);
Возврат МойXML.Закрыть();
КонецФункции
#КонецОбласти

 

Взято с курсов Насипова.