Имя: Пароль:
1C
1С v8
Недопустимое значение параметра (параметр номер '1')
,
0 Лис Локи
 
02.02.12
07:46
Здравствуйте. При настройке 1С "Предприятие" возникла следующая проблема: при попытке "Обмена данными" (Обмен данными\Выгрузка счетов на оплату\Загрузка взаиморасчетов с клиентам) появляется вот такое сообщение:
Недопустимое значение параметра (параметр номер '1')


Процедура СформироватьТекстЗапросаИПолучитьЗагруженныеОбороты()
                       
   СКД = ПолучитьИзВременногоХранилища(АдресСКД);    // Отладчик ругается на эту строку.
   УстановитьПоляОтбораПоСКД(СКД);
   
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
   КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
   КомпоновщикНастроек.Восстановить();
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД,
          КомпоновщикНастроек.ПолучитьНастройки(), , ,
          Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
   
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   ТаблицаРезультатаКомпановки = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   
   ПостроительЗапроса = Новый ПостроительЗапроса();
   Источник = Новый ОписаниеИсточникаДанных(ТаблицаРезультатаКомпановки);
   ПостроительЗапроса.ИсточникДанных = Источник;
   ПостроительЗапроса.Выполнить();
   
   РезультатЗапроса = ПостроительЗапроса.Результат.Выбрать();
   
   Если НЕ СохранятьИзмененияПользователя Тогда
       Объект.Реализация.Очистить();
       Объект.Оплата.Очистить();
   Иначе
       мТаблицаОплат = Объект.Оплата.Выгрузить();
       Объект.Оплата.Очистить();
   КонецЕсли;
   
   Пока РезультатЗапроса.Следующий() Цикл
       
       Если НЕ СохранятьИзмененияПользователя Тогда
           Если РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Приход Тогда
               НоваяСтрока = Объект.Реализация.Добавить();
           ИначеЕсли РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Расход Тогда
               НоваяСтрока = Объект.Оплата.Добавить();
           КонецЕсли;
           ЗаполнитьЗначенияСвойств(НоваяСтрока, РезультатЗапроса);
           ДобавитьСвязанныеДокументы(РезультатЗапроса, РезультатЗапроса.ВидыДвиженийПриходРасход);
       Иначе // Скорректируем ТЧ Оплаты, т.к. в реализации было удаление строки
           Если РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Расход Тогда
               НоваяСтрока = Объект.Оплата.Добавить();
               ЗаполнитьЗначенияСвойств(НоваяСтрока, РезультатЗапроса);
               
               МассивСтрок = мТаблицаОплат.НайтиСтроки(Новый Структура("ИдентификаторДокумента, ИдентификаторКорДокумента",РезультатЗапроса.ИдентификаторДокумента,РезультатЗапроса.ИдентификаторКорДокумента));
               Если НЕ МассивСтрок.Количество() = 0 Тогда
                   НоваяСтрока.Счет = МассивСтрок[0].Счет;
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
       
   КонецЦикла;
   
   Если НЕ мВремТаблицаРеализации.Количество() = 0 Тогда
       Для Каждого СтрокаРеализации ИЗ Объект.Реализация Цикл
           СтрокаТЗ = мВремТаблицаРеализации.Найти(СтрокаРеализации.ИдентификаторДокумента, "ИдентификаторДокумента");
           Если НЕ СтрокаТЗ = Неопределено Тогда
               СтрокаРеализации.Счет = СтрокаТЗ.Счет;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   
   Если НЕ мВремТаблицаОплаты.Количество() = 0 Тогда
       Для Каждого СтрокаОплаты ИЗ Объект.Оплата Цикл
           МасивСтрок = мВремТаблицаОплаты.НайтиСтроки(Новый Структура("ИдентификаторДокумента, ИдентификаторКорДокумента", СтрокаОплаты.ИдентификаторДокумента, СтрокаОплаты.ИдентификаторКорДокумента));
           Если НЕ МасивСтрок.Количество() = 0 Тогда
               СтрокаОплаты.Счет = МасивСтрок[0].Счет;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   
КонецПроцедуры



Служебные сообщения:

{Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения(154)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
   СКД = ПолучитьИзВременногоХранилища(АдресСКД);    
Недопустимое значение параметра (параметр номер '1')



Прошу, помогите как можно скорее. Сам я в 1С лишь скромный эникейщик.
19 Лис Локи
 
02.02.12
08:43
Собственно да, предугадал вопрос.
20 Fish
 
02.02.12
08:44
(16) А может это реквизит формы?
21 dva1c
 
02.02.12
08:45
(18) Исходишь из логики: для чего нужна обработка? Что нужно получить для построения отчета? Пытаешься понять для чего нужен этот "АдресСКД"?
22 dva1c
 
02.02.12
08:46
(21) -> (19)
(20) Верно построенное предположение. +1
23 Лис Локи
 
02.02.12
08:50
Да вроде и там (Общие\общие формы) ничего такого не наблюдается.


Мда. Отчет-обработка.
> для чего нужен этот "АдресСКД"?
Понятия не имею, честно говоря.
Я имею ввиду, я даже не предполагаю, как он ДОЛЖЕН выглядеть.
24 dva1c
 
02.02.12
08:54
(23) Отчет готовый есть? Что он должен формировать? Неужели не знаешь?
25 Лис Локи
 
02.02.12
08:57
По идее это должен был быть импорт взаиморасчетов с клиентами.
(Ведомость и остатки). Есть пример, да.
26 dva1c
 
02.02.12
09:01
(25) Уже не так все плохо. Копай дальше. )
27 Fish
 
02.02.12
09:03
(23) А глобальный поиск по конфе твоего "АдресСКД" делал?
28 Лис Локи
 
02.02.12
09:05
>А глобальный поиск по конфе твоего "АдресСКД" делал?

Нет, конечно, ибо 1С изучал "давно и не правда". Как?
29 dva1c
 
02.02.12
09:06
(28) )) Иконку "Папка с биноклем" видишь? Если - да, то это "Глобальный поиск".
30 Лис Локи
 
02.02.12
09:10
"Есть папка с увеличительным стеклом", жмакнул, вот что нашло:

Поиск строки "АдресСКД"...
Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(154, 38) : СКД = ПолучитьИзВременногоХранилища(АдресСКД);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1095, 38) : СКД = ПолучитьИзВременногоХранилища(АдресСКД);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1139, 2) : АдресСКД = ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1148, 38) : СКД = ПолучитьИзВременногоХранилища(АдресСКД);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1175, 2) : АдресСКД = ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1274, 21) : Новый Структура("АдресСКД",АдресСКД));

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1274, 31) : Новый Структура("АдресСКД",АдресСКД));

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1277, 3) : АдресСКД = Результат.АдресСКД;

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1277, 24) : АдресСКД = Результат.АдресСКД;

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки.Форма.Модуль(270, 38) : СКД = ПолучитьИзВременногоХранилища(АдресСКД);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки.Форма.Модуль(277, 2) : АдресСКД = ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки.Форма.Модуль(290, 2) : АдресСКД = Параметры.АдресСКД;

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки.Форма.Модуль(290, 23) : АдресСКД = Параметры.АдресСКД;

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки.Форма.Модуль(292, 38) : СКД = ПолучитьИзВременногоХранилища(АдресСКД);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки.Форма.Модуль(296, 52) : Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД)

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки.Форма.Модуль(313, 30) : СтруктураВозврата.Вставить("АдресСКД", АдресСКД);

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки.Форма.Модуль(313, 41) : СтруктураВозврата.Вставить("АдресСКД", АдресСКД);

Найдено вхождений: 17
31 dva1c
 
02.02.12
09:12
(30) Лениво анализировать то, что ты тут постишь. Самому очень тяжело?
32 Fish
 
02.02.12
09:13
(30) Ну вот же:
Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1277, 3) : АдресСКД = Результат.АдресСКД;

Основная конфигурация Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаРаспределения.Форма.Модуль(1277, 24) : АдресСКД = Результат.АдресСКД;

Вот и смотри там, как этот АдресСКД получается, и для чего нужен :)))
33 Лис Локи
 
02.02.12
09:14
Проблема в том, что для меня это в основном китайские иероглифы.
Точнее русские, но от этого только грустнее.




Ок, посмотрим-с.
34 Fish
 
02.02.12
09:15
(33) Тогда может тебе стоит забить на это, и позвать уже специалиста? :))))
35 Лис Локи
 
02.02.12
09:15
Процедура Настройки(Команда)
   
   Результат = ОткрытьФормуМодально(
       "Обработка.CRM_ОбменДаннымиС1СБухгалтерия.Форма.ФормаНастройки",
           Новый Структура("АдресСКД",АдресСКД));
   
   Если Результат <> Неопределено Тогда
       АдресСКД = Результат.АдресСКД;
       СформироватьТекстЗапросаИПолучитьЗагруженныеОбороты();
       Модифицированность = Истина;
   КонецЕсли;
   
КонецПроцедуры
36 Лис Локи
 
02.02.12
09:17
Цитируя мою начальницу "Я всё равно бы тыкалась по интернету, как и ты, а так хотя бы время свободное будет".

Собственно, сам-то я не сильно пряморукий писатель сайтов, но лучше у них просто нет.
37 dva1c
 
02.02.12
09:25
(34)+100500 ))
38 Лис Локи
 
02.02.12
09:32
>Если Результат <> Неопределено Тогда

Это вообще норма?
39 alxxsssar
 
02.02.12
09:33
Если адрес хранилища, то скорее всего это путь к файлам. Посмотри на форме обработки нет ли реквизита с выбором файла или чего подобного?
40 Лис Локи
 
02.02.12
09:35
Хм, кажется в общих формах формы "CRM_ОбменДаннымиС1СБухгалтерия" просто нет.
41 alxxsssar
 
02.02.12
09:43
Где-то должен быть такой реквизит.
42 Лис Локи
 
02.02.12
09:45
Есть поиск по ним?
43 extrim-style
 
02.02.12
09:45
(40) это не в общих формах - это в обработках
44 Лис Локи
 
02.02.12
09:48
Ага, нашел.
Нет, у неё только реквизиты НачалоПериода, КонецПериода, УниверсальныйОбменДанными, ИмяФайлаОбмена, ДатаВыгрузкиДанных.
45 extrim-style
 
02.02.12
09:53
(44) есть реквизиты обработки, которую ты открываешь, а есть реквизиты формы - открываешь в этой обработке ФормуНастройки и переходишь на вкладку реквизиты.
46 extrim-style
 
02.02.12
09:54
(0) интересно, какого характера была "настройка". Может проще оттуда топать?
47 Лис Локи
 
02.02.12
09:56
Ага, открыл. Есть.
48 Лис Локи
 
02.02.12
09:57
Между объектом и компоновщиком настроек, тип "Строка".
49 Лис Локи
 
02.02.12
10:12
И куда дальше тыкаться, добрые люди?
50 dva1c
 
02.02.12
10:16
(49) Все ушли на обед. Я тоже скоро ухожу. )
51 extrim-style
 
02.02.12
10:16
(49) в (0) в реквизитах формы есть АдресСКД?
52 Лис Локи
 
02.02.12
10:18
Да, есть!


offtop: Что ли самому потом пойти?
53 extrim-style
 
02.02.12
10:22
(52) открой модуль этой формы. Встань в самое начало и по Ctrl+F поищи АдресСКД. Место, где АдресСКД присваивается значение - "АдресСКД = ..."
54 alxxsssar
 
02.02.12
10:24
в пользовательской открой и посмотри, он заполнен?
55 Лис Локи
 
02.02.12
10:25
> открой модуль этой формы

Как, добрая душа?
56 Лис Локи
 
02.02.12
10:30
>открой модуль этой формы
Ага, нашел, затупил, простите.
57 Лис Локи
 
02.02.12
10:32
АдресСКД = ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор);


Вот это?
58 extrim-style
 
02.02.12
10:36
(57) поставь точку останова на этой строчке и посмотри заполнение параметра СКД.
59 Лис Локи
 
02.02.12
10:39
> поставь точку останова на этой строчке
*тык F9* done!

>посмотри заполнение параметра СКД

Эм, поясни пожалуйста.
60 extrim-style
 
02.02.12
10:47
(59) смотри (5)
61 Лис Локи
 
02.02.12
10:56
Что-то ни фига не происходит, оно просто выдаёт ошибку и продолжает работать дальше. (т.е. форма не вызывается, но и вылета нет).
И табло не вызывается по шифт+f9 теперь.
62 extrim-style
 
02.02.12
11:11
(61) варианты - конфигуратор закрыт. Если открыт - переоткрой всё снова, и поставь точку в этой строке. Если не заходит, поставь точку выше. Возможно (57) находится в другой процедуре и нужно поискать другое присвоение АдресСКД и там уже ставить точку и смотреть. Если ни то, ни другое - курить, почему не заходит в эту процедуру.
63 Лис Локи
 
02.02.12
11:18
> Если ни то, ни другое - курить, почему не заходит в эту процедуру.

А возможно ли это закомментить и написать свое, аналогичное? Я имею ввиду, насколько там большая простыня должна быть?
64 extrim-style
 
02.02.12
11:26
(63) прежде чем что-то писать, нужно знать что писать.
лучше вспомнить, что в (0) настраивали
65 Лис Локи
 
02.02.12
11:29
По идее - форму для "Загрузки взаиморасчетов с клиентам".
66 extrim-style
 
02.02.12
11:38
(65) Если больше присвоения АдресСКД в форме нет, то тогда в (57) смотри присвоение СКД, т.к. скорей всего что-то не присваивается. В какой процедуре находится?
67 Лис Локи
 
02.02.12
11:44
(57) находится в "Сохранить настройки":



Процедура СохранитьНастройки()

   КомпоновщикНастроек.Восстановить();
   СКД = ПолучитьИзВременногоХранилища(АдресСКД);

   НастройкиСКД          = СКД.НастройкиПоУмолчанию;
   НастройкиКомпоновщика = КомпоновщикНастроек.ПолучитьНастройки();
   ОчиститьНастройкиКомпоновкиДанных(НастройкиСКД);
   СкопироватьНастройкиКомпоновкиДанных(НастройкиСКД, НастройкиКомпоновщика);

   АдресСКД = ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор);

КонецПроцедуры
68 extrim-style
 
02.02.12
11:53
(68) по Ctrl+F сделай поиск в модуле СохранитьНастройки - посмотри, в каких процедурах/функциях вызывается.
69 Лис Локи
 
02.02.12
11:57
Вот здесь только:
Процедура ЗавершитьРедактирование(Команда)

   СохранитьНастройки();
   
   СтруктураВозврата = Новый Структура;
   СтруктураВозврата.Вставить("АдресСКД", АдресСКД);
   
   Закрыть(СтруктураВозврата);

КонецПроцедуры
70 extrim-style
 
02.02.12
12:03
В пользовательском режиме открой обработку Обработка.CRM_ОбменДаннымиС1СБухгалтерия (называется как в поле Синоним), посмотри, может что прояснится, какие-то параметры не установлены может.
71 Лис Локи
 
02.02.12
12:07
>В пользовательском режиме
Т.е. не из конструктора?
72 alxxsssar
 
02.02.12
12:09
просто 1с предприятие открой, открой эту обработку, найди какую-нибудь закладку, кнопку или что-нибудь с надписью "Настройки" и посмотри что там у тебя заполнено
73 dva1c
 
02.02.12
12:14
*Вернулся с попкорном.
74 alxxsssar
 
02.02.12
12:17
(73) отсыпь, я голодный)))
75 Лис Локи
 
02.02.12
12:49
Так, нашел кнопку с надписью "настройки". Большую такую. И там до фига, но ничего про СКД что-то нема.

А сама обработка же не запускается, даже форма не появляется, тупо "Недопустимое значение параметра (параметр номер '1') ".
76 Лис Локи
 
02.02.12
12:50
Кстати, господа, через 2 часа мой раочий день кончается, но завтра цирк продолжится.
77 Лис Локи
 
02.02.12
12:50
*рабочий
78 extrim-style
 
02.02.12
12:55
(75) попробуй покурить правильное заполнение и сохранение настроек этой обработки
79 Лис Локи
 
02.02.12
12:58
В этом проблема. Я по этой 1С CRM Стандарт мануалов вообще не нашел в инете. Может я что-то не так ищу? Или не знаю правильного названия?
80 extrim-style
 
02.02.12
13:00
(79) а, ну теперь понятно, откуда "настройка" из (0) пошла =)
81 Лис Локи
 
02.02.12
13:09
Так объясните мне пожалуйста, в чем развязка этого детектива с 1С?)
82 alxxsssar
 
02.02.12
13:37
так может на форме она имеет другое название. посмотри что-нибудь похожее или выложи ссыль на скан формы
83 alxxsssar
 
02.02.12
13:38
+(82) формы настроек
84 alxxsssar
 
02.02.12
13:38
+(81) или в конфигураторе полазай по полям формы настроек и через их свойства (ПКМ) смотри имя реквизита
85 Лис Локи
 
02.02.12
13:57
И если что-то такое найду, что на что исправить?
86 alxxsssar
 
02.02.12
13:58
если он в пользовательской пустой, то заполни. что вводить - уж извини, тебе лучше знать
87 Лис Локи
 
02.02.12
14:06
Так, в пользовательской я его не нашел.
В реквизитах:
Имя: АдресСКД
Заголовок: Адрес СКД

Тип: Строка
Длина: 0


Основной реквизит - не выбрано.
Сохраняемые данные - не выбрано.

Функциональных опций - нет.
Проверка заполнения - не проверять.
88 extrim-style
 
02.02.12
14:07
(81) в (67) только пересохранение настроек. Должно быть где-то еще присвоение АдресСКД. Посмотри в процедурах ПриОткрытии и ПередОткрытием, и еще, кроме модуля формы, есть модуль объекта. ПКМ на обработку в дереве метаданных - открыть модуль объекта - там поищи присвоение АдресСКД.
89 Лис Локи
 
02.02.12
14:11
Обработке я выбрал "Обмен данными 1С и т.п.", правой клавишей, модуль объекта - и девственно чистый лист распахнул свои объятья. Видимо опять не туда.

>процедурах ПриОткрытии и ПередОткрытием

А они-то где, добрый человек?
90 extrim-style
 
02.02.12
14:14
(89) вот в этой пусто? - Обработка.CRM_ОбменДаннымиС1СБухгалтерия?
ПриОткрытии и ПередОткрытием в модуле формы, но может и не быть.
91 alxxsssar
 
02.02.12
14:17
отсылаю к (84) полазай по самой форме настроек, по свойствам всех полей найди эту долбаную "АдресСРМ" и глянь, какая надпись около него стоит на форме.
92 Лис Локи
 
02.02.12
14:17
Да, оно пусто.
93 Лис Локи
 
02.02.12
14:18
Процедура СкопироватьЭлементы(ПриемникЗначения, ИсточникЗначения, ПроверятьДоступность = Ложь, ОчищатьПриемник = Истина)
   
   Если ТипЗнч(ИсточникЗначения) = Тип("УсловноеОформлениеКомпоновкиДанных")
       Или ТипЗнч(ИсточникЗначения) = Тип("ВариантыПользовательскогоПоляВыборКомпоновкиДанных")
       Или ТипЗнч(ИсточникЗначения) = Тип("ОформляемыеПоляКомпоновкиДанных")
       Или ТипЗнч(ИсточникЗначения) = Тип("ЗначенияПараметровДанныхКомпоновкиДанных") Тогда
       
       СоздаватьПоТипу = Ложь;
       
   Иначе
       
       СоздаватьПоТипу = Истина;
       
   КонецЕсли;
   
   ПриемникЭлементов = ПриемникЗначения.Элементы;
   ИсточникЭлементов = ИсточникЗначения.Элементы;
   Если ОчищатьПриемник Тогда
       ПриемникЭлементов.Очистить();
   КонецЕсли;
   
   Для каждого ЭлементИсточник Из ИсточникЭлементов Цикл
       
       Если ТипЗнч(ЭлементИсточник) = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
           
           // Элементы порядка добавляем в начало
           Индекс = ИсточникЭлементов.Индекс(ЭлементИсточник);
           ЭлементПриемник = ПриемникЭлементов.Вставить(Индекс, ТипЗнч(ЭлементИсточник));
           
       Иначе
           
           Если СоздаватьПоТипу Тогда
               ЭлементПриемник = ПриемникЭлементов.Добавить(ТипЗнч(ЭлементИсточник));
           Иначе
               ЭлементПриемник = ПриемникЭлементов.Добавить();
           КонецЕсли;
           
       КонецЕсли;
       
       ЗаполнитьЗначенияСвойств(ЭлементПриемник, ЭлементИсточник);
       // В некоторых коллекциях необходимо заполнить другие коллекции
       Если ТипЗнч(ИсточникЭлементов) = Тип("КоллекцияЭлементовУсловногоОформленияКомпоновкиДанных") Тогда
           
           СкопироватьЭлементы(ЭлементПриемник.Поля, ЭлементИсточник.Поля);
           СкопироватьЭлементы(ЭлементПриемник.Отбор, ЭлементИсточник.Отбор);
           ЗаполнитьЭлементы(ЭлементПриемник.Оформление, ЭлементИсточник.Оформление);
           
       ИначеЕсли ТипЗнч(ИсточникЭлементов)    = Тип("КоллекцияВариантовПользовательскогоПоляВыборКомпоновкиДанных") Тогда
           
           СкопироватьЭлементы(ЭлементПриемник.Отбор, ЭлементИсточник.Отбор);
           
       КонецЕсли;
       
       // В некоторых элементах коллекции необходимо заполнить другие коллекции
       Если ТипЗнч(ЭлементИсточник) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
           
           СкопироватьЭлементы(ЭлементПриемник, ЭлементИсточник);
           
       ИначеЕсли ТипЗнч(ЭлементИсточник) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
           
           СкопироватьЭлементы(ЭлементПриемник, ЭлементИсточник);
           
       ИначеЕсли ТипЗнч(ЭлементИсточник) = Тип("ПользовательскоеПолеВыборКомпоновкиДанных") Тогда
           
           СкопироватьЭлементы(ЭлементПриемник.Варианты, ЭлементИсточник.Варианты);
           
       ИначеЕсли ТипЗнч(ЭлементИсточник) = Тип("ПользовательскоеПолеВыражениеКомпоновкиДанных") Тогда
           
           ЭлементПриемник.УстановитьВыражениеДетальныхЗаписей (ЭлементИсточник.ПолучитьВыражениеДетальныхЗаписей());
           ЭлементПриемник.УстановитьВыражениеИтоговыхЗаписей(ЭлементИсточник.ПолучитьВыражениеИтоговыхЗаписей());
           ЭлементПриемник.УстановитьПредставлениеВыраженияДетальныхЗаписей(ЭлементИсточник.ПолучитьПредставлениеВыраженияДетальныхЗаписей ());
           ЭлементПриемник.УстановитьПредставлениеВыраженияИтоговыхЗаписей(ЭлементИсточник.ПолучитьПредставлениеВыраженияИтоговыхЗаписей ());
           
       КонецЕсли;
       
   КонецЦикла;
   
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьЭлементы(ПриемникЗначения, ИсточникЗначения, ПервыйУровень = Неопределено)
   
   Если ТипЗнч(ПриемникЗначения) = Тип("КоллекцияЗначенийПараметровКомпоновкиДанных") Тогда
       КоллекцияЗначений = ИсточникЗначения;
   Иначе
       КоллекцияЗначений = ИсточникЗначения.Элементы;
   КонецЕсли;
   
   Для каждого ЭлементИсточник Из КоллекцияЗначений Цикл
       
       Если ПервыйУровень = Неопределено Тогда
           ЭлементПриемник = ПриемникЗначения.НайтиЗначениеПараметра(ЭлементИсточник.Параметр);
       Иначе
           ЭлементПриемник = ПервыйУровень.НайтиЗначениеПараметра(ЭлементИсточник.Параметр);
       КонецЕсли;
       
       Если ЭлементПриемник = Неопределено Тогда
           Продолжить;
       КонецЕсли;
       
       ЗаполнитьЗначенияСвойств(ЭлементПриемник, ЭлементИсточник);
       Если ТипЗнч(ЭлементИсточник) = Тип("ЗначениеПараметраКомпоновкиДанных") Тогда
           
           Если ЭлементИсточник.ЗначенияВложенныхПараметров.Количество() <> 0 Тогда
               ЗаполнитьЭлементы(ЭлементПриемник.ЗначенияВложенныхПараметров, ЭлементИсточник.ЗначенияВложенныхПараметров, ПриемникЗначения);
           КонецЕсли;
           
       КонецЕсли;
       
   КонецЦикла;
   
КонецПроцедуры

&НаСервере
// Процедура удаляет все элементы настройки компоновки данных из объекта
//
Процедура ОчиститьНастройкиКомпоновкиДанных(Настройки)
   
   Если Настройки = Неопределено Или ТипЗнч(Настройки) <> Тип("НастройкиКомпоновкиДанных") Тогда
       Возврат;
   КонецЕсли;
   
   Для каждого Параметр Из Настройки.ПараметрыДанных.Элементы Цикл
       Параметр.Значение = Неопределено;
       Параметр.Использование = Ложь;
   КонецЦикла;
   
   Для каждого Параметр Из Настройки.ПараметрыВывода.Элементы Цикл
       Параметр.Использование = Ложь;
   КонецЦикла;
   
   Настройки.ПользовательскиеПоля.Элементы.Очистить();
   Настройки.Отбор.Элементы.Очистить();
   Настройки.Порядок.Элементы.Очистить();
   Настройки.Выбор.Элементы.Очистить();
   Настройки.Структура.Очистить();
   
КонецПроцедуры

&НаСервере
// Копирует настройки компоновки данных
//
Процедура СкопироватьНастройкиКомпоновкиДанных(НастройкиПриемник, НастройкиИсточник)
   
   Если НастройкиИсточник = Неопределено Тогда
       Возврат;
   КонецЕсли;
   
   Если ТипЗнч(НастройкиПриемник) = Тип("НастройкиКомпоновкиДанных") Тогда
       
       Для каждого Параметр Из НастройкиИсточник.ПараметрыДанных.Элементы Цикл
           
           ЗначениеПараметра = НастройкиПриемник.ПараметрыДанных.НайтиЗначениеПараметра(Параметр.Параметр);
           Если ЗначениеПараметра <> Неопределено Тогда
               ЗаполнитьЗначенияСвойств(ЗначениеПараметра, Параметр);
           КонецЕсли;
           
       КонецЦикла;
       
   КонецЕсли;
   
   Если ТипЗнч(НастройкиИсточник) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
       
       ЗаполнитьЗначенияСвойств(НастройкиПриемник, НастройкиИсточник);
       СкопироватьНастройкиКомпоновкиДанных(НастройкиПриемник.Настройки, НастройкиИсточник.Настройки);
       Возврат;
       
   КонецЕсли;
   
   // Копирование настроек
   Если ТипЗнч(НастройкиИсточник) = Тип("НастройкиКомпоновкиДанных") Тогда
       
       ЗаполнитьЭлементы(НастройкиПриемник.ПараметрыДанных, НастройкиИсточник.ПараметрыДанных);
       СкопироватьЭлементы(НастройкиПриемник.ПользовательскиеПоля, НастройкиИсточник.ПользовательскиеПоля);
       СкопироватьЭлементы(НастройкиПриемник.Отбор,         НастройкиИсточник.Отбор);
       СкопироватьЭлементы(НастройкиПриемник.Порядок,       НастройкиИсточник.Порядок);
       
   КонецЕсли;
   
   Если ТипЗнч(НастройкиИсточник) = Тип("ГруппировкаКомпоновкиДанных")
    Или ТипЗнч(НастройкиИсточник) = Тип("ГруппировкаТаблицыКомпоновкиДанных")
    Или ТипЗнч(НастройкиИсточник) = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
       
       СкопироватьЭлементы(НастройкиПриемник.ПоляГруппировки, НастройкиИсточник.ПоляГруппировки);
       СкопироватьЭлементы(НастройкиПриемник.Отбор,           НастройкиИсточник.Отбор);
       СкопироватьЭлементы(НастройкиПриемник.Порядок,         НастройкиИсточник.Порядок);
       ЗаполнитьЗначенияСвойств(НастройкиПриемник, НастройкиИсточник);
       
   КонецЕсли;
   
   СкопироватьЭлементы(НастройкиПриемник.Выбор,              НастройкиИсточник.Выбор);
   СкопироватьЭлементы(НастройкиПриемник.УсловноеОформление, НастройкиИсточник.УсловноеОформление);
   ЗаполнитьЭлементы(НастройкиПриемник.ПараметрыВывода,      НастройкиИсточник.ПараметрыВывода);
   
   // Копирование структуры
   Если ТипЗнч(НастройкиИсточник) = Тип("НастройкиКомпоновкиДанных")
    Или ТипЗнч(НастройкиИсточник) = Тип("ГруппировкаКомпоновкиДанных") Тогда
       
       Для каждого ЭлементСтруктурыИсточник Из НастройкиИсточник.Структура Цикл
           
           ЭлементСтруктурыПриемник = НастройкиПриемник.Структура.Добавить(ТипЗнч(ЭлементСтруктурыИсточник));
           СкопироватьНастройкиКомпоновкиДанных(ЭлементСтруктурыПриемник, ЭлементСтруктурыИсточник);
           
       КонецЦикла;
       
   КонецЕсли;
   
   Если ТипЗнч(НастройкиИсточник) = Тип("ГруппировкаТаблицыКомпоновкиДанных")
    Или ТипЗнч(НастройкиИсточник) = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
       
       Для каждого ЭлементСтруктурыИсточник Из НастройкиИсточник.Структура Цикл
           
           ЭлементСтруктурыПриемник = НастройкиПриемник.Структура.Добавить();
           СкопироватьНастройкиКомпоновкиДанных(ЭлементСтруктурыПриемник, ЭлементСтруктурыИсточник);
           
       КонецЦикла;
       
   КонецЕсли;
   
   Если ТипЗнч(НастройкиИсточник) = Тип("ТаблицаКомпоновкиДанных") Тогда
       
       Для каждого ЭлементСтруктурыИсточник Из НастройкиИсточник.Строки Цикл
           
           ЭлементСтруктурыПриемник = НастройкиПриемник.Строки.Добавить();
           СкопироватьНастройкиКомпоновкиДанных(ЭлементСтруктурыПриемник, ЭлементСтруктурыИсточник);
           
       КонецЦикла;
       
       Для каждого ЭлементСтруктурыИсточник Из НастройкиИсточник.Колонки Цикл
           
           ЭлементСтруктурыПриемник = НастройкиПриемник.Колонки.Добавить();
           СкопироватьНастройкиКомпоновкиДанных(ЭлементСтруктурыПриемник, ЭлементСтруктурыИсточник);
           
       КонецЦикла;
       
   КонецЕсли;
   
   Если ТипЗнч(НастройкиИсточник) = Тип("ДиаграммаКомпоновкиДанных") Тогда
       
       Для каждого ЭлементСтруктурыИсточник Из НастройкиИсточник.Серии Цикл
           
           ЭлементСтруктурыПриемник = НастройкиПриемник.Серии.Добавить();
           СкопироватьНастройкиКомпоновкиДанных(ЭлементСтруктурыПриемник, ЭлементСтруктурыИсточник);
           
       КонецЦикла;
       
       Для каждого ЭлементСтруктурыИсточник Из НастройкиИсточник.Точки Цикл
           
           ЭлементСтруктурыПриемник = НастройкиПриемник.Точки.Добавить();
           СкопироватьНастройкиКомпоновкиДанных(ЭлементСтруктурыПриемник, ЭлементСтруктурыИсточник);
           
       КонецЦикла;
       
   КонецЕсли;
   
КонецПроцедуры

&НаСервере
//Сохраняет настройки схемы компоновки
//
Процедура СохранитьНастройки()

   КомпоновщикНастроек.Восстановить();
   СКД = ПолучитьИзВременногоХранилища(АдресСКД);

   НастройкиСКД          = СКД.НастройкиПоУмолчанию;
   НастройкиКомпоновщика = КомпоновщикНастроек.ПолучитьНастройки();
   ОчиститьНастройкиКомпоновкиДанных(НастройкиСКД);
   СкопироватьНастройкиКомпоновкиДанных(НастройкиСКД, НастройкиКомпоновщика);

   АдресСКД = ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор);

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


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   //crack start crack end// CRM_ЗащитаСервер.ПолучитьЗащищеннуюОбработку().ПриСозданиеНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
   
   АдресСКД = Параметры.АдресСКД;
   
   СКД = ПолучитьИзВременногоХранилища(АдресСКД);

   Если СКД <> Неопределено Тогда
       КомпоновщикНастроек.Инициализировать(
           Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД)
           );
       КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
       КомпоновщикНастроек.Восстановить();
   КонецЕсли;
   
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ОСТАЛЬНЫХ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ ФОРМЫ

&НаКлиенте
Процедура ЗавершитьРедактирование(Команда)

   СохранитьНастройки();
   
   СтруктураВозврата = Новый Структура;
   СтруктураВозврата.Вставить("АдресСКД", АдресСКД);
   
   Закрыть(СтруктураВозврата);

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



И приоткрытии закрытии тоже нет.
94 alxxsssar
 
02.02.12
14:18
вот и заполняй, там скорее всего диалог выбора файла
95 Лис Локи
 
02.02.12
14:21
отсылаю к (84) полазай по самой форме настроек, по свойствам всех полей найди эту долбаную "АдресСРМ" и глянь, какая надпись около него стоит на форме

Нет, там не пусто. Там вообще какая-то левая форма с двумя memo-подобными полями и одной кнопочкой ОКэй.
96 alxxsssar
 
02.02.12
14:22
можешь обработку на почту прислать?
97 Лис Локи
 
02.02.12
14:25
С удовольствием, скажи только как.
98 Лис Локи
 
02.02.12
14:25
Без проблем, скажи только как.
99 extrim-style
 
02.02.12
14:26
(95) ну вот же присвоение - АдресСКД = Параметры.АдресСКД;
Поставь там точку и запусти обработку в пользовательском режиме, как написано в (5), и по Shift+F9 посмотри содержание Параметры.АдресСКД или Параметры вообще.
100 alxxsssar
 
02.02.12
14:28
в конфигураторе плавой клавишей на обработкук -> сохранить как внешнюю обработку, отчет, выбираешь место и вуаля. отошли на [email protected]
101 Лис Локи
 
02.02.12
14:33
(100) посылаю.

(99) В том то и дело, что не переключается оно, не останавливается. И Shift+F9 никакой реакции не вызывает.
102 extrim-style
 
02.02.12
14:41
(101) ну а ты обработку в пользовательском режиме запускаешь?
103 Лис Локи
 
02.02.12
14:47
Как же я её запущу, если форма её даже не вызывается, а ошибку выдает?
104 alxxsssar
 
02.02.12
14:49
получил
105 Лис Локи
 
02.02.12
14:50
Надеюсь то, что нужно отправил.
106 alxxsssar
 
02.02.12
14:52
вроде да
107 extrim-style
 
02.02.12
14:54
(103) не знаю, что там за конфа. Через Операции - Обработки в пользовательском режиме, что нельзя?
108 Лис Локи
 
02.02.12
15:00
> Через Операции - Обработки в пользовательском режиме, что нельзя?
Подробнее, пожалуйста.
109 alxxsssar
 
02.02.12
15:04
а что за конфа, правда, а то у меня не открывается. совсем
110 extrim-style
 
02.02.12
15:05
(108) ну в пользовательском режиме в меню есть доступ к обработкам?
111 Лис Локи
 
02.02.12
15:05
Ох, чувствую себя полнейшим идиотом. Что означает конфа?
112 Лис Локи
 
02.02.12
15:06
Я не знаю как запустить пользовательский режим, простите меня.

Ох, было весело, расходимся до завтра. Спасибо за то, что возились со мной.
113 alxxsssar
 
02.02.12
15:07
конфигурация какая. через "Справка" - "О программе"  можно посмотреть
114 Лис Локи
 
03.02.12
05:01
Доброе утро всем, через час я буду на работе и шоу маст гоу он.
115 Лис Локи
 
03.02.12
06:09
Конфигурация:

1С:CRM СТАНДАРТ, редакция 1.0 (1.0.6.2)
Copyright © ООО "1C", 2011. Все права защищены
(http://www.1c.ru)
116 Лис Локи
 
03.02.12
08:03
Наименование: CRM

Режим: Файловый
117 Fish
 
03.02.12
09:22
(114) Запасся попкорном :)))
118 Лис Локи
 
03.02.12
09:23
Ок, только что-то все дрессировщики разбежались, а через полчаса я либо забью на это (и мне дадут ещё более увлекательную задачу в 1С), либо кто-то придет и даст дельный совет здесь.