1с недопустимое значение параметра параметр номер 1
Собственно сиё случилось как всегда неожиданно. После штатного (ну почти) обновления конфигурации 1С Бухгалтерия. А именно отвалилась синхронизация между оной и ЗУП. Обновление до «наипоследнейших» версий конфигурации ничего не дало. При синхронизации продолжала вываливаться ошибка:
< Обработка . КонвертацияОбъектовИнформационныхБаз . МодульОбъекта ( 8160 ) >: СсылкаНаОбъект = СтруктураСвойств . Менеджер . ПолучитьСсылку ( Новый УникальныйИдентификатор ( СвойствоУникальныйИдентификатор ) ) ;
< Обработка . КонвертацияОбъектовИнформационныхБаз . МодульОбъекта ( 9529 ) >: Значение = ПрочитатьСвойство ( ТипСвойства , ЭтоПустойНабор , СвойствоНеНайденоПоСсылке , ИмяПКО ) ;
< ( 1 ) >: Обработки . ВыполнениеОбменаДанными . ВыполнитьЗапускОбменаДанными ( Параметры [ 0 ] , Параметры [ 1 ] )
Расследование и гугленье дало следующее: ошибка происходит из-за нарушении в регистре сведений «СоответствияОбъектовИнформационныхБаз». А именно у части данных в этом регистре соответствие стало NULL.
Решение: просто стереть всё содержимое этого регистра (Все функции -> Регистры сведений -> СоответствияОбъектовИнформационныхБаз -> CTRL-A -> DEL)
Далее в настройках синхронизации достаточно выгрузить-загрузить «данные для сопоставления». И собственно после этого у меня всё штатно заработало.
Комментарии:
2 мысли о “1C ошибка синхронизации между ЗУП и Бухгалтерия 3.0”
Спасибо. Дрожащими руками очистила регистр. И все получилось. Ошибка проявилась после закрытия конфигурации для редактирования.
Такая же беда. После постановки БП 3.0 на поддержку выдает при синхронизации ЗУП 3.1 такую же ошибку! Уточните, пожалуйста, «Выгрузку данных для сопоставления» надо делать из ЗУП 3.1? Если «Да», то как потом эти данные загрузить в БП 3.0. Спасибо за помощь!
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
СКД = ПолучитьИзВременногоХранилища(АдресСКД); // Отладчик ругается на эту строку.
УстановитьПоляОтбораПоСКД(СКД);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
КомпоновщикНастроек.Восстановить();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД,
КомпоновщикНастроек.ПолучитьНастройки(), , ,
Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаРезультатаКомпановки = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ПостроительЗапроса = Новый ПостроительЗапроса();
Источник = Новый ОписаниеИсточникаДанных(ТаблицаРезультатаКомпановки);
ПостроительЗапроса.ИсточникДанных = Источник;
ПостроительЗапроса.Выполнить();
Если НЕ СохранятьИзмененияПользователя Тогда
Объект.Реализация.Очистить();
Объект.Оплата.Очистить();
Иначе
мТаблицаОплат = Объект.Оплата.Выгрузить();
Объект.Оплата.Очистить();
КонецЕсли;
Пока РезультатЗапроса.Следующий() Цикл
Если НЕ СохранятьИзмененияПользователя Тогда
Если РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Приход Тогда
НоваяСтрока = Объект.Реализация.Добавить();
ИначеЕсли РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Расход Тогда
НоваяСтрока = Объект.Оплата.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(НоваяСтрока, РезультатЗапроса);
ДобавитьСвязанныеДокументы(РезультатЗапроса, РезультатЗапроса.ВидыДвиженийПриходРасход);
Иначе // Скорректируем ТЧ Оплаты, т.к. в реализации было удаление строки
Если РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Расход Тогда
НоваяСтрока = Объект.Оплата.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, РезультатЗапроса);
МассивСтрок = мТаблицаОплат.НайтиСтроки(Новый Структура("ИдентификаторДокумента, ИдентификаторКорДокумента",РезультатЗапроса.ИдентификаторДокумента,РезультатЗапроса.ИдентификаторКорДокумента));
Если НЕ МассивСтрок.Количество() = 0 Тогда
НоваяСтрока.Счет = МассивСтрок[0].Счет;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если НЕ мВремТаблицаРеализации.Количество() = 0 Тогда
Для Каждого СтрокаРеализации ИЗ Объект.Реализация Цикл
СтрокаТЗ = мВремТаблицаРеализации.Найти(СтрокаРеализации.ИдентификаторДокумента, "ИдентификаторДокумента");
Если НЕ СтрокаТЗ = Неопределено Тогда
СтрокаРеализации.Счет = СтрокаТЗ.Счет;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если НЕ мВремТаблицаОплаты.Количество() = 0 Тогда
Для Каждого СтрокаОплаты ИЗ Объект.Оплата Цикл
МасивСтрок = мВремТаблицаОплаты.НайтиСтроки(Новый Структура("ИдентификаторДокумента, ИдентификаторКорДокумента", СтрокаОплаты.ИдентификаторДокумента, СтрокаОплаты.ИдентификаторКорДокумента));
Если НЕ МасивСтрок.Количество() = 0 Тогда
СтрокаОплаты.Счет = МасивСтрок[0].Счет;
КонецЕсли;
КонецЦикла;
КонецЕсли;
: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
СКД = ПолучитьИзВременногоХранилища(АдресСКД);
Недопустимое значение параметра (параметр номер '1')
СКД = ПолучитьИзВременногоХранилища(АдресСКД); // Отладчик ругается на эту строку.
УстановитьПоляОтбораПоСКД(СКД);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
КомпоновщикНастроек.Восстановить();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД,
КомпоновщикНастроек.ПолучитьНастройки(), , ,
Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаРезультатаКомпановки = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ПостроительЗапроса = Новый ПостроительЗапроса();
Источник = Новый ОписаниеИсточникаДанных(ТаблицаРезультатаКомпановки);
ПостроительЗапроса.ИсточникДанных = Источник;
ПостроительЗапроса.Выполнить();
Если НЕ СохранятьИзмененияПользователя Тогда
Объект.Реализация.Очистить();
Объект.Оплата.Очистить();
Иначе
мТаблицаОплат = Объект.Оплата.Выгрузить();
Объект.Оплата.Очистить();
КонецЕсли;
Пока РезультатЗапроса.Следующий() Цикл
Если НЕ СохранятьИзмененияПользователя Тогда
Если РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Приход Тогда
НоваяСтрока = Объект.Реализация.Добавить();
ИначеЕсли РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Расход Тогда
НоваяСтрока = Объект.Оплата.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(НоваяСтрока, РезультатЗапроса);
ДобавитьСвязанныеДокументы(РезультатЗапроса, РезультатЗапроса.ВидыДвиженийПриходРасход);
Иначе // Скорректируем ТЧ Оплаты, т.к. в реализации было удаление строки
Если РезультатЗапроса.ВидыДвиженийПриходРасход = Перечисления.CRM_ВидыДвиженийПриходРасход.Расход Тогда
НоваяСтрока = Объект.Оплата.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, РезультатЗапроса);
МассивСтрок = мТаблицаОплат.НайтиСтроки(Новый Структура("ИдентификаторДокумента, ИдентификаторКорДокумента",РезультатЗапроса.ИдентификаторДокумента,РезультатЗапроса.ИдентификаторКорДокумента));
Если НЕ МассивСтрок.Количество() = 0 Тогда
НоваяСтрока.Счет = МассивСтрок[0].Счет;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если НЕ мВремТаблицаРеализации.Количество() = 0 Тогда
Для Каждого СтрокаРеализации ИЗ Объект.Реализация Цикл
СтрокаТЗ = мВремТаблицаРеализации.Найти(СтрокаРеализации.ИдентификаторДокумента, "ИдентификаторДокумента");
Если НЕ СтрокаТЗ = Неопределено Тогда
СтрокаРеализации.Счет = СтрокаТЗ.Счет;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если НЕ мВремТаблицаОплаты.Количество() = 0 Тогда
Для Каждого СтрокаОплаты ИЗ Объект.Оплата Цикл
МасивСтрок = мВремТаблицаОплаты.НайтиСтроки(Новый Структура("ИдентификаторДокумента, ИдентификаторКорДокумента", СтрокаОплаты.ИдентификаторДокумента, СтрокаОплаты.ИдентификаторКорДокумента));
Если НЕ МасивСтрок.Количество() = 0 Тогда
СтрокаОплаты.Счет = МасивСтрок[0].Счет;
КонецЕсли;
КонецЦикла;
КонецЕсли;
: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
СКД = ПолучитьИзВременногоХранилища(АдресСКД);
Недопустимое значение параметра (параметр номер '1')
1C. "Недопустимое значение параметра" при вызове макета в расширении
Дано: 1С (в данном примере конфигурация 1С:Университет ПРОФ), платформа 8.3.10. Создано расширение, в котором к документу добавлен новый макет. В модуле менеджера документа есть процедура, формирующая печатную форму на базе макета. Необходимо было заменить данную процедуру (при помощи директивы расширения "&Вместо") и заменить вызов встроенного макета на наш, добавленный в расширение.
Проблема: при вызове добавленного макета в момент его печати в режиме "1С:Предприятие" возникала ошибка при получении макета:
: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет ("Расш1_МакетЗаявлениеПоступающего");
по причине:
Недопустимое значение параметра (параметр номер '1')
Код, вызывающий ошибку:
Варианты решения:
1. Добавить функцию, выполняемую на сервере, которая вызовет добавленный макет из документа:
А затем из заменяемой процедуры вызвать эту функцию:
(как оказалось этот способ не нужен. Причину читайте ниже)
2. Другой вариант - перенести макеты в общие и следующей командой вызвать (получить) макет из "Общие макеты":
------
Видимо это всё-таки какой-то глюк платформы (протестировано на 8.3.10.2252 и 8.3.10.2299), но если просто добавить пустой макет в общие макеты в расширении, то команда, ранее вызывавшая ошибку (ПолучитьМакет из макета документа без допфункций на сервере), начинает нормально работать. При удалении пустого общего макета, команда вызова макета из документа снова вызывает ошибку (даже если вынесена в функцию на сервере, как показано в способе 1).
Т.е. если всё-таки хочется сделать макеты нормально в документе (ожидая, что когда-нибудь этот глюк исправят), то нужно сделать макет-заглушку в общих макетах. Например:
При этом, если в расширении добавлено несколько макетов к документу, то "заглушки" достаточно только одной.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.
Добрый день, Эльза!
Похоже, у вас, как минимум, две ошибки после удаления подразделения.
Судя по всему, у вас уже был настроен обмен с ЗУП 3.1, когда вы стали удалять лишнее подразделение. А это нужно было сделать ДО первого запуска обмена, т.е. как только вы перешли на Бухгалтерию 3.0.
Логика обмена в 3.0 отличается от той, что была в 2.0.
Там объекты сопоставлялись по коду и/или наименованию и нам было достаточно изменить эти данные в обоих базах обмена, чтобы получить результат выгрузки и загрузки.
Сейчас все не так. Объекты синхронизируются по внутреннему UID — внутреннему идентификатору.
Это строчка со многими символами, совершенно уникальная в рамках базы. Другой такой нет.
UID записывается при создании объекта. И сколько бы мы не меняли наименование и код для сопоставления объектов в базах обмена, это нам в 3.0 уже не поможет. UID у них все равно будут разные. А значит, программа не сможет корректно выполнить обмен.
За сопоставление данных в базах отвечает специальный регистр Соответствия объектов информационных баз. Посмотреть его можно через Главное меню — Все функции.
Отберите информацию по подразделениям и посмотрите, соответствуют ли внутрение идентификаторы баз источников и приема.
Если там есть несоответветствие, то придется узнать UID источника в ЗУП (наверное, там либо тоже было два подразделения с уникальными UID или вы тоже удалили там до одного. Возможно, UID остались разные).
Поэтому вам нужно для начала сделать копию рабочих баз, настроить там обмен.
Все действия выполнять в них, чтобы не испортить ничего.
1. В ЗУП и БУХ у вас должно быть одинаковое количество подразделений, т.е. если в БУХ одно, то и в ЗУП — тоже должно быть одно. Проследите за одинаковым наименованием у них.
2. Проверьте в регистре Соответствия объектов информационных баз UID по оставшимся подразделениям.
3. Попробуйте сопоставить их вручную в обеих базах. Просто отредактируйте запись. Регистр дает это делать.
4. Выполните обмен. Если сопоставление вручную прошло корректно, скорее всего, проблема решилась.
Если нет, то придется привлекать к решению программиста.
Также есть еще один вариант, который можно попробовать выполнить на копии базы.
Например, удалите все записи в регистре сведений Соответствие объектов информационных баз (CTRL+A и правой кнопкой мыши вызвать контекстное меню — команда Удалить)
После этого снова выполните обмен.
Программа должна попытаться автоматически состыковать данные обеих баз.
Внимательно следите за Предупреждениями при обмене.
Все что программа не сможет состыковать автоматически, она предложит сделать вам вручную.
Смотрите ссылку Предупреждения. Переходите по вкладкам и проверяйте информацию.
Обращаю внимание, что это нужно выполнить сначала в копии базы, чтобы убедиться, что так можно решить проблему.
У вас должно быть так.
А то, что при попытке открыть подразделение в табличной части документа Отражение зарплаты в бухучете у вас возникает ошибка — это следствие удаление подразделения.
UID «приехавшего» из ЗУП объекта нет в Бухгалтерии.
А при открытии карточки Подразделения происходит поиск указанного объекта в базе.
Операция открытия включает два параметра: первый — собственно тип открываемого справочника — это справочник Подразделения организаций и второй — это ссылка на него в базе — уникальный UID, которого в базе нет. Вы его удалили.
У нас есть очень хорошая статья и видео по синхронизации ЗУП и БУХ:
Синхронизация между 1С ЗУП 3 и 1С Бухгалтерией 3.0
Я вам рекомендую его посмотреть, оно может снять многие вопросы по обмену.
Автоматически при уже установленном обмене не всегда получается пересопоставить автоматически объекты разных баз, не понятно по какой причине, но у клиентов такое бывало.
Тогда просто настраивали обмен заново и уже при новой настройке сопоставлялись только те объекты, что уже есть в базе.
Эльза, сейчас проверила этот вариант, не делайте его.
Я в тестовой базе удалила записи, но это не помогло. У вас остается два варианта, после приведения в соответствия подразделений в обеих базах: у вас в ЗУП Обобособленное и Главное, а в БУХ, как я понимаю, только одно — Главное.
1. Ручная корректировка регистра (когда войдете — увидите наверняка, что в подразделении-источнике нет соответствия в подразделении-приемнике. Там или незаполненные поля будут или лишние строки)…
Поколдуйте с этим. Есть высокая вероятность решить проблему сопоставив объекты вручную.
2. Это просто настроить новый обмен по кнопке Новая Синхронизация данных.
Я сейчас создала новую синхронизацию по обмену БУХ с ЗУП. Заняло 30 минут. Старую синхронизацию не удаляла, оставила. Но в этом случае нужно менять префиксы по обмену, например Было БП — стало ББ, было ЗП — стало ЗЗ.
Все работает нормально, хотя перед этим удалила все соответствия из регистра. Программа при новой настройке все создала автоматически.
В окне настройки на стороне ЗУП открылась специальная ссылка для сопоставления.
И регистр Соответствие объектов информационных баз заполнился заново. 🙂
Ирина, спасибо Вам большое за развернутый ответ! Попробую. Результат сообщу
Удачи, Эльза! Пусть все получится. 🙂
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Спасибо Марии за умение доходчиво донести информацию!
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Читайте также: