1с обменданными получатели добавить ошибка

Перейти к контенту

Всем привет! Уже скоро 5:40 утра, а я все кручу-верчу 1С, а она чето не работает :(

1С:Предприятие 8.3 (8.3.4.496)

Альфа-Авто: Автосалон+Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.22)

Суть проблемы: обмен — РИБ(2 узла), для новых документов не регистрируются изменения для узлов, авторегистрация установлена в Запретить, если после создания документа его перепровести — все изменения зарегистрируются как надо.

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

            Для каждого НаборЗаписей из ДвигаемыеРегистры Цикл

                МетаданныеРегистр = НаборЗаписей.Метаданные();

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

                Если (ПланОбменаМетаданныеСостав.Найти(МетаданныеРегистр) = неопределено) Тогда

                    Продолжить; // нет в составе плана обмена

                КонецЕсли;

                Если ЭтоУдаление Тогда

                    // При удалении объекта, если у нас уже были зарегистрированы его движения

                    //правильнее будет их отменить — пусть в сообщении отправится одно лишь удаление объекта

                    ПланыОбмена.УдалитьРегистрациюИзменений(МассивУзловПолучателей,НаборЗаписей);

                Иначе

                    //ПланыОбмена.ЗарегистрироватьИзменения(МассивУзловПолучателей,НаборЗаписей);

                    // Виталий + 2014.08.06

                    Для Каждого УзелПолучатель Из МассивУзловПолучателей Цикл

                        НаборЗаписей.ОбменДанными.Получатели.Добавить(УзелПолучатель);

                    КонецЦикла;

                    // Виталий — 2014.08.06

                КонецЕсли;

            КонецЦикла;

погуглив обнаружил, что вместо этого ЗарегистрироватьИзменения можно использовать это ОбменДанными.Получатели.Добавить ну и сделал так.

Все заработало, только хотел начинать радоваться как обнаружил что это работает для всех регистров кроме одного! Ну все одинаков и регистры однотипные(регистры накопления), помогите люди знающие, помогите люди знающие, ну шо ей, этой одинС надо то?

Driven

12 / 14 / 1

Регистрация: 24.12.2010

Сообщений: 74

1

1C 8.x

11.03.2015, 12:37. Показов 3851. Ответов 7

Метки нет (Все метки)


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

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Процедура РегистрыНакопленияПриЗаписи(Источник, Отказ, Замещение) Экспорт
    
    
    
    Узел = ПланыОбмена.ОбменСКассойККМ.Выбрать();
    
    Пока Узел.Следующий() Цикл
        
        Если Узел.Ссылка = ПланыОбмена.ОбменСКассойККМ.ЭтотУзел() Тогда
            
                Для каждого Запись Из Источник Цикл
                
                Сообщить(Запись.Номенклатура);//по этому я отслеживаю какая номенклатура прошла
                
                
                Объект = Запись.Номенклатура.ПолучитьОбъект();
                Объект.ОбменДанными.Получатели.Добавить("К01");
                //ПланыОбмена.ЗарегистрироватьИзменения(Узел, Запись.Номенклатура);
                
                КонецЦикла; 
            
            
        КонецЕсли;     
        
        
    КонецЦикла;
    
    
 
КонецПроцедуры

и в итоге я получаю ошибку
{ОбщийМодуль.МодульСталкер2.Модуль(18)}: Ошибка при вызове метода контекста (Добавить)
Объект.ОбменДанными.Получатели.Добавить(«К01»);
по причине:
Несоответствие типов (параметр номер ‘1’)

Очень нужна помощь, без помощи придется еще очень долго разбираться самому. Буду очень благодарен!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

11.03.2015, 12:37

Ответы с готовыми решениями:

Зашел в тупик
Из-за формулы зашел немного в тупик. Вот здесь знаменатель не должен быть равен 0 и само выражение…

Зашел в тупик!
Имеется задача http://********/index.asp?main=task&id_task=234 .
Имеется ее решение:
#include…

Зашел в тупик с курсовой
Проблема в том что надо создать базу которая будет фиксировать пропуск учащихся занятий и потом…

Зашел в тупик с отчетом…
Добрый вечер, уважаемые форумчане…
Прочитал всю ветку данного раздела форума на слово "отчет" по…

7

Dethmontt

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

11.03.2015, 13:39

2

Лучший ответ Сообщение было отмечено Driven как решение

Решение

Ты справку читать будешь или нет? У свойства Получатели метода Добавить() в СП описано какой тип нужно подавать в качестве параметра

1C
1
СсылкаНаУзел = ПланыОбмена.ОбменУППУПП.НайтиПоКоду("К01");

1

Driven

12 / 14 / 1

Регистрация: 24.12.2010

Сообщений: 74

11.03.2015, 15:05

 [ТС]

3

Решил вот таким способом

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Узел = ПланыОбмена.ОбменСКассойККМ.Выбрать();
    
    Пока Узел.Следующий() Цикл
        
        Если Узел.Ссылка = ПланыОбмена.ОбменСКассойККМ.ЭтотУзел() Тогда
            
                Для каждого Запись Из Источник Цикл
                
                Сообщить(Запись.Номенклатура);
                
                СсылкаНаУзел = ПланыОбмена.ОбменСКассойККМ.НайтиПоКоду("К01");
 
                Объект = Запись.Номенклатура.ПолучитьОбъект();
                Объект.ОбменДанными.Получатели.Добавить(СсылкаНаУзел);
                ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, Запись.Номенклатура);
                
                КонецЦикла; 
            
            
        КонецЕсли;     
        
        
    КонецЦикла;

Добавлено через 23 секунды
Спасибо за помощь!!!

Добавлено через 3 минуты
Я был бы очень признателен, если бы Вы еще помогли мне с Подпиской на событие. Когда отрабатывается, в какой именно момент событие Перед записью?

0

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

11.03.2015, 15:30

4

В тот момент что указано в подписке на событие

1

12 / 14 / 1

Регистрация: 24.12.2010

Сообщений: 74

11.03.2015, 15:35

 [ТС]

5

я немного не правильно поставил вопрос. Когда срабатывает Перед Записью (на какой стадии после открытия регистра) ? И сразу еще один вопрос, как поймать изменения ( Номенклатуру ) в регистре накопления при отмене проведения документа?

0

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

11.03.2015, 15:57

6

В тот момент что указано в подписке на событие

Цитата
Сообщение от Driven
Посмотреть сообщение

Перед Записью (на какой стадии после открытия регистра) ?

эээээээээээ…
Перед записью, срабатывает ПереД ЗаписьЮ

Добавлено через 1 минуту

Цитата
Сообщение от Driven
Посмотреть сообщение

И сразу еще один вопрос, как поймать изменения ( Номенклатуру ) в регистре накопления при отмене проведения документа?

Например запросом

1

12 / 14 / 1

Регистрация: 24.12.2010

Сообщений: 74

11.03.2015, 16:00

 [ТС]

7

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Например запросом

а можно поподробнее? это как я понял Перед Записью регистра запрос должен отрабатывать?

0

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

11.03.2015, 16:05

8

Driven, читать литературу — потом спрашивать

Литература по 1С программированию

0

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

Если это на момент окончания события ПередЗаписью (с учетом всех подписок), тогда да

те в другом месте кодом порежут регистрацию и привет кот1ёнку

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

ПередЗаписью и соответствующие подписки. А документ точно записывается, там отказ не срабатывает?

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

а проверяешь как регистрацию -обработкой «регистрация изменений» -запросом к таблице изменений -в файле выгрузки -в базе приемнике? Отсутствие документа в 3-4 пунктах не обязательно означает проблемы с регистрацией.

Тэги:

Комментарии доступны только авторизированным пользователям

11.03.2020
1С бухгалтерия

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

Процедура ПередЗаписью(Отказ, Замещение)
....
  ОбменДанными.Получатели.Добавить(Отбор.УзелИнформационнойБазы.Значение);
 
КонецПроцедуры
...

В качестве получателя передается узел плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат. Но в свою очередь регистр сведений СоответствияОбъектовИнформационныхБаз не входит в состав плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат, поэтому возникает ошибка.
Можно выбрать план обмена, который включает в свой состав нужный мне регистр, в частности «МиграцияПриложений», но тогда возможны другие проблемы. В частности, если в БП есть какие-то свои объекты(например регистры, которые заполняются при проведении документов), то они должны быть включены в состав «МиграцияПриложений».

Мне показалось более легкий, в плане воздействия на базу, метод — использование все таки плана обмена «СинхронизацияДанныхЧерезУниверсальныйФормат».

 0 

Распечатать

Ручная регистрации изменений для узла

Для ручной регистрации изменений можно в модуле объекта (документа) определить следующий обработчик события

Код 1C v 8.х

 Процедура ПередЗаписью(Отказ)
Узел=ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");
Объект.ОбменДанными.Получатели.Удалить(Узел);
КонецПроцедуры

В глобальном общем модуле определим следующую процедуру:

Код 1C v 8.х

 Процедура ВключитьРегистрацию(ОбменДанными, Склад) Экспорт 
//Получение узлов для конкретного склада
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УдаленныеСклады.Ссылка
|ИЗ
| ПланОбмена.УдаленныеСклады КАК УдаленныеСклады
|
|ГДЕ
| (УдаленныеСклады.Склад = &Склад ИЛИ
| УдаленныеСклады.Склад = &ПустойСклад) И
| УдаленныеСклады.Ссылка <> &ЭтотУзел";

Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ПустойСклад",
Справочники.Склады.ПустаяСсылка());
Запрос.УстановитьПараметр("ЭтотУзел",
ПланыОбмена.УдаленныеСклады.ЭтотУзел());
Выборка = Запрос.Выполнить().Выбрать();

// Регистрация изменений для выбранных узлов
Пока Выборка.Следующий() Цикл
ОбменДанными.Получатели.Добавить(Выборка.Ссылка);
КонецЦикла;
КонецПроцедуры

Обе рассмотренные процедуры одновременно решают две задачи:

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

Страница 1 из 2

  1. Добрый день.1с УПП платформа 2 редакция 3. версия 58.2 .
    Использую внутренние шаблоны в частности Обмен 1с УПП.
    Т.е. УПП С УПП все настроил для обмена. Выгрузка из источник
    прошла нормально. Загрузка в приемник с ошибками (обмен настроил на обмен 1 типа документа
    Заказ поставщику) ошибки- на контрагенте

    Ошибка записи объекта
    ТипОбъекта = Договор контрагента
    Объект = <>
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {ОбщийМодуль.ПроцедурыОбменаУПП.Модуль(709)}: Ошибка при вызове метода контекста (Добавить): Несоответствие типов (параметр номер ‘1’)
    ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(3778)
    КодСообщения = 26
    Техническая информация:
    {Обработка.ОбменДаннымиXML.МодульОбъекта(3785)}: Ошибка записи объекта

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

    upload_2014-12-1_15-58-48.png

  2. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    т.е. вы собираетесь переносить справочник Договора, а справочник владелец нет?

  3. Вобщто это проблема серезная если менеджер не может оформить документ
    и когда на запись документа и проводку влияет обмен этого документа

    — Объединение сообщений, 1 дек 2014

    Да не собирался ни договор ни контрагента

  4. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

    НаличиеОбменаУПП — это один из параметров сеанса.
    Необходимо проверить каким образом он устанавливается и почему возникает ошибка получения его значения.

  5. Но меня сейчас более всего волнует формирование нового документа и вмешательство
    обмена на сохранение и проведение его. Что за хрень с этим контролем по обмену ?

  6. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

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

  7. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

    Именно так, т.к. используется обмен по правилам, судя по входным данным.

  8. Знаю что это параметр сеанса.Почему контроль параметра сеанса обмена не в теме
    контролируется. Я же обменялся нормально. И теперь этот домоклов меч постоянно висеть надо мной будет .сколько их параметров- много вдруг слетит один все ищи. Как искать В Отладчике возможно
    только при передачи. Здесь как его найду просматривая код. А если документ
    в нескольких планах обменивается. Неужели у меня только такая проблема.
    Коллеги , у кого такая же ж. как вы поступаете.

  9. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

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

  10. Не верю. Не может регистрация в узлах проходить по вновь созданному документу .
    Он еще может не удален. Почему не перед обменом. А ПРИ ФОРМИРОВАНИИ.
    Документ только родился а уже в планах.

  11. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Что вот это за строка, дайте кусок кода
    ОбщийМодуль.ПроцедурыОбменаУПП.Модуль(709)}: Ошибка при вызове метода контекста (Добавить):

    Сам нашел

    Если МассивУзловДляРегистрацииПриЗаписи <> Неопределено Тогда

    // для регистрации объекта
    Для Каждого Элемент Из МассивУзловДляРегистрацииПриЗаписи Цикл

    Источник.ОбменДанными.Получатели.Добавить(Элемент);

    КонецЦикла;

    КонецЕсли;

    Вообще он ругается на то что Элемент это не узел а непонятно что, попробуйте отладчиком пройтись

    — Объединение сообщений, 1 дек 2014

    Эть как самоуверенно, а когда же она должна проходить регистрация? Как раз в момент записи документа.

  12. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

    Снова упираемся в то, что Источник.ОбменДанными.Получатели не содержит то, что должно в нем содержаться, судя по контексту кода.

  13. Сервис Обмен данными в упп 8 Открывается помошник настройки с ним все делал.
    там галочки не ставиш
    upload_2014-12-1_17-10-23.png

    после выбрал вариант
    Управление производственным предприятием 1.3 — Тип 1.2 в списке не было и выбрал вариант только туда(одностороний) все. Установил файловый обмен и директорию.Все. более ничего не делал.
    Все заработало. и ошибки по делу выдаются но при этом по тем документам которые передаю такая вот проблема

  14. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

    На стороне приемника настраивали обмен? Там так же необходимо указать узел.
    По этому узлу система поймет, что необходим обмен УПП-УПП, взведет нужный параметр сеанса……

  15. Существует Этап обмена Загрузка Здесь документы по узлам должны распихиваться
    а Источник.ОбменДанными.Получатели.Добавить(Элемент);
    Работать должен правильно он уже произвел обмен.

    ;

    — Объединение сообщений, 1 дек 2014

    Нет на стороге передающей где прошло описание чем обмениваться при этом
    помошник формируеет файл настройки для приемной стороны.
    На приемной стороне он подгружается и пара для обмена готова.
    Посмотрите последние уроки ГИЛЕВА по обмену Этот помошник вставлен в конфигурацию в эту версию и БСП 2.1

  16. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Стоп…
    У вас сейчас проблема я так понял заключается в том что в центральной базе менеджер не может записать документ? так?

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

    — Объединение сообщений, 1 дек 2014

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

  18. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Д
    Где это вы такое вычитали , что документ есть документ когда он проведен? Документ есть документ когда он существует в базе как объект, а проведен он или нет это уже другая песня.
    Вопрос в том как настроены правила обмена,выгружать только проведенные или нет

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

    Процедура ПередЗаписьюДокументаДляОбменаУПППередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт

    Если Отказ ИЛИ НЕ ПараметрыСеанса.НаличиеОбменаУПП Тогда
    Возврат;
    КонецЕсли;

    ПередЗаписьюСсылочногоТипаДляОбменаПоОрганизации(Источник, Отказ, «Документы»);

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

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

    Воо..

    Запрос = Новый Запрос;
    Запрос.Текст = «ВЫБРАТЬ
    | ОбменУППУПП.Ссылка,
    | ОбменУППУПП.ДатаНачалаВыгрузкиДокументов КАК ДатаНачалаВыгрузкиДокументов
    |ИЗ
    | ПланОбмена.ОбменУППУПП КАК ОбменУППУПП
    |ГДЕ
    | ОбменУППУПП.Ссылка <> &ЭтотУзелПолный»;

    Запрос.УстановитьПараметр(«ЭтотУзелПолный», ПланыОбмена.ОбменУППУПП.ЭтотУзел());

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

    ЕстьУзлыОбменаУППУПП = НЕ РезультатЗапроса.Пустой();

    ПараметрыСеанса.НаличиеОбменаУПП = ЕстьУзлыОбменаУППУПП;

    куда копать надо.

    Последнее редактирование: 1 дек 2014

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

    Если коротко то все вышеописанное можно сформулировать так.

    У документов которыми обмениваются при настройке плана обмена поменяли код по событию перед
    записью() . Теперь он (менеджер плана обмена…естественно анализируют наличие плана обмена , в котором учавствует документ. Если такого нет (но документ должен обмениваться ! ) то запись запрещена.поскольку это считается ошибкой,

    По сути это так выглядит. Или я не прав ?

  20. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Если честно из вышеописанного я ничего не понял, можно как то детализированей

Страница 1 из 2

Всем привет! Уже скоро 5:40 утра, а я все кручу-верчу 1С, а она чето не работает :(

1С:Предприятие 8.3 (8.3.4.496)

Альфа-Авто: Автосалон+Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.22)

Суть проблемы: обмен — РИБ(2 узла), для новых документов не регистрируются изменения для узлов, авторегистрация установлена в Запретить, если после создания документа его перепровести — все изменения зарегистрируются как надо.

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

            Для каждого НаборЗаписей из ДвигаемыеРегистры Цикл

                МетаданныеРегистр = НаборЗаписей.Метаданные();

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

                Если (ПланОбменаМетаданныеСостав.Найти(МетаданныеРегистр) = неопределено) Тогда

                    Продолжить; // нет в составе плана обмена

                КонецЕсли;

                Если ЭтоУдаление Тогда

                    // При удалении объекта, если у нас уже были зарегистрированы его движения

                    //правильнее будет их отменить — пусть в сообщении отправится одно лишь удаление объекта

                    ПланыОбмена.УдалитьРегистрациюИзменений(МассивУзловПолучателей,НаборЗаписей);

                Иначе

                    //ПланыОбмена.ЗарегистрироватьИзменения(МассивУзловПолучателей,НаборЗаписей);

                    // Виталий + 2014.08.06

                    Для Каждого УзелПолучатель Из МассивУзловПолучателей Цикл

                        НаборЗаписей.ОбменДанными.Получатели.Добавить(УзелПолучатель);

                    КонецЦикла;

                    // Виталий — 2014.08.06

                КонецЕсли;

            КонецЦикла;

погуглив обнаружил, что вместо этого ЗарегистрироватьИзменения можно использовать это ОбменДанными.Получатели.Добавить ну и сделал так.

Все заработало, только хотел начинать радоваться как обнаружил что это работает для всех регистров кроме одного! Ну все одинаков и регистры однотипные(регистры накопления), помогите люди знающие, помогите люди знающие, ну шо ей, этой одинС надо то?

Driven

12 / 14 / 1

Регистрация: 24.12.2010

Сообщений: 74

1

1C 8.x

11.03.2015, 12:37. Показов 4091. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

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

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Процедура РегистрыНакопленияПриЗаписи(Источник, Отказ, Замещение) Экспорт
    
    
    
    Узел = ПланыОбмена.ОбменСКассойККМ.Выбрать();
    
    Пока Узел.Следующий() Цикл
        
        Если Узел.Ссылка = ПланыОбмена.ОбменСКассойККМ.ЭтотУзел() Тогда
            
                Для каждого Запись Из Источник Цикл
                
                Сообщить(Запись.Номенклатура);//по этому я отслеживаю какая номенклатура прошла
                
                
                Объект = Запись.Номенклатура.ПолучитьОбъект();
                Объект.ОбменДанными.Получатели.Добавить("К01");
                //ПланыОбмена.ЗарегистрироватьИзменения(Узел, Запись.Номенклатура);
                
                КонецЦикла; 
            
            
        КонецЕсли;     
        
        
    КонецЦикла;
    
    
 
КонецПроцедуры

и в итоге я получаю ошибку
{ОбщийМодуль.МодульСталкер2.Модуль(18)}: Ошибка при вызове метода контекста (Добавить)
Объект.ОбменДанными.Получатели.Добавить(«К01»);
по причине:
Несоответствие типов (параметр номер ‘1’)

Очень нужна помощь, без помощи придется еще очень долго разбираться самому. Буду очень благодарен!



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

11.03.2015, 12:37

Ответы с готовыми решениями:

Зашел в тупик
Из-за формулы зашел немного в тупик. Вот здесь знаменатель не должен быть равен 0 и само выражение…

Зашел в тупик!
Имеется задача http://********/index.asp?main=task&amp;id_task=234 .
Имеется ее решение:
#include…

Зашел в тупик с курсовой
Проблема в том что надо создать базу которая будет фиксировать пропуск учащихся занятий и потом…

Зашел в тупик с отчетом…
Добрый вечер, уважаемые форумчане…
Прочитал всю ветку данного раздела форума на слово &quot;отчет&quot; по…

7

Dethmontt

Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

11.03.2015, 13:39

2

Лучший ответ Сообщение было отмечено Driven как решение

Решение

Ты справку читать будешь или нет? У свойства Получатели метода Добавить() в СП описано какой тип нужно подавать в качестве параметра

1C
1
СсылкаНаУзел = ПланыОбмена.ОбменУППУПП.НайтиПоКоду("К01");



1



Driven

12 / 14 / 1

Регистрация: 24.12.2010

Сообщений: 74

11.03.2015, 15:05

 [ТС]

3

Решил вот таким способом

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Узел = ПланыОбмена.ОбменСКассойККМ.Выбрать();
    
    Пока Узел.Следующий() Цикл
        
        Если Узел.Ссылка = ПланыОбмена.ОбменСКассойККМ.ЭтотУзел() Тогда
            
                Для каждого Запись Из Источник Цикл
                
                Сообщить(Запись.Номенклатура);
                
                СсылкаНаУзел = ПланыОбмена.ОбменСКассойККМ.НайтиПоКоду("К01");
 
                Объект = Запись.Номенклатура.ПолучитьОбъект();
                Объект.ОбменДанными.Получатели.Добавить(СсылкаНаУзел);
                ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, Запись.Номенклатура);
                
                КонецЦикла; 
            
            
        КонецЕсли;     
        
        
    КонецЦикла;

Добавлено через 23 секунды
Спасибо за помощь!!!

Добавлено через 3 минуты
Я был бы очень признателен, если бы Вы еще помогли мне с Подпиской на событие. Когда отрабатывается, в какой именно момент событие Перед записью?



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

11.03.2015, 15:30

4

В тот момент что указано в подписке на событие



1



12 / 14 / 1

Регистрация: 24.12.2010

Сообщений: 74

11.03.2015, 15:35

 [ТС]

5

я немного не правильно поставил вопрос. Когда срабатывает Перед Записью (на какой стадии после открытия регистра) ? И сразу еще один вопрос, как поймать изменения ( Номенклатуру ) в регистре накопления при отмене проведения документа?



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

11.03.2015, 15:57

6

В тот момент что указано в подписке на событие

Цитата
Сообщение от Driven
Посмотреть сообщение

Перед Записью (на какой стадии после открытия регистра) ?

эээээээээээ…
Перед записью, срабатывает ПереД ЗаписьЮ

Добавлено через 1 минуту

Цитата
Сообщение от Driven
Посмотреть сообщение

И сразу еще один вопрос, как поймать изменения ( Номенклатуру ) в регистре накопления при отмене проведения документа?

Например запросом



1



12 / 14 / 1

Регистрация: 24.12.2010

Сообщений: 74

11.03.2015, 16:00

 [ТС]

7

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Например запросом

а можно поподробнее? это как я понял Перед Записью регистра запрос должен отрабатывать?



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

11.03.2015, 16:05

8

Driven, читать литературу — потом спрашивать

Литература по 1С программированию



0



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

Если это на момент окончания события ПередЗаписью (с учетом всех подписок), тогда да

те в другом месте кодом порежут регистрацию и привет кот1ёнку

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

ПередЗаписью и соответствующие подписки. А документ точно записывается, там отказ не срабатывает?

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

а проверяешь как регистрацию -обработкой «регистрация изменений» -запросом к таблице изменений -в файле выгрузки -в базе приемнике? Отсутствие документа в 3-4 пунктах не обязательно означает проблемы с регистрацией.

Тэги:

Комментарии доступны только авторизированным пользователям

Страница 1 из 2

  1. Добрый день.1с УПП платформа 2 редакция 3. версия 58.2 .
    Использую внутренние шаблоны в частности Обмен 1с УПП.
    Т.е. УПП С УПП все настроил для обмена. Выгрузка из источник
    прошла нормально. Загрузка в приемник с ошибками (обмен настроил на обмен 1 типа документа
    Заказ поставщику) ошибки- на контрагенте

    Ошибка записи объекта
    ТипОбъекта = Договор контрагента
    Объект = <>
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {ОбщийМодуль.ПроцедурыОбменаУПП.Модуль(709)}: Ошибка при вызове метода контекста (Добавить): Несоответствие типов (параметр номер ‘1’)
    ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(3778)
    КодСообщения = 26
    Техническая информация:
    {Обработка.ОбменДаннымиXML.МодульОбъекта(3785)}: Ошибка записи объекта

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

    upload_2014-12-1_15-58-48.png


  2. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    т.е. вы собираетесь переносить справочник Договора, а справочник владелец нет?

  3. Вобщто это проблема серезная если менеджер не может оформить документ
    и когда на запись документа и проводку влияет обмен этого документа

    — Объединение сообщений, 1 дек 2014

    Да не собирался ни договор ни контрагента


  4. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

    НаличиеОбменаУПП — это один из параметров сеанса.
    Необходимо проверить каким образом он устанавливается и почему возникает ошибка получения его значения.

  5. Но меня сейчас более всего волнует формирование нового документа и вмешательство
    обмена на сохранение и проведение его. Что за хрень с этим контролем по обмену ?


  6. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

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


  7. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

    Именно так, т.к. используется обмен по правилам, судя по входным данным.

  8. Знаю что это параметр сеанса.Почему контроль параметра сеанса обмена не в теме
    контролируется. Я же обменялся нормально. И теперь этот домоклов меч постоянно висеть надо мной будет .сколько их параметров- много вдруг слетит один все ищи. Как искать В Отладчике возможно
    только при передачи. Здесь как его найду просматривая код. А если документ
    в нескольких планах обменивается. Неужели у меня только такая проблема.
    Коллеги , у кого такая же ж. как вы поступаете.


  9. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

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

  10. Не верю. Не может регистрация в узлах проходить по вновь созданному документу .
    Он еще может не удален. Почему не перед обменом. А ПРИ ФОРМИРОВАНИИ.
    Документ только родился а уже в планах.


  11. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Что вот это за строка, дайте кусок кода
    ОбщийМодуль.ПроцедурыОбменаУПП.Модуль(709)}: Ошибка при вызове метода контекста (Добавить):

    Сам нашел

    Если МассивУзловДляРегистрацииПриЗаписи <> Неопределено Тогда

    // для регистрации объекта
    Для Каждого Элемент Из МассивУзловДляРегистрацииПриЗаписи Цикл

    Источник.ОбменДанными.Получатели.Добавить(Элемент);

    КонецЦикла;

    КонецЕсли;

    Вообще он ругается на то что Элемент это не узел а непонятно что, попробуйте отладчиком пройтись

    — Объединение сообщений, 1 дек 2014

    Эть как самоуверенно, а когда же она должна проходить регистрация? Как раз в момент записи документа.


  12. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

    Снова упираемся в то, что Источник.ОбменДанными.Получатели не содержит то, что должно в нем содержаться, судя по контексту кода.

  13. Сервис Обмен данными в упп 8 Открывается помошник настройки с ним все делал.
    там галочки не ставиш
    upload_2014-12-1_17-10-23.png

    после выбрал вариант
    Управление производственным предприятием 1.3 — Тип 1.2 в списке не было и выбрал вариант только туда(одностороний) все. Установил файловый обмен и директорию.Все. более ничего не делал.
    Все заработало. и ошибки по делу выдаются но при этом по тем документам которые передаю такая вот проблема


  14. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204

    На стороне приемника настраивали обмен? Там так же необходимо указать узел.
    По этому узлу система поймет, что необходим обмен УПП-УПП, взведет нужный параметр сеанса……

  15. Существует Этап обмена Загрузка Здесь документы по узлам должны распихиваться
    а Источник.ОбменДанными.Получатели.Добавить(Элемент);
    Работать должен правильно он уже произвел обмен.

    ;

    — Объединение сообщений, 1 дек 2014

    Нет на стороге передающей где прошло описание чем обмениваться при этом
    помошник формируеет файл настройки для приемной стороны.
    На приемной стороне он подгружается и пара для обмена готова.
    Посмотрите последние уроки ГИЛЕВА по обмену Этот помошник вставлен в конфигурацию в эту версию и БСП 2.1


  16. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Стоп…
    У вас сейчас проблема я так понял заключается в том что в центральной базе менеджер не может записать документ? так?

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

    — Объединение сообщений, 1 дек 2014

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


  18. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Д
    Где это вы такое вычитали , что документ есть документ когда он проведен? Документ есть документ когда он существует в базе как объект, а проведен он или нет это уже другая песня.
    Вопрос в том как настроены правила обмена,выгружать только проведенные или нет

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

    Процедура ПередЗаписьюДокументаДляОбменаУПППередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт

    Если Отказ ИЛИ НЕ ПараметрыСеанса.НаличиеОбменаУПП Тогда
    Возврат;
    КонецЕсли;

    ПередЗаписьюСсылочногоТипаДляОбменаПоОрганизации(Источник, Отказ, «Документы»);

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

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

    Воо..

    Запрос = Новый Запрос;
    Запрос.Текст = «ВЫБРАТЬ
    | ОбменУППУПП.Ссылка,
    | ОбменУППУПП.ДатаНачалаВыгрузкиДокументов КАК ДатаНачалаВыгрузкиДокументов
    |ИЗ
    | ПланОбмена.ОбменУППУПП КАК ОбменУППУПП
    |ГДЕ
    | ОбменУППУПП.Ссылка <> &ЭтотУзелПолный»;

    Запрос.УстановитьПараметр(«ЭтотУзелПолный», ПланыОбмена.ОбменУППУПП.ЭтотУзел());

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

    ЕстьУзлыОбменаУППУПП = НЕ РезультатЗапроса.Пустой();

    ПараметрыСеанса.НаличиеОбменаУПП = ЕстьУзлыОбменаУППУПП;

    куда копать надо.

    Последнее редактирование: 1 дек 2014
  19. Вот процедура которая отрабатывает и если не инициализирован параметр сеанса он на него ругается

    Если коротко то все вышеописанное можно сформулировать так.

    У документов которыми обмениваются при настройке плана обмена поменяли код по событию перед
    записью() . Теперь он (менеджер плана обмена…естественно анализируют наличие плана обмена , в котором учавствует документ. Если такого нет (но документ должен обмениваться ! ) то запись запрещена.поскольку это считается ошибкой,

    По сути это так выглядит. Или я не прав ?


  20. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Если честно из вышеописанного я ничего не понял, можно как то детализированей

Страница 1 из 2


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

  • 1с начатьпомещениефайланасервер ошибка доступа к файлу
  • 1с начальное заполнение данных ошибка
  • 1с на сервере возникла внутренняя ошибка при обработке запроса код ошибки 500
  • 1с модуль менеджера ошибка
  • 1с мобильный клиент ошибка http при обращении к серверу не могу установить соединение